int xtensa_b4constu(v)
int v;
{
  switch (v) {
  case 32768:
  case 65536:
  case 2:
  case 3:
  case 4:
  case 5:
  case 6:
  case 7:
  case 8:
  case 10:
  case 12:
  case 16:
  case 32:
  case 64:
  case 128:
  case 256: {
    return 1;
  } break;
  }
  return 0;
}


x86 assembly (clang, -O0):
<xtensa_b4constu>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    %eax,-0xc(%rbp)
add    $0xfffffffe,%eax
sub    $0x7,%eax
jb     11bf <xtensa_b4constu+0xbf>
jmp    111e <xtensa_b4constu+0x1e>
mov    -0xc(%rbp),%eax
sub    $0xa,%eax
je     11bf <xtensa_b4constu+0xbf>
jmp    112f <xtensa_b4constu+0x2f>
mov    -0xc(%rbp),%eax
sub    $0xc,%eax
je     11bf <xtensa_b4constu+0xbf>
jmp    1140 <xtensa_b4constu+0x40>
mov    -0xc(%rbp),%eax
sub    $0x10,%eax
je     11bf <xtensa_b4constu+0xbf>
jmp    1151 <xtensa_b4constu+0x51>
mov    -0xc(%rbp),%eax
sub    $0x20,%eax
je     11bf <xtensa_b4constu+0xbf>
jmp    1162 <xtensa_b4constu+0x62>
mov    -0xc(%rbp),%eax
sub    $0x40,%eax
je     11bf <xtensa_b4constu+0xbf>
jmp    1173 <xtensa_b4constu+0x73>
mov    -0xc(%rbp),%eax
sub    $0x80,%eax
je     11bf <xtensa_b4constu+0xbf>
jmp    1186 <xtensa_b4constu+0x86>
mov    -0xc(%rbp),%eax
sub    $0x100,%eax
je     11bf <xtensa_b4constu+0xbf>
jmp    1199 <xtensa_b4constu+0x99>
mov    -0xc(%rbp),%eax
sub    $0x8000,%eax
je     11bf <xtensa_b4constu+0xbf>
jmp    11ac <xtensa_b4constu+0xac>
mov    -0xc(%rbp),%eax
sub    $0x10000,%eax
jne    11cb <xtensa_b4constu+0xcb>
jmp    11bf <xtensa_b4constu+0xbf>
movl   $0x1,-0x4(%rbp)
jmp    11d2 <xtensa_b4constu+0xd2>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<xtensa_b4constu>:
mov    $0x1,%eax
cmp    $0xff,%edi
jg     1126 <xtensa_b4constu+0x26>
add    $0xfffffffe,%edi
cmp    $0x7e,%edi
ja     113e <xtensa_b4constu+0x3e>
lea    0xee4(%rip),%rcx
movslq (%rcx,%rdi,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
ret
cmp    $0x100,%edi
je     1125 <xtensa_b4constu+0x25>
cmp    $0x8000,%edi
je     1125 <xtensa_b4constu+0x25>
cmp    $0x10000,%edi
je     1125 <xtensa_b4constu+0x25>
xor    %eax,%eax
ret

LLVM IR (-O0):
define i32 @xtensa_b4constu(i32 %0) {
%2 = alloca i32
%3 = alloca i32
store i32 %0, i32* %3
%4 = load i32, i32* %3
switch i32 %4, label %6 [
i32 32768, label %5
i32 65536, label %5
i32 2, label %5
i32 3, label %5
i32 4, label %5
i32 5, label %5
i32 6, label %5
i32 7, label %5
i32 8, label %5
i32 10, label %5
i32 12, label %5
i32 16, label %5
i32 32, label %5
i32 64, label %5
i32 128, label %5
i32 256, label %5
]
5: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
store i32 1, i32* %2
br label %7
6: ; preds = %1
store i32 0, i32* %2
br label %7
7: ; preds = %6, %5
%8 = load i32, i32* %2
ret i32 %8
}

LLVM IR (-O2):
define i32 @xtensa_b4constu(i32 %0) {
switch i32 %0, label %2 [
i32 32768, label %3
i32 65536, label %3
i32 2, label %3
i32 3, label %3
i32 4, label %3
i32 5, label %3
i32 6, label %3
i32 7, label %3
i32 8, label %3
i32 10, label %3
i32 12, label %3
i32 16, label %3
i32 32, label %3
i32 64, label %3
i32 128, label %3
i32 256, label %3
]
2: ; preds = %1
br label %3
3: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %2
%4 = phi i32 [ 0, %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 ]
ret i32 %4
}