xref: /aosp_15_r20/external/llvm/test/CodeGen/ARM/ifcvt2.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=arm-eabi -mattr=+v4t %s -o - | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine i32 @t1(i32 %a, i32 %b, i32 %c, i32 %d) {
4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: t1:
5*9880d681SAndroid Build Coastguard Worker; CHECK: bxlt lr
6*9880d681SAndroid Build Coastguard Worker	%tmp2 = icmp sgt i32 %c, 10
7*9880d681SAndroid Build Coastguard Worker	%tmp5 = icmp slt i32 %d, 4
8*9880d681SAndroid Build Coastguard Worker	%tmp8 = or i1 %tmp5, %tmp2
9*9880d681SAndroid Build Coastguard Worker	%tmp13 = add i32 %b, %a
10*9880d681SAndroid Build Coastguard Worker	br i1 %tmp8, label %cond_true, label %UnifiedReturnBlock
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workercond_true:
13*9880d681SAndroid Build Coastguard Worker	%tmp15 = add i32 %tmp13, %c
14*9880d681SAndroid Build Coastguard Worker	%tmp1821 = sub i32 %tmp15, %d
15*9880d681SAndroid Build Coastguard Worker	ret i32 %tmp1821
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard WorkerUnifiedReturnBlock:
18*9880d681SAndroid Build Coastguard Worker	ret i32 %tmp13
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdefine i32 @t2(i32 %a, i32 %b, i32 %c, i32 %d) {
22*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: t2:
23*9880d681SAndroid Build Coastguard Worker; CHECK: bxgt lr
24*9880d681SAndroid Build Coastguard Worker; CHECK: cmp
25*9880d681SAndroid Build Coastguard Worker; CHECK: addge
26*9880d681SAndroid Build Coastguard Worker; CHECK: subge
27*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: bxge lr
28*9880d681SAndroid Build Coastguard Worker; CHECK: bx lr
29*9880d681SAndroid Build Coastguard Worker	%tmp2 = icmp sgt i32 %c, 10
30*9880d681SAndroid Build Coastguard Worker	%tmp5 = icmp slt i32 %d, 4
31*9880d681SAndroid Build Coastguard Worker	%tmp8 = and i1 %tmp5, %tmp2
32*9880d681SAndroid Build Coastguard Worker	%tmp13 = add i32 %b, %a
33*9880d681SAndroid Build Coastguard Worker	br i1 %tmp8, label %cond_true, label %UnifiedReturnBlock
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Workercond_true:
36*9880d681SAndroid Build Coastguard Worker	%tmp15 = add i32 %tmp13, %c
37*9880d681SAndroid Build Coastguard Worker	%tmp1821 = sub i32 %tmp15, %d
38*9880d681SAndroid Build Coastguard Worker	ret i32 %tmp1821
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard WorkerUnifiedReturnBlock:
41*9880d681SAndroid Build Coastguard Worker	ret i32 %tmp13
42*9880d681SAndroid Build Coastguard Worker}
43