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