int gl_clipcode(float x, float y, float z, float w1) {
  float w;
  w = w1 * (1.0 + (1E-5));
  return (x < -w) | ((x > w) << 1) | ((y < -w) << 2) | ((y > w) << 3) |
         ((z < -w) << 4) | ((z > w) << 5);
}


x86 assembly (clang, -O0):
<gl_clipcode>:
push   %rbp
mov    %rsp,%rbp
movss  %xmm0,-0x4(%rbp)
movss  %xmm1,-0x8(%rbp)
movss  %xmm2,-0xc(%rbp)
movss  %xmm3,-0x10(%rbp)
movss  -0x10(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xed7(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x14(%rbp)
movss  -0x4(%rbp),%xmm1
movss  -0x14(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
ucomiss %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
movss  -0x4(%rbp),%xmm0
ucomiss -0x14(%rbp),%xmm0
seta   %cl
and    $0x1,%cl
movzbl %cl,%ecx
shl    $0x1,%ecx
or     %ecx,%eax
movss  -0x8(%rbp),%xmm1
movss  -0x14(%rbp),%xmm0
movd   %xmm0,%ecx
xor    $0x80000000,%ecx
movd   %ecx,%xmm0
ucomiss %xmm1,%xmm0
seta   %cl
and    $0x1,%cl
movzbl %cl,%ecx
shl    $0x2,%ecx
or     %ecx,%eax
movss  -0x8(%rbp),%xmm0
ucomiss -0x14(%rbp),%xmm0
seta   %cl
and    $0x1,%cl
movzbl %cl,%ecx
shl    $0x3,%ecx
or     %ecx,%eax
movss  -0xc(%rbp),%xmm1
movss  -0x14(%rbp),%xmm0
movd   %xmm0,%ecx
xor    $0x80000000,%ecx
movd   %ecx,%xmm0
ucomiss %xmm1,%xmm0
seta   %cl
and    $0x1,%cl
movzbl %cl,%ecx
shl    $0x4,%ecx
or     %ecx,%eax
movss  -0xc(%rbp),%xmm0
ucomiss -0x14(%rbp),%xmm0
seta   %cl
and    $0x1,%cl
movzbl %cl,%ecx
shl    $0x5,%ecx
or     %ecx,%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<gl_clipcode>:
cvtss2sd %xmm3,%xmm3
mulsd  0xef4(%rip),%xmm3
cvtsd2ss %xmm3,%xmm3
movaps 0xef9(%rip),%xmm4
xorps  %xmm3,%xmm4
xor    %eax,%eax
ucomiss %xmm0,%xmm4
seta   %al
xor    %ecx,%ecx
ucomiss %xmm3,%xmm0
seta   %cl
xor    %edx,%edx
ucomiss %xmm1,%xmm4
lea    (%rax,%rcx,2),%eax
seta   %dl
xor    %ecx,%ecx
ucomiss %xmm3,%xmm1
seta   %cl
lea    (%rax,%rdx,4),%eax
xor    %edx,%edx
ucomiss %xmm2,%xmm4
lea    (%rax,%rcx,8),%eax
seta   %dl
shl    $0x4,%edx
or     %eax,%edx
xor    %eax,%eax
ucomiss %xmm3,%xmm2
seta   %al
shl    $0x5,%eax
or     %edx,%eax
ret

LLVM IR (-O0):
define i32 @gl_clipcode(float %0, float %1, float %2, float %3) {
%5 = alloca float
%6 = alloca float
%7 = alloca float
%8 = alloca float
%9 = alloca float
store float %0, float* %5
store float %1, float* %6
store float %2, float* %7
store float %3, float* %8
%10 = load float, float* %8
%11 = fpext float %10 to double
%12 = fmul double %11, 1.000010e+00
%13 = fptrunc double %12 to float
store float %13, float* %9
%14 = load float, float* %5
%15 = load float, float* %9
%16 = fneg float %15
%17 = fcmp olt float %14, %16
%18 = zext i1 %17 to i32
%19 = load float, float* %5
%20 = load float, float* %9
%21 = fcmp ogt float %19, %20
%22 = zext i1 %21 to i32
%23 = shl i32 %22, 1
%24 = or i32 %18, %23
%25 = load float, float* %6
%26 = load float, float* %9
%27 = fneg float %26
%28 = fcmp olt float %25, %27
%29 = zext i1 %28 to i32
%30 = shl i32 %29, 2
%31 = or i32 %24, %30
%32 = load float, float* %6
%33 = load float, float* %9
%34 = fcmp ogt float %32, %33
%35 = zext i1 %34 to i32
%36 = shl i32 %35, 3
%37 = or i32 %31, %36
%38 = load float, float* %7
%39 = load float, float* %9
%40 = fneg float %39
%41 = fcmp olt float %38, %40
%42 = zext i1 %41 to i32
%43 = shl i32 %42, 4
%44 = or i32 %37, %43
%45 = load float, float* %7
%46 = load float, float* %9
%47 = fcmp ogt float %45, %46
%48 = zext i1 %47 to i32
%49 = shl i32 %48, 5
%50 = or i32 %44, %49
ret i32 %50
}

LLVM IR (-O2):
define i32 @gl_clipcode(float %0, float %1, float %2, float %3) {
%5 = fpext float %3 to double
%6 = fmul double %5, 1.000010e+00
%7 = fptrunc double %6 to float
%8 = fneg float %7
%9 = fcmp ogt float %8, %0
%10 = zext i1 %9 to i32
%11 = fcmp olt float %7, %0
%12 = select i1 %11, i32 2, i32 0
%13 = or i32 %12, %10
%14 = fcmp ogt float %8, %1
%15 = select i1 %14, i32 4, i32 0
%16 = or i32 %13, %15
%17 = fcmp olt float %7, %1
%18 = select i1 %17, i32 8, i32 0
%19 = or i32 %16, %18
%20 = fcmp ogt float %8, %2
%21 = select i1 %20, i32 16, i32 0
%22 = or i32 %19, %21
%23 = fcmp olt float %7, %2
%24 = select i1 %23, i32 32, i32 0
%25 = or i32 %22, %24
ret i32 %25
}