|  | 
| 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