xref: /aosp_15_r20/external/llvm/test/CodeGen/ARM/phi.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=arm-eabi -mattr=+v4t %s -o - | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=arm-eabi -mattr=+v4t -addr-sink-using-gep=1 %s -o - | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker; <rdar://problem/8686347>
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workerdefine i32 @test1(i1 %a, i32* %b) {
7*9880d681SAndroid Build Coastguard Worker; CHECK: test1
8*9880d681SAndroid Build Coastguard Workerentry:
9*9880d681SAndroid Build Coastguard Worker  br i1 %a, label %lblock, label %rblock
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Workerlblock:
12*9880d681SAndroid Build Coastguard Worker  %lbranch = getelementptr i32, i32* %b, i32 1
13*9880d681SAndroid Build Coastguard Worker  br label %end
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Workerrblock:
16*9880d681SAndroid Build Coastguard Worker  %rbranch = getelementptr i32, i32* %b, i32 1
17*9880d681SAndroid Build Coastguard Worker  br label %end
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerend:
20*9880d681SAndroid Build Coastguard Worker; CHECK: ldr	r0, [r1, #4]
21*9880d681SAndroid Build Coastguard Worker  %gep = phi i32* [%lbranch, %lblock], [%rbranch, %rblock]
22*9880d681SAndroid Build Coastguard Worker  %r = load i32, i32* %gep
23*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: bx	lr
24*9880d681SAndroid Build Coastguard Worker  ret i32 %r
25*9880d681SAndroid Build Coastguard Worker}
26