|
28 | 28 | // RUN: %clang_cc1 -triple arm64_32-apple-ios -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=AARCH64 |
29 | 29 | // RUN: %clang_cc1 -triple arm64_32-apple-ios -target-abi darwinpcs -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=AARCH64DARWIN |
30 | 30 | // RUN: %clang_cc1 -triple arm -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=ARM |
| 31 | +// RUN: %clang_cc1 -triple bpf -target-feature +solana -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=BPF |
31 | 32 |
|
32 | 33 | // Make sure 128 and 64 bit versions are passed like integers, and that >128 |
33 | 34 | // is passed indirectly. |
@@ -59,6 +60,7 @@ void ParamPassing(_ExtInt(129) a, _ExtInt(128) b, _ExtInt(64) c) {} |
59 | 60 | // AARCH64: define void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128 %{{.+}}, i64 %{{.+}}) |
60 | 61 | // AARCH64DARWIN: define void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128 %{{.+}}, i64 %{{.+}}) |
61 | 62 | // ARM: define arm_aapcscc void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128* byval(i128) align 8 %{{.+}}, i64 %{{.+}}) |
| 63 | +// BPF: define void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128 %{{.+}}, i64 %{{.+}}) |
62 | 64 |
|
63 | 65 | void ParamPassing2(_ExtInt(129) a, _ExtInt(127) b, _ExtInt(63) c) {} |
64 | 66 | // LIN64: define void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i64 %{{.+}}, i64 %{{.+}}, i64 %{{.+}}) |
@@ -88,6 +90,7 @@ void ParamPassing2(_ExtInt(129) a, _ExtInt(127) b, _ExtInt(63) c) {} |
88 | 90 | // AARCH64: define void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127 %{{.+}}, i63 %{{.+}}) |
89 | 91 | // AARCH64DARWIN: define void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127 %{{.+}}, i63 %{{.+}}) |
90 | 92 | // ARM: define arm_aapcscc void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127* byval(i127) align 8 %{{.+}}, i63 %{{.+}}) |
| 93 | +// BPF: define void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127 %{{.+}}, i63 %{{.+}}) |
91 | 94 |
|
92 | 95 | // Make sure we follow the signext rules for promotable integer types. |
93 | 96 | void ParamPassing3(_ExtInt(15) a, _ExtInt(31) b) {} |
@@ -118,6 +121,7 @@ void ParamPassing3(_ExtInt(15) a, _ExtInt(31) b) {} |
118 | 121 | // AARCH64: define void @ParamPassing3(i15 %{{.+}}, i31 %{{.+}}) |
119 | 122 | // AARCH64DARWIN: define void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}}) |
120 | 123 | // ARM: define arm_aapcscc void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}}) |
| 124 | +// BPF: define void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}}) |
121 | 125 |
|
122 | 126 | _ExtInt(63) ReturnPassing(){} |
123 | 127 | // LIN64: define i64 @ReturnPassing( |
@@ -147,6 +151,7 @@ _ExtInt(63) ReturnPassing(){} |
147 | 151 | // AARCH64: define i63 @ReturnPassing( |
148 | 152 | // AARCH64DARWIN: define i63 @ReturnPassing( |
149 | 153 | // ARM: define arm_aapcscc i63 @ReturnPassing( |
| 154 | +// BPF: define i63 @ReturnPassing( |
150 | 155 |
|
151 | 156 | _ExtInt(64) ReturnPassing2(){} |
152 | 157 | // LIN64: define i64 @ReturnPassing2( |
@@ -176,6 +181,7 @@ _ExtInt(64) ReturnPassing2(){} |
176 | 181 | // AARCH64: define i64 @ReturnPassing2( |
177 | 182 | // AARCH64DARWIN: define i64 @ReturnPassing2( |
178 | 183 | // ARM: define arm_aapcscc i64 @ReturnPassing2( |
| 184 | +// BPF: define i64 @ReturnPassing2( |
179 | 185 |
|
180 | 186 | _ExtInt(127) ReturnPassing3(){} |
181 | 187 | // LIN64: define { i64, i64 } @ReturnPassing3( |
@@ -207,6 +213,7 @@ _ExtInt(127) ReturnPassing3(){} |
207 | 213 | // AARCH64: define i127 @ReturnPassing3( |
208 | 214 | // AARCH64DARWIN: define i127 @ReturnPassing3( |
209 | 215 | // ARM: define arm_aapcscc void @ReturnPassing3(i127* noalias sret |
| 216 | +// BPF: define i127 @ReturnPassing3( |
210 | 217 |
|
211 | 218 | _ExtInt(128) ReturnPassing4(){} |
212 | 219 | // LIN64: define { i64, i64 } @ReturnPassing4( |
@@ -236,6 +243,7 @@ _ExtInt(128) ReturnPassing4(){} |
236 | 243 | // AARCH64: define i128 @ReturnPassing4( |
237 | 244 | // AARCH64DARWIN: define i128 @ReturnPassing4( |
238 | 245 | // ARM: define arm_aapcscc void @ReturnPassing4(i128* noalias sret |
| 246 | +// BPF: define i128 @ReturnPassing4( |
239 | 247 |
|
240 | 248 | _ExtInt(129) ReturnPassing5(){} |
241 | 249 | // LIN64: define void @ReturnPassing5(i129* noalias sret |
@@ -265,6 +273,7 @@ _ExtInt(129) ReturnPassing5(){} |
265 | 273 | // AARCH64: define void @ReturnPassing5(i129* noalias sret |
266 | 274 | // AARCH64DARWIN: define void @ReturnPassing5(i129* noalias sret |
267 | 275 | // ARM: define arm_aapcscc void @ReturnPassing5(i129* noalias sret |
| 276 | +// BPF: define void @ReturnPassing5(i129* noalias sret |
268 | 277 |
|
269 | 278 | // SparcV9 is odd in that it has a return-size limit of 256, not 128 or 64 |
270 | 279 | // like other platforms, so test to make sure this behavior will still work. |
|
0 commit comments