1 // RUN: %clang_cc1 -triple x86_64-gnu-linux -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=LIN64
2 // RUN: %clang_cc1 -triple x86_64-windows-pc -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=WIN64
3 // RUN: %clang_cc1 -triple i386-gnu-linux -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=LIN32
4 // RUN: %clang_cc1 -triple i386-windows-pc -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=WIN32
5 // RUN: %clang_cc1 -triple nvptx64 -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=NVPTX64
6 // RUN: %clang_cc1 -triple nvptx -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=NVPTX
7 // RUN: %clang_cc1 -triple sparcv9 -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=SPARCV9
8 // RUN: %clang_cc1 -triple sparc -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=SPARC
9 // RUN: %clang_cc1 -triple mips64 -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=MIPS64
10 // RUN: %clang_cc1 -triple mips -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=MIPS
11 // RUN: %clang_cc1 -triple spir64 -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=SPIR64
12 // RUN: %clang_cc1 -triple spir -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=SPIR
13 // RUN: %clang_cc1 -triple hexagon -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=HEX
14 // RUN: %clang_cc1 -triple lanai -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=LANAI
15 // RUN: %clang_cc1 -triple r600 -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=R600
16 // RUN: %clang_cc1 -triple arc -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=ARC
17 // RUN: %clang_cc1 -triple xcore -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=XCORE
18 // RUN: %clang_cc1 -triple riscv64 -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=RISCV64
19 // RUN: %clang_cc1 -triple riscv32 -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=RISCV32
20 // RUN: %clang_cc1 -triple wasm64 -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=WASM
21 // RUN: %clang_cc1 -triple wasm32 -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=WASM
22 // RUN: %clang_cc1 -triple systemz -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=SYSTEMZ
23 // RUN: %clang_cc1 -triple ppc64 -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=PPC64
24 // RUN: %clang_cc1 -triple ppc -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=PPC32
25 // RUN: %clang_cc1 -triple aarch64 -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=AARCH64
26 // RUN: %clang_cc1 -triple aarch64 -target-abi darwinpcs -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=AARCH64DARWIN
27 // RUN: %clang_cc1 -triple arm64_32-apple-ios -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=AARCH64
28 // RUN: %clang_cc1 -triple arm64_32-apple-ios -target-abi darwinpcs -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=AARCH64DARWIN
29 // RUN: %clang_cc1 -triple arm -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=ARM
30 
31 // Make sure 128 and 64 bit versions are passed like integers, and that >128
32 // is passed indirectly.
33 void ParamPassing(_ExtInt(129) a, _ExtInt(128) b, _ExtInt(64) c) {}
34 // LIN64: define{{.*}} void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i64 %{{.+}}, i64 %{{.+}}, i64 %{{.+}})
35 // WIN64: define dso_local void @ParamPassing(i129* %{{.+}}, i128* %{{.+}}, i64 %{{.+}})
36 // LIN32: define{{.*}} void @ParamPassing(i129* %{{.+}}, i128* %{{.+}}, i64 %{{.+}})
37 // WIN32: define dso_local void @ParamPassing(i129* %{{.+}}, i128* %{{.+}}, i64 %{{.+}})
38 // NACL: define{{.*}} void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128* byval(i128) align 8 %{{.+}}, i64 %{{.+}})
39 // NVPTX64: define{{.*}} void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128 %{{.+}}, i64 %{{.+}})
40 // NVPTX: define{{.*}} void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128* byval(i128) align 8 %{{.+}}, i64 %{{.+}})
41 // SPARCV9: define{{.*}} void @ParamPassing(i129* %{{.+}}, i128 %{{.+}}, i64 %{{.+}})
42 // SPARC: define{{.*}} void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128* byval(i128) align 8 %{{.+}}, i64 %{{.+}})
43 // MIPS64: define{{.*}} void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128 signext  %{{.+}}, i64 signext %{{.+}})
44 // MIPS: define{{.*}} void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128* byval(i128) align 8 %{{.+}}, i64 signext %{{.+}})
45 // SPIR64: define{{.*}} spir_func void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128* byval(i128) align 8 %{{.+}}, i64 %{{.+}})
46 // SPIR: define{{.*}} spir_func void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128* byval(i128) align 8 %{{.+}}, i64 %{{.+}})
47 // HEX: define{{.*}} void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128* byval(i128) align 8 %{{.+}}, i64 %{{.+}})
48 // LANAI: define{{.*}} void @ParamPassing(i129* byval(i129) align 4 %{{.+}}, i128* byval(i128) align 4 %{{.+}}, i64 %{{.+}})
49 // R600: define{{.*}} void @ParamPassing(i129 addrspace(5)* byval(i129) align 8 %{{.+}}, i128 addrspace(5)* byval(i128) align 8 %{{.+}}, i64 %{{.+}})
50 // ARC: define{{.*}} void @ParamPassing(i129* byval(i129) align 4 %{{.+}}, i128* byval(i128) align 4 %{{.+}}, i64 inreg %{{.+}})
51 // XCORE: define{{.*}} void @ParamPassing(i129* byval(i129) align 4 %{{.+}}, i128* byval(i128) align 4 %{{.+}}, i64 %{{.+}})
52 // RISCV64: define{{.*}} void @ParamPassing(i129* %{{.+}}, i128 %{{.+}}, i64 %{{.+}})
53 // RISCV32: define{{.*}} void @ParamPassing(i129* %{{.+}}, i128* %{{.+}}, i64 %{{.+}})
54 // WASM: define{{.*}} void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128 %{{.+}}, i64 %{{.+}})
55 // SYSTEMZ: define{{.*}} void @ParamPassing(i129* %{{.+}}, i128* %{{.+}}, i64 %{{.+}})
56 // PPC64: define{{.*}} void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128 %{{.+}}, i64 %{{.+}})
57 // PPC32: define{{.*}} void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128* byval(i128) align 8 %{{.+}}, i64 %{{.+}})
58 // AARCH64: define{{.*}} void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128 %{{.+}}, i64 %{{.+}})
59 // AARCH64DARWIN: define{{.*}} void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128 %{{.+}}, i64 %{{.+}})
60 // ARM: define{{.*}} arm_aapcscc void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i128* byval(i128) align 8 %{{.+}}, i64 %{{.+}})
61 
62 void ParamPassing2(_ExtInt(129) a, _ExtInt(127) b, _ExtInt(63) c) {}
63 // LIN64: define{{.*}} void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i64 %{{.+}}, i64 %{{.+}}, i64 %{{.+}})
64 // WIN64: define dso_local void @ParamPassing2(i129* %{{.+}}, i127* %{{.+}}, i63 %{{.+}})
65 // LIN32: define{{.*}} void @ParamPassing2(i129* %{{.+}}, i127* %{{.+}}, i63 %{{.+}})
66 // WIN32: define dso_local void @ParamPassing2(i129* %{{.+}}, i127* %{{.+}}, i63 %{{.+}})
67 // NACL: define{{.*}} void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127* byval(i127) align 8 %{{.+}}, i63 %{{.+}})
68 // NVPTX64: define{{.*}} void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127 %{{.+}}, i63 %{{.+}})
69 // NVPTX: define{{.*}} void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127* byval(i127) align 8 %{{.+}}, i63 %{{.+}})
70 // SPARCV9: define{{.*}} void @ParamPassing2(i129* %{{.+}}, i127 %{{.+}}, i63 signext %{{.+}})
71 // SPARC: define{{.*}} void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127* byval(i127) align 8 %{{.+}}, i63 %{{.+}})
72 // MIPS64: define{{.*}} void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127 signext  %{{.+}}, i63 signext %{{.+}})
73 // MIPS: define{{.*}} void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127* byval(i127) align 8 %{{.+}}, i63 signext %{{.+}})
74 // SPIR64: define{{.*}} spir_func void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127* byval(i127) align 8 %{{.+}}, i63 %{{.+}})
75 // SPIR: define{{.*}} spir_func void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127* byval(i127) align 8 %{{.+}}, i63 %{{.+}})
76 // HEX: define{{.*}} void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127* byval(i127) align 8 %{{.+}}, i63 %{{.+}})
77 // LANAI: define{{.*}} void @ParamPassing2(i129* byval(i129) align 4 %{{.+}}, i127* byval(i127) align 4 %{{.+}}, i63 %{{.+}})
78 // R600: define{{.*}} void @ParamPassing2(i129 addrspace(5)* byval(i129) align 8 %{{.+}}, i127 addrspace(5)* byval(i127) align 8 %{{.+}}, i63 %{{.+}})
79 // ARC: define{{.*}} void @ParamPassing2(i129* byval(i129) align 4 %{{.+}}, i127* byval(i127) align 4 %{{.+}}, i63 inreg %{{.+}})
80 // XCORE: define{{.*}} void @ParamPassing2(i129* byval(i129) align 4 %{{.+}}, i127* byval(i127) align 4 %{{.+}}, i63 %{{.+}})
81 // RISCV64: define{{.*}} void @ParamPassing2(i129* %{{.+}}, i127 %{{.+}}, i63 signext %{{.+}})
82 // RISCV32: define{{.*}} void @ParamPassing2(i129* %{{.+}}, i127* %{{.+}}, i63 %{{.+}})
83 // WASM: define{{.*}} void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127 %{{.+}}, i63 %{{.+}})
84 // SYSTEMZ: define{{.*}} void @ParamPassing2(i129* %{{.+}}, i127* %{{.+}}, i63 signext %{{.+}})
85 // PPC64: define{{.*}} void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127 %{{.+}}, i63 signext %{{.+}})
86 // PPC32: define{{.*}} void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127* byval(i127) align 8 %{{.+}}, i63 %{{.+}})
87 // AARCH64: define{{.*}} void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127 %{{.+}}, i63 %{{.+}})
88 // AARCH64DARWIN: define{{.*}} void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127 %{{.+}}, i63 %{{.+}})
89 // ARM: define{{.*}} arm_aapcscc void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i127* byval(i127) align 8 %{{.+}}, i63 %{{.+}})
90 
91 // Make sure we follow the signext rules for promotable integer types.
92 void ParamPassing3(_ExtInt(15) a, _ExtInt(31) b) {}
93 // LIN64: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
94 // WIN64: define dso_local void @ParamPassing3(i15 %{{.+}}, i31 %{{.+}})
95 // LIN32: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
96 // WIN32: define dso_local void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
97 // NACL: define{{.*}} void @ParamPassing3(i15 %{{.+}}, i31 %{{.+}})
98 // NVPTX64: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
99 // NVPTX: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
100 // SPARCV9: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
101 // SPARC: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
102 // MIPS64: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
103 // MIPS: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
104 // SPIR64: define{{.*}} spir_func void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
105 // SPIR: define{{.*}} spir_func void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
106 // HEX: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
107 // LANAI: define{{.*}} void @ParamPassing3(i15 inreg %{{.+}}, i31 inreg %{{.+}})
108 // R600: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
109 // ARC: define{{.*}} void @ParamPassing3(i15 inreg signext %{{.+}}, i31 inreg signext %{{.+}})
110 // XCORE: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
111 // RISCV64: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
112 // RISCV32: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
113 // WASM: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
114 // SYSTEMZ: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
115 // PPC64: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
116 // PPC32: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
117 // AARCH64: define{{.*}} void @ParamPassing3(i15 %{{.+}}, i31 %{{.+}})
118 // AARCH64DARWIN: define{{.*}} void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
119 // ARM: define{{.*}} arm_aapcscc void @ParamPassing3(i15 signext %{{.+}}, i31 signext %{{.+}})
120 
121 _ExtInt(63) ReturnPassing(){}
122 // LIN64: define{{.*}} i64 @ReturnPassing(
123 // WIN64: define dso_local i63 @ReturnPassing(
124 // LIN32: define{{.*}} i63 @ReturnPassing(
125 // WIN32: define dso_local i63 @ReturnPassing(
126 // NACL: define{{.*}} i63 @ReturnPassing(
127 // NVPTX64: define{{.*}} i63 @ReturnPassing(
128 // NVPTX: define{{.*}} i63 @ReturnPassing(
129 // SPARCV9: define{{.*}} signext i63 @ReturnPassing(
130 // SPARC: define{{.*}} i63 @ReturnPassing(
131 // MIPS64: define{{.*}} i63 @ReturnPassing(
132 // MIPS: define{{.*}} i63 @ReturnPassing(
133 // SPIR64: define{{.*}} spir_func i63 @ReturnPassing(
134 // SPIR: define{{.*}} spir_func i63 @ReturnPassing(
135 // HEX: define{{.*}} i63 @ReturnPassing(
136 // LANAI: define{{.*}} i63 @ReturnPassing(
137 // R600: define{{.*}} i63 @ReturnPassing(
138 // ARC: define{{.*}} i63 @ReturnPassing(
139 // XCORE: define{{.*}} i63 @ReturnPassing(
140 // RISCV64: define{{.*}} signext i63 @ReturnPassing(
141 // RISCV32: define{{.*}} i63 @ReturnPassing(
142 // WASM: define{{.*}} i63 @ReturnPassing(
143 // SYSTEMZ: define{{.*}} signext i63 @ReturnPassing(
144 // PPC64: define{{.*}} signext i63 @ReturnPassing(
145 // PPC32: define{{.*}} i63 @ReturnPassing(
146 // AARCH64: define{{.*}} i63 @ReturnPassing(
147 // AARCH64DARWIN: define{{.*}} i63 @ReturnPassing(
148 // ARM: define{{.*}} arm_aapcscc i63 @ReturnPassing(
149 
150 _ExtInt(64) ReturnPassing2(){}
151 // LIN64: define{{.*}} i64 @ReturnPassing2(
152 // WIN64: define dso_local i64 @ReturnPassing2(
153 // LIN32: define{{.*}} i64 @ReturnPassing2(
154 // WIN32: define dso_local i64 @ReturnPassing2(
155 // NACL: define{{.*}} i64 @ReturnPassing2(
156 // NVPTX64: define{{.*}} i64 @ReturnPassing2(
157 // NVPTX: define{{.*}} i64 @ReturnPassing2(
158 // SPARCV9: define{{.*}} i64 @ReturnPassing2(
159 // SPARC: define{{.*}} i64 @ReturnPassing2(
160 // MIPS64: define{{.*}} i64 @ReturnPassing2(
161 // MIPS: define{{.*}} i64 @ReturnPassing2(
162 // SPIR64: define{{.*}} spir_func i64 @ReturnPassing2(
163 // SPIR: define{{.*}} spir_func i64 @ReturnPassing2(
164 // HEX: define{{.*}} i64 @ReturnPassing2(
165 // LANAI: define{{.*}} i64 @ReturnPassing2(
166 // R600: define{{.*}} i64 @ReturnPassing2(
167 // ARC: define{{.*}} i64 @ReturnPassing2(
168 // XCORE: define{{.*}} i64 @ReturnPassing2(
169 // RISCV64: define{{.*}} i64 @ReturnPassing2(
170 // RISCV32: define{{.*}} i64 @ReturnPassing2(
171 // WASM: define{{.*}} i64 @ReturnPassing2(
172 // SYSTEMZ: define{{.*}} i64 @ReturnPassing2(
173 // PPC64: define{{.*}} i64 @ReturnPassing2(
174 // PPC32: define{{.*}} i64 @ReturnPassing2(
175 // AARCH64: define{{.*}} i64 @ReturnPassing2(
176 // AARCH64DARWIN: define{{.*}} i64 @ReturnPassing2(
177 // ARM: define{{.*}} arm_aapcscc i64 @ReturnPassing2(
178 
179 _ExtInt(127) ReturnPassing3(){}
180 // LIN64: define{{.*}} { i64, i64 } @ReturnPassing3(
181 // WIN64: define dso_local void @ReturnPassing3(i127* noalias sret
182 // LIN32: define{{.*}} void @ReturnPassing3(i127* noalias sret
183 // WIN32: define dso_local void @ReturnPassing3(i127* noalias sret
184 // NACL: define{{.*}} void @ReturnPassing3(i127* noalias sret
185 // NVPTX/64 makes the intentional choice to put all return values direct, even
186 // large structures, so we do the same here.
187 // NVPTX64: define{{.*}} i127 @ReturnPassing3(
188 // NVPTX: define{{.*}} i127 @ReturnPassing3(
189 // SPARCV9: define{{.*}} i127 @ReturnPassing3(
190 // SPARC: define{{.*}} void @ReturnPassing3(i127* noalias sret
191 // MIPS64: define{{.*}} i127 @ReturnPassing3(
192 // MIPS: define{{.*}} void @ReturnPassing3(i127* noalias sret
193 // SPIR64: define{{.*}} spir_func void @ReturnPassing3(i127* noalias sret
194 // SPIR: define{{.*}} spir_func void @ReturnPassing3(i127* noalias sret
195 // HEX: define{{.*}} void @ReturnPassing3(i127* noalias sret
196 // LANAI: define{{.*}} void @ReturnPassing3(i127* noalias sret
197 // R600: define{{.*}} void @ReturnPassing3(i127 addrspace(5)* noalias sret
198 // ARC: define{{.*}} void @ReturnPassing3(i127* noalias sret
199 // XCORE: define{{.*}} void @ReturnPassing3(i127* noalias sret
200 // RISCV64: define{{.*}} i127 @ReturnPassing3(
201 // RISCV32: define{{.*}} void @ReturnPassing3(i127* noalias sret
202 // WASM: define{{.*}} i127 @ReturnPassing3(
203 // SYSTEMZ: define{{.*}} void @ReturnPassing3(i127* noalias sret
204 // PPC64: define{{.*}} i127 @ReturnPassing3(
205 // PPC32: define{{.*}} void @ReturnPassing3(i127* noalias sret
206 // AARCH64: define{{.*}} i127 @ReturnPassing3(
207 // AARCH64DARWIN: define{{.*}} i127 @ReturnPassing3(
208 // ARM: define{{.*}} arm_aapcscc void @ReturnPassing3(i127* noalias sret
209 
210 _ExtInt(128) ReturnPassing4(){}
211 // LIN64: define{{.*}} { i64, i64 } @ReturnPassing4(
212 // WIN64: define dso_local void @ReturnPassing4(i128* noalias sret
213 // LIN32: define{{.*}} void @ReturnPassing4(i128* noalias sret
214 // WIN32: define dso_local void @ReturnPassing4(i128* noalias sret
215 // NACL: define{{.*}} void @ReturnPassing4(i128* noalias sret
216 // NVPTX64: define{{.*}} i128 @ReturnPassing4(
217 // NVPTX: define{{.*}} i128 @ReturnPassing4(
218 // SPARCV9: define{{.*}} i128 @ReturnPassing4(
219 // SPARC: define{{.*}} void @ReturnPassing4(i128* noalias sret
220 // MIPS64: define{{.*}} i128 @ReturnPassing4(
221 // MIPS: define{{.*}} void @ReturnPassing4(i128* noalias sret
222 // SPIR64: define{{.*}} spir_func void @ReturnPassing4(i128* noalias sret
223 // SPIR: define{{.*}} spir_func void @ReturnPassing4(i128* noalias sret
224 // HEX: define{{.*}} void @ReturnPassing4(i128* noalias sret
225 // LANAI: define{{.*}} void @ReturnPassing4(i128* noalias sret
226 // R600: define{{.*}} void @ReturnPassing4(i128 addrspace(5)* noalias sret
227 // ARC: define{{.*}} void @ReturnPassing4(i128* noalias sret
228 // XCORE: define{{.*}} void @ReturnPassing4(i128* noalias sret
229 // RISCV64: define{{.*}} i128 @ReturnPassing4(
230 // RISCV32: define{{.*}} void @ReturnPassing4(i128* noalias sret
231 // WASM: define{{.*}} i128 @ReturnPassing4(
232 // SYSTEMZ: define{{.*}} void @ReturnPassing4(i128* noalias sret
233 // PPC64: define{{.*}} i128 @ReturnPassing4(
234 // PPC32: define{{.*}} void @ReturnPassing4(i128* noalias sret
235 // AARCH64: define{{.*}} i128 @ReturnPassing4(
236 // AARCH64DARWIN: define{{.*}} i128 @ReturnPassing4(
237 // ARM: define{{.*}} arm_aapcscc void @ReturnPassing4(i128* noalias sret
238 
239 _ExtInt(129) ReturnPassing5(){}
240 // LIN64: define{{.*}} void @ReturnPassing5(i129* noalias sret
241 // WIN64: define dso_local void @ReturnPassing5(i129* noalias sret
242 // LIN32: define{{.*}} void @ReturnPassing5(i129* noalias sret
243 // WIN32: define dso_local void @ReturnPassing5(i129* noalias sret
244 // NACL: define{{.*}} void @ReturnPassing5(i129* noalias sret
245 // NVPTX64: define{{.*}} i129 @ReturnPassing5(
246 // NVPTX: define{{.*}} i129 @ReturnPassing5(
247 // SPARCV9: define{{.*}} i129 @ReturnPassing5(
248 // SPARC: define{{.*}} void @ReturnPassing5(i129* noalias sret
249 // MIPS64: define{{.*}} void @ReturnPassing5(i129* noalias sret
250 // MIPS: define{{.*}} void @ReturnPassing5(i129* noalias sret
251 // SPIR64: define{{.*}} spir_func void @ReturnPassing5(i129* noalias sret
252 // SPIR: define{{.*}} spir_func void @ReturnPassing5(i129* noalias sret
253 // HEX: define{{.*}} void @ReturnPassing5(i129* noalias sret
254 // LANAI: define{{.*}} void @ReturnPassing5(i129* noalias sret
255 // R600: define{{.*}} void @ReturnPassing5(i129 addrspace(5)* noalias sret
256 // ARC: define{{.*}} void @ReturnPassing5(i129* inreg noalias sret
257 // XCORE: define{{.*}} void @ReturnPassing5(i129* noalias sret
258 // RISCV64: define{{.*}} void @ReturnPassing5(i129* noalias sret
259 // RISCV32: define{{.*}} void @ReturnPassing5(i129* noalias sret
260 // WASM: define{{.*}} void @ReturnPassing5(i129* noalias sret
261 // SYSTEMZ: define{{.*}} void @ReturnPassing5(i129* noalias sret
262 // PPC64: define{{.*}} void @ReturnPassing5(i129* noalias sret
263 // PPC32: define{{.*}} void @ReturnPassing5(i129* noalias sret
264 // AARCH64: define{{.*}} void @ReturnPassing5(i129* noalias sret
265 // AARCH64DARWIN: define{{.*}} void @ReturnPassing5(i129* noalias sret
266 // ARM: define{{.*}} arm_aapcscc void @ReturnPassing5(i129* noalias sret
267 
268 // SparcV9 is odd in that it has a return-size limit of 256, not 128 or 64
269 // like other platforms, so test to make sure this behavior will still work.
270 _ExtInt(256) ReturnPassing6() {}
271 // SPARCV9: define{{.*}} i256 @ReturnPassing6(
272 _ExtInt(257) ReturnPassing7() {}
273 // SPARCV9: define{{.*}} void @ReturnPassing7(i257* noalias sret
274