xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/nobt.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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