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