Home | History | Annotate | Download | only in X86
      1 ; RUN: llc -march=x86 < %s | FileCheck %s
      2 
      3 define i32 @test1(i32 %a, i32 %b) nounwind readnone {
      4   %not.cmp = icmp ne i32 %a, 0
      5   %inc = zext i1 %not.cmp to i32
      6   %retval.0 = add i32 %inc, %b
      7   ret i32 %retval.0
      8 ; CHECK-LABEL: test1:
      9 ; CHECK: cmpl $1
     10 ; CHECK: sbbl $-1
     11 ; CHECK: ret
     12 }
     13 
     14 define i32 @test2(i32 %a, i32 %b) nounwind readnone {
     15   %cmp = icmp eq i32 %a, 0
     16   %inc = zext i1 %cmp to i32
     17   %retval.0 = add i32 %inc, %b
     18   ret i32 %retval.0
     19 ; CHECK-LABEL: test2:
     20 ; CHECK: cmpl $1
     21 ; CHECK: adcl $0
     22 ; CHECK: ret
     23 }
     24 
     25 define i32 @test3(i32 %a, i32 %b) nounwind readnone {
     26   %cmp = icmp eq i32 %a, 0
     27   %inc = zext i1 %cmp to i32
     28   %retval.0 = add i32 %inc, %b
     29   ret i32 %retval.0
     30 ; CHECK-LABEL: test3:
     31 ; CHECK: cmpl $1
     32 ; CHECK: adcl $0
     33 ; CHECK: ret
     34 }
     35 
     36 define i32 @test4(i32 %a, i32 %b) nounwind readnone {
     37   %not.cmp = icmp ne i32 %a, 0
     38   %inc = zext i1 %not.cmp to i32
     39   %retval.0 = add i32 %inc, %b
     40   ret i32 %retval.0
     41 ; CHECK-LABEL: test4:
     42 ; CHECK: cmpl $1
     43 ; CHECK: sbbl $-1
     44 ; CHECK: ret
     45 }
     46 
     47 define i32 @test5(i32 %a, i32 %b) nounwind readnone {
     48   %not.cmp = icmp ne i32 %a, 0
     49   %inc = zext i1 %not.cmp to i32
     50   %retval.0 = sub i32 %b, %inc
     51   ret i32 %retval.0
     52 ; CHECK-LABEL: test5:
     53 ; CHECK: cmpl $1
     54 ; CHECK: adcl $-1
     55 ; CHECK: ret
     56 }
     57 
     58 define i32 @test6(i32 %a, i32 %b) nounwind readnone {
     59   %cmp = icmp eq i32 %a, 0
     60   %inc = zext i1 %cmp to i32
     61   %retval.0 = sub i32 %b, %inc
     62   ret i32 %retval.0
     63 ; CHECK-LABEL: test6:
     64 ; CHECK: cmpl $1
     65 ; CHECK: sbbl $0
     66 ; CHECK: ret
     67 }
     68 
     69 define i32 @test7(i32 %a, i32 %b) nounwind readnone {
     70   %cmp = icmp eq i32 %a, 0
     71   %inc = zext i1 %cmp to i32
     72   %retval.0 = sub i32 %b, %inc
     73   ret i32 %retval.0
     74 ; CHECK-LABEL: test7:
     75 ; CHECK: cmpl $1
     76 ; CHECK: sbbl $0
     77 ; CHECK: ret
     78 }
     79 
     80 define i32 @test8(i32 %a, i32 %b) nounwind readnone {
     81   %not.cmp = icmp ne i32 %a, 0
     82   %inc = zext i1 %not.cmp to i32
     83   %retval.0 = sub i32 %b, %inc
     84   ret i32 %retval.0
     85 ; CHECK-LABEL: test8:
     86 ; CHECK: cmpl $1
     87 ; CHECK: adcl $-1
     88 ; CHECK: ret
     89 }
     90