108 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-- | FileCheck %s3 4; This tests some cases where BT must not be generated. See also bt.ll.5; Fixes 20040709-[12].c in gcc testsuite.6 7define void @test2(i32 %x, i32 %n) nounwind {8; CHECK-LABEL: test2:9; CHECK: # %bb.0: # %entry10; CHECK-NEXT: xorl %eax, %eax11; CHECK-NEXT: testb %al, %al12; CHECK-NEXT: jne .LBB0_213; CHECK-NEXT: # %bb.1: # %bb14; CHECK-NEXT: calll foo@PLT15; CHECK-NEXT: .LBB0_2: # %UnifiedReturnBlock16; CHECK-NEXT: retl17entry:18 %tmp1 = and i32 %x, 119 %tmp2 = urem i32 %tmp1, 1520 %tmp3 = and i32 %tmp2, 1 ; <i32> [#uses=1]21 %tmp4 = icmp eq i32 %tmp3, %tmp2 ; <i1> [#uses=1]22 br i1 %tmp4, label %bb, label %UnifiedReturnBlock23 24bb: ; preds = %entry25 call void @foo()26 ret void27 28UnifiedReturnBlock: ; preds = %entry29 ret void30}31 32define void @test3(i32 %x, i32 %n) nounwind {33; CHECK-LABEL: test3:34; CHECK: # %bb.0: # %entry35; CHECK-NEXT: xorl %eax, %eax36; CHECK-NEXT: testb %al, %al37; CHECK-NEXT: jne .LBB1_238; CHECK-NEXT: # %bb.1: # %bb39; CHECK-NEXT: calll foo@PLT40; CHECK-NEXT: .LBB1_2: # %UnifiedReturnBlock41; CHECK-NEXT: retl42entry:43 %tmp1 = and i32 %x, 144 %tmp2 = urem i32 %tmp1, 1545 %tmp3 = and i32 %tmp2, 1 ; <i32> [#uses=1]46 %tmp4 = icmp eq i32 %tmp2, %tmp3 ; <i1> [#uses=1]47 br i1 %tmp4, label %bb, label %UnifiedReturnBlock48 49bb: ; preds = %entry50 call void @foo()51 ret void52 53UnifiedReturnBlock: ; preds = %entry54 ret void55}56 57define void @test4(i32 %x, i32 %n) nounwind {58; CHECK-LABEL: test4:59; CHECK: # %bb.0: # %entry60; CHECK-NEXT: movb $1, %al61; CHECK-NEXT: testb %al, %al62; CHECK-NEXT: jne .LBB2_263; CHECK-NEXT: # %bb.1: # %bb64; CHECK-NEXT: calll foo@PLT65; CHECK-NEXT: .LBB2_2: # %UnifiedReturnBlock66; CHECK-NEXT: retl67entry:68 %tmp1 = and i32 %x, 169 %tmp2 = urem i32 %tmp1, 1570 %tmp3 = and i32 %tmp2, 1 ; <i32> [#uses=1]71 %tmp4 = icmp ne i32 %tmp2, %tmp3 ; <i1> [#uses=1]72 br i1 %tmp4, label %bb, label %UnifiedReturnBlock73 74bb: ; preds = %entry75 call void @foo()76 ret void77 78UnifiedReturnBlock: ; preds = %entry79 ret void80}81 82define void @test5(i32 %x, i32 %n) nounwind {83; CHECK-LABEL: test5:84; CHECK: # %bb.0: # %entry85; CHECK-NEXT: movb $1, %al86; CHECK-NEXT: testb %al, %al87; CHECK-NEXT: jne .LBB3_288; CHECK-NEXT: # %bb.1: # %bb89; CHECK-NEXT: calll foo@PLT90; CHECK-NEXT: .LBB3_2: # %UnifiedReturnBlock91; CHECK-NEXT: retl92entry:93 %tmp1 = and i32 %x, 194 %tmp2 = urem i32 %tmp1, 1595 %tmp3 = and i32 %tmp2, 1 ; <i32> [#uses=1]96 %tmp4 = icmp ne i32 %tmp2, %tmp3 ; <i1> [#uses=1]97 br i1 %tmp4, label %bb, label %UnifiedReturnBlock98 99bb: ; preds = %entry100 call void @foo()101 ret void102 103UnifiedReturnBlock: ; preds = %entry104 ret void105}106 107declare void @foo()108