xref: /aosp_15_r20/external/llvm/test/CodeGen/Thumb2/thumb2-call-tc.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mattr=+thumb2 | FileCheck %s -check-prefix=DARWIN
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=thumbv7-linux -mattr=+thumb2 | FileCheck %s -check-prefix=LINUX
3*9880d681SAndroid Build Coastguard Worker; XFAIL: *
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker@t = weak global i32 ()* null           ; <i32 ()**> [#uses=1]
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdeclare void @g(i32, i32, i32, i32)
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Workerdefine void @f() {
10*9880d681SAndroid Build Coastguard Worker; DARWIN-LABEL: f:
11*9880d681SAndroid Build Coastguard Worker; DARWIN: blx _g
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker; LINUX-LABEL: f:
14*9880d681SAndroid Build Coastguard Worker; LINUX: bl g
15*9880d681SAndroid Build Coastguard Worker        tail call void @g( i32 1, i32 2, i32 3, i32 4 )
16*9880d681SAndroid Build Coastguard Worker        ret void
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerdefine void @h() {
20*9880d681SAndroid Build Coastguard Worker; DARWIN-LABEL: h:
21*9880d681SAndroid Build Coastguard Worker; DARWIN: bx r0 @ TAILCALL
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker; LINUX-LABEL: h:
24*9880d681SAndroid Build Coastguard Worker; LINUX: bx r0 @ TAILCALL
25*9880d681SAndroid Build Coastguard Worker        %tmp = load i32 ()*, i32 ()** @t         ; <i32 ()*> [#uses=1]
26*9880d681SAndroid Build Coastguard Worker        %tmp.upgrd.2 = tail call i32 %tmp( )            ; <i32> [#uses=0]
27*9880d681SAndroid Build Coastguard Worker        ret void
28*9880d681SAndroid Build Coastguard Worker}
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Workerdefine void @j() {
31*9880d681SAndroid Build Coastguard Worker; DARWIN-LABEL: j:
32*9880d681SAndroid Build Coastguard Worker; DARWIN: b.w _f  @ TAILCALL
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Worker; LINUX-LABEL: j:
35*9880d681SAndroid Build Coastguard Worker; LINUX: b.w f  @ TAILCALL
36*9880d681SAndroid Build Coastguard Worker        tail call void @f()
37*9880d681SAndroid Build Coastguard Worker        ret void
38*9880d681SAndroid Build Coastguard Worker}
39