1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2; RUN: llc -march=amdgcn -mcpu=tahiti -O0 -stop-after=irtranslator -global-isel -verify-machineinstrs -o - %s | FileCheck %s 3 4define void @void_func_i1(i1 %arg0) #0 { 5 ; CHECK-LABEL: name: void_func_i1 6 ; CHECK: bb.1 (%ir-block.0): 7 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 8 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 9 ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32) 10 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 11 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 12 ; CHECK: G_STORE [[TRUNC]](s1), [[DEF]](p1) :: (store 1 into `i1 addrspace(1)* undef`, addrspace 1) 13 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 14 ; CHECK: S_SETPC_B64_return [[COPY2]] 15 store i1 %arg0, i1 addrspace(1)* undef 16 ret void 17} 18 19define void @void_func_i1_zeroext(i1 zeroext %arg0) #0 { 20 ; CHECK-LABEL: name: void_func_i1_zeroext 21 ; CHECK: bb.1 (%ir-block.0): 22 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 23 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 24 ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32) 25 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 26 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 27 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 28 ; CHECK: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s1) 29 ; CHECK: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ZEXT]], [[C]] 30 ; CHECK: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store 4 into `i32 addrspace(1)* undef`, addrspace 1) 31 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 32 ; CHECK: S_SETPC_B64_return [[COPY2]] 33 %ext = zext i1 %arg0 to i32 34 %add = add i32 %ext, 12 35 store i32 %add, i32 addrspace(1)* undef 36 ret void 37} 38 39define void @void_func_i1_signext(i1 signext %arg0) #0 { 40 ; CHECK-LABEL: name: void_func_i1_signext 41 ; CHECK: bb.1 (%ir-block.0): 42 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 43 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 44 ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32) 45 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 46 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 47 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 48 ; CHECK: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s1) 49 ; CHECK: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[SEXT]], [[C]] 50 ; CHECK: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store 4 into `i32 addrspace(1)* undef`, addrspace 1) 51 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 52 ; CHECK: S_SETPC_B64_return [[COPY2]] 53 %ext = sext i1 %arg0 to i32 54 %add = add i32 %ext, 12 55 store i32 %add, i32 addrspace(1)* undef 56 ret void 57} 58 59define void @i1_arg_i1_use(i1 %arg) #0 { 60 ; CHECK-LABEL: name: i1_arg_i1_use 61 ; CHECK: bb.1.bb: 62 ; CHECK: successors: %bb.2(0x40000000), %bb.3(0x40000000) 63 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 64 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 65 ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32) 66 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 67 ; CHECK: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 true 68 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 69 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 70 ; CHECK: [[XOR:%[0-9]+]]:_(s1) = G_XOR [[TRUNC]], [[C]] 71 ; CHECK: [[INT:%[0-9]+]]:_(s1), [[INT1:%[0-9]+]]:_(s64) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.amdgcn.if), [[XOR]](s1) 72 ; CHECK: G_BRCOND [[INT]](s1), %bb.2 73 ; CHECK: G_BR %bb.3 74 ; CHECK: bb.2.bb1: 75 ; CHECK: successors: %bb.3(0x80000000) 76 ; CHECK: G_STORE [[C1]](s32), [[DEF]](p1) :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1) 77 ; CHECK: bb.3.bb2: 78 ; CHECK: G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.amdgcn.end.cf), [[INT1]](s64) 79 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 80 ; CHECK: S_SETPC_B64_return [[COPY2]] 81bb: 82 br i1 %arg, label %bb2, label %bb1 83 84bb1: 85 store volatile i32 0, i32 addrspace(1)* undef 86 br label %bb2 87 88bb2: 89 ret void 90} 91 92define void @void_func_i8(i8 %arg0) #0 { 93 ; CHECK-LABEL: name: void_func_i8 94 ; CHECK: bb.1 (%ir-block.0): 95 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 96 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 97 ; CHECK: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32) 98 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 99 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 100 ; CHECK: G_STORE [[TRUNC]](s8), [[DEF]](p1) :: (store 1 into `i8 addrspace(1)* undef`, addrspace 1) 101 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 102 ; CHECK: S_SETPC_B64_return [[COPY2]] 103 store i8 %arg0, i8 addrspace(1)* undef 104 ret void 105} 106 107define void @void_func_i8_zeroext(i8 zeroext %arg0) #0 { 108 ; CHECK-LABEL: name: void_func_i8_zeroext 109 ; CHECK: bb.1 (%ir-block.0): 110 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 111 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 112 ; CHECK: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32) 113 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 114 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 115 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 116 ; CHECK: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s8) 117 ; CHECK: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ZEXT]], [[C]] 118 ; CHECK: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store 4 into `i32 addrspace(1)* undef`, addrspace 1) 119 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 120 ; CHECK: S_SETPC_B64_return [[COPY2]] 121 %ext = zext i8 %arg0 to i32 122 %add = add i32 %ext, 12 123 store i32 %add, i32 addrspace(1)* undef 124 ret void 125} 126 127define void @void_func_i8_signext(i8 signext %arg0) #0 { 128 ; CHECK-LABEL: name: void_func_i8_signext 129 ; CHECK: bb.1 (%ir-block.0): 130 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 131 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 132 ; CHECK: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32) 133 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 134 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 135 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 136 ; CHECK: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s8) 137 ; CHECK: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[SEXT]], [[C]] 138 ; CHECK: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store 4 into `i32 addrspace(1)* undef`, addrspace 1) 139 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 140 ; CHECK: S_SETPC_B64_return [[COPY2]] 141 %ext = sext i8 %arg0 to i32 142 %add = add i32 %ext, 12 143 store i32 %add, i32 addrspace(1)* undef 144 ret void 145} 146 147define void @void_func_i16(i16 %arg0) #0 { 148 ; CHECK-LABEL: name: void_func_i16 149 ; CHECK: bb.1 (%ir-block.0): 150 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 151 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 152 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 153 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 154 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 155 ; CHECK: G_STORE [[TRUNC]](s16), [[DEF]](p1) :: (store 2 into `i16 addrspace(1)* undef`, addrspace 1) 156 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 157 ; CHECK: S_SETPC_B64_return [[COPY2]] 158 store i16 %arg0, i16 addrspace(1)* undef 159 ret void 160} 161 162define void @void_func_i16_zeroext(i16 zeroext %arg0) #0 { 163 ; CHECK-LABEL: name: void_func_i16_zeroext 164 ; CHECK: bb.1 (%ir-block.0): 165 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 166 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 167 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 168 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 169 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 170 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 171 ; CHECK: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s16) 172 ; CHECK: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ZEXT]], [[C]] 173 ; CHECK: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store 4 into `i32 addrspace(1)* undef`, addrspace 1) 174 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 175 ; CHECK: S_SETPC_B64_return [[COPY2]] 176 %ext = zext i16 %arg0 to i32 177 %add = add i32 %ext, 12 178 store i32 %add, i32 addrspace(1)* undef 179 ret void 180} 181 182define void @void_func_i16_signext(i16 signext %arg0) #0 { 183 ; CHECK-LABEL: name: void_func_i16_signext 184 ; CHECK: bb.1 (%ir-block.0): 185 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 186 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 187 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 188 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 189 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 190 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 191 ; CHECK: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s16) 192 ; CHECK: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[SEXT]], [[C]] 193 ; CHECK: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store 4 into `i32 addrspace(1)* undef`, addrspace 1) 194 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 195 ; CHECK: S_SETPC_B64_return [[COPY2]] 196 %ext = sext i16 %arg0 to i32 197 %add = add i32 %ext, 12 198 store i32 %add, i32 addrspace(1)* undef 199 ret void 200} 201 202define void @void_func_i32(i32 %arg0) #0 { 203 ; CHECK-LABEL: name: void_func_i32 204 ; CHECK: bb.1 (%ir-block.0): 205 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 206 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 207 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 208 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 209 ; CHECK: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store 4 into `i32 addrspace(1)* undef`, addrspace 1) 210 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 211 ; CHECK: S_SETPC_B64_return [[COPY2]] 212 store i32 %arg0, i32 addrspace(1)* undef 213 ret void 214} 215 216define void @void_func_p3i8(i8 addrspace(3)* %arg0) #0 { 217 ; CHECK-LABEL: name: void_func_p3i8 218 ; CHECK: bb.1 (%ir-block.0): 219 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 220 ; CHECK: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0 221 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 222 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 223 ; CHECK: G_STORE [[COPY]](p3), [[DEF]](p1) :: (store 4 into `i8 addrspace(3)* addrspace(1)* undef`, addrspace 1) 224 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 225 ; CHECK: S_SETPC_B64_return [[COPY2]] 226 store i8 addrspace(3)* %arg0, i8 addrspace(3)* addrspace(1)* undef 227 ret void 228} 229 230define void @void_func_i64(i64 %arg0) #0 { 231 ; CHECK-LABEL: name: void_func_i64 232 ; CHECK: bb.1 (%ir-block.0): 233 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 234 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 235 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 236 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 237 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 238 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 239 ; CHECK: G_STORE [[MV]](s64), [[DEF]](p1) :: (store 8 into `i64 addrspace(1)* undef`, addrspace 1) 240 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 241 ; CHECK: S_SETPC_B64_return [[COPY3]] 242 store i64 %arg0, i64 addrspace(1)* undef 243 ret void 244} 245 246define void @void_func_p0i8(i8* %arg0) #0 { 247 ; CHECK-LABEL: name: void_func_p0i8 248 ; CHECK: bb.1 (%ir-block.0): 249 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 250 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 251 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 252 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 253 ; CHECK: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 254 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 255 ; CHECK: G_STORE [[MV]](p0), [[DEF]](p1) :: (store 8 into `i8* addrspace(1)* undef`, addrspace 1) 256 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 257 ; CHECK: S_SETPC_B64_return [[COPY3]] 258 store i8* %arg0, i8* addrspace(1)* undef 259 ret void 260} 261 262define void @void_func_p1i8(i8 addrspace(1)* %arg0) #0 { 263 ; CHECK-LABEL: name: void_func_p1i8 264 ; CHECK: bb.1 (%ir-block.0): 265 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 266 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 267 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 268 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 269 ; CHECK: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 270 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 271 ; CHECK: G_STORE [[MV]](p1), [[DEF]](p1) :: (store 8 into `i8 addrspace(1)* addrspace(1)* undef`, addrspace 1) 272 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 273 ; CHECK: S_SETPC_B64_return [[COPY3]] 274 store i8 addrspace(1)* %arg0, i8 addrspace(1)* addrspace(1)* undef 275 ret void 276} 277 278define void @void_func_f16(half %arg0) #0 { 279 ; CHECK-LABEL: name: void_func_f16 280 ; CHECK: bb.1 (%ir-block.0): 281 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 282 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 283 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 284 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 285 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 286 ; CHECK: G_STORE [[TRUNC]](s16), [[DEF]](p1) :: (store 2 into `half addrspace(1)* undef`, addrspace 1) 287 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 288 ; CHECK: S_SETPC_B64_return [[COPY2]] 289 store half %arg0, half addrspace(1)* undef 290 ret void 291} 292 293define void @void_func_f32(float %arg0) #0 { 294 ; CHECK-LABEL: name: void_func_f32 295 ; CHECK: bb.1 (%ir-block.0): 296 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 297 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 298 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 299 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 300 ; CHECK: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store 4 into `float addrspace(1)* undef`, addrspace 1) 301 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 302 ; CHECK: S_SETPC_B64_return [[COPY2]] 303 store float %arg0, float addrspace(1)* undef 304 ret void 305} 306 307define void @void_func_f64(double %arg0) #0 { 308 ; CHECK-LABEL: name: void_func_f64 309 ; CHECK: bb.1 (%ir-block.0): 310 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 311 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 312 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 313 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 314 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 315 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 316 ; CHECK: G_STORE [[MV]](s64), [[DEF]](p1) :: (store 8 into `double addrspace(1)* undef`, addrspace 1) 317 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 318 ; CHECK: S_SETPC_B64_return [[COPY3]] 319 store double %arg0, double addrspace(1)* undef 320 ret void 321} 322 323define void @void_func_v2i32(<2 x i32> %arg0) #0 { 324 ; CHECK-LABEL: name: void_func_v2i32 325 ; CHECK: bb.1 (%ir-block.0): 326 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 327 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 328 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 329 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 330 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32) 331 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 332 ; CHECK: G_STORE [[BUILD_VECTOR]](<2 x s32>), [[DEF]](p1) :: (store 8 into `<2 x i32> addrspace(1)* undef`, addrspace 1) 333 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 334 ; CHECK: S_SETPC_B64_return [[COPY3]] 335 store <2 x i32> %arg0, <2 x i32> addrspace(1)* undef 336 ret void 337} 338 339define void @void_func_v2p3i8(<2 x i8 addrspace(3)*> %arg0) #0 { 340 ; CHECK-LABEL: name: void_func_v2p3i8 341 ; CHECK: bb.1 (%ir-block.0): 342 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 343 ; CHECK: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0 344 ; CHECK: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1 345 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 346 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p3>) = G_BUILD_VECTOR [[COPY]](p3), [[COPY1]](p3) 347 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 348 ; CHECK: G_STORE [[BUILD_VECTOR]](<2 x p3>), [[DEF]](p1) :: (store 8 into `<2 x i8 addrspace(3)*> addrspace(1)* undef`, addrspace 1) 349 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 350 ; CHECK: S_SETPC_B64_return [[COPY3]] 351 store <2 x i8 addrspace(3)*> %arg0, <2 x i8 addrspace(3)*> addrspace(1)* undef 352 ret void 353} 354 355define void @void_func_v3i32(<3 x i32> %arg0) #0 { 356 ; CHECK-LABEL: name: void_func_v3i32 357 ; CHECK: bb.1 (%ir-block.0): 358 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31 359 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 360 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 361 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 362 ; CHECK: [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 363 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32) 364 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 365 ; CHECK: G_STORE [[BUILD_VECTOR]](<3 x s32>), [[DEF]](p1) :: (store 12 into `<3 x i32> addrspace(1)* undef`, align 16, addrspace 1) 366 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]] 367 ; CHECK: S_SETPC_B64_return [[COPY4]] 368 store <3 x i32> %arg0, <3 x i32> addrspace(1)* undef 369 ret void 370} 371 372define void @void_func_v4i32(<4 x i32> %arg0) #0 { 373 ; CHECK-LABEL: name: void_func_v4i32 374 ; CHECK: bb.1 (%ir-block.0): 375 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 376 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 377 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 378 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 379 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 380 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 381 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32) 382 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 383 ; CHECK: G_STORE [[BUILD_VECTOR]](<4 x s32>), [[DEF]](p1) :: (store 16 into `<4 x i32> addrspace(1)* undef`, addrspace 1) 384 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 385 ; CHECK: S_SETPC_B64_return [[COPY5]] 386 store <4 x i32> %arg0, <4 x i32> addrspace(1)* undef 387 ret void 388} 389 390define void @void_func_v5i32(<5 x i32> %arg0) #0 { 391 ; CHECK-LABEL: name: void_func_v5i32 392 ; CHECK: bb.1 (%ir-block.0): 393 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $sgpr30_sgpr31 394 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 395 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 396 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 397 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 398 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 399 ; CHECK: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 400 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32) 401 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 402 ; CHECK: G_STORE [[BUILD_VECTOR]](<5 x s32>), [[DEF]](p1) :: (store 20 into `<5 x i32> addrspace(1)* undef`, align 32, addrspace 1) 403 ; CHECK: [[COPY6:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY5]] 404 ; CHECK: S_SETPC_B64_return [[COPY6]] 405 store <5 x i32> %arg0, <5 x i32> addrspace(1)* undef 406 ret void 407} 408 409define void @void_func_v8i32(<8 x i32> %arg0) #0 { 410 ; CHECK-LABEL: name: void_func_v8i32 411 ; CHECK: bb.1 (%ir-block.0): 412 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31 413 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 414 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 415 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 416 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 417 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 418 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 419 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 420 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 421 ; CHECK: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 422 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32) 423 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 424 ; CHECK: G_STORE [[BUILD_VECTOR]](<8 x s32>), [[DEF]](p1) :: (store 32 into `<8 x i32> addrspace(1)* undef`, addrspace 1) 425 ; CHECK: [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]] 426 ; CHECK: S_SETPC_B64_return [[COPY9]] 427 store <8 x i32> %arg0, <8 x i32> addrspace(1)* undef 428 ret void 429} 430 431define void @void_func_v16i32(<16 x i32> %arg0) #0 { 432 ; CHECK-LABEL: name: void_func_v16i32 433 ; CHECK: bb.1 (%ir-block.0): 434 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31 435 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 436 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 437 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 438 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 439 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 440 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 441 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 442 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 443 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 444 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 445 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 446 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 447 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 448 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 449 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 450 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 451 ; CHECK: [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 452 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32) 453 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 454 ; CHECK: G_STORE [[BUILD_VECTOR]](<16 x s32>), [[DEF]](p1) :: (store 64 into `<16 x i32> addrspace(1)* undef`, addrspace 1) 455 ; CHECK: [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]] 456 ; CHECK: S_SETPC_B64_return [[COPY17]] 457 store <16 x i32> %arg0, <16 x i32> addrspace(1)* undef 458 ret void 459} 460 461define void @void_func_v32i32(<32 x i32> %arg0) #0 { 462 ; CHECK-LABEL: name: void_func_v32i32 463 ; CHECK: bb.1 (%ir-block.0): 464 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 465 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 466 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 467 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 468 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 469 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 470 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 471 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 472 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 473 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 474 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 475 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 476 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 477 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 478 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 479 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 480 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 481 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 482 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 483 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 484 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 485 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 486 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 487 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 488 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 489 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 490 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 491 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 492 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 493 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 494 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 495 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 496 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 497 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 498 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 499 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 500 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1) 501 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 502 ; CHECK: S_SETPC_B64_return [[COPY33]] 503 store <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 504 ret void 505} 506 507; 1 over register limit 508define void @void_func_v33i32(<33 x i32> %arg0) #0 { 509 ; CHECK-LABEL: name: void_func_v33i32 510 ; CHECK: bb.1 (%ir-block.0): 511 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 512 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 513 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 514 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 515 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 516 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 517 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 518 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 519 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 520 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 521 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 522 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 523 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 524 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 525 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 526 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 527 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 528 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 529 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 530 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 531 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 532 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 533 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 534 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 535 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 536 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 537 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 538 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 539 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 540 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 541 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 542 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 543 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 544 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 545 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5) 546 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 547 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<33 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32), [[LOAD]](s32) 548 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 549 ; CHECK: G_STORE [[BUILD_VECTOR]](<33 x s32>), [[DEF]](p1) :: (store 132 into `<33 x i32> addrspace(1)* undef`, align 256, addrspace 1) 550 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 551 ; CHECK: S_SETPC_B64_return [[COPY33]] 552 store <33 x i32> %arg0, <33 x i32> addrspace(1)* undef 553 ret void 554} 555 556define void @void_func_v2i64(<2 x i64> %arg0) #0 { 557 ; CHECK-LABEL: name: void_func_v2i64 558 ; CHECK: bb.1 (%ir-block.0): 559 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 560 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 561 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 562 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 563 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 564 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 565 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 566 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 567 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64) 568 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 569 ; CHECK: G_STORE [[BUILD_VECTOR]](<2 x s64>), [[DEF]](p1) :: (store 16 into `<2 x i64> addrspace(1)* undef`, addrspace 1) 570 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 571 ; CHECK: S_SETPC_B64_return [[COPY5]] 572 store <2 x i64> %arg0, <2 x i64> addrspace(1)* undef 573 ret void 574} 575 576define void @void_func_v2p0i8(<2 x i8*> %arg0) #0 { 577 ; CHECK-LABEL: name: void_func_v2p0i8 578 ; CHECK: bb.1 (%ir-block.0): 579 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 580 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 581 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 582 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 583 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 584 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 585 ; CHECK: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 586 ; CHECK: [[MV1:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 587 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[MV]](p0), [[MV1]](p0) 588 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 589 ; CHECK: G_STORE [[BUILD_VECTOR]](<2 x p0>), [[DEF]](p1) :: (store 16 into `<2 x i8*> addrspace(1)* undef`, addrspace 1) 590 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 591 ; CHECK: S_SETPC_B64_return [[COPY5]] 592 store <2 x i8*> %arg0, <2 x i8*> addrspace(1)* undef 593 ret void 594} 595 596define void @void_func_v2p1i8(<2 x i8 addrspace(1)*> %arg0) #0 { 597 ; CHECK-LABEL: name: void_func_v2p1i8 598 ; CHECK: bb.1 (%ir-block.0): 599 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 600 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 601 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 602 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 603 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 604 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 605 ; CHECK: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 606 ; CHECK: [[MV1:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 607 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p1>) = G_BUILD_VECTOR [[MV]](p1), [[MV1]](p1) 608 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 609 ; CHECK: G_STORE [[BUILD_VECTOR]](<2 x p1>), [[DEF]](p1) :: (store 16 into `<2 x i8 addrspace(1)*> addrspace(1)* undef`, addrspace 1) 610 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 611 ; CHECK: S_SETPC_B64_return [[COPY5]] 612 store <2 x i8 addrspace(1)*> %arg0, <2 x i8 addrspace(1)*> addrspace(1)* undef 613 ret void 614} 615 616define void @void_func_v3i64(<3 x i64> %arg0) #0 { 617 ; CHECK-LABEL: name: void_func_v3i64 618 ; CHECK: bb.1 (%ir-block.0): 619 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $sgpr30_sgpr31 620 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 621 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 622 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 623 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 624 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 625 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 626 ; CHECK: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 627 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 628 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 629 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 630 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64) 631 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 632 ; CHECK: G_STORE [[BUILD_VECTOR]](<3 x s64>), [[DEF]](p1) :: (store 24 into `<3 x i64> addrspace(1)* undef`, align 32, addrspace 1) 633 ; CHECK: [[COPY7:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY6]] 634 ; CHECK: S_SETPC_B64_return [[COPY7]] 635 store <3 x i64> %arg0, <3 x i64> addrspace(1)* undef 636 ret void 637} 638 639define void @void_func_v4i64(<4 x i64> %arg0) #0 { 640 ; CHECK-LABEL: name: void_func_v4i64 641 ; CHECK: bb.1 (%ir-block.0): 642 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31 643 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 644 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 645 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 646 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 647 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 648 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 649 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 650 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 651 ; CHECK: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 652 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 653 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 654 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 655 ; CHECK: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32) 656 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64) 657 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 658 ; CHECK: G_STORE [[BUILD_VECTOR]](<4 x s64>), [[DEF]](p1) :: (store 32 into `<4 x i64> addrspace(1)* undef`, addrspace 1) 659 ; CHECK: [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]] 660 ; CHECK: S_SETPC_B64_return [[COPY9]] 661 store <4 x i64> %arg0, <4 x i64> addrspace(1)* undef 662 ret void 663} 664 665define void @void_func_v5i64(<5 x i64> %arg0) #0 { 666 ; CHECK-LABEL: name: void_func_v5i64 667 ; CHECK: bb.1 (%ir-block.0): 668 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $sgpr30_sgpr31 669 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 670 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 671 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 672 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 673 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 674 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 675 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 676 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 677 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 678 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 679 ; CHECK: [[COPY10:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 680 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 681 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 682 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 683 ; CHECK: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32) 684 ; CHECK: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32) 685 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64), [[MV4]](s64) 686 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 687 ; CHECK: G_STORE [[BUILD_VECTOR]](<5 x s64>), [[DEF]](p1) :: (store 40 into `<5 x i64> addrspace(1)* undef`, align 64, addrspace 1) 688 ; CHECK: [[COPY11:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY10]] 689 ; CHECK: S_SETPC_B64_return [[COPY11]] 690 store <5 x i64> %arg0, <5 x i64> addrspace(1)* undef 691 ret void 692} 693 694define void @void_func_v8i64(<8 x i64> %arg0) #0 { 695 ; CHECK-LABEL: name: void_func_v8i64 696 ; CHECK: bb.1 (%ir-block.0): 697 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31 698 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 699 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 700 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 701 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 702 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 703 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 704 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 705 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 706 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 707 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 708 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 709 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 710 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 711 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 712 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 713 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 714 ; CHECK: [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 715 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 716 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 717 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 718 ; CHECK: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32) 719 ; CHECK: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32) 720 ; CHECK: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32) 721 ; CHECK: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32) 722 ; CHECK: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32) 723 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64), [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64) 724 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 725 ; CHECK: G_STORE [[BUILD_VECTOR]](<8 x s64>), [[DEF]](p1) :: (store 64 into `<8 x i64> addrspace(1)* undef`, addrspace 1) 726 ; CHECK: [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]] 727 ; CHECK: S_SETPC_B64_return [[COPY17]] 728 store <8 x i64> %arg0, <8 x i64> addrspace(1)* undef 729 ret void 730} 731 732define void @void_func_v16i64(<16 x i64> %arg0) #0 { 733 ; CHECK-LABEL: name: void_func_v16i64 734 ; CHECK: bb.1 (%ir-block.0): 735 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 736 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 737 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 738 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 739 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 740 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 741 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 742 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 743 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 744 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 745 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 746 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 747 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 748 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 749 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 750 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 751 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 752 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 753 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 754 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 755 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 756 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 757 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 758 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 759 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 760 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 761 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 762 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 763 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 764 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 765 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 766 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 767 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 768 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 769 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 770 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 771 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 772 ; CHECK: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32) 773 ; CHECK: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32) 774 ; CHECK: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32) 775 ; CHECK: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32) 776 ; CHECK: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32) 777 ; CHECK: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32) 778 ; CHECK: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32) 779 ; CHECK: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32) 780 ; CHECK: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32) 781 ; CHECK: [[MV12:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY24]](s32), [[COPY25]](s32) 782 ; CHECK: [[MV13:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY26]](s32), [[COPY27]](s32) 783 ; CHECK: [[MV14:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY28]](s32), [[COPY29]](s32) 784 ; CHECK: [[MV15:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY30]](s32), [[COPY31]](s32) 785 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64), [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64), [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64), [[MV12]](s64), [[MV13]](s64), [[MV14]](s64), [[MV15]](s64) 786 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 787 ; CHECK: G_STORE [[BUILD_VECTOR]](<16 x s64>), [[DEF]](p1) :: (store 128 into `<16 x i64> addrspace(1)* undef`, addrspace 1) 788 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 789 ; CHECK: S_SETPC_B64_return [[COPY33]] 790 store <16 x i64> %arg0, <16 x i64> addrspace(1)* undef 791 ret void 792} 793 794define void @void_func_v2i16(<2 x i16> %arg0) #0 { 795 ; CHECK-LABEL: name: void_func_v2i16 796 ; CHECK: bb.1 (%ir-block.0): 797 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 798 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 799 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 800 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 801 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32) 802 ; CHECK: [[TRUNC:%[0-9]+]]:_(<2 x s16>) = G_TRUNC [[BUILD_VECTOR]](<2 x s32>) 803 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 804 ; CHECK: G_STORE [[TRUNC]](<2 x s16>), [[DEF]](p1) :: (store 4 into `<2 x i16> addrspace(1)* undef`, addrspace 1) 805 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 806 ; CHECK: S_SETPC_B64_return [[COPY3]] 807 store <2 x i16> %arg0, <2 x i16> addrspace(1)* undef 808 ret void 809} 810 811define void @void_func_v3i16(<3 x i16> %arg0) #0 { 812 ; CHECK-LABEL: name: void_func_v3i16 813 ; CHECK: bb.1 (%ir-block.0): 814 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31 815 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 816 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 817 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 818 ; CHECK: [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 819 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32) 820 ; CHECK: [[TRUNC:%[0-9]+]]:_(<3 x s16>) = G_TRUNC [[BUILD_VECTOR]](<3 x s32>) 821 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 822 ; CHECK: G_STORE [[TRUNC]](<3 x s16>), [[DEF]](p1) :: (store 6 into `<3 x i16> addrspace(1)* undef`, align 8, addrspace 1) 823 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]] 824 ; CHECK: S_SETPC_B64_return [[COPY4]] 825 store <3 x i16> %arg0, <3 x i16> addrspace(1)* undef 826 ret void 827} 828 829define void @void_func_v4i16(<4 x i16> %arg0) #0 { 830 ; CHECK-LABEL: name: void_func_v4i16 831 ; CHECK: bb.1 (%ir-block.0): 832 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 833 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 834 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 835 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 836 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 837 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 838 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32) 839 ; CHECK: [[TRUNC:%[0-9]+]]:_(<4 x s16>) = G_TRUNC [[BUILD_VECTOR]](<4 x s32>) 840 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 841 ; CHECK: G_STORE [[TRUNC]](<4 x s16>), [[DEF]](p1) :: (store 8 into `<4 x i16> addrspace(1)* undef`, addrspace 1) 842 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 843 ; CHECK: S_SETPC_B64_return [[COPY5]] 844 store <4 x i16> %arg0, <4 x i16> addrspace(1)* undef 845 ret void 846} 847 848define void @void_func_v5i16(<5 x i16> %arg0) #0 { 849 ; CHECK-LABEL: name: void_func_v5i16 850 ; CHECK: bb.1 (%ir-block.0): 851 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $sgpr30_sgpr31 852 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 853 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 854 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 855 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 856 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 857 ; CHECK: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 858 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32) 859 ; CHECK: [[TRUNC:%[0-9]+]]:_(<5 x s16>) = G_TRUNC [[BUILD_VECTOR]](<5 x s32>) 860 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 861 ; CHECK: G_STORE [[TRUNC]](<5 x s16>), [[DEF]](p1) :: (store 10 into `<5 x i16> addrspace(1)* undef`, align 16, addrspace 1) 862 ; CHECK: [[COPY6:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY5]] 863 ; CHECK: S_SETPC_B64_return [[COPY6]] 864 store <5 x i16> %arg0, <5 x i16> addrspace(1)* undef 865 ret void 866} 867 868define void @void_func_v8i16(<8 x i16> %arg0) #0 { 869 ; CHECK-LABEL: name: void_func_v8i16 870 ; CHECK: bb.1 (%ir-block.0): 871 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31 872 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 873 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 874 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 875 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 876 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 877 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 878 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 879 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 880 ; CHECK: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 881 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32) 882 ; CHECK: [[TRUNC:%[0-9]+]]:_(<8 x s16>) = G_TRUNC [[BUILD_VECTOR]](<8 x s32>) 883 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 884 ; CHECK: G_STORE [[TRUNC]](<8 x s16>), [[DEF]](p1) :: (store 16 into `<8 x i16> addrspace(1)* undef`, addrspace 1) 885 ; CHECK: [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]] 886 ; CHECK: S_SETPC_B64_return [[COPY9]] 887 store <8 x i16> %arg0, <8 x i16> addrspace(1)* undef 888 ret void 889} 890 891define void @void_func_v16i16(<16 x i16> %arg0) #0 { 892 ; CHECK-LABEL: name: void_func_v16i16 893 ; CHECK: bb.1 (%ir-block.0): 894 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31 895 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 896 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 897 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 898 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 899 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 900 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 901 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 902 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 903 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 904 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 905 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 906 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 907 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 908 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 909 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 910 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 911 ; CHECK: [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 912 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32) 913 ; CHECK: [[TRUNC:%[0-9]+]]:_(<16 x s16>) = G_TRUNC [[BUILD_VECTOR]](<16 x s32>) 914 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 915 ; CHECK: G_STORE [[TRUNC]](<16 x s16>), [[DEF]](p1) :: (store 32 into `<16 x i16> addrspace(1)* undef`, addrspace 1) 916 ; CHECK: [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]] 917 ; CHECK: S_SETPC_B64_return [[COPY17]] 918 store <16 x i16> %arg0, <16 x i16> addrspace(1)* undef 919 ret void 920} 921 922define void @void_func_v2f32(<2 x float> %arg0) #0 { 923 ; CHECK-LABEL: name: void_func_v2f32 924 ; CHECK: bb.1 (%ir-block.0): 925 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 926 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 927 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 928 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 929 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32) 930 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 931 ; CHECK: G_STORE [[BUILD_VECTOR]](<2 x s32>), [[DEF]](p1) :: (store 8 into `<2 x float> addrspace(1)* undef`, addrspace 1) 932 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 933 ; CHECK: S_SETPC_B64_return [[COPY3]] 934 store <2 x float> %arg0, <2 x float> addrspace(1)* undef 935 ret void 936} 937 938define void @void_func_v3f32(<3 x float> %arg0) #0 { 939 ; CHECK-LABEL: name: void_func_v3f32 940 ; CHECK: bb.1 (%ir-block.0): 941 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31 942 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 943 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 944 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 945 ; CHECK: [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 946 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32) 947 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 948 ; CHECK: G_STORE [[BUILD_VECTOR]](<3 x s32>), [[DEF]](p1) :: (store 12 into `<3 x float> addrspace(1)* undef`, align 16, addrspace 1) 949 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]] 950 ; CHECK: S_SETPC_B64_return [[COPY4]] 951 store <3 x float> %arg0, <3 x float> addrspace(1)* undef 952 ret void 953} 954 955define void @void_func_v4f32(<4 x float> %arg0) #0 { 956 ; CHECK-LABEL: name: void_func_v4f32 957 ; CHECK: bb.1 (%ir-block.0): 958 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 959 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 960 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 961 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 962 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 963 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 964 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32) 965 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 966 ; CHECK: G_STORE [[BUILD_VECTOR]](<4 x s32>), [[DEF]](p1) :: (store 16 into `<4 x float> addrspace(1)* undef`, addrspace 1) 967 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 968 ; CHECK: S_SETPC_B64_return [[COPY5]] 969 store <4 x float> %arg0, <4 x float> addrspace(1)* undef 970 ret void 971} 972 973define void @void_func_v8f32(<8 x float> %arg0) #0 { 974 ; CHECK-LABEL: name: void_func_v8f32 975 ; CHECK: bb.1 (%ir-block.0): 976 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31 977 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 978 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 979 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 980 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 981 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 982 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 983 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 984 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 985 ; CHECK: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 986 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32) 987 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 988 ; CHECK: G_STORE [[BUILD_VECTOR]](<8 x s32>), [[DEF]](p1) :: (store 32 into `<8 x float> addrspace(1)* undef`, addrspace 1) 989 ; CHECK: [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]] 990 ; CHECK: S_SETPC_B64_return [[COPY9]] 991 store <8 x float> %arg0, <8 x float> addrspace(1)* undef 992 ret void 993} 994 995define void @void_func_v16f32(<16 x float> %arg0) #0 { 996 ; CHECK-LABEL: name: void_func_v16f32 997 ; CHECK: bb.1 (%ir-block.0): 998 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31 999 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1000 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1001 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1002 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1003 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1004 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1005 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1006 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1007 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1008 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1009 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1010 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1011 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1012 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1013 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1014 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1015 ; CHECK: [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1016 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32) 1017 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1018 ; CHECK: G_STORE [[BUILD_VECTOR]](<16 x s32>), [[DEF]](p1) :: (store 64 into `<16 x float> addrspace(1)* undef`, addrspace 1) 1019 ; CHECK: [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]] 1020 ; CHECK: S_SETPC_B64_return [[COPY17]] 1021 store <16 x float> %arg0, <16 x float> addrspace(1)* undef 1022 ret void 1023} 1024 1025define void @void_func_v2f64(<2 x double> %arg0) #0 { 1026 ; CHECK-LABEL: name: void_func_v2f64 1027 ; CHECK: bb.1 (%ir-block.0): 1028 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 1029 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1030 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1031 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1032 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1033 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1034 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 1035 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 1036 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64) 1037 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1038 ; CHECK: G_STORE [[BUILD_VECTOR]](<2 x s64>), [[DEF]](p1) :: (store 16 into `<2 x double> addrspace(1)* undef`, addrspace 1) 1039 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 1040 ; CHECK: S_SETPC_B64_return [[COPY5]] 1041 store <2 x double> %arg0, <2 x double> addrspace(1)* undef 1042 ret void 1043} 1044 1045define void @void_func_v3f64(<3 x double> %arg0) #0 { 1046 ; CHECK-LABEL: name: void_func_v3f64 1047 ; CHECK: bb.1 (%ir-block.0): 1048 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $sgpr30_sgpr31 1049 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1050 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1051 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1052 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1053 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1054 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1055 ; CHECK: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1056 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 1057 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 1058 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 1059 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64) 1060 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1061 ; CHECK: G_STORE [[BUILD_VECTOR]](<3 x s64>), [[DEF]](p1) :: (store 24 into `<3 x double> addrspace(1)* undef`, align 32, addrspace 1) 1062 ; CHECK: [[COPY7:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY6]] 1063 ; CHECK: S_SETPC_B64_return [[COPY7]] 1064 store <3 x double> %arg0, <3 x double> addrspace(1)* undef 1065 ret void 1066} 1067 1068define void @void_func_v4f64(<4 x double> %arg0) #0 { 1069 ; CHECK-LABEL: name: void_func_v4f64 1070 ; CHECK: bb.1 (%ir-block.0): 1071 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31 1072 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1073 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1074 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1075 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1076 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1077 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1078 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1079 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1080 ; CHECK: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1081 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 1082 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 1083 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 1084 ; CHECK: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32) 1085 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64) 1086 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1087 ; CHECK: G_STORE [[BUILD_VECTOR]](<4 x s64>), [[DEF]](p1) :: (store 32 into `<4 x double> addrspace(1)* undef`, addrspace 1) 1088 ; CHECK: [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]] 1089 ; CHECK: S_SETPC_B64_return [[COPY9]] 1090 store <4 x double> %arg0, <4 x double> addrspace(1)* undef 1091 ret void 1092} 1093 1094define void @void_func_v8f64(<8 x double> %arg0) #0 { 1095 ; CHECK-LABEL: name: void_func_v8f64 1096 ; CHECK: bb.1 (%ir-block.0): 1097 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31 1098 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1099 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1100 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1101 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1102 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1103 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1104 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1105 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1106 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1107 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1108 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1109 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1110 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1111 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1112 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1113 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1114 ; CHECK: [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1115 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 1116 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 1117 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 1118 ; CHECK: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32) 1119 ; CHECK: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32) 1120 ; CHECK: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32) 1121 ; CHECK: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32) 1122 ; CHECK: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32) 1123 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64), [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64) 1124 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1125 ; CHECK: G_STORE [[BUILD_VECTOR]](<8 x s64>), [[DEF]](p1) :: (store 64 into `<8 x double> addrspace(1)* undef`, addrspace 1) 1126 ; CHECK: [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]] 1127 ; CHECK: S_SETPC_B64_return [[COPY17]] 1128 store <8 x double> %arg0, <8 x double> addrspace(1)* undef 1129 ret void 1130} 1131 1132define void @void_func_v16f64(<16 x double> %arg0) #0 { 1133 ; CHECK-LABEL: name: void_func_v16f64 1134 ; CHECK: bb.1 (%ir-block.0): 1135 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 1136 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1137 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1138 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1139 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1140 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1141 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1142 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1143 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1144 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1145 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1146 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1147 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1148 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1149 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1150 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1151 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1152 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 1153 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 1154 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 1155 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 1156 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 1157 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 1158 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 1159 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 1160 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 1161 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 1162 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 1163 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 1164 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 1165 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 1166 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 1167 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 1168 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1169 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 1170 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 1171 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 1172 ; CHECK: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32) 1173 ; CHECK: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32) 1174 ; CHECK: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32) 1175 ; CHECK: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32) 1176 ; CHECK: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32) 1177 ; CHECK: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32) 1178 ; CHECK: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32) 1179 ; CHECK: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32) 1180 ; CHECK: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32) 1181 ; CHECK: [[MV12:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY24]](s32), [[COPY25]](s32) 1182 ; CHECK: [[MV13:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY26]](s32), [[COPY27]](s32) 1183 ; CHECK: [[MV14:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY28]](s32), [[COPY29]](s32) 1184 ; CHECK: [[MV15:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY30]](s32), [[COPY31]](s32) 1185 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64), [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64), [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64), [[MV12]](s64), [[MV13]](s64), [[MV14]](s64), [[MV15]](s64) 1186 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1187 ; CHECK: G_STORE [[BUILD_VECTOR]](<16 x s64>), [[DEF]](p1) :: (store 128 into `<16 x double> addrspace(1)* undef`, addrspace 1) 1188 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 1189 ; CHECK: S_SETPC_B64_return [[COPY33]] 1190 store <16 x double> %arg0, <16 x double> addrspace(1)* undef 1191 ret void 1192} 1193 1194define void @void_func_v2f16(<2 x half> %arg0) #0 { 1195 ; CHECK-LABEL: name: void_func_v2f16 1196 ; CHECK: bb.1 (%ir-block.0): 1197 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 1198 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1199 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1200 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1201 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32) 1202 ; CHECK: [[TRUNC:%[0-9]+]]:_(<2 x s16>) = G_TRUNC [[BUILD_VECTOR]](<2 x s32>) 1203 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1204 ; CHECK: G_STORE [[TRUNC]](<2 x s16>), [[DEF]](p1) :: (store 4 into `<2 x half> addrspace(1)* undef`, addrspace 1) 1205 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 1206 ; CHECK: S_SETPC_B64_return [[COPY3]] 1207 store <2 x half> %arg0, <2 x half> addrspace(1)* undef 1208 ret void 1209} 1210 1211define void @void_func_v3f16(<3 x half> %arg0) #0 { 1212 ; CHECK-LABEL: name: void_func_v3f16 1213 ; CHECK: bb.1 (%ir-block.0): 1214 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31 1215 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1216 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1217 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1218 ; CHECK: [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1219 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32) 1220 ; CHECK: [[TRUNC:%[0-9]+]]:_(<3 x s16>) = G_TRUNC [[BUILD_VECTOR]](<3 x s32>) 1221 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1222 ; CHECK: G_STORE [[TRUNC]](<3 x s16>), [[DEF]](p1) :: (store 6 into `<3 x half> addrspace(1)* undef`, align 8, addrspace 1) 1223 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]] 1224 ; CHECK: S_SETPC_B64_return [[COPY4]] 1225 store <3 x half> %arg0, <3 x half> addrspace(1)* undef 1226 ret void 1227} 1228 1229define void @void_func_v4f16(<4 x half> %arg0) #0 { 1230 ; CHECK-LABEL: name: void_func_v4f16 1231 ; CHECK: bb.1 (%ir-block.0): 1232 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 1233 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1234 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1235 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1236 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1237 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1238 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32) 1239 ; CHECK: [[TRUNC:%[0-9]+]]:_(<4 x s16>) = G_TRUNC [[BUILD_VECTOR]](<4 x s32>) 1240 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1241 ; CHECK: G_STORE [[TRUNC]](<4 x s16>), [[DEF]](p1) :: (store 8 into `<4 x half> addrspace(1)* undef`, addrspace 1) 1242 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 1243 ; CHECK: S_SETPC_B64_return [[COPY5]] 1244 store <4 x half> %arg0, <4 x half> addrspace(1)* undef 1245 ret void 1246} 1247 1248define void @void_func_v8f16(<8 x half> %arg0) #0 { 1249 ; CHECK-LABEL: name: void_func_v8f16 1250 ; CHECK: bb.1 (%ir-block.0): 1251 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31 1252 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1253 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1254 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1255 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1256 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1257 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1258 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1259 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1260 ; CHECK: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1261 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32) 1262 ; CHECK: [[TRUNC:%[0-9]+]]:_(<8 x s16>) = G_TRUNC [[BUILD_VECTOR]](<8 x s32>) 1263 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1264 ; CHECK: G_STORE [[TRUNC]](<8 x s16>), [[DEF]](p1) :: (store 16 into `<8 x half> addrspace(1)* undef`, addrspace 1) 1265 ; CHECK: [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]] 1266 ; CHECK: S_SETPC_B64_return [[COPY9]] 1267 store <8 x half> %arg0, <8 x half> addrspace(1)* undef 1268 ret void 1269} 1270 1271define void @void_func_v16f16(<16 x half> %arg0) #0 { 1272 ; CHECK-LABEL: name: void_func_v16f16 1273 ; CHECK: bb.1 (%ir-block.0): 1274 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31 1275 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1276 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1277 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1278 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1279 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1280 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1281 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1282 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1283 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1284 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1285 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1286 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1287 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1288 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1289 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1290 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1291 ; CHECK: [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1292 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32) 1293 ; CHECK: [[TRUNC:%[0-9]+]]:_(<16 x s16>) = G_TRUNC [[BUILD_VECTOR]](<16 x s32>) 1294 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1295 ; CHECK: G_STORE [[TRUNC]](<16 x s16>), [[DEF]](p1) :: (store 32 into `<16 x half> addrspace(1)* undef`, addrspace 1) 1296 ; CHECK: [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]] 1297 ; CHECK: S_SETPC_B64_return [[COPY17]] 1298 store <16 x half> %arg0, <16 x half> addrspace(1)* undef 1299 ret void 1300} 1301 1302; Make sure there is no alignment requirement for passed vgprs. 1303define void @void_func_i32_i64_i32(i32 %arg0, i64 %arg1, i32 %arg2) #0 { 1304 ; CHECK-LABEL: name: void_func_i32_i64_i32 1305 ; CHECK: bb.1 (%ir-block.0): 1306 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 1307 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1308 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1309 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1310 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1311 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1312 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY1]](s32), [[COPY2]](s32) 1313 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1314 ; CHECK: [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1315 ; CHECK: G_STORE [[COPY]](s32), [[DEF]](p1) :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1) 1316 ; CHECK: G_STORE [[MV]](s64), [[DEF1]](p1) :: (volatile store 8 into `i64 addrspace(1)* undef`, addrspace 1) 1317 ; CHECK: G_STORE [[COPY3]](s32), [[DEF]](p1) :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1) 1318 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 1319 ; CHECK: S_SETPC_B64_return [[COPY5]] 1320 store volatile i32 %arg0, i32 addrspace(1)* undef 1321 store volatile i64 %arg1, i64 addrspace(1)* undef 1322 store volatile i32 %arg2, i32 addrspace(1)* undef 1323 ret void 1324} 1325 1326define void @void_func_struct_i32({ i32 } %arg0) #0 { 1327 ; CHECK-LABEL: name: void_func_struct_i32 1328 ; CHECK: bb.1 (%ir-block.0): 1329 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 1330 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1331 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1332 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1333 ; CHECK: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store 4 into `{ i32 } addrspace(1)* undef`, addrspace 1) 1334 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 1335 ; CHECK: S_SETPC_B64_return [[COPY2]] 1336 store { i32 } %arg0, { i32 } addrspace(1)* undef 1337 ret void 1338} 1339 1340define void @void_func_struct_i8_i32({ i8, i32 } %arg0) #0 { 1341 ; CHECK-LABEL: name: void_func_struct_i8_i32 1342 ; CHECK: bb.1 (%ir-block.0): 1343 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 1344 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1345 ; CHECK: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32) 1346 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1347 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1348 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1349 ; CHECK: G_STORE [[TRUNC]](s8), [[DEF]](p1) :: (store 1 into `{ i8, i32 } addrspace(1)* undef`, align 4, addrspace 1) 1350 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4 1351 ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[DEF]], [[C]](s64) 1352 ; CHECK: G_STORE [[COPY1]](s32), [[PTR_ADD]](p1) :: (store 4 into `{ i8, i32 } addrspace(1)* undef` + 4, addrspace 1) 1353 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 1354 ; CHECK: S_SETPC_B64_return [[COPY3]] 1355 store { i8, i32 } %arg0, { i8, i32 } addrspace(1)* undef 1356 ret void 1357} 1358 1359define void @void_func_byval_struct_i8_i32({ i8, i32 } addrspace(5)* byval %arg0) #0 { 1360 ; CHECK-LABEL: name: void_func_byval_struct_i8_i32 1361 ; CHECK: bb.1 (%ir-block.0): 1362 ; CHECK: liveins: $sgpr30_sgpr31 1363 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1364 ; CHECK: [[LOAD:%[0-9]+]]:_(p5) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5) 1365 ; CHECK: [[COPY:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1366 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1367 ; CHECK: [[LOAD1:%[0-9]+]]:_(s8) = G_LOAD [[LOAD]](p5) :: (dereferenceable load 1 from %ir.arg0, align 4, addrspace 5) 1368 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 1369 ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p5) = G_PTR_ADD [[LOAD]], [[C]](s32) 1370 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p5) :: (dereferenceable load 4 from %ir.arg0 + 4, addrspace 5) 1371 ; CHECK: G_STORE [[LOAD1]](s8), [[DEF]](p1) :: (store 1 into `{ i8, i32 } addrspace(1)* undef`, align 4, addrspace 1) 1372 ; CHECK: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 4 1373 ; CHECK: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[DEF]], [[C1]](s64) 1374 ; CHECK: G_STORE [[LOAD2]](s32), [[PTR_ADD1]](p1) :: (store 4 into `{ i8, i32 } addrspace(1)* undef` + 4, addrspace 1) 1375 ; CHECK: [[COPY1:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY]] 1376 ; CHECK: S_SETPC_B64_return [[COPY1]] 1377 %arg0.load = load { i8, i32 }, { i8, i32 } addrspace(5)* %arg0 1378 store { i8, i32 } %arg0.load, { i8, i32 } addrspace(1)* undef 1379 ret void 1380} 1381 1382define void @void_func_byval_struct_i8_i32_x2({ i8, i32 } addrspace(5)* byval %arg0, { i8, i32 } addrspace(5)* byval %arg1, i32 %arg2) #0 { 1383 ; CHECK-LABEL: name: void_func_byval_struct_i8_i32_x2 1384 ; CHECK: bb.1 (%ir-block.0): 1385 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 1386 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 1387 ; CHECK: [[LOAD:%[0-9]+]]:_(p5) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5) 1388 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1389 ; CHECK: [[LOAD1:%[0-9]+]]:_(p5) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5) 1390 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1391 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1392 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1393 ; CHECK: [[DEF1:%[0-9]+]]:_(p3) = G_IMPLICIT_DEF 1394 ; CHECK: [[LOAD2:%[0-9]+]]:_(s8) = G_LOAD [[LOAD]](p5) :: (volatile dereferenceable load 1 from %ir.arg0, align 4, addrspace 5) 1395 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 1396 ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p5) = G_PTR_ADD [[LOAD]], [[C]](s32) 1397 ; CHECK: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p5) :: (volatile dereferenceable load 4 from %ir.arg0 + 4, addrspace 5) 1398 ; CHECK: [[LOAD4:%[0-9]+]]:_(s8) = G_LOAD [[LOAD1]](p5) :: (volatile dereferenceable load 1 from %ir.arg1, align 4, addrspace 5) 1399 ; CHECK: [[PTR_ADD1:%[0-9]+]]:_(p5) = G_PTR_ADD [[LOAD1]], [[C]](s32) 1400 ; CHECK: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p5) :: (volatile dereferenceable load 4 from %ir.arg1 + 4, addrspace 5) 1401 ; CHECK: G_STORE [[LOAD2]](s8), [[DEF]](p1) :: (volatile store 1 into `{ i8, i32 } addrspace(1)* undef`, align 4, addrspace 1) 1402 ; CHECK: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 4 1403 ; CHECK: [[PTR_ADD2:%[0-9]+]]:_(p1) = G_PTR_ADD [[DEF]], [[C1]](s64) 1404 ; CHECK: G_STORE [[LOAD3]](s32), [[PTR_ADD2]](p1) :: (volatile store 4 into `{ i8, i32 } addrspace(1)* undef` + 4, addrspace 1) 1405 ; CHECK: G_STORE [[LOAD4]](s8), [[DEF]](p1) :: (volatile store 1 into `{ i8, i32 } addrspace(1)* undef`, align 4, addrspace 1) 1406 ; CHECK: [[PTR_ADD3:%[0-9]+]]:_(p1) = G_PTR_ADD [[DEF]], [[C1]](s64) 1407 ; CHECK: G_STORE [[LOAD5]](s32), [[PTR_ADD3]](p1) :: (volatile store 4 into `{ i8, i32 } addrspace(1)* undef` + 4, addrspace 1) 1408 ; CHECK: G_STORE [[COPY]](s32), [[DEF1]](p3) :: (volatile store 4 into `i32 addrspace(3)* undef`, addrspace 3) 1409 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 1410 ; CHECK: S_SETPC_B64_return [[COPY2]] 1411 %arg0.load = load volatile { i8, i32 }, { i8, i32 } addrspace(5)* %arg0 1412 %arg1.load = load volatile { i8, i32 }, { i8, i32 } addrspace(5)* %arg1 1413 store volatile { i8, i32 } %arg0.load, { i8, i32 } addrspace(1)* undef 1414 store volatile { i8, i32 } %arg1.load, { i8, i32 } addrspace(1)* undef 1415 store volatile i32 %arg2, i32 addrspace(3)* undef 1416 ret void 1417} 1418 1419define void @void_func_byval_i32_byval_i64(i32 addrspace(5)* byval %arg0, i64 addrspace(5)* byval %arg1) #0 { 1420 ; CHECK-LABEL: name: void_func_byval_i32_byval_i64 1421 ; CHECK: bb.1 (%ir-block.0): 1422 ; CHECK: liveins: $sgpr30_sgpr31 1423 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 1424 ; CHECK: [[LOAD:%[0-9]+]]:_(p5) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5) 1425 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1426 ; CHECK: [[LOAD1:%[0-9]+]]:_(p5) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5) 1427 ; CHECK: [[COPY:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1428 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1429 ; CHECK: [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1430 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[LOAD]](p5) :: (dereferenceable load 4 from %ir.arg0, addrspace 5) 1431 ; CHECK: [[LOAD3:%[0-9]+]]:_(s64) = G_LOAD [[LOAD1]](p5) :: (dereferenceable load 8 from %ir.arg1, addrspace 5) 1432 ; CHECK: G_STORE [[LOAD2]](s32), [[DEF]](p1) :: (store 4 into `i32 addrspace(1)* undef`, addrspace 1) 1433 ; CHECK: G_STORE [[LOAD3]](s64), [[DEF1]](p1) :: (store 8 into `i64 addrspace(1)* undef`, addrspace 1) 1434 ; CHECK: [[COPY1:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY]] 1435 ; CHECK: S_SETPC_B64_return [[COPY1]] 1436 %arg0.load = load i32, i32 addrspace(5)* %arg0 1437 %arg1.load = load i64, i64 addrspace(5)* %arg1 1438 store i32 %arg0.load, i32 addrspace(1)* undef 1439 store i64 %arg1.load, i64 addrspace(1)* undef 1440 ret void 1441} 1442 1443define void @void_func_v32i32_i32_i64(<32 x i32> %arg0, i32 %arg1, i64 %arg2) #0 { 1444 ; CHECK-LABEL: name: void_func_v32i32_i32_i64 1445 ; CHECK: bb.1 (%ir-block.0): 1446 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 1447 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1448 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1449 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1450 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1451 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1452 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1453 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1454 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1455 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1456 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1457 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1458 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1459 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1460 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1461 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1462 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1463 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 1464 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 1465 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 1466 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 1467 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 1468 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 1469 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 1470 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 1471 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 1472 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 1473 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 1474 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 1475 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 1476 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 1477 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 1478 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 1479 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 1480 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.2, align 1, addrspace 5) 1481 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 1482 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5) 1483 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1484 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5) 1485 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1486 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 1487 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD1]](s32), [[LOAD2]](s32) 1488 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1489 ; CHECK: [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1490 ; CHECK: [[DEF2:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1491 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1) 1492 ; CHECK: G_STORE [[LOAD]](s32), [[DEF1]](p1) :: (volatile store 4 into `i32 addrspace(1)* undef`, addrspace 1) 1493 ; CHECK: G_STORE [[MV]](s64), [[DEF2]](p1) :: (volatile store 8 into `i64 addrspace(1)* undef`, addrspace 1) 1494 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 1495 ; CHECK: S_SETPC_B64_return [[COPY33]] 1496 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 1497 store volatile i32 %arg1, i32 addrspace(1)* undef 1498 store volatile i64 %arg2, i64 addrspace(1)* undef 1499 ret void 1500} 1501 1502; FIXME: Different ext load types on CI vs. VI 1503define void @void_func_v32i32_i1_i8_i16(<32 x i32> %arg0, i1 %arg1, i8 %arg2, i16 %arg3, half %arg4) #0 { 1504 ; CHECK-LABEL: name: void_func_v32i32_i1_i8_i16 1505 ; CHECK: bb.1 (%ir-block.0): 1506 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 1507 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1508 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1509 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1510 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1511 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1512 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1513 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1514 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1515 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1516 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1517 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1518 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1519 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1520 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1521 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1522 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1523 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 1524 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 1525 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 1526 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 1527 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 1528 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 1529 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 1530 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 1531 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 1532 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 1533 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 1534 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 1535 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 1536 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 1537 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 1538 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 1539 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3 1540 ; CHECK: [[LOAD:%[0-9]+]]:_(s1) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 1 from %fixed-stack.3, addrspace 5) 1541 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 1542 ; CHECK: [[LOAD1:%[0-9]+]]:_(s8) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 1 from %fixed-stack.2, addrspace 5) 1543 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 1544 ; CHECK: [[LOAD2:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 2 from %fixed-stack.1, align 1, addrspace 5) 1545 ; CHECK: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1546 ; CHECK: [[LOAD3:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load 2 from %fixed-stack.0, align 1, addrspace 5) 1547 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1548 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 1549 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1550 ; CHECK: [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1551 ; CHECK: [[DEF2:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1552 ; CHECK: [[DEF3:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1553 ; CHECK: [[DEF4:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1554 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1) 1555 ; CHECK: G_STORE [[LOAD]](s1), [[DEF1]](p1) :: (volatile store 1 into `i1 addrspace(1)* undef`, addrspace 1) 1556 ; CHECK: G_STORE [[LOAD1]](s8), [[DEF2]](p1) :: (volatile store 1 into `i8 addrspace(1)* undef`, addrspace 1) 1557 ; CHECK: G_STORE [[LOAD2]](s16), [[DEF3]](p1) :: (volatile store 2 into `i16 addrspace(1)* undef`, addrspace 1) 1558 ; CHECK: G_STORE [[LOAD3]](s16), [[DEF4]](p1) :: (volatile store 2 into `half addrspace(1)* undef`, addrspace 1) 1559 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 1560 ; CHECK: S_SETPC_B64_return [[COPY33]] 1561 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 1562 store volatile i1 %arg1, i1 addrspace(1)* undef 1563 store volatile i8 %arg2, i8 addrspace(1)* undef 1564 store volatile i16 %arg3, i16 addrspace(1)* undef 1565 store volatile half %arg4, half addrspace(1)* undef 1566 ret void 1567} 1568 1569define void @void_func_v32i32_v2i32_v2f32(<32 x i32> %arg0, <2 x i32> %arg1, <2 x float> %arg2) #0 { 1570 ; CHECK-LABEL: name: void_func_v32i32_v2i32_v2f32 1571 ; CHECK: bb.1 (%ir-block.0): 1572 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 1573 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1574 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1575 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1576 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1577 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1578 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1579 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1580 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1581 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1582 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1583 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1584 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1585 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1586 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1587 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1588 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1589 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 1590 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 1591 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 1592 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 1593 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 1594 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 1595 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 1596 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 1597 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 1598 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 1599 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 1600 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 1601 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 1602 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 1603 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 1604 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 1605 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3 1606 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.3, align 1, addrspace 5) 1607 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 1608 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.2, align 1, addrspace 5) 1609 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 1610 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5) 1611 ; CHECK: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1612 ; CHECK: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5) 1613 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1614 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 1615 ; CHECK: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[LOAD]](s32), [[LOAD1]](s32) 1616 ; CHECK: [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[LOAD2]](s32), [[LOAD3]](s32) 1617 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1618 ; CHECK: [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1619 ; CHECK: [[DEF2:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1620 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1) 1621 ; CHECK: G_STORE [[BUILD_VECTOR1]](<2 x s32>), [[DEF1]](p1) :: (volatile store 8 into `<2 x i32> addrspace(1)* undef`, addrspace 1) 1622 ; CHECK: G_STORE [[BUILD_VECTOR2]](<2 x s32>), [[DEF2]](p1) :: (volatile store 8 into `<2 x float> addrspace(1)* undef`, addrspace 1) 1623 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 1624 ; CHECK: S_SETPC_B64_return [[COPY33]] 1625 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 1626 store volatile <2 x i32> %arg1, <2 x i32> addrspace(1)* undef 1627 store volatile <2 x float> %arg2, <2 x float> addrspace(1)* undef 1628 ret void 1629} 1630 1631define void @void_func_v32i32_v2i16_v2f16(<32 x i32> %arg0, <2 x i16> %arg1, <2 x half> %arg2) #0 { 1632 ; CHECK-LABEL: name: void_func_v32i32_v2i16_v2f16 1633 ; CHECK: bb.1 (%ir-block.0): 1634 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 1635 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1636 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1637 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1638 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1639 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1640 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1641 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1642 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1643 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1644 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1645 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1646 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1647 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1648 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1649 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1650 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1651 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 1652 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 1653 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 1654 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 1655 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 1656 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 1657 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 1658 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 1659 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 1660 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 1661 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 1662 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 1663 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 1664 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 1665 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 1666 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 1667 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3 1668 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.3, align 1, addrspace 5) 1669 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 1670 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.2, align 1, addrspace 5) 1671 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 1672 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5) 1673 ; CHECK: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1674 ; CHECK: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5) 1675 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1676 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 1677 ; CHECK: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[LOAD]](s32), [[LOAD1]](s32) 1678 ; CHECK: [[TRUNC:%[0-9]+]]:_(<2 x s16>) = G_TRUNC [[BUILD_VECTOR1]](<2 x s32>) 1679 ; CHECK: [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[LOAD2]](s32), [[LOAD3]](s32) 1680 ; CHECK: [[TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_TRUNC [[BUILD_VECTOR2]](<2 x s32>) 1681 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1682 ; CHECK: [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1683 ; CHECK: [[DEF2:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1684 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1) 1685 ; CHECK: G_STORE [[TRUNC]](<2 x s16>), [[DEF1]](p1) :: (volatile store 4 into `<2 x i16> addrspace(1)* undef`, addrspace 1) 1686 ; CHECK: G_STORE [[TRUNC1]](<2 x s16>), [[DEF2]](p1) :: (volatile store 4 into `<2 x half> addrspace(1)* undef`, addrspace 1) 1687 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 1688 ; CHECK: S_SETPC_B64_return [[COPY33]] 1689 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 1690 store volatile <2 x i16> %arg1, <2 x i16> addrspace(1)* undef 1691 store volatile <2 x half> %arg2, <2 x half> addrspace(1)* undef 1692 ret void 1693} 1694 1695define void @void_func_v32i32_v2i64_v2f64(<32 x i32> %arg0, <2 x i64> %arg1, <2 x double> %arg2) #0 { 1696 ; CHECK-LABEL: name: void_func_v32i32_v2i64_v2f64 1697 ; CHECK: bb.1 (%ir-block.0): 1698 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 1699 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1700 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1701 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1702 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1703 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1704 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1705 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1706 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1707 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1708 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1709 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1710 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1711 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1712 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1713 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1714 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1715 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 1716 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 1717 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 1718 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 1719 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 1720 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 1721 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 1722 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 1723 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 1724 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 1725 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 1726 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 1727 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 1728 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 1729 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 1730 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 1731 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7 1732 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.7, align 1, addrspace 5) 1733 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6 1734 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.6, align 1, addrspace 5) 1735 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5 1736 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 4 from %fixed-stack.5, align 1, addrspace 5) 1737 ; CHECK: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4 1738 ; CHECK: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load 4 from %fixed-stack.4, align 1, addrspace 5) 1739 ; CHECK: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3 1740 ; CHECK: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load 4 from %fixed-stack.3, align 1, addrspace 5) 1741 ; CHECK: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 1742 ; CHECK: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load 4 from %fixed-stack.2, align 1, addrspace 5) 1743 ; CHECK: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 1744 ; CHECK: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5) 1745 ; CHECK: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1746 ; CHECK: [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5) 1747 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1748 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 1749 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD]](s32), [[LOAD1]](s32) 1750 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD2]](s32), [[LOAD3]](s32) 1751 ; CHECK: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64) 1752 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD4]](s32), [[LOAD5]](s32) 1753 ; CHECK: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD6]](s32), [[LOAD7]](s32) 1754 ; CHECK: [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV2]](s64), [[MV3]](s64) 1755 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1756 ; CHECK: [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1757 ; CHECK: [[DEF2:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1758 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1) 1759 ; CHECK: G_STORE [[BUILD_VECTOR1]](<2 x s64>), [[DEF1]](p1) :: (volatile store 16 into `<2 x i64> addrspace(1)* undef`, addrspace 1) 1760 ; CHECK: G_STORE [[BUILD_VECTOR2]](<2 x s64>), [[DEF2]](p1) :: (volatile store 16 into `<2 x double> addrspace(1)* undef`, addrspace 1) 1761 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 1762 ; CHECK: S_SETPC_B64_return [[COPY33]] 1763 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 1764 store volatile <2 x i64> %arg1, <2 x i64> addrspace(1)* undef 1765 store volatile <2 x double> %arg2, <2 x double> addrspace(1)* undef 1766 ret void 1767} 1768 1769define void @void_func_v32i32_v4i32_v4f32(<32 x i32> %arg0, <4 x i32> %arg1, <4 x float> %arg2) #0 { 1770 ; CHECK-LABEL: name: void_func_v32i32_v4i32_v4f32 1771 ; CHECK: bb.1 (%ir-block.0): 1772 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 1773 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1774 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1775 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1776 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1777 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1778 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1779 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1780 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1781 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1782 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1783 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1784 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1785 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1786 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1787 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1788 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1789 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 1790 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 1791 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 1792 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 1793 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 1794 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 1795 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 1796 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 1797 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 1798 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 1799 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 1800 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 1801 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 1802 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 1803 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 1804 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 1805 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7 1806 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.7, align 1, addrspace 5) 1807 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6 1808 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.6, align 1, addrspace 5) 1809 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5 1810 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 4 from %fixed-stack.5, align 1, addrspace 5) 1811 ; CHECK: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4 1812 ; CHECK: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load 4 from %fixed-stack.4, align 1, addrspace 5) 1813 ; CHECK: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3 1814 ; CHECK: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load 4 from %fixed-stack.3, align 1, addrspace 5) 1815 ; CHECK: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 1816 ; CHECK: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load 4 from %fixed-stack.2, align 1, addrspace 5) 1817 ; CHECK: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 1818 ; CHECK: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5) 1819 ; CHECK: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1820 ; CHECK: [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5) 1821 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1822 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 1823 ; CHECK: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[LOAD]](s32), [[LOAD1]](s32), [[LOAD2]](s32), [[LOAD3]](s32) 1824 ; CHECK: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[LOAD4]](s32), [[LOAD5]](s32), [[LOAD6]](s32), [[LOAD7]](s32) 1825 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1826 ; CHECK: [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1827 ; CHECK: [[DEF2:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1828 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1) 1829 ; CHECK: G_STORE [[BUILD_VECTOR1]](<4 x s32>), [[DEF1]](p1) :: (volatile store 16 into `<4 x i32> addrspace(1)* undef`, addrspace 1) 1830 ; CHECK: G_STORE [[BUILD_VECTOR2]](<4 x s32>), [[DEF2]](p1) :: (volatile store 16 into `<4 x float> addrspace(1)* undef`, addrspace 1) 1831 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 1832 ; CHECK: S_SETPC_B64_return [[COPY33]] 1833 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 1834 store volatile <4 x i32> %arg1, <4 x i32> addrspace(1)* undef 1835 store volatile <4 x float> %arg2, <4 x float> addrspace(1)* undef 1836 ret void 1837} 1838 1839define void @void_func_v32i32_v8i32_v8f32(<32 x i32> %arg0, <8 x i32> %arg1, <8 x float> %arg2) #0 { 1840 ; CHECK-LABEL: name: void_func_v32i32_v8i32_v8f32 1841 ; CHECK: bb.1 (%ir-block.0): 1842 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 1843 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1844 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1845 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1846 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1847 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1848 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1849 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1850 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1851 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1852 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1853 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1854 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1855 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1856 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1857 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1858 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1859 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 1860 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 1861 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 1862 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 1863 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 1864 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 1865 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 1866 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 1867 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 1868 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 1869 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 1870 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 1871 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 1872 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 1873 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 1874 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 1875 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.15 1876 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.15, align 1, addrspace 5) 1877 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.14 1878 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.14, align 1, addrspace 5) 1879 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.13 1880 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 4 from %fixed-stack.13, align 1, addrspace 5) 1881 ; CHECK: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12 1882 ; CHECK: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load 4 from %fixed-stack.12, align 1, addrspace 5) 1883 ; CHECK: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11 1884 ; CHECK: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load 4 from %fixed-stack.11, align 1, addrspace 5) 1885 ; CHECK: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.10 1886 ; CHECK: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load 4 from %fixed-stack.10, align 1, addrspace 5) 1887 ; CHECK: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.9 1888 ; CHECK: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load 4 from %fixed-stack.9, align 1, addrspace 5) 1889 ; CHECK: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.8 1890 ; CHECK: [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load 4 from %fixed-stack.8, align 1, addrspace 5) 1891 ; CHECK: [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7 1892 ; CHECK: [[LOAD8:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX8]](p5) :: (invariant load 4 from %fixed-stack.7, align 1, addrspace 5) 1893 ; CHECK: [[FRAME_INDEX9:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6 1894 ; CHECK: [[LOAD9:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX9]](p5) :: (invariant load 4 from %fixed-stack.6, align 1, addrspace 5) 1895 ; CHECK: [[FRAME_INDEX10:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5 1896 ; CHECK: [[LOAD10:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX10]](p5) :: (invariant load 4 from %fixed-stack.5, align 1, addrspace 5) 1897 ; CHECK: [[FRAME_INDEX11:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4 1898 ; CHECK: [[LOAD11:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX11]](p5) :: (invariant load 4 from %fixed-stack.4, align 1, addrspace 5) 1899 ; CHECK: [[FRAME_INDEX12:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3 1900 ; CHECK: [[LOAD12:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX12]](p5) :: (invariant load 4 from %fixed-stack.3, align 1, addrspace 5) 1901 ; CHECK: [[FRAME_INDEX13:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 1902 ; CHECK: [[LOAD13:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX13]](p5) :: (invariant load 4 from %fixed-stack.2, align 1, addrspace 5) 1903 ; CHECK: [[FRAME_INDEX14:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 1904 ; CHECK: [[LOAD14:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX14]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5) 1905 ; CHECK: [[FRAME_INDEX15:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1906 ; CHECK: [[LOAD15:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX15]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5) 1907 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1908 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 1909 ; CHECK: [[BUILD_VECTOR1:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[LOAD]](s32), [[LOAD1]](s32), [[LOAD2]](s32), [[LOAD3]](s32), [[LOAD4]](s32), [[LOAD5]](s32), [[LOAD6]](s32), [[LOAD7]](s32) 1910 ; CHECK: [[BUILD_VECTOR2:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[LOAD8]](s32), [[LOAD9]](s32), [[LOAD10]](s32), [[LOAD11]](s32), [[LOAD12]](s32), [[LOAD13]](s32), [[LOAD14]](s32), [[LOAD15]](s32) 1911 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1912 ; CHECK: [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1913 ; CHECK: [[DEF2:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1914 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1) 1915 ; CHECK: G_STORE [[BUILD_VECTOR1]](<8 x s32>), [[DEF1]](p1) :: (volatile store 32 into `<8 x i32> addrspace(1)* undef`, addrspace 1) 1916 ; CHECK: G_STORE [[BUILD_VECTOR2]](<8 x s32>), [[DEF2]](p1) :: (volatile store 32 into `<8 x float> addrspace(1)* undef`, addrspace 1) 1917 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 1918 ; CHECK: S_SETPC_B64_return [[COPY33]] 1919 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 1920 store volatile <8 x i32> %arg1, <8 x i32> addrspace(1)* undef 1921 store volatile <8 x float> %arg2, <8 x float> addrspace(1)* undef 1922 ret void 1923} 1924 1925define void @void_func_v32i32_v16i32_v16f32(<32 x i32> %arg0, <16 x i32> %arg1, <16 x float> %arg2) #0 { 1926 ; CHECK-LABEL: name: void_func_v32i32_v16i32_v16f32 1927 ; CHECK: bb.1 (%ir-block.0): 1928 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 1929 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1930 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1931 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1932 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1933 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1934 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1935 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1936 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1937 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1938 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1939 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1940 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1941 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1942 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1943 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1944 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1945 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 1946 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 1947 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 1948 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 1949 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 1950 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 1951 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 1952 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 1953 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 1954 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 1955 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 1956 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 1957 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 1958 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 1959 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 1960 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 1961 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.31 1962 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.31, align 1, addrspace 5) 1963 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.30 1964 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.30, align 1, addrspace 5) 1965 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.29 1966 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 4 from %fixed-stack.29, align 1, addrspace 5) 1967 ; CHECK: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.28 1968 ; CHECK: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load 4 from %fixed-stack.28, align 1, addrspace 5) 1969 ; CHECK: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.27 1970 ; CHECK: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load 4 from %fixed-stack.27, align 1, addrspace 5) 1971 ; CHECK: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.26 1972 ; CHECK: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load 4 from %fixed-stack.26, align 1, addrspace 5) 1973 ; CHECK: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.25 1974 ; CHECK: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load 4 from %fixed-stack.25, align 1, addrspace 5) 1975 ; CHECK: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.24 1976 ; CHECK: [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load 4 from %fixed-stack.24, align 1, addrspace 5) 1977 ; CHECK: [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.23 1978 ; CHECK: [[LOAD8:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX8]](p5) :: (invariant load 4 from %fixed-stack.23, align 1, addrspace 5) 1979 ; CHECK: [[FRAME_INDEX9:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.22 1980 ; CHECK: [[LOAD9:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX9]](p5) :: (invariant load 4 from %fixed-stack.22, align 1, addrspace 5) 1981 ; CHECK: [[FRAME_INDEX10:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.21 1982 ; CHECK: [[LOAD10:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX10]](p5) :: (invariant load 4 from %fixed-stack.21, align 1, addrspace 5) 1983 ; CHECK: [[FRAME_INDEX11:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.20 1984 ; CHECK: [[LOAD11:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX11]](p5) :: (invariant load 4 from %fixed-stack.20, align 1, addrspace 5) 1985 ; CHECK: [[FRAME_INDEX12:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.19 1986 ; CHECK: [[LOAD12:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX12]](p5) :: (invariant load 4 from %fixed-stack.19, align 1, addrspace 5) 1987 ; CHECK: [[FRAME_INDEX13:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.18 1988 ; CHECK: [[LOAD13:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX13]](p5) :: (invariant load 4 from %fixed-stack.18, align 1, addrspace 5) 1989 ; CHECK: [[FRAME_INDEX14:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.17 1990 ; CHECK: [[LOAD14:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX14]](p5) :: (invariant load 4 from %fixed-stack.17, align 1, addrspace 5) 1991 ; CHECK: [[FRAME_INDEX15:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.16 1992 ; CHECK: [[LOAD15:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX15]](p5) :: (invariant load 4 from %fixed-stack.16, align 1, addrspace 5) 1993 ; CHECK: [[FRAME_INDEX16:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.15 1994 ; CHECK: [[LOAD16:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX16]](p5) :: (invariant load 4 from %fixed-stack.15, align 1, addrspace 5) 1995 ; CHECK: [[FRAME_INDEX17:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.14 1996 ; CHECK: [[LOAD17:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX17]](p5) :: (invariant load 4 from %fixed-stack.14, align 1, addrspace 5) 1997 ; CHECK: [[FRAME_INDEX18:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.13 1998 ; CHECK: [[LOAD18:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX18]](p5) :: (invariant load 4 from %fixed-stack.13, align 1, addrspace 5) 1999 ; CHECK: [[FRAME_INDEX19:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12 2000 ; CHECK: [[LOAD19:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX19]](p5) :: (invariant load 4 from %fixed-stack.12, align 1, addrspace 5) 2001 ; CHECK: [[FRAME_INDEX20:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11 2002 ; CHECK: [[LOAD20:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX20]](p5) :: (invariant load 4 from %fixed-stack.11, align 1, addrspace 5) 2003 ; CHECK: [[FRAME_INDEX21:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.10 2004 ; CHECK: [[LOAD21:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX21]](p5) :: (invariant load 4 from %fixed-stack.10, align 1, addrspace 5) 2005 ; CHECK: [[FRAME_INDEX22:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.9 2006 ; CHECK: [[LOAD22:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX22]](p5) :: (invariant load 4 from %fixed-stack.9, align 1, addrspace 5) 2007 ; CHECK: [[FRAME_INDEX23:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.8 2008 ; CHECK: [[LOAD23:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX23]](p5) :: (invariant load 4 from %fixed-stack.8, align 1, addrspace 5) 2009 ; CHECK: [[FRAME_INDEX24:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7 2010 ; CHECK: [[LOAD24:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX24]](p5) :: (invariant load 4 from %fixed-stack.7, align 1, addrspace 5) 2011 ; CHECK: [[FRAME_INDEX25:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6 2012 ; CHECK: [[LOAD25:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX25]](p5) :: (invariant load 4 from %fixed-stack.6, align 1, addrspace 5) 2013 ; CHECK: [[FRAME_INDEX26:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5 2014 ; CHECK: [[LOAD26:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX26]](p5) :: (invariant load 4 from %fixed-stack.5, align 1, addrspace 5) 2015 ; CHECK: [[FRAME_INDEX27:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4 2016 ; CHECK: [[LOAD27:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX27]](p5) :: (invariant load 4 from %fixed-stack.4, align 1, addrspace 5) 2017 ; CHECK: [[FRAME_INDEX28:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3 2018 ; CHECK: [[LOAD28:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX28]](p5) :: (invariant load 4 from %fixed-stack.3, align 1, addrspace 5) 2019 ; CHECK: [[FRAME_INDEX29:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 2020 ; CHECK: [[LOAD29:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX29]](p5) :: (invariant load 4 from %fixed-stack.2, align 1, addrspace 5) 2021 ; CHECK: [[FRAME_INDEX30:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 2022 ; CHECK: [[LOAD30:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX30]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5) 2023 ; CHECK: [[FRAME_INDEX31:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 2024 ; CHECK: [[LOAD31:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX31]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5) 2025 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2026 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 2027 ; CHECK: [[BUILD_VECTOR1:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[LOAD]](s32), [[LOAD1]](s32), [[LOAD2]](s32), [[LOAD3]](s32), [[LOAD4]](s32), [[LOAD5]](s32), [[LOAD6]](s32), [[LOAD7]](s32), [[LOAD8]](s32), [[LOAD9]](s32), [[LOAD10]](s32), [[LOAD11]](s32), [[LOAD12]](s32), [[LOAD13]](s32), [[LOAD14]](s32), [[LOAD15]](s32) 2028 ; CHECK: [[BUILD_VECTOR2:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[LOAD16]](s32), [[LOAD17]](s32), [[LOAD18]](s32), [[LOAD19]](s32), [[LOAD20]](s32), [[LOAD21]](s32), [[LOAD22]](s32), [[LOAD23]](s32), [[LOAD24]](s32), [[LOAD25]](s32), [[LOAD26]](s32), [[LOAD27]](s32), [[LOAD28]](s32), [[LOAD29]](s32), [[LOAD30]](s32), [[LOAD31]](s32) 2029 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2030 ; CHECK: [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2031 ; CHECK: [[DEF2:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2032 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1) 2033 ; CHECK: G_STORE [[BUILD_VECTOR1]](<16 x s32>), [[DEF1]](p1) :: (volatile store 64 into `<16 x i32> addrspace(1)* undef`, addrspace 1) 2034 ; CHECK: G_STORE [[BUILD_VECTOR2]](<16 x s32>), [[DEF2]](p1) :: (volatile store 64 into `<16 x float> addrspace(1)* undef`, addrspace 1) 2035 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 2036 ; CHECK: S_SETPC_B64_return [[COPY33]] 2037 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 2038 store volatile <16 x i32> %arg1, <16 x i32> addrspace(1)* undef 2039 store volatile <16 x float> %arg2, <16 x float> addrspace(1)* undef 2040 ret void 2041} 2042 2043; Make sure v3 isn't a wasted register because of v3 types being promoted to v4 2044define void @void_func_v3f32_wasted_reg(<3 x float> %arg0, i32 %arg1) #0 { 2045 ; CHECK-LABEL: name: void_func_v3f32_wasted_reg 2046 ; CHECK: bb.1 (%ir-block.0): 2047 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 2048 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2049 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2050 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2051 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2052 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2053 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32) 2054 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 2055 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 2056 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 2 2057 ; CHECK: [[DEF:%[0-9]+]]:_(p3) = G_IMPLICIT_DEF 2058 ; CHECK: [[DEF1:%[0-9]+]]:_(p3) = G_IMPLICIT_DEF 2059 ; CHECK: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C]](s32) 2060 ; CHECK: [[EVEC1:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C1]](s32) 2061 ; CHECK: [[EVEC2:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C2]](s32) 2062 ; CHECK: G_STORE [[EVEC]](s32), [[DEF]](p3) :: (volatile store 4 into `float addrspace(3)* undef`, addrspace 3) 2063 ; CHECK: G_STORE [[EVEC1]](s32), [[DEF]](p3) :: (volatile store 4 into `float addrspace(3)* undef`, addrspace 3) 2064 ; CHECK: G_STORE [[EVEC2]](s32), [[DEF]](p3) :: (volatile store 4 into `float addrspace(3)* undef`, addrspace 3) 2065 ; CHECK: G_STORE [[COPY3]](s32), [[DEF1]](p3) :: (volatile store 4 into `i32 addrspace(3)* undef`, addrspace 3) 2066 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 2067 ; CHECK: S_SETPC_B64_return [[COPY5]] 2068 %arg0.0 = extractelement <3 x float> %arg0, i32 0 2069 %arg0.1 = extractelement <3 x float> %arg0, i32 1 2070 %arg0.2 = extractelement <3 x float> %arg0, i32 2 2071 store volatile float %arg0.0, float addrspace(3)* undef 2072 store volatile float %arg0.1, float addrspace(3)* undef 2073 store volatile float %arg0.2, float addrspace(3)* undef 2074 store volatile i32 %arg1, i32 addrspace(3)* undef 2075 ret void 2076} 2077 2078define void @void_func_v3i32_wasted_reg(<3 x i32> %arg0, i32 %arg1) #0 { 2079 ; CHECK-LABEL: name: void_func_v3i32_wasted_reg 2080 ; CHECK: bb.1 (%ir-block.0): 2081 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 2082 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2083 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2084 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2085 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2086 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2087 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32) 2088 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 2089 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 2090 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 2 2091 ; CHECK: [[DEF:%[0-9]+]]:_(p3) = G_IMPLICIT_DEF 2092 ; CHECK: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C]](s32) 2093 ; CHECK: [[EVEC1:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C1]](s32) 2094 ; CHECK: [[EVEC2:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C2]](s32) 2095 ; CHECK: G_STORE [[EVEC]](s32), [[DEF]](p3) :: (volatile store 4 into `i32 addrspace(3)* undef`, addrspace 3) 2096 ; CHECK: G_STORE [[EVEC1]](s32), [[DEF]](p3) :: (volatile store 4 into `i32 addrspace(3)* undef`, addrspace 3) 2097 ; CHECK: G_STORE [[EVEC2]](s32), [[DEF]](p3) :: (volatile store 4 into `i32 addrspace(3)* undef`, addrspace 3) 2098 ; CHECK: G_STORE [[COPY3]](s32), [[DEF]](p3) :: (volatile store 4 into `i32 addrspace(3)* undef`, addrspace 3) 2099 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 2100 ; CHECK: S_SETPC_B64_return [[COPY5]] 2101 %arg0.0 = extractelement <3 x i32> %arg0, i32 0 2102 %arg0.1 = extractelement <3 x i32> %arg0, i32 1 2103 %arg0.2 = extractelement <3 x i32> %arg0, i32 2 2104 store volatile i32 %arg0.0, i32 addrspace(3)* undef 2105 store volatile i32 %arg0.1, i32 addrspace(3)* undef 2106 store volatile i32 %arg0.2, i32 addrspace(3)* undef 2107 store volatile i32 %arg1, i32 addrspace(3)* undef 2108 ret void 2109} 2110 2111; Check there is no crash. 2112define void @void_func_v16i8(<16 x i8> %arg0) #0 { 2113 ; CHECK-LABEL: name: void_func_v16i8 2114 ; CHECK: bb.1 (%ir-block.0): 2115 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31 2116 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2117 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2118 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2119 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2120 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 2121 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 2122 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 2123 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 2124 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 2125 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 2126 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 2127 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 2128 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 2129 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 2130 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 2131 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 2132 ; CHECK: [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2133 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32) 2134 ; CHECK: [[TRUNC:%[0-9]+]]:_(<16 x s8>) = G_TRUNC [[BUILD_VECTOR]](<16 x s32>) 2135 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2136 ; CHECK: G_STORE [[TRUNC]](<16 x s8>), [[DEF]](p1) :: (volatile store 16 into `<16 x i8> addrspace(1)* undef`, addrspace 1) 2137 ; CHECK: [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]] 2138 ; CHECK: S_SETPC_B64_return [[COPY17]] 2139 store volatile <16 x i8> %arg0, <16 x i8> addrspace(1)* undef 2140 ret void 2141} 2142 2143; Check there is no crash. 2144define void @void_func_v32i32_v16i8(<32 x i32> %arg0, <16 x i8> %arg1) #0 { 2145 ; CHECK-LABEL: name: void_func_v32i32_v16i8 2146 ; CHECK: bb.1 (%ir-block.0): 2147 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 2148 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2149 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2150 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2151 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2152 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 2153 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 2154 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 2155 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 2156 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 2157 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 2158 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 2159 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 2160 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 2161 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 2162 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 2163 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 2164 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 2165 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 2166 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 2167 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 2168 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 2169 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 2170 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 2171 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 2172 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 2173 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 2174 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 2175 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 2176 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 2177 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 2178 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 2179 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 2180 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.15 2181 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load 4 from %fixed-stack.15, align 1, addrspace 5) 2182 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.14 2183 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load 4 from %fixed-stack.14, align 1, addrspace 5) 2184 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.13 2185 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load 4 from %fixed-stack.13, align 1, addrspace 5) 2186 ; CHECK: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12 2187 ; CHECK: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load 4 from %fixed-stack.12, align 1, addrspace 5) 2188 ; CHECK: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11 2189 ; CHECK: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load 4 from %fixed-stack.11, align 1, addrspace 5) 2190 ; CHECK: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.10 2191 ; CHECK: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load 4 from %fixed-stack.10, align 1, addrspace 5) 2192 ; CHECK: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.9 2193 ; CHECK: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load 4 from %fixed-stack.9, align 1, addrspace 5) 2194 ; CHECK: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.8 2195 ; CHECK: [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load 4 from %fixed-stack.8, align 1, addrspace 5) 2196 ; CHECK: [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7 2197 ; CHECK: [[LOAD8:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX8]](p5) :: (invariant load 4 from %fixed-stack.7, align 1, addrspace 5) 2198 ; CHECK: [[FRAME_INDEX9:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6 2199 ; CHECK: [[LOAD9:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX9]](p5) :: (invariant load 4 from %fixed-stack.6, align 1, addrspace 5) 2200 ; CHECK: [[FRAME_INDEX10:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5 2201 ; CHECK: [[LOAD10:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX10]](p5) :: (invariant load 4 from %fixed-stack.5, align 1, addrspace 5) 2202 ; CHECK: [[FRAME_INDEX11:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4 2203 ; CHECK: [[LOAD11:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX11]](p5) :: (invariant load 4 from %fixed-stack.4, align 1, addrspace 5) 2204 ; CHECK: [[FRAME_INDEX12:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3 2205 ; CHECK: [[LOAD12:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX12]](p5) :: (invariant load 4 from %fixed-stack.3, align 1, addrspace 5) 2206 ; CHECK: [[FRAME_INDEX13:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 2207 ; CHECK: [[LOAD13:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX13]](p5) :: (invariant load 4 from %fixed-stack.2, align 1, addrspace 5) 2208 ; CHECK: [[FRAME_INDEX14:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 2209 ; CHECK: [[LOAD14:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX14]](p5) :: (invariant load 4 from %fixed-stack.1, align 1, addrspace 5) 2210 ; CHECK: [[FRAME_INDEX15:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 2211 ; CHECK: [[LOAD15:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX15]](p5) :: (invariant load 4 from %fixed-stack.0, align 1, addrspace 5) 2212 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2213 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 2214 ; CHECK: [[BUILD_VECTOR1:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[LOAD]](s32), [[LOAD1]](s32), [[LOAD2]](s32), [[LOAD3]](s32), [[LOAD4]](s32), [[LOAD5]](s32), [[LOAD6]](s32), [[LOAD7]](s32), [[LOAD8]](s32), [[LOAD9]](s32), [[LOAD10]](s32), [[LOAD11]](s32), [[LOAD12]](s32), [[LOAD13]](s32), [[LOAD14]](s32), [[LOAD15]](s32) 2215 ; CHECK: [[TRUNC:%[0-9]+]]:_(<16 x s8>) = G_TRUNC [[BUILD_VECTOR1]](<16 x s32>) 2216 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2217 ; CHECK: [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2218 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store 128 into `<32 x i32> addrspace(1)* undef`, addrspace 1) 2219 ; CHECK: G_STORE [[TRUNC]](<16 x s8>), [[DEF1]](p1) :: (volatile store 16 into `<16 x i8> addrspace(1)* undef`, addrspace 1) 2220 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 2221 ; CHECK: S_SETPC_B64_return [[COPY33]] 2222 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 2223 store volatile <16 x i8> %arg1, <16 x i8> addrspace(1)* undef 2224 ret void 2225} 2226 2227attributes #0 = { nounwind } 2228