|
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