int is_haswell(unsigned short pciid) {
  return (((pciid) == 0x0402 || (pciid) == 0x0406 || (pciid) == 0x040A ||
           (pciid) == 0x040B || (pciid) == 0x040E || (pciid) == 0x0C02 ||
           (pciid) == 0x0C06 || (pciid) == 0x0C0A || (pciid) == 0x0C0B ||
           (pciid) == 0x0C0E || (pciid) == 0x0A02 || (pciid) == 0x0A06 ||
           (pciid) == 0x0A0A || (pciid) == 0x0A0B || (pciid) == 0x0A0E ||
           (pciid) == 0x0D02 || (pciid) == 0x0D06 || (pciid) == 0x0D0A ||
           (pciid) == 0x0D0B || (pciid) == 0x0D0E) ||
          ((pciid) == 0x0412 || (pciid) == 0x0416 || (pciid) == 0x041A ||
           (pciid) == 0x041B || (pciid) == 0x041E || (pciid) == 0x0C12 ||
           (pciid) == 0x0C16 || (pciid) == 0x0C1A || (pciid) == 0x0C1B ||
           (pciid) == 0x0C1E || (pciid) == 0x0A12 || (pciid) == 0x0A16 ||
           (pciid) == 0x0A1A || (pciid) == 0x0A1B || (pciid) == 0x0A1E ||
           (pciid) == 0x0D12 || (pciid) == 0x0D16 || (pciid) == 0x0D1A ||
           (pciid) == 0x0D1B || (pciid) == 0x0D1E) ||
          ((pciid) == 0x0422 || (pciid) == 0x0426 || (pciid) == 0x042A ||
           (pciid) == 0x042B || (pciid) == 0x042E || (pciid) == 0x0C22 ||
           (pciid) == 0x0C26 || (pciid) == 0x0C2A || (pciid) == 0x0C2B ||
           (pciid) == 0x0C2E || (pciid) == 0x0A22 || (pciid) == 0x0A26 ||
           (pciid) == 0x0A2A || (pciid) == 0x0A2B || (pciid) == 0x0A2E ||
           (pciid) == 0x0D22 || (pciid) == 0x0D26 || (pciid) == 0x0D2A ||
           (pciid) == 0x0D2B || (pciid) == 0x0D2E));
}


x86 assembly (clang, -O0):
<is_haswell>:
push   %rbp
mov    %rsp,%rbp
mov    %di,%ax
mov    %ax,-0x2(%rbp)
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0x402,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0x406,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0x40a,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0x40b,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0x40e,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xc02,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xc06,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xc0a,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xc0b,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xc0e,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xa02,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xa06,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xa0a,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xa0b,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xa0e,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xd02,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xd06,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xd0a,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xd0b,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xd0e,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0x412,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0x416,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0x41a,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0x41b,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0x41e,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xc12,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xc16,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xc1a,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xc1b,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xc1e,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xa12,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xa16,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xa1a,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xa1b,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xa1e,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xd12,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xd16,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xd1a,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xd1b,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xd1e,%ecx
mov    %al,-0x3(%rbp)
je     15f7 <is_haswell+0x4f7>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0x422,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0x426,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0x42a,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0x42b,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0x42e,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xc22,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xc26,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xc2a,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xc2b,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xc2e,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xa22,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xa26,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xa2a,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xa2b,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xa2e,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xd22,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xd26,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xd2a,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%ecx
mov    $0x1,%al
cmp    $0xd2b,%ecx
mov    %al,-0x4(%rbp)
je     15f1 <is_haswell+0x4f1>
movzwl -0x2(%rbp),%eax
cmp    $0xd2e,%eax
sete   %al
mov    %al,-0x4(%rbp)
mov    -0x4(%rbp),%al
mov    %al,-0x3(%rbp)
mov    -0x3(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<is_haswell>:
mov    $0x1,%eax
movswl %di,%ecx
cmp    $0xc01,%ecx
jg     113d <is_haswell+0x3d>
lea    -0x402(%rdi),%ecx
cmp    $0x2c,%cx
jbe    118a <is_haswell+0x8a>
lea    -0xa02(%rdi),%ecx
cmp    $0x2c,%cx
ja     117b <is_haswell+0x7b>
movzwl %cx,%ecx
movabs $0x131113111311,%rdx
bt     %rcx,%rdx
jb     11a1 <is_haswell+0xa1>
jmp    117b <is_haswell+0x7b>
lea    -0xc02(%rdi),%ecx
cmp    $0x2c,%cx
ja     115c <is_haswell+0x5c>
movzwl %cx,%ecx
movabs $0x131113111311,%rdx
bt     %rcx,%rdx
jb     11a1 <is_haswell+0xa1>
lea    -0xd02(%rdi),%ecx
cmp    $0x29,%cx
ja     117b <is_haswell+0x7b>
movzwl %cx,%ecx
movabs $0x31113111311,%rdx
bt     %rcx,%rdx
jb     11a1 <is_haswell+0xa1>
movzwl %di,%ecx
xor    %eax,%eax
cmp    $0xd2e,%ecx
sete   %al
ret
movzwl %cx,%ecx
movabs $0x131113111311,%rdx
bt     %rcx,%rdx
jae    111c <is_haswell+0x1c>
ret

LLVM IR (-O0):
define i32 @is_haswell(i16 zeroext %0) {
%2 = alloca i16
store i16 %0, i16* %2
%3 = load i16, i16* %2
%4 = zext i16 %3 to i32
%5 = icmp eq i32 %4, 1026
br i1 %5, label %244, label %6
6: ; preds = %1
%7 = load i16, i16* %2
%8 = zext i16 %7 to i32
%9 = icmp eq i32 %8, 1030
br i1 %9, label %244, label %10
10: ; preds = %6
%11 = load i16, i16* %2
%12 = zext i16 %11 to i32
%13 = icmp eq i32 %12, 1034
br i1 %13, label %244, label %14
14: ; preds = %10
%15 = load i16, i16* %2
%16 = zext i16 %15 to i32
%17 = icmp eq i32 %16, 1035
br i1 %17, label %244, label %18
18: ; preds = %14
%19 = load i16, i16* %2
%20 = zext i16 %19 to i32
%21 = icmp eq i32 %20, 1038
br i1 %21, label %244, label %22
22: ; preds = %18
%23 = load i16, i16* %2
%24 = zext i16 %23 to i32
%25 = icmp eq i32 %24, 3074
br i1 %25, label %244, label %26
26: ; preds = %22
%27 = load i16, i16* %2
%28 = zext i16 %27 to i32
%29 = icmp eq i32 %28, 3078
br i1 %29, label %244, label %30
30: ; preds = %26
%31 = load i16, i16* %2
%32 = zext i16 %31 to i32
%33 = icmp eq i32 %32, 3082
br i1 %33, label %244, label %34
34: ; preds = %30
%35 = load i16, i16* %2
%36 = zext i16 %35 to i32
%37 = icmp eq i32 %36, 3083
br i1 %37, label %244, label %38
38: ; preds = %34
%39 = load i16, i16* %2
%40 = zext i16 %39 to i32
%41 = icmp eq i32 %40, 3086
br i1 %41, label %244, label %42
42: ; preds = %38
%43 = load i16, i16* %2
%44 = zext i16 %43 to i32
%45 = icmp eq i32 %44, 2562
br i1 %45, label %244, label %46
46: ; preds = %42
%47 = load i16, i16* %2
%48 = zext i16 %47 to i32
%49 = icmp eq i32 %48, 2566
br i1 %49, label %244, label %50
50: ; preds = %46
%51 = load i16, i16* %2
%52 = zext i16 %51 to i32
%53 = icmp eq i32 %52, 2570
br i1 %53, label %244, label %54
54: ; preds = %50
%55 = load i16, i16* %2
%56 = zext i16 %55 to i32
%57 = icmp eq i32 %56, 2571
br i1 %57, label %244, label %58
58: ; preds = %54
%59 = load i16, i16* %2
%60 = zext i16 %59 to i32
%61 = icmp eq i32 %60, 2574
br i1 %61, label %244, label %62
62: ; preds = %58
%63 = load i16, i16* %2
%64 = zext i16 %63 to i32
%65 = icmp eq i32 %64, 3330
br i1 %65, label %244, label %66
66: ; preds = %62
%67 = load i16, i16* %2
%68 = zext i16 %67 to i32
%69 = icmp eq i32 %68, 3334
br i1 %69, label %244, label %70
70: ; preds = %66
%71 = load i16, i16* %2
%72 = zext i16 %71 to i32
%73 = icmp eq i32 %72, 3338
br i1 %73, label %244, label %74
74: ; preds = %70
%75 = load i16, i16* %2
%76 = zext i16 %75 to i32
%77 = icmp eq i32 %76, 3339
br i1 %77, label %244, label %78
78: ; preds = %74
%79 = load i16, i16* %2
%80 = zext i16 %79 to i32
%81 = icmp eq i32 %80, 3342
br i1 %81, label %244, label %82
82: ; preds = %78
%83 = load i16, i16* %2
%84 = zext i16 %83 to i32
%85 = icmp eq i32 %84, 1042
br i1 %85, label %244, label %86
86: ; preds = %82
%87 = load i16, i16* %2
%88 = zext i16 %87 to i32
%89 = icmp eq i32 %88, 1046
br i1 %89, label %244, label %90
90: ; preds = %86
%91 = load i16, i16* %2
%92 = zext i16 %91 to i32
%93 = icmp eq i32 %92, 1050
br i1 %93, label %244, label %94
94: ; preds = %90
%95 = load i16, i16* %2
%96 = zext i16 %95 to i32
%97 = icmp eq i32 %96, 1051
br i1 %97, label %244, label %98
98: ; preds = %94
%99 = load i16, i16* %2
%100 = zext i16 %99 to i32
%101 = icmp eq i32 %100, 1054
br i1 %101, label %244, label %102
102: ; preds = %98
%103 = load i16, i16* %2
%104 = zext i16 %103 to i32
%105 = icmp eq i32 %104, 3090
br i1 %105, label %244, label %106
106: ; preds = %102
%107 = load i16, i16* %2
%108 = zext i16 %107 to i32
%109 = icmp eq i32 %108, 3094
br i1 %109, label %244, label %110
110: ; preds = %106
%111 = load i16, i16* %2
%112 = zext i16 %111 to i32
%113 = icmp eq i32 %112, 3098
br i1 %113, label %244, label %114
114: ; preds = %110
%115 = load i16, i16* %2
%116 = zext i16 %115 to i32
%117 = icmp eq i32 %116, 3099
br i1 %117, label %244, label %118
118: ; preds = %114
%119 = load i16, i16* %2
%120 = zext i16 %119 to i32
%121 = icmp eq i32 %120, 3102
br i1 %121, label %244, label %122
122: ; preds = %118
%123 = load i16, i16* %2
%124 = zext i16 %123 to i32
%125 = icmp eq i32 %124, 2578
br i1 %125, label %244, label %126
126: ; preds = %122
%127 = load i16, i16* %2
%128 = zext i16 %127 to i32
%129 = icmp eq i32 %128, 2582
br i1 %129, label %244, label %130
130: ; preds = %126
%131 = load i16, i16* %2
%132 = zext i16 %131 to i32
%133 = icmp eq i32 %132, 2586
br i1 %133, label %244, label %134
134: ; preds = %130
%135 = load i16, i16* %2
%136 = zext i16 %135 to i32
%137 = icmp eq i32 %136, 2587
br i1 %137, label %244, label %138
138: ; preds = %134
%139 = load i16, i16* %2
%140 = zext i16 %139 to i32
%141 = icmp eq i32 %140, 2590
br i1 %141, label %244, label %142
142: ; preds = %138
%143 = load i16, i16* %2
%144 = zext i16 %143 to i32
%145 = icmp eq i32 %144, 3346
br i1 %145, label %244, label %146
146: ; preds = %142
%147 = load i16, i16* %2
%148 = zext i16 %147 to i32
%149 = icmp eq i32 %148, 3350
br i1 %149, label %244, label %150
150: ; preds = %146
%151 = load i16, i16* %2
%152 = zext i16 %151 to i32
%153 = icmp eq i32 %152, 3354
br i1 %153, label %244, label %154
154: ; preds = %150
%155 = load i16, i16* %2
%156 = zext i16 %155 to i32
%157 = icmp eq i32 %156, 3355
br i1 %157, label %244, label %158
158: ; preds = %154
%159 = load i16, i16* %2
%160 = zext i16 %159 to i32
%161 = icmp eq i32 %160, 3358
br i1 %161, label %244, label %162
162: ; preds = %158
%163 = load i16, i16* %2
%164 = zext i16 %163 to i32
%165 = icmp eq i32 %164, 1058
br i1 %165, label %242, label %166
166: ; preds = %162
%167 = load i16, i16* %2
%168 = zext i16 %167 to i32
%169 = icmp eq i32 %168, 1062
br i1 %169, label %242, label %170
170: ; preds = %166
%171 = load i16, i16* %2
%172 = zext i16 %171 to i32
%173 = icmp eq i32 %172, 1066
br i1 %173, label %242, label %174
174: ; preds = %170
%175 = load i16, i16* %2
%176 = zext i16 %175 to i32
%177 = icmp eq i32 %176, 1067
br i1 %177, label %242, label %178
178: ; preds = %174
%179 = load i16, i16* %2
%180 = zext i16 %179 to i32
%181 = icmp eq i32 %180, 1070
br i1 %181, label %242, label %182
182: ; preds = %178
%183 = load i16, i16* %2
%184 = zext i16 %183 to i32
%185 = icmp eq i32 %184, 3106
br i1 %185, label %242, label %186
186: ; preds = %182
%187 = load i16, i16* %2
%188 = zext i16 %187 to i32
%189 = icmp eq i32 %188, 3110
br i1 %189, label %242, label %190
190: ; preds = %186
%191 = load i16, i16* %2
%192 = zext i16 %191 to i32
%193 = icmp eq i32 %192, 3114
br i1 %193, label %242, label %194
194: ; preds = %190
%195 = load i16, i16* %2
%196 = zext i16 %195 to i32
%197 = icmp eq i32 %196, 3115
br i1 %197, label %242, label %198
198: ; preds = %194
%199 = load i16, i16* %2
%200 = zext i16 %199 to i32
%201 = icmp eq i32 %200, 3118
br i1 %201, label %242, label %202
202: ; preds = %198
%203 = load i16, i16* %2
%204 = zext i16 %203 to i32
%205 = icmp eq i32 %204, 2594
br i1 %205, label %242, label %206
206: ; preds = %202
%207 = load i16, i16* %2
%208 = zext i16 %207 to i32
%209 = icmp eq i32 %208, 2598
br i1 %209, label %242, label %210
210: ; preds = %206
%211 = load i16, i16* %2
%212 = zext i16 %211 to i32
%213 = icmp eq i32 %212, 2602
br i1 %213, label %242, label %214
214: ; preds = %210
%215 = load i16, i16* %2
%216 = zext i16 %215 to i32
%217 = icmp eq i32 %216, 2603
br i1 %217, label %242, label %218
218: ; preds = %214
%219 = load i16, i16* %2
%220 = zext i16 %219 to i32
%221 = icmp eq i32 %220, 2606
br i1 %221, label %242, label %222
222: ; preds = %218
%223 = load i16, i16* %2
%224 = zext i16 %223 to i32
%225 = icmp eq i32 %224, 3362
br i1 %225, label %242, label %226
226: ; preds = %222
%227 = load i16, i16* %2
%228 = zext i16 %227 to i32
%229 = icmp eq i32 %228, 3366
br i1 %229, label %242, label %230
230: ; preds = %226
%231 = load i16, i16* %2
%232 = zext i16 %231 to i32
%233 = icmp eq i32 %232, 3370
br i1 %233, label %242, label %234
234: ; preds = %230
%235 = load i16, i16* %2
%236 = zext i16 %235 to i32
%237 = icmp eq i32 %236, 3371
br i1 %237, label %242, label %238
238: ; preds = %234
%239 = load i16, i16* %2
%240 = zext i16 %239 to i32
%241 = icmp eq i32 %240, 3374
br label %242
242: ; preds = %238, %234, %230, %226, %222, %218, %214, %210, %206, %202, %198, %194, %190, %186, %182, %178, %174, %170, %166, %162
%243 = phi i1 [ true, %234 ], [ true, %230 ], [ true, %226 ], [ true, %222 ], [ true, %218 ], [ true, %214 ], [ true, %210 ], [ true, %206 ], [ true, %202 ], [ true, %198 ], [ true, %194 ], [ true, %190 ], [ true, %186 ], [ true, %182 ], [ true, %178 ], [ true, %174 ], [ true, %170 ], [ true, %166 ], [ true, %162 ], [ %241, %238 ]
br label %244
244: ; preds = %242, %158, %154, %150, %146, %142, %138, %134, %130, %126, %122, %118, %114, %110, %106, %102, %98, %94, %90, %86, %82, %78, %74, %70, %66, %62, %58, %54, %50, %46, %42, %38, %34, %30, %26, %22, %18, %14, %10, %6, %1
%245 = phi i1 [ true, %158 ], [ true, %154 ], [ true, %150 ], [ true, %146 ], [ true, %142 ], [ true, %138 ], [ true, %134 ], [ true, %130 ], [ true, %126 ], [ true, %122 ], [ true, %118 ], [ true, %114 ], [ true, %110 ], [ true, %106 ], [ true, %102 ], [ true, %98 ], [ true, %94 ], [ true, %90 ], [ true, %86 ], [ true, %82 ], [ true, %78 ], [ true, %74 ], [ true, %70 ], [ true, %66 ], [ true, %62 ], [ true, %58 ], [ true, %54 ], [ true, %50 ], [ true, %46 ], [ true, %42 ], [ true, %38 ], [ true, %34 ], [ true, %30 ], [ true, %26 ], [ true, %22 ], [ true, %18 ], [ true, %14 ], [ true, %10 ], [ true, %6 ], [ true, %1 ], [ %243, %242 ]
%246 = zext i1 %245 to i32
ret i32 %246
}

LLVM IR (-O2):
define i32 @is_haswell(i16 zeroext %0) {
switch i16 %0, label %2 [
i16 3358, label %5
i16 3355, label %5
i16 3354, label %5
i16 3350, label %5
i16 3346, label %5
i16 3342, label %5
i16 3339, label %5
i16 3338, label %5
i16 3334, label %5
i16 3330, label %5
i16 3102, label %5
i16 3099, label %5
i16 3098, label %5
i16 3094, label %5
i16 3090, label %5
i16 3086, label %5
i16 3083, label %5
i16 3082, label %5
i16 3078, label %5
i16 3074, label %5
i16 2590, label %5
i16 2587, label %5
i16 2586, label %5
i16 2582, label %5
i16 2578, label %5
i16 2574, label %5
i16 2571, label %5
i16 2570, label %5
i16 2566, label %5
i16 2562, label %5
i16 1054, label %5
i16 1051, label %5
i16 1050, label %5
i16 1046, label %5
i16 1042, label %5
i16 1038, label %5
i16 1035, label %5
i16 1034, label %5
i16 1030, label %5
i16 1026, label %5
i16 3371, label %5
i16 3370, label %5
i16 3366, label %5
i16 3362, label %5
i16 3118, label %5
i16 3115, label %5
i16 3114, label %5
i16 3110, label %5
i16 3106, label %5
i16 2606, label %5
i16 2603, label %5
i16 2602, label %5
i16 2598, label %5
i16 2594, label %5
i16 1070, label %5
i16 1067, label %5
i16 1066, label %5
i16 1062, label %5
i16 1058, label %5
]
2: ; preds = %1
%3 = icmp eq i16 %0, 3374
%4 = zext i1 %3 to i32
br 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, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %2
%6 = phi i32 [ 1, %1 ], [ %4, %2 ], [ 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 ], [ 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 ], [ 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 ]
ret i32 %6
}