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