1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86 | not grep btl 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; This tests some cases where BT must not be generated. See also bt.ll. 4*9880d681SAndroid Build Coastguard Worker; Fixes 20040709-[12].c in gcc testsuite. 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workerdefine void @test2(i32 %x, i32 %n) nounwind { 7*9880d681SAndroid Build Coastguard Workerentry: 8*9880d681SAndroid Build Coastguard Worker %tmp1 = and i32 %x, 1 9*9880d681SAndroid Build Coastguard Worker %tmp2 = urem i32 %tmp1, 15 10*9880d681SAndroid Build Coastguard Worker %tmp3 = and i32 %tmp2, 1 ; <i32> [#uses=1] 11*9880d681SAndroid Build Coastguard Worker %tmp4 = icmp eq i32 %tmp3, %tmp2 ; <i1> [#uses=1] 12*9880d681SAndroid Build Coastguard Worker br i1 %tmp4, label %bb, label %UnifiedReturnBlock 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerbb: ; preds = %entry 15*9880d681SAndroid Build Coastguard Worker call void @foo() 16*9880d681SAndroid Build Coastguard Worker ret void 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard WorkerUnifiedReturnBlock: ; preds = %entry 19*9880d681SAndroid Build Coastguard Worker ret void 20*9880d681SAndroid Build Coastguard Worker} 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerdefine void @test3(i32 %x, i32 %n) nounwind { 23*9880d681SAndroid Build Coastguard Workerentry: 24*9880d681SAndroid Build Coastguard Worker %tmp1 = and i32 %x, 1 25*9880d681SAndroid Build Coastguard Worker %tmp2 = urem i32 %tmp1, 15 26*9880d681SAndroid Build Coastguard Worker %tmp3 = and i32 %tmp2, 1 ; <i32> [#uses=1] 27*9880d681SAndroid Build Coastguard Worker %tmp4 = icmp eq i32 %tmp2, %tmp3 ; <i1> [#uses=1] 28*9880d681SAndroid Build Coastguard Worker br i1 %tmp4, label %bb, label %UnifiedReturnBlock 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workerbb: ; preds = %entry 31*9880d681SAndroid Build Coastguard Worker call void @foo() 32*9880d681SAndroid Build Coastguard Worker ret void 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard WorkerUnifiedReturnBlock: ; preds = %entry 35*9880d681SAndroid Build Coastguard Worker ret void 36*9880d681SAndroid Build Coastguard Worker} 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workerdefine void @test4(i32 %x, i32 %n) nounwind { 39*9880d681SAndroid Build Coastguard Workerentry: 40*9880d681SAndroid Build Coastguard Worker %tmp1 = and i32 %x, 1 41*9880d681SAndroid Build Coastguard Worker %tmp2 = urem i32 %tmp1, 15 42*9880d681SAndroid Build Coastguard Worker %tmp3 = and i32 %tmp2, 1 ; <i32> [#uses=1] 43*9880d681SAndroid Build Coastguard Worker %tmp4 = icmp ne i32 %tmp2, %tmp3 ; <i1> [#uses=1] 44*9880d681SAndroid Build Coastguard Worker br i1 %tmp4, label %bb, label %UnifiedReturnBlock 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Workerbb: ; preds = %entry 47*9880d681SAndroid Build Coastguard Worker call void @foo() 48*9880d681SAndroid Build Coastguard Worker ret void 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard WorkerUnifiedReturnBlock: ; preds = %entry 51*9880d681SAndroid Build Coastguard Worker ret void 52*9880d681SAndroid Build Coastguard Worker} 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Workerdefine void @test5(i32 %x, i32 %n) nounwind { 55*9880d681SAndroid Build Coastguard Workerentry: 56*9880d681SAndroid Build Coastguard Worker %tmp1 = and i32 %x, 1 57*9880d681SAndroid Build Coastguard Worker %tmp2 = urem i32 %tmp1, 15 58*9880d681SAndroid Build Coastguard Worker %tmp3 = and i32 %tmp2, 1 ; <i32> [#uses=1] 59*9880d681SAndroid Build Coastguard Worker %tmp4 = icmp ne i32 %tmp2, %tmp3 ; <i1> [#uses=1] 60*9880d681SAndroid Build Coastguard Worker br i1 %tmp4, label %bb, label %UnifiedReturnBlock 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Workerbb: ; preds = %entry 63*9880d681SAndroid Build Coastguard Worker call void @foo() 64*9880d681SAndroid Build Coastguard Worker ret void 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard WorkerUnifiedReturnBlock: ; preds = %entry 67*9880d681SAndroid Build Coastguard Worker ret void 68*9880d681SAndroid Build Coastguard Worker} 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Workerdeclare void @foo() 71