; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -mtriple=x86_64-unknown-linux-gnu < %s 2>&1 | FileCheck %s

define i32 @f(ptr %p) {
; CHECK-LABEL: f:
; CHECK:       # %bb.0:
; CHECK-NEXT:    testb $8, 1(%rdi)
; CHECK-NEXT:    je .LBB0_1
; CHECK-NEXT:  # %bb.2: # %B
; CHECK-NEXT:    movl $20, %eax
; CHECK-NEXT:    retq
; CHECK-NEXT:  .LBB0_1: # %A
; CHECK-NEXT:    movl $10, %eax
; CHECK-NEXT:    retq
  %v = load i16, ptr %p, align 2
  %and = and i16 %v, 2048
  %cond = icmp eq i16 %and, 0
  %cond.fr = freeze i1 %cond
  br i1 %cond.fr, label %A, label %B
A:
  ret i32 10
B:
  ret i32 20
}

define i32 @f_false(ptr %p) {
; CHECK-LABEL: f_false:
; CHECK:       # %bb.0:
; CHECK-NEXT:    movb $1, %al
; CHECK-NEXT:    testb %al, %al
; CHECK-NEXT:    jne .LBB1_2
; CHECK-NEXT:  # %bb.1: # %A
; CHECK-NEXT:    movl $10, %eax
; CHECK-NEXT:    retq
; CHECK-NEXT:  .LBB1_2: # %B
; CHECK-NEXT:    movl $20, %eax
; CHECK-NEXT:    retq
  %v = load i16, ptr %p, align 2
  %and = and i16 %v, 2048
  %cond = icmp ult i16 %and, 0
  %cond.fr = freeze i1 %cond
  br i1 %cond.fr, label %A, label %B
A:
  ret i32 10
B:
  ret i32 20
}

define i32 @f_false2(ptr %p) {
; CHECK-LABEL: f_false2:
; CHECK:       # %bb.0:
; CHECK-NEXT:    movb $1, %al
; CHECK-NEXT:    testb %al, %al
; CHECK-NEXT:    jne .LBB2_2
; CHECK-NEXT:  # %bb.1: # %A
; CHECK-NEXT:    movl $10, %eax
; CHECK-NEXT:    retq
; CHECK-NEXT:  .LBB2_2: # %B
; CHECK-NEXT:    movl $20, %eax
; CHECK-NEXT:    retq
  %v = load i16, ptr %p, align 2
  %and = and i16 %v, 2048
  %cond = icmp ult i16 65535, %and
  %cond.fr = freeze i1 %cond
  br i1 %cond.fr, label %A, label %B
A:
  ret i32 10
B:
  ret i32 20
}

define i32 @f_false3(ptr %p) {
; CHECK-LABEL: f_false3:
; CHECK:       # %bb.0:
; CHECK-NEXT:    movb $1, %al
; CHECK-NEXT:    testb %al, %al
; CHECK-NEXT:    jne .LBB3_2
; CHECK-NEXT:  # %bb.1: # %A
; CHECK-NEXT:    movl $10, %eax
; CHECK-NEXT:    retq
; CHECK-NEXT:  .LBB3_2: # %B
; CHECK-NEXT:    movl $20, %eax
; CHECK-NEXT:    retq
  %v = load i16, ptr %p, align 2
  %and = and i16 %v, 2048
  %cond = icmp slt i16 32767, %and
  %cond.fr = freeze i1 %cond
  br i1 %cond.fr, label %A, label %B
A:
  ret i32 10
B:
  ret i32 20
}

define i32 @f_false4(ptr %p) {
; CHECK-LABEL: f_false4:
; CHECK:       # %bb.0:
; CHECK-NEXT:    movb $1, %al
; CHECK-NEXT:    testb %al, %al
; CHECK-NEXT:    jne .LBB4_2
; CHECK-NEXT:  # %bb.1: # %A
; CHECK-NEXT:    movl $10, %eax
; CHECK-NEXT:    retq
; CHECK-NEXT:  .LBB4_2: # %B
; CHECK-NEXT:    movl $20, %eax
; CHECK-NEXT:    retq
  %v = load i16, ptr %p, align 2
  %and = and i16 %v, 2048
  %cond = icmp sgt i16 %and, 32767
  %cond.fr = freeze i1 %cond
  br i1 %cond.fr, label %A, label %B
A:
  ret i32 10
B:
  ret i32 20
}

define i32 @f_true(ptr %p) {
; CHECK-LABEL: f_true:
; CHECK:       # %bb.0:
; CHECK-NEXT:    xorl %eax, %eax
; CHECK-NEXT:    testb %al, %al
; CHECK-NEXT:    jne .LBB5_2
; CHECK-NEXT:  # %bb.1: # %A
; CHECK-NEXT:    movl $10, %eax
; CHECK-NEXT:    retq
; CHECK-NEXT:  .LBB5_2: # %B
; CHECK-NEXT:    movl $20, %eax
; CHECK-NEXT:    retq
  %v = load i16, ptr %p, align 2
  %and = and i16 %v, 2048
  %cond = icmp sge i16 %and, -32768
  %cond.fr = freeze i1 %cond
  br i1 %cond.fr, label %A, label %B
A:
  ret i32 10
B:
  ret i32 20
}

define i32 @f_true2(ptr %p) {
; CHECK-LABEL: f_true2:
; CHECK:       # %bb.0:
; CHECK-NEXT:    xorl %eax, %eax
; CHECK-NEXT:    testb %al, %al
; CHECK-NEXT:    jne .LBB6_2
; CHECK-NEXT:  # %bb.1: # %A
; CHECK-NEXT:    movl $10, %eax
; CHECK-NEXT:    retq
; CHECK-NEXT:  .LBB6_2: # %B
; CHECK-NEXT:    movl $20, %eax
; CHECK-NEXT:    retq
  %v = load i16, ptr %p, align 2
  %and = and i16 %v, 2048
  %cond = icmp uge i16 %and, 0
  %cond.fr = freeze i1 %cond
  br i1 %cond.fr, label %A, label %B
A:
  ret i32 10
B:
  ret i32 20
}

define i32 @f_true3(ptr %p) {
; CHECK-LABEL: f_true3:
; CHECK:       # %bb.0:
; CHECK-NEXT:    xorl %eax, %eax
; CHECK-NEXT:    testb %al, %al
; CHECK-NEXT:    jne .LBB7_2
; CHECK-NEXT:  # %bb.1: # %A
; CHECK-NEXT:    movl $10, %eax
; CHECK-NEXT:    retq
; CHECK-NEXT:  .LBB7_2: # %B
; CHECK-NEXT:    movl $20, %eax
; CHECK-NEXT:    retq
  %v = load i16, ptr %p, align 2
  %and = and i16 %v, 2048
  %cond = icmp ule i16 0, %and
  %cond.fr = freeze i1 %cond
  br i1 %cond.fr, label %A, label %B
A:
  ret i32 10
B:
  ret i32 20
}

define i32 @f_true4(ptr %p) {
; CHECK-LABEL: f_true4:
; CHECK:       # %bb.0:
; CHECK-NEXT:    xorl %eax, %eax
; CHECK-NEXT:    testb %al, %al
; CHECK-NEXT:    jne .LBB8_2
; CHECK-NEXT:  # %bb.1: # %A
; CHECK-NEXT:    movl $10, %eax
; CHECK-NEXT:    retq
; CHECK-NEXT:  .LBB8_2: # %B
; CHECK-NEXT:    movl $20, %eax
; CHECK-NEXT:    retq
  %v = load i16, ptr %p, align 2
  %and = and i16 %v, 2048
  %cond = icmp ule i16 %and, 65535
  %cond.fr = freeze i1 %cond
  br i1 %cond.fr, label %A, label %B
A:
  ret i32 10
B:
  ret i32 20
}
