120 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=x86_64-unknown-unknown < %s | FileCheck %s3 4define i32 @test1(i32 %a, i32 %b) nounwind readnone {5; CHECK-LABEL: test1:6; CHECK: # %bb.0:7; CHECK-NEXT: movl %esi, %eax8; CHECK-NEXT: cmpl $1, %edi9; CHECK-NEXT: sbbl $-1, %eax10; CHECK-NEXT: retq11 %not.cmp = icmp ne i32 %a, 012 %inc = zext i1 %not.cmp to i3213 %retval.0 = add i32 %inc, %b14 ret i32 %retval.015}16 17define i32 @test1_commute(i32 %a, i32 %b) nounwind readnone {18; CHECK-LABEL: test1_commute:19; CHECK: # %bb.0:20; CHECK-NEXT: movl %esi, %eax21; CHECK-NEXT: cmpl $1, %edi22; CHECK-NEXT: sbbl $-1, %eax23; CHECK-NEXT: retq24 %cmp = icmp ne i32 %a, 025 %inc = zext i1 %cmp to i3226 %ret = add i32 %b, %inc27 ret i32 %ret28}29 30define i32 @test2(i32 %a, i32 %b) nounwind readnone {31; CHECK-LABEL: test2:32; CHECK: # %bb.0:33; CHECK-NEXT: movl %esi, %eax34; CHECK-NEXT: cmpl $1, %edi35; CHECK-NEXT: adcl $0, %eax36; CHECK-NEXT: retq37 %cmp = icmp eq i32 %a, 038 %inc = zext i1 %cmp to i3239 %retval.0 = add i32 %inc, %b40 ret i32 %retval.041}42 43define i32 @test3(i32 %a, i32 %b) nounwind readnone {44; CHECK-LABEL: test3:45; CHECK: # %bb.0:46; CHECK-NEXT: movl %esi, %eax47; CHECK-NEXT: cmpl $1, %edi48; CHECK-NEXT: adcl $0, %eax49; CHECK-NEXT: retq50 %cmp = icmp eq i32 %a, 051 %inc = zext i1 %cmp to i3252 %retval.0 = add i32 %inc, %b53 ret i32 %retval.054}55 56define i32 @test4(i32 %a, i32 %b) nounwind readnone {57; CHECK-LABEL: test4:58; CHECK: # %bb.0:59; CHECK-NEXT: movl %esi, %eax60; CHECK-NEXT: cmpl $1, %edi61; CHECK-NEXT: sbbl $-1, %eax62; CHECK-NEXT: retq63 %not.cmp = icmp ne i32 %a, 064 %inc = zext i1 %not.cmp to i3265 %retval.0 = add i32 %inc, %b66 ret i32 %retval.067}68 69define i32 @test5(i32 %a, i32 %b) nounwind readnone {70; CHECK-LABEL: test5:71; CHECK: # %bb.0:72; CHECK-NEXT: movl %esi, %eax73; CHECK-NEXT: cmpl $1, %edi74; CHECK-NEXT: adcl $-1, %eax75; CHECK-NEXT: retq76 %not.cmp = icmp ne i32 %a, 077 %inc = zext i1 %not.cmp to i3278 %retval.0 = sub i32 %b, %inc79 ret i32 %retval.080}81 82define i32 @test6(i32 %a, i32 %b) nounwind readnone {83; CHECK-LABEL: test6:84; CHECK: # %bb.0:85; CHECK-NEXT: movl %esi, %eax86; CHECK-NEXT: cmpl $1, %edi87; CHECK-NEXT: sbbl $0, %eax88; CHECK-NEXT: retq89 %cmp = icmp eq i32 %a, 090 %inc = zext i1 %cmp to i3291 %retval.0 = sub i32 %b, %inc92 ret i32 %retval.093}94 95define i32 @test7(i32 %a, i32 %b) nounwind readnone {96; CHECK-LABEL: test7:97; CHECK: # %bb.0:98; CHECK-NEXT: movl %esi, %eax99; CHECK-NEXT: cmpl $1, %edi100; CHECK-NEXT: sbbl $0, %eax101; CHECK-NEXT: retq102 %cmp = icmp eq i32 %a, 0103 %inc = zext i1 %cmp to i32104 %retval.0 = sub i32 %b, %inc105 ret i32 %retval.0106}107 108define i32 @test8(i32 %a, i32 %b) nounwind readnone {109; CHECK-LABEL: test8:110; CHECK: # %bb.0:111; CHECK-NEXT: movl %esi, %eax112; CHECK-NEXT: cmpl $1, %edi113; CHECK-NEXT: adcl $-1, %eax114; CHECK-NEXT: retq115 %not.cmp = icmp ne i32 %a, 0116 %inc = zext i1 %not.cmp to i32117 %retval.0 = sub i32 %b, %inc118 ret i32 %retval.0119}120