int _is_haswell(int devid) {
  int ret = 0;
  switch (devid) {
  case 0x0400:
  case 0x0402:
  case 0x0404:
  case 0x0406:
  case 0x0408:
  case 0x040a:
  case 0x0412:
  case 0x0416:
  case 0x041a:
  case 0x0422:
  case 0x0426:
  case 0x042a:
  case 0x0a02:
  case 0x0a06:
  case 0x0a0a:
  case 0x0a12:
  case 0x0a16:
  case 0x0a1a:
  case 0x0a22:
  case 0x0a26:
  case 0x0a2a:
  case 0x0c02:
  case 0x0c04:
  case 0x0c06:
  case 0x0c0a:
  case 0x0c12:
  case 0x0c16:
  case 0x0c1a:
  case 0x0c22:
  case 0x0c26:
  case 0x0c2a:
  case 0x0d12:
  case 0x0d16:
  case 0x0d1a:
  case 0x0d22:
  case 0x0d26:
  case 0x0d2a:
  case 0x0d32:
  case 0x0d36:
  case 0x0d3a:
    ret = 1;
    break;
  default:
    break;
  }
  return ret;
}


x86 assembly (clang, -O0):
<_is_haswell>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
movl   $0x0,-0x8(%rbp)
mov    -0x4(%rbp),%eax
mov    %eax,-0xc(%rbp)
sub    $0x400,%eax
je     1409 <_is_haswell+0x309>
jmp    1124 <_is_haswell+0x24>
mov    -0xc(%rbp),%eax
sub    $0x402,%eax
je     1409 <_is_haswell+0x309>
jmp    1137 <_is_haswell+0x37>
mov    -0xc(%rbp),%eax
sub    $0x404,%eax
je     1409 <_is_haswell+0x309>
jmp    114a <_is_haswell+0x4a>
mov    -0xc(%rbp),%eax
sub    $0x406,%eax
je     1409 <_is_haswell+0x309>
jmp    115d <_is_haswell+0x5d>
mov    -0xc(%rbp),%eax
sub    $0x408,%eax
je     1409 <_is_haswell+0x309>
jmp    1170 <_is_haswell+0x70>
mov    -0xc(%rbp),%eax
sub    $0x40a,%eax
je     1409 <_is_haswell+0x309>
jmp    1183 <_is_haswell+0x83>
mov    -0xc(%rbp),%eax
sub    $0x412,%eax
je     1409 <_is_haswell+0x309>
jmp    1196 <_is_haswell+0x96>
mov    -0xc(%rbp),%eax
sub    $0x416,%eax
je     1409 <_is_haswell+0x309>
jmp    11a9 <_is_haswell+0xa9>
mov    -0xc(%rbp),%eax
sub    $0x41a,%eax
je     1409 <_is_haswell+0x309>
jmp    11bc <_is_haswell+0xbc>
mov    -0xc(%rbp),%eax
sub    $0x422,%eax
je     1409 <_is_haswell+0x309>
jmp    11cf <_is_haswell+0xcf>
mov    -0xc(%rbp),%eax
sub    $0x426,%eax
je     1409 <_is_haswell+0x309>
jmp    11e2 <_is_haswell+0xe2>
mov    -0xc(%rbp),%eax
sub    $0x42a,%eax
je     1409 <_is_haswell+0x309>
jmp    11f5 <_is_haswell+0xf5>
mov    -0xc(%rbp),%eax
sub    $0xa02,%eax
je     1409 <_is_haswell+0x309>
jmp    1208 <_is_haswell+0x108>
mov    -0xc(%rbp),%eax
sub    $0xa06,%eax
je     1409 <_is_haswell+0x309>
jmp    121b <_is_haswell+0x11b>
mov    -0xc(%rbp),%eax
sub    $0xa0a,%eax
je     1409 <_is_haswell+0x309>
jmp    122e <_is_haswell+0x12e>
mov    -0xc(%rbp),%eax
sub    $0xa12,%eax
je     1409 <_is_haswell+0x309>
jmp    1241 <_is_haswell+0x141>
mov    -0xc(%rbp),%eax
sub    $0xa16,%eax
je     1409 <_is_haswell+0x309>
jmp    1254 <_is_haswell+0x154>
mov    -0xc(%rbp),%eax
sub    $0xa1a,%eax
je     1409 <_is_haswell+0x309>
jmp    1267 <_is_haswell+0x167>
mov    -0xc(%rbp),%eax
sub    $0xa22,%eax
je     1409 <_is_haswell+0x309>
jmp    127a <_is_haswell+0x17a>
mov    -0xc(%rbp),%eax
sub    $0xa26,%eax
je     1409 <_is_haswell+0x309>
jmp    128d <_is_haswell+0x18d>
mov    -0xc(%rbp),%eax
sub    $0xa2a,%eax
je     1409 <_is_haswell+0x309>
jmp    12a0 <_is_haswell+0x1a0>
mov    -0xc(%rbp),%eax
sub    $0xc02,%eax
je     1409 <_is_haswell+0x309>
jmp    12b3 <_is_haswell+0x1b3>
mov    -0xc(%rbp),%eax
sub    $0xc04,%eax
je     1409 <_is_haswell+0x309>
jmp    12c6 <_is_haswell+0x1c6>
mov    -0xc(%rbp),%eax
sub    $0xc06,%eax
je     1409 <_is_haswell+0x309>
jmp    12d9 <_is_haswell+0x1d9>
mov    -0xc(%rbp),%eax
sub    $0xc0a,%eax
je     1409 <_is_haswell+0x309>
jmp    12ec <_is_haswell+0x1ec>
mov    -0xc(%rbp),%eax
sub    $0xc12,%eax
je     1409 <_is_haswell+0x309>
jmp    12ff <_is_haswell+0x1ff>
mov    -0xc(%rbp),%eax
sub    $0xc16,%eax
je     1409 <_is_haswell+0x309>
jmp    1312 <_is_haswell+0x212>
mov    -0xc(%rbp),%eax
sub    $0xc1a,%eax
je     1409 <_is_haswell+0x309>
jmp    1325 <_is_haswell+0x225>
mov    -0xc(%rbp),%eax
sub    $0xc22,%eax
je     1409 <_is_haswell+0x309>
jmp    1338 <_is_haswell+0x238>
mov    -0xc(%rbp),%eax
sub    $0xc26,%eax
je     1409 <_is_haswell+0x309>
jmp    134b <_is_haswell+0x24b>
mov    -0xc(%rbp),%eax
sub    $0xc2a,%eax
je     1409 <_is_haswell+0x309>
jmp    135e <_is_haswell+0x25e>
mov    -0xc(%rbp),%eax
sub    $0xd12,%eax
je     1409 <_is_haswell+0x309>
jmp    1371 <_is_haswell+0x271>
mov    -0xc(%rbp),%eax
sub    $0xd16,%eax
je     1409 <_is_haswell+0x309>
jmp    1384 <_is_haswell+0x284>
mov    -0xc(%rbp),%eax
sub    $0xd1a,%eax
je     1409 <_is_haswell+0x309>
jmp    1397 <_is_haswell+0x297>
mov    -0xc(%rbp),%eax
sub    $0xd22,%eax
je     1409 <_is_haswell+0x309>
jmp    13aa <_is_haswell+0x2aa>
mov    -0xc(%rbp),%eax
sub    $0xd26,%eax
je     1409 <_is_haswell+0x309>
jmp    13bd <_is_haswell+0x2bd>
mov    -0xc(%rbp),%eax
sub    $0xd2a,%eax
je     1409 <_is_haswell+0x309>
jmp    13d0 <_is_haswell+0x2d0>
mov    -0xc(%rbp),%eax
sub    $0xd32,%eax
je     1409 <_is_haswell+0x309>
jmp    13e3 <_is_haswell+0x2e3>
mov    -0xc(%rbp),%eax
sub    $0xd36,%eax
je     1409 <_is_haswell+0x309>
jmp    13f6 <_is_haswell+0x2f6>
mov    -0xc(%rbp),%eax
sub    $0xd3a,%eax
jne    1415 <_is_haswell+0x315>
jmp    1409 <_is_haswell+0x309>
movl   $0x1,-0x8(%rbp)
jmp    141a <_is_haswell+0x31a>
jmp    141a <_is_haswell+0x31a>
mov    -0x8(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<_is_haswell>:
xor    %eax,%eax
cmp    $0xc01,%edi
jg     112d <_is_haswell+0x2d>
lea    -0x400(%rdi),%ecx
cmp    $0x2a,%ecx
ja     1125 <_is_haswell+0x25>
movabs $0x44404440555,%rdx
bt     %rcx,%rdx
jb     1163 <_is_haswell+0x63>
add    $0xfffff5fe,%edi
jmp    114e <_is_haswell+0x4e>
lea    -0xc02(%rdi),%ecx
cmp    $0x28,%ecx
ja     1148 <_is_haswell+0x48>
movabs $0x11101110115,%rdx
bt     %rcx,%rdx
jb     1163 <_is_haswell+0x63>
add    $0xfffff2ee,%edi
cmp    $0x28,%edi
ja     1168 <_is_haswell+0x68>
movabs $0x11101110111,%rcx
bt     %rdi,%rcx
jae    1168 <_is_haswell+0x68>
mov    $0x1,%eax
ret

LLVM IR (-O0):
define i32 @_is_haswell(i32 %0) {
%2 = alloca i32
%3 = alloca i32
store i32 %0, i32* %2
store i32 0, i32* %3
%4 = load i32, i32* %2
switch i32 %4, label %6 [
i32 1024, label %5
i32 1026, label %5
i32 1028, label %5
i32 1030, label %5
i32 1032, label %5
i32 1034, label %5
i32 1042, label %5
i32 1046, label %5
i32 1050, label %5
i32 1058, label %5
i32 1062, label %5
i32 1066, label %5
i32 2562, label %5
i32 2566, label %5
i32 2570, label %5
i32 2578, label %5
i32 2582, label %5
i32 2586, label %5
i32 2594, label %5
i32 2598, label %5
i32 2602, label %5
i32 3074, label %5
i32 3076, label %5
i32 3078, label %5
i32 3082, label %5
i32 3090, label %5
i32 3094, label %5
i32 3098, label %5
i32 3106, label %5
i32 3110, label %5
i32 3114, label %5
i32 3346, label %5
i32 3350, label %5
i32 3354, label %5
i32 3362, label %5
i32 3366, label %5
i32 3370, label %5
i32 3378, label %5
i32 3382, label %5
i32 3386, label %5
]
5: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
store i32 1, i32* %3
br label %7
6: ; preds = %1
br label %7
7: ; preds = %6, %5
%8 = load i32, i32* %3
ret i32 %8
}

LLVM IR (-O2):
define i32 @_is_haswell(i32 %0) {
switch i32 %0, label %3 [
i32 1024, label %2
i32 1026, label %2
i32 1028, label %2
i32 1030, label %2
i32 1032, label %2
i32 1034, label %2
i32 1042, label %2
i32 1046, label %2
i32 1050, label %2
i32 1058, label %2
i32 1062, label %2
i32 1066, label %2
i32 2562, label %2
i32 2566, label %2
i32 2570, label %2
i32 2578, label %2
i32 2582, label %2
i32 2586, label %2
i32 2594, label %2
i32 2598, label %2
i32 2602, label %2
i32 3074, label %2
i32 3076, label %2
i32 3078, label %2
i32 3082, label %2
i32 3090, label %2
i32 3094, label %2
i32 3098, label %2
i32 3106, label %2
i32 3110, label %2
i32 3114, label %2
i32 3346, label %2
i32 3350, label %2
i32 3354, label %2
i32 3362, label %2
i32 3366, label %2
i32 3370, label %2
i32 3378, label %2
i32 3382, label %2
i32 3386, label %2
]
2: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
br label %3
3: ; preds = %1, %2
%4 = phi i32 [ 0, %1 ], [ 1, %2 ]
ret i32 %4
}