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