void gen_gfx(char code, char *base) {
  char *c;
  int r;
  for (r = 0, c = base; r < 10; r++, c++) {
    *c = 128;
    if (r < 3) {
      if (code & 1)
        *c += 56;
      if (code & 2)
        *c += 7;
    } else if (r < 7) {
      if (code & 4)
        *c += 56;
      if (code & 8)
        *c += 7;
    } else {
      if (code & 16)
        *c += 56;
      if (code & 64)
        *c += 7;
    }
  }
}


x86 assembly (clang, -O0):
<gen_gfx>:
push   %rbp
mov    %rsp,%rbp
mov    %dil,%al
mov    %al,-0x1(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x18(%rbp)
cmpl   $0xa,-0x1c(%rbp)
jge    121d <gen_gfx+0x11d>
mov    -0x18(%rbp),%rax
movb   $0x80,(%rax)
cmpl   $0x3,-0x1c(%rbp)
jge    1175 <gen_gfx+0x75>
movsbl -0x1(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1154 <gen_gfx+0x54>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
add    $0x38,%ecx
mov    %cl,(%rax)
movsbl -0x1(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     1170 <gen_gfx+0x70>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
add    $0x7,%ecx
mov    %cl,(%rax)
jmp    11fe <gen_gfx+0xfe>
cmpl   $0x7,-0x1c(%rbp)
jge    11bc <gen_gfx+0xbc>
movsbl -0x1(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     119b <gen_gfx+0x9b>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
add    $0x38,%ecx
mov    %cl,(%rax)
movsbl -0x1(%rbp),%eax
and    $0x8,%eax
cmp    $0x0,%eax
je     11b7 <gen_gfx+0xb7>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
add    $0x7,%ecx
mov    %cl,(%rax)
jmp    11f9 <gen_gfx+0xf9>
movsbl -0x1(%rbp),%eax
and    $0x10,%eax
cmp    $0x0,%eax
je     11d8 <gen_gfx+0xd8>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
add    $0x38,%ecx
mov    %cl,(%rax)
movsbl -0x1(%rbp),%eax
and    $0x40,%eax
cmp    $0x0,%eax
je     11f4 <gen_gfx+0xf4>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
add    $0x7,%ecx
mov    %cl,(%rax)
jmp    11f9 <gen_gfx+0xf9>
jmp    11fe <gen_gfx+0xfe>
jmp    1203 <gen_gfx+0x103>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    111d <gen_gfx+0x1d>
pop    %rbp
ret

x86 assembly (clang, -O2):
<gen_gfx>:
test   $0x1,%dil
mov    $0x80,%r8d
mov    $0xb8,%ecx
cmove  %r8d,%ecx
mov    $0x87,%r9d
mov    $0xbf,%eax
cmove  %r9d,%eax
test   $0x2,%dil
cmove  %ecx,%eax
test   $0x4,%dil
mov    $0xb8,%ecx
cmove  %r8d,%ecx
mov    $0xbf,%edx
cmove  %r9d,%edx
test   $0x8,%dil
cmove  %ecx,%edx
mov    $0xb8,%r10d
test   $0x10,%dil
cmove  %r8d,%r10d
mov    $0xbf,%ecx
cmove  %r9d,%ecx
test   $0x40,%dil
mov    %al,(%rsi)
mov    %al,0x1(%rsi)
mov    %al,0x2(%rsi)
mov    %dl,0x3(%rsi)
mov    %dl,0x4(%rsi)
mov    %dl,0x5(%rsi)
cmove  %r10d,%ecx
mov    %dl,0x6(%rsi)
mov    %cl,0x7(%rsi)
mov    %cl,0x8(%rsi)
mov    %cl,0x9(%rsi)
ret

LLVM IR (-O0):
define void @gen_gfx(i8 signext %0, i8* %1) {
%3 = alloca i8
%4 = alloca i8*
%5 = alloca i8*
%6 = alloca i32
store i8 %0, i8* %3
store i8* %1, i8** %4
store i32 0, i32* %6
%7 = load i8*, i8** %4
store i8* %7, i8** %5
br label %8
8: ; preds = %89, %2
%9 = load i32, i32* %6
%10 = icmp slt i32 %9, 10
br i1 %10, label %11, label %94
11: ; preds = %8
%12 = load i8*, i8** %5
store i8 -128, i8* %12
%13 = load i32, i32* %6
%14 = icmp slt i32 %13, 3
br i1 %14, label %15, label %38
15: ; preds = %11
%16 = load i8, i8* %3
%17 = sext i8 %16 to i32
%18 = and i32 %17, 1
%19 = icmp ne i32 %18, 0
br i1 %19, label %20, label %26
20: ; preds = %15
%21 = load i8*, i8** %5
%22 = load i8, i8* %21
%23 = sext i8 %22 to i32
%24 = add nsw i32 %23, 56
%25 = trunc i32 %24 to i8
store i8 %25, i8* %21
br label %26
26: ; preds = %20, %15
%27 = load i8, i8* %3
%28 = sext i8 %27 to i32
%29 = and i32 %28, 2
%30 = icmp ne i32 %29, 0
br i1 %30, label %31, label %37
31: ; preds = %26
%32 = load i8*, i8** %5
%33 = load i8, i8* %32
%34 = sext i8 %33 to i32
%35 = add nsw i32 %34, 7
%36 = trunc i32 %35 to i8
store i8 %36, i8* %32
br label %37
37: ; preds = %31, %26
br label %88
38: ; preds = %11
%39 = load i32, i32* %6
%40 = icmp slt i32 %39, 7
br i1 %40, label %41, label %64
41: ; preds = %38
%42 = load i8, i8* %3
%43 = sext i8 %42 to i32
%44 = and i32 %43, 4
%45 = icmp ne i32 %44, 0
br i1 %45, label %46, label %52
46: ; preds = %41
%47 = load i8*, i8** %5
%48 = load i8, i8* %47
%49 = sext i8 %48 to i32
%50 = add nsw i32 %49, 56
%51 = trunc i32 %50 to i8
store i8 %51, i8* %47
br label %52
52: ; preds = %46, %41
%53 = load i8, i8* %3
%54 = sext i8 %53 to i32
%55 = and i32 %54, 8
%56 = icmp ne i32 %55, 0
br i1 %56, label %57, label %63
57: ; preds = %52
%58 = load i8*, i8** %5
%59 = load i8, i8* %58
%60 = sext i8 %59 to i32
%61 = add nsw i32 %60, 7
%62 = trunc i32 %61 to i8
store i8 %62, i8* %58
br label %63
63: ; preds = %57, %52
br label %87
64: ; preds = %38
%65 = load i8, i8* %3
%66 = sext i8 %65 to i32
%67 = and i32 %66, 16
%68 = icmp ne i32 %67, 0
br i1 %68, label %69, label %75
69: ; preds = %64
%70 = load i8*, i8** %5
%71 = load i8, i8* %70
%72 = sext i8 %71 to i32
%73 = add nsw i32 %72, 56
%74 = trunc i32 %73 to i8
store i8 %74, i8* %70
br label %75
75: ; preds = %69, %64
%76 = load i8, i8* %3
%77 = sext i8 %76 to i32
%78 = and i32 %77, 64
%79 = icmp ne i32 %78, 0
br i1 %79, label %80, label %86
80: ; preds = %75
%81 = load i8*, i8** %5
%82 = load i8, i8* %81
%83 = sext i8 %82 to i32
%84 = add nsw i32 %83, 7
%85 = trunc i32 %84 to i8
store i8 %85, i8* %81
br label %86
86: ; preds = %80, %75
br label %87
87: ; preds = %86, %63
br label %88
88: ; preds = %87, %37
br label %89
89: ; preds = %88
%90 = load i32, i32* %6
%91 = add nsw i32 %90, 1
store i32 %91, i32* %6
%92 = load i8*, i8** %5
%93 = getelementptr inbounds i8, i8* %92, i32 1
store i8* %93, i8** %5
br label %8
94: ; preds = %8
ret void
}

LLVM IR (-O2):
define void @gen_gfx(i8 signext %0, i8* nocapture %1) {
%3 = zext i8 %0 to i32
%4 = and i32 %3, 16
%5 = icmp eq i32 %4, 0
%6 = and i32 %3, 64
%7 = icmp eq i32 %6, 0
%8 = and i32 %3, 4
%9 = icmp eq i32 %8, 0
%10 = and i32 %3, 8
%11 = icmp eq i32 %10, 0
%12 = and i32 %3, 1
%13 = icmp eq i32 %12, 0
%14 = and i32 %3, 2
%15 = icmp eq i32 %14, 0
%16 = select i1 %13, i8 -128, i8 -72
%17 = select i1 %13, i8 -121, i8 -65
%18 = select i1 %15, i8 %16, i8 %17
store i8 %18, i8* %1
%19 = getelementptr inbounds i8, i8* %1, i64 1
%20 = select i1 %13, i8 -128, i8 -72
%21 = select i1 %13, i8 -121, i8 -65
%22 = select i1 %15, i8 %20, i8 %21
store i8 %22, i8* %19
%23 = getelementptr inbounds i8, i8* %1, i64 2
%24 = select i1 %13, i8 -128, i8 -72
%25 = select i1 %13, i8 -121, i8 -65
%26 = select i1 %15, i8 %24, i8 %25
store i8 %26, i8* %23
%27 = getelementptr inbounds i8, i8* %1, i64 3
%28 = select i1 %9, i8 -128, i8 -72
%29 = select i1 %9, i8 -121, i8 -65
%30 = select i1 %11, i8 %28, i8 %29
store i8 %30, i8* %27
%31 = getelementptr inbounds i8, i8* %1, i64 4
%32 = select i1 %9, i8 -128, i8 -72
%33 = select i1 %9, i8 -121, i8 -65
%34 = select i1 %11, i8 %32, i8 %33
store i8 %34, i8* %31
%35 = getelementptr inbounds i8, i8* %1, i64 5
%36 = select i1 %9, i8 -128, i8 -72
%37 = select i1 %9, i8 -121, i8 -65
%38 = select i1 %11, i8 %36, i8 %37
store i8 %38, i8* %35
%39 = getelementptr inbounds i8, i8* %1, i64 6
%40 = select i1 %9, i8 -128, i8 -72
%41 = select i1 %9, i8 -121, i8 -65
%42 = select i1 %11, i8 %40, i8 %41
store i8 %42, i8* %39
%43 = getelementptr inbounds i8, i8* %1, i64 7
%44 = select i1 %5, i8 -128, i8 -72
%45 = select i1 %5, i8 -121, i8 -65
%46 = select i1 %7, i8 %44, i8 %45
store i8 %46, i8* %43
%47 = getelementptr inbounds i8, i8* %1, i64 8
%48 = select i1 %5, i8 -128, i8 -72
%49 = select i1 %5, i8 -121, i8 -65
%50 = select i1 %7, i8 %48, i8 %49
store i8 %50, i8* %47
%51 = select i1 %5, i8 -128, i8 -72
%52 = select i1 %5, i8 -121, i8 -65
%53 = select i1 %7, i8 %51, i8 %52
%54 = getelementptr inbounds i8, i8* %1, i64 9
store i8 %53, i8* %54
ret void
}