int is_broadwell(unsigned short pciid) {
  return ((((pciid)&0xff00) != 0x1600)    ? 0
          : ((((pciid)&0x00f0) >> 4) > 3) ? 0
          : (((pciid)&0x000f) == 0x2)     ? 1
          : (((pciid)&0x000f) == 0x6)     ? 1
          : (((pciid)&0x000f) == 0xb)     ? 1
          : (((pciid)&0x000f) == 0xa)     ? 1
          : (((pciid)&0x000f) == 0xd)     ? 1
          : (((pciid)&0x000f) == 0xe)     ? 1
                                          : 0);
}


x86 assembly (clang, -O0):
<is_broadwell>:
push   %rbp
mov    %rsp,%rbp
mov    %di,%ax
mov    %ax,-0x2(%rbp)
movzwl -0x2(%rbp),%eax
and    $0xff00,%eax
cmp    $0x1600,%eax
je     1129 <is_broadwell+0x29>
xor    %eax,%eax
mov    %eax,-0x8(%rbp)
jmp    1214 <is_broadwell+0x114>
movzwl -0x2(%rbp),%eax
and    $0xf0,%eax
sar    $0x4,%eax
cmp    $0x3,%eax
jle    1148 <is_broadwell+0x48>
xor    %eax,%eax
mov    %eax,-0xc(%rbp)
jmp    120e <is_broadwell+0x10e>
movzwl -0x2(%rbp),%eax
and    $0xf,%eax
cmp    $0x2,%eax
jne    1165 <is_broadwell+0x65>
mov    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1208 <is_broadwell+0x108>
movzwl -0x2(%rbp),%eax
and    $0xf,%eax
cmp    $0x6,%eax
jne    1182 <is_broadwell+0x82>
mov    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1202 <is_broadwell+0x102>
movzwl -0x2(%rbp),%eax
and    $0xf,%eax
cmp    $0xb,%eax
jne    119f <is_broadwell+0x9f>
mov    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    11fc <is_broadwell+0xfc>
movzwl -0x2(%rbp),%eax
and    $0xf,%eax
cmp    $0xa,%eax
jne    11bc <is_broadwell+0xbc>
mov    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    11f6 <is_broadwell+0xf6>
movzwl -0x2(%rbp),%eax
and    $0xf,%eax
cmp    $0xd,%eax
jne    11d9 <is_broadwell+0xd9>
mov    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    11f0 <is_broadwell+0xf0>
movzwl -0x2(%rbp),%edx
and    $0xf,%edx
xor    %eax,%eax
mov    $0x1,%ecx
cmp    $0xe,%edx
cmove  %ecx,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<is_broadwell>:
mov    %edi,%ecx
and    $0xffffffc0,%ecx
xor    %eax,%eax
cmp    $0x1600,%ecx
jne    1131 <is_broadwell+0x31>
and    $0xf,%edi
lea    -0x2(%rdi),%ecx
cmp    $0xc,%ecx
jae    1129 <is_broadwell+0x29>
mov    $0x1,%eax
mov    $0xb11,%edx
bt     %ecx,%edx
jb     1131 <is_broadwell+0x31>
xor    %eax,%eax
cmp    $0xe,%edi
sete   %al
ret

LLVM IR (-O0):
define i32 @is_broadwell(i16 zeroext %0) {
%2 = alloca i16
store i16 %0, i16* %2
%3 = load i16, i16* %2
%4 = zext i16 %3 to i32
%5 = and i32 %4, 65280
%6 = icmp ne i32 %5, 5632
br i1 %6, label %7, label %8
7: ; preds = %1
br label %64
8: ; preds = %1
%9 = load i16, i16* %2
%10 = zext i16 %9 to i32
%11 = and i32 %10, 240
%12 = ashr i32 %11, 4
%13 = icmp sgt i32 %12, 3
br i1 %13, label %14, label %15
14: ; preds = %8
br label %62
15: ; preds = %8
%16 = load i16, i16* %2
%17 = zext i16 %16 to i32
%18 = and i32 %17, 15
%19 = icmp eq i32 %18, 2
br i1 %19, label %20, label %21
20: ; preds = %15
br label %60
21: ; preds = %15
%22 = load i16, i16* %2
%23 = zext i16 %22 to i32
%24 = and i32 %23, 15
%25 = icmp eq i32 %24, 6
br i1 %25, label %26, label %27
26: ; preds = %21
br label %58
27: ; preds = %21
%28 = load i16, i16* %2
%29 = zext i16 %28 to i32
%30 = and i32 %29, 15
%31 = icmp eq i32 %30, 11
br i1 %31, label %32, label %33
32: ; preds = %27
br label %56
33: ; preds = %27
%34 = load i16, i16* %2
%35 = zext i16 %34 to i32
%36 = and i32 %35, 15
%37 = icmp eq i32 %36, 10
br i1 %37, label %38, label %39
38: ; preds = %33
br label %54
39: ; preds = %33
%40 = load i16, i16* %2
%41 = zext i16 %40 to i32
%42 = and i32 %41, 15
%43 = icmp eq i32 %42, 13
br i1 %43, label %44, label %45
44: ; preds = %39
br label %52
45: ; preds = %39
%46 = load i16, i16* %2
%47 = zext i16 %46 to i32
%48 = and i32 %47, 15
%49 = icmp eq i32 %48, 14
%50 = zext i1 %49 to i64
%51 = select i1 %49, i32 1, i32 0
br label %52
52: ; preds = %45, %44
%53 = phi i32 [ 1, %44 ], [ %51, %45 ]
br label %54
54: ; preds = %52, %38
%55 = phi i32 [ 1, %38 ], [ %53, %52 ]
br label %56
56: ; preds = %54, %32
%57 = phi i32 [ 1, %32 ], [ %55, %54 ]
br label %58
58: ; preds = %56, %26
%59 = phi i32 [ 1, %26 ], [ %57, %56 ]
br label %60
60: ; preds = %58, %20
%61 = phi i32 [ 1, %20 ], [ %59, %58 ]
br label %62
62: ; preds = %60, %14
%63 = phi i32 [ 0, %14 ], [ %61, %60 ]
br label %64
64: ; preds = %62, %7
%65 = phi i32 [ 0, %7 ], [ %63, %62 ]
ret i32 %65
}

LLVM IR (-O2):
define i32 @is_broadwell(i16 zeroext %0) {
%2 = zext i16 %0 to i32
%3 = and i32 %2, 65472
%4 = icmp eq i32 %3, 5632
br i1 %4, label %5, label %17
5: ; preds = %1
%6 = and i32 %2, 15
%7 = add nsw i32 %6, -2
%8 = icmp ult i32 %7, 12
br i1 %8, label %12, label %9
9: ; preds = %12, %5
%10 = icmp eq i32 %6, 14
%11 = zext i1 %10 to i32
br label %17
12: ; preds = %5
%13 = trunc i32 %7 to i16
%14 = lshr i16 2833, %13
%15 = and i16 %14, 1
%16 = icmp eq i16 %15, 0
br i1 %16, label %9, label %17
17: ; preds = %12, %9, %1
%18 = phi i32 [ 0, %1 ], [ %11, %9 ], [ 1, %12 ]
ret i32 %18
}