; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s --check-prefix=X86
; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s --check-prefix=X64
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefix=X64

; PR3253

; The register+memory form of the BT instruction should be usable on
; pentium4, however it is currently disabled due to the register+memory
; form having different semantics than the register+register form.

; Test these patterns:
;    (X & (1 << N))  != 0  -->  BT(X, N).
;    ((X >>u N) & 1) != 0  -->  BT(X, N).
; as well as several variations:
;    - The second form can use an arithmetic shift.
;    - Either form can use == instead of !=.
;    - Either form can compare with an operand of the &
;      instead of with 0.
;    - The comparison can be commuted (only cases where neither
;      operand is constant are included).
;    - The and can be commuted.

define void @test2(i32 %x, i32 %n) nounwind {
; X86-LABEL: test2:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jb .LBB0_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB0_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: test2:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jb .LBB0_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB0_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = lshr i32 %x, %n
  %tmp3 = and i32 %tmp29, 1
  %tmp4 = icmp eq i32 %tmp3, 0
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @test2b(i32 %x, i32 %n) nounwind {
; X86-LABEL: test2b:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB1_1
; X86-NEXT:  # BB#2: # %UnifiedReturnBlock
; X86-NEXT:    retl
; X86-NEXT:  .LBB1_1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:    retl
;
; X64-LABEL: test2b:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB1_1
; X64-NEXT:  # BB#2: # %UnifiedReturnBlock
; X64-NEXT:    retq
; X64-NEXT:  .LBB1_1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:    retq
entry:
  %tmp29 = lshr i32 %x, %n
  %tmp3 = and i32 1, %tmp29
  %tmp4 = icmp eq i32 %tmp3, 0
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @atest2(i32 %x, i32 %n) nounwind {
; X86-LABEL: atest2:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jb .LBB2_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB2_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: atest2:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jb .LBB2_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB2_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = ashr i32 %x, %n
  %tmp3 = and i32 %tmp29, 1
  %tmp4 = icmp eq i32 %tmp3, 0
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @atest2b(i32 %x, i32 %n) nounwind {
; X86-LABEL: atest2b:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB3_1
; X86-NEXT:  # BB#2: # %UnifiedReturnBlock
; X86-NEXT:    retl
; X86-NEXT:  .LBB3_1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:    retl
;
; X64-LABEL: atest2b:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB3_1
; X64-NEXT:  # BB#2: # %UnifiedReturnBlock
; X64-NEXT:    retq
; X64-NEXT:  .LBB3_1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:    retq
entry:
  %tmp29 = ashr i32 %x, %n
  %tmp3 = and i32 1, %tmp29
  %tmp4 = icmp eq i32 %tmp3, 0
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @test3(i32 %x, i32 %n) nounwind {
; X86-LABEL: test3:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB4_1
; X86-NEXT:  # BB#2: # %UnifiedReturnBlock
; X86-NEXT:    retl
; X86-NEXT:  .LBB4_1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:    retl
;
; X64-LABEL: test3:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB4_1
; X64-NEXT:  # BB#2: # %UnifiedReturnBlock
; X64-NEXT:    retq
; X64-NEXT:  .LBB4_1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:    retq
entry:
  %tmp29 = shl i32 1, %n
  %tmp3 = and i32 %tmp29, %x
  %tmp4 = icmp eq i32 %tmp3, 0
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @test3b(i32 %x, i32 %n) nounwind {
; X86-LABEL: test3b:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB5_1
; X86-NEXT:  # BB#2: # %UnifiedReturnBlock
; X86-NEXT:    retl
; X86-NEXT:  .LBB5_1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:    retl
;
; X64-LABEL: test3b:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB5_1
; X64-NEXT:  # BB#2: # %UnifiedReturnBlock
; X64-NEXT:    retq
; X64-NEXT:  .LBB5_1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:    retq
entry:
  %tmp29 = shl i32 1, %n
  %tmp3 = and i32 %x, %tmp29
  %tmp4 = icmp eq i32 %tmp3, 0
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @testne2(i32 %x, i32 %n) nounwind {
; X86-LABEL: testne2:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB6_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB6_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: testne2:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB6_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB6_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = lshr i32 %x, %n
  %tmp3 = and i32 %tmp29, 1
  %tmp4 = icmp ne i32 %tmp3, 0
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @testne2b(i32 %x, i32 %n) nounwind {
; X86-LABEL: testne2b:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB7_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB7_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: testne2b:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB7_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB7_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = lshr i32 %x, %n
  %tmp3 = and i32 1, %tmp29
  %tmp4 = icmp ne i32 %tmp3, 0
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @atestne2(i32 %x, i32 %n) nounwind {
; X86-LABEL: atestne2:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB8_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB8_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: atestne2:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB8_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB8_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = ashr i32 %x, %n
  %tmp3 = and i32 %tmp29, 1
  %tmp4 = icmp ne i32 %tmp3, 0
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @atestne2b(i32 %x, i32 %n) nounwind {
; X86-LABEL: atestne2b:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB9_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB9_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: atestne2b:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB9_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB9_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = ashr i32 %x, %n
  %tmp3 = and i32 1, %tmp29
  %tmp4 = icmp ne i32 %tmp3, 0
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @testne3(i32 %x, i32 %n) nounwind {
; X86-LABEL: testne3:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB10_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB10_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: testne3:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB10_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB10_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = shl i32 1, %n
  %tmp3 = and i32 %tmp29, %x
  %tmp4 = icmp ne i32 %tmp3, 0
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @testne3b(i32 %x, i32 %n) nounwind {
; X86-LABEL: testne3b:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB11_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB11_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: testne3b:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB11_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB11_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = shl i32 1, %n
  %tmp3 = and i32 %x, %tmp29
  %tmp4 = icmp ne i32 %tmp3, 0
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @query2(i32 %x, i32 %n) nounwind {
; X86-LABEL: query2:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB12_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB12_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: query2:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB12_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB12_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = lshr i32 %x, %n
  %tmp3 = and i32 %tmp29, 1
  %tmp4 = icmp eq i32 %tmp3, 1
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @query2b(i32 %x, i32 %n) nounwind {
; X86-LABEL: query2b:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB13_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB13_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: query2b:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB13_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB13_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = lshr i32 %x, %n
  %tmp3 = and i32 1, %tmp29
  %tmp4 = icmp eq i32 %tmp3, 1
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @aquery2(i32 %x, i32 %n) nounwind {
; X86-LABEL: aquery2:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB14_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB14_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: aquery2:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB14_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB14_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = ashr i32 %x, %n
  %tmp3 = and i32 %tmp29, 1
  %tmp4 = icmp eq i32 %tmp3, 1
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @aquery2b(i32 %x, i32 %n) nounwind {
; X86-LABEL: aquery2b:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB15_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB15_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: aquery2b:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB15_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB15_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = ashr i32 %x, %n
  %tmp3 = and i32 1, %tmp29
  %tmp4 = icmp eq i32 %tmp3, 1
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @query3(i32 %x, i32 %n) nounwind {
; X86-LABEL: query3:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB16_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB16_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: query3:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB16_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB16_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = shl i32 1, %n
  %tmp3 = and i32 %tmp29, %x
  %tmp4 = icmp eq i32 %tmp3, %tmp29
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @query3b(i32 %x, i32 %n) nounwind {
; X86-LABEL: query3b:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB17_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB17_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: query3b:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB17_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB17_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = shl i32 1, %n
  %tmp3 = and i32 %x, %tmp29
  %tmp4 = icmp eq i32 %tmp3, %tmp29
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @query3x(i32 %x, i32 %n) nounwind {
; X86-LABEL: query3x:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB18_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB18_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: query3x:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB18_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB18_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = shl i32 1, %n
  %tmp3 = and i32 %tmp29, %x
  %tmp4 = icmp eq i32 %tmp29, %tmp3
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @query3bx(i32 %x, i32 %n) nounwind {
; X86-LABEL: query3bx:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jae .LBB19_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB19_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: query3bx:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jae .LBB19_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB19_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = shl i32 1, %n
  %tmp3 = and i32 %x, %tmp29
  %tmp4 = icmp eq i32 %tmp29, %tmp3
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @queryne2(i32 %x, i32 %n) nounwind {
; X86-LABEL: queryne2:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jb .LBB20_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB20_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: queryne2:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jb .LBB20_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB20_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = lshr i32 %x, %n
  %tmp3 = and i32 %tmp29, 1
  %tmp4 = icmp ne i32 %tmp3, 1
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @queryne2b(i32 %x, i32 %n) nounwind {
; X86-LABEL: queryne2b:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jb .LBB21_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB21_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: queryne2b:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jb .LBB21_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB21_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = lshr i32 %x, %n
  %tmp3 = and i32 1, %tmp29
  %tmp4 = icmp ne i32 %tmp3, 1
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @aqueryne2(i32 %x, i32 %n) nounwind {
; X86-LABEL: aqueryne2:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jb .LBB22_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB22_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: aqueryne2:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jb .LBB22_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB22_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = ashr i32 %x, %n
  %tmp3 = and i32 %tmp29, 1
  %tmp4 = icmp ne i32 %tmp3, 1
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @aqueryne2b(i32 %x, i32 %n) nounwind {
; X86-LABEL: aqueryne2b:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jb .LBB23_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB23_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: aqueryne2b:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jb .LBB23_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB23_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = ashr i32 %x, %n
  %tmp3 = and i32 1, %tmp29
  %tmp4 = icmp ne i32 %tmp3, 1
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @queryne3(i32 %x, i32 %n) nounwind {
; X86-LABEL: queryne3:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jb .LBB24_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB24_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: queryne3:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jb .LBB24_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB24_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = shl i32 1, %n
  %tmp3 = and i32 %tmp29, %x
  %tmp4 = icmp ne i32 %tmp3, %tmp29
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @queryne3b(i32 %x, i32 %n) nounwind {
; X86-LABEL: queryne3b:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jb .LBB25_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB25_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: queryne3b:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jb .LBB25_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB25_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = shl i32 1, %n
  %tmp3 = and i32 %x, %tmp29
  %tmp4 = icmp ne i32 %tmp3, %tmp29
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @queryne3x(i32 %x, i32 %n) nounwind {
; X86-LABEL: queryne3x:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jb .LBB26_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB26_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: queryne3x:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jb .LBB26_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB26_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = shl i32 1, %n
  %tmp3 = and i32 %tmp29, %x
  %tmp4 = icmp ne i32 %tmp29, %tmp3
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

define void @queryne3bx(i32 %x, i32 %n) nounwind {
; X86-LABEL: queryne3bx:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    jb .LBB27_2
; X86-NEXT:  # BB#1: # %bb
; X86-NEXT:    calll foo
; X86-NEXT:  .LBB27_2: # %UnifiedReturnBlock
; X86-NEXT:    retl
;
; X64-LABEL: queryne3bx:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    jb .LBB27_2
; X64-NEXT:  # BB#1: # %bb
; X64-NEXT:    pushq %rax
; X64-NEXT:    callq foo
; X64-NEXT:    popq %rax
; X64-NEXT:  .LBB27_2: # %UnifiedReturnBlock
; X64-NEXT:    retq
entry:
  %tmp29 = shl i32 1, %n
  %tmp3 = and i32 %x, %tmp29
  %tmp4 = icmp ne i32 %tmp29, %tmp3
  br i1 %tmp4, label %bb, label %UnifiedReturnBlock

bb:
  call void @foo()
  ret void

UnifiedReturnBlock:
  ret void
}

declare void @foo()

define zeroext i1 @invert(i32 %flags, i32 %flag) nounwind {
; X86-LABEL: invert:
; X86:       # BB#0:
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    notl %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %ecx, %eax
; X86-NEXT:    setb %al
; X86-NEXT:    retl
;
; X64-LABEL: invert:
; X64:       # BB#0:
; X64-NEXT:    notl %edi
; X64-NEXT:    btl %esi, %edi
; X64-NEXT:    setb %al
; X64-NEXT:    retq
  %neg = xor i32 %flags, -1
  %shl = shl i32 1, %flag
  %and = and i32 %shl, %neg
  %tobool = icmp ne i32 %and, 0
  ret i1 %tobool
}

define zeroext i1 @extend(i32 %bit, i64 %bits) {
; X86-LABEL: extend:
; X86:       # BB#0: # %entry
; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    btl %eax, %ecx
; X86-NEXT:    setb %al
; X86-NEXT:    retl
;
; X64-LABEL: extend:
; X64:       # BB#0: # %entry
; X64-NEXT:    btl %edi, %esi
; X64-NEXT:    setb %al
; X64-NEXT:    retq
entry:
  %and = and i32 %bit, 31
  %sh_prom = zext i32 %and to i64
  %shl = shl i64 1, %sh_prom
  %and1 = and i64 %shl, %bits
  %tobool = icmp ne i64 %and1, 0
  ret i1 %tobool
}

; TODO: BT fails to look through to demanded bits as c%32 has more than one use.
; void demanded_i32(int *a, int *b, unsigned c) {
;   if ((a[c/32] >> (c % 32)) & 1)
;     b[c/32] |= 1 << (c % 32);
; }
define void @demanded_i32(i32* nocapture readonly, i32* nocapture, i32) nounwind {
; X86-LABEL: demanded_i32:
; X86:       # BB#0:
; X86-NEXT:    pushl %esi
; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    movl %ecx, %eax
; X86-NEXT:    shrl $5, %eax
; X86-NEXT:    movl (%edx,%eax,4), %esi
; X86-NEXT:    movl $1, %edx
; X86-NEXT:    shll %cl, %edx
; X86-NEXT:    btl %ecx, %esi
; X86-NEXT:    jae .LBB30_2
; X86-NEXT:  # BB#1:
; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT:    orl %edx, (%ecx,%eax,4)
; X86-NEXT:  .LBB30_2:
; X86-NEXT:    popl %esi
; X86-NEXT:    retl
;
; X64-LABEL: demanded_i32:
; X64:       # BB#0:
; X64-NEXT:    movl %edx, %eax
; X64-NEXT:    shrl $5, %eax
; X64-NEXT:    movl (%rdi,%rax,4), %r8d
; X64-NEXT:    movl $1, %edi
; X64-NEXT:    movl %edx, %ecx
; X64-NEXT:    shll %cl, %edi
; X64-NEXT:    btl %edx, %r8d
; X64-NEXT:    jae .LBB30_2
; X64-NEXT:  # BB#1:
; X64-NEXT:    orl %edi, (%rsi,%rax,4)
; X64-NEXT:  .LBB30_2:
; X64-NEXT:    retq
  %4 = lshr i32 %2, 5
  %5 = zext i32 %4 to i64
  %6 = getelementptr inbounds i32, i32* %0, i64 %5
  %7 = load i32, i32* %6, align 4
  %8 = and i32 %2, 31
  %9 = shl i32 1, %8
  %10 = and i32 %7, %9
  %11 = icmp eq i32 %10, 0
  br i1 %11, label %16, label %12

; <label>:12:
  %13 = getelementptr inbounds i32, i32* %1, i64 %5
  %14 = load i32, i32* %13, align 4
  %15 = or i32 %14, %9
  store i32 %15, i32* %13, align 4
  br label %16

; <label>:16:
  ret void
}
