xref: /aosp_15_r20/external/llvm/test/CodeGen/ARM/aapcs-hfa.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -float-abi=hard -debug-only arm-isel 2>&1 | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -float-abi=soft -debug-only arm-isel 2>&1 | FileCheck %s --check-prefix=SOFT
3*9880d681SAndroid Build Coastguard Worker; REQUIRES: asserts
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
6*9880d681SAndroid Build Coastguard Workertarget triple = "armv7-none--eabi"
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker; SOFT-NOT: isHA
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { float }
11*9880d681SAndroid Build Coastguard Workerdefine void @f0b({ float } %a) {
12*9880d681SAndroid Build Coastguard Worker  ret void
13*9880d681SAndroid Build Coastguard Worker}
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { float, float }
16*9880d681SAndroid Build Coastguard Workerdefine void @f1({ float, float } %a) {
17*9880d681SAndroid Build Coastguard Worker  ret void
18*9880d681SAndroid Build Coastguard Worker}
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { float, float, float }
21*9880d681SAndroid Build Coastguard Workerdefine void @f1b({ float, float, float } %a) {
22*9880d681SAndroid Build Coastguard Worker  ret void
23*9880d681SAndroid Build Coastguard Worker}
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { float, float, float, float }
26*9880d681SAndroid Build Coastguard Workerdefine void @f1c({ float, float, float, float } %a) {
27*9880d681SAndroid Build Coastguard Worker  ret void
28*9880d681SAndroid Build Coastguard Worker}
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { float, float, float, float, float }
31*9880d681SAndroid Build Coastguard Workerdefine void @f2({ float, float, float, float, float } %a) {
32*9880d681SAndroid Build Coastguard Worker  ret void
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { double }
36*9880d681SAndroid Build Coastguard Workerdefine void @f3({ double } %a) {
37*9880d681SAndroid Build Coastguard Worker  ret void
38*9880d681SAndroid Build Coastguard Worker}
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { double, double, double, double }
41*9880d681SAndroid Build Coastguard Workerdefine void @f4({ double, double, double, double } %a) {
42*9880d681SAndroid Build Coastguard Worker  ret void
43*9880d681SAndroid Build Coastguard Worker}
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { double, double, double, double, double }
46*9880d681SAndroid Build Coastguard Workerdefine void @f5({ double, double, double, double, double } %a) {
47*9880d681SAndroid Build Coastguard Worker  ret void
48*9880d681SAndroid Build Coastguard Worker}
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { i32, i32 }
51*9880d681SAndroid Build Coastguard Workerdefine void @f5b({ i32, i32 } %a) {
52*9880d681SAndroid Build Coastguard Worker  ret void
53*9880d681SAndroid Build Coastguard Worker}
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { [1 x float] }
56*9880d681SAndroid Build Coastguard Workerdefine void @f6({ [1 x float] } %a) {
57*9880d681SAndroid Build Coastguard Worker  ret void
58*9880d681SAndroid Build Coastguard Worker}
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { [4 x float] }
61*9880d681SAndroid Build Coastguard Workerdefine void @f7({ [4 x float] } %a) {
62*9880d681SAndroid Build Coastguard Worker  ret void
63*9880d681SAndroid Build Coastguard Worker}
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { [5 x float] }
66*9880d681SAndroid Build Coastguard Workerdefine void @f8({ [5 x float] } %a) {
67*9880d681SAndroid Build Coastguard Worker  ret void
68*9880d681SAndroid Build Coastguard Worker}
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 [1 x float]
71*9880d681SAndroid Build Coastguard Workerdefine void @f6b([1 x float] %a) {
72*9880d681SAndroid Build Coastguard Worker  ret void
73*9880d681SAndroid Build Coastguard Worker}
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 [4 x float]
76*9880d681SAndroid Build Coastguard Workerdefine void @f7b([4 x float] %a) {
77*9880d681SAndroid Build Coastguard Worker  ret void
78*9880d681SAndroid Build Coastguard Worker}
79*9880d681SAndroid Build Coastguard Worker
80*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 [5 x float]
81*9880d681SAndroid Build Coastguard Workerdefine void @f8b([5 x float] %a) {
82*9880d681SAndroid Build Coastguard Worker  ret void
83*9880d681SAndroid Build Coastguard Worker}
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { [2 x float], [2 x float] }
86*9880d681SAndroid Build Coastguard Workerdefine void @f9({ [2 x float], [2 x float] } %a) {
87*9880d681SAndroid Build Coastguard Worker  ret void
88*9880d681SAndroid Build Coastguard Worker}
89*9880d681SAndroid Build Coastguard Worker
90*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { [1 x float], [3 x float] }
91*9880d681SAndroid Build Coastguard Workerdefine void @f9b({ [1 x float], [3 x float] } %a) {
92*9880d681SAndroid Build Coastguard Worker  ret void
93*9880d681SAndroid Build Coastguard Worker}
94*9880d681SAndroid Build Coastguard Worker
95*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { [3 x float], [3 x float] }
96*9880d681SAndroid Build Coastguard Workerdefine void @f10({ [3 x float], [3 x float] } %a) {
97*9880d681SAndroid Build Coastguard Worker  ret void
98*9880d681SAndroid Build Coastguard Worker}
99*9880d681SAndroid Build Coastguard Worker
100*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { <2 x float> }
101*9880d681SAndroid Build Coastguard Workerdefine void @f11({ <2 x float>  } %a) {
102*9880d681SAndroid Build Coastguard Worker  ret void
103*9880d681SAndroid Build Coastguard Worker}
104*9880d681SAndroid Build Coastguard Worker
105*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { <3 x float> }
106*9880d681SAndroid Build Coastguard Workerdefine void @f12({ <3 x float>  } %a) {
107*9880d681SAndroid Build Coastguard Worker  ret void
108*9880d681SAndroid Build Coastguard Worker}
109*9880d681SAndroid Build Coastguard Worker
110*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { <4 x float> }
111*9880d681SAndroid Build Coastguard Workerdefine void @f13({ <4 x float>  } %a) {
112*9880d681SAndroid Build Coastguard Worker  ret void
113*9880d681SAndroid Build Coastguard Worker}
114*9880d681SAndroid Build Coastguard Worker
115*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { <2 x float>, <2 x float> }
116*9880d681SAndroid Build Coastguard Workerdefine void @f15({ <2 x float>, <2 x float>  } %a) {
117*9880d681SAndroid Build Coastguard Worker  ret void
118*9880d681SAndroid Build Coastguard Worker}
119*9880d681SAndroid Build Coastguard Worker
120*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { <2 x float>, float }
121*9880d681SAndroid Build Coastguard Workerdefine void @f15b({ <2 x float>, float  } %a) {
122*9880d681SAndroid Build Coastguard Worker  ret void
123*9880d681SAndroid Build Coastguard Worker}
124*9880d681SAndroid Build Coastguard Worker
125*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { <2 x float>, [2 x float] }
126*9880d681SAndroid Build Coastguard Workerdefine void @f15c({ <2 x float>, [2 x float]  } %a) {
127*9880d681SAndroid Build Coastguard Worker  ret void
128*9880d681SAndroid Build Coastguard Worker}
129*9880d681SAndroid Build Coastguard Worker
130*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { <2 x float>, <4 x float> }
131*9880d681SAndroid Build Coastguard Workerdefine void @f16({ <2 x float>, <4 x float>  } %a) {
132*9880d681SAndroid Build Coastguard Worker  ret void
133*9880d681SAndroid Build Coastguard Worker}
134*9880d681SAndroid Build Coastguard Worker
135*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { <2 x double> }
136*9880d681SAndroid Build Coastguard Workerdefine void @f17({ <2 x double>  } %a) {
137*9880d681SAndroid Build Coastguard Worker  ret void
138*9880d681SAndroid Build Coastguard Worker}
139*9880d681SAndroid Build Coastguard Worker
140*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { <2 x i32> }
141*9880d681SAndroid Build Coastguard Workerdefine void @f18({ <2 x i32>  } %a) {
142*9880d681SAndroid Build Coastguard Worker  ret void
143*9880d681SAndroid Build Coastguard Worker}
144*9880d681SAndroid Build Coastguard Worker
145*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { <2 x i64>, <4 x i32> }
146*9880d681SAndroid Build Coastguard Workerdefine void @f19({ <2 x i64>, <4 x i32> } %a) {
147*9880d681SAndroid Build Coastguard Worker  ret void
148*9880d681SAndroid Build Coastguard Worker}
149*9880d681SAndroid Build Coastguard Worker
150*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { [4 x <4 x float>] }
151*9880d681SAndroid Build Coastguard Workerdefine void @f20({ [4 x <4 x float>]  } %a) {
152*9880d681SAndroid Build Coastguard Worker  ret void
153*9880d681SAndroid Build Coastguard Worker}
154*9880d681SAndroid Build Coastguard Worker
155*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { [5 x <4 x float>] }
156*9880d681SAndroid Build Coastguard Workerdefine void @f21({ [5 x <4 x float>]  } %a) {
157*9880d681SAndroid Build Coastguard Worker  ret void
158*9880d681SAndroid Build Coastguard Worker}
159*9880d681SAndroid Build Coastguard Worker
160*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: isHA
161*9880d681SAndroid Build Coastguard Workerdefine void @f22({ float } %a, ...) {
162*9880d681SAndroid Build Coastguard Worker  ret void
163*9880d681SAndroid Build Coastguard Worker}
164*9880d681SAndroid Build Coastguard Worker
165