3240 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2; Note update_mir_test_checks does not support generating checks for3; the frame info, so some functions have manually added stack object4; checks.5; RUN: llc -mtriple=amdgcn -mcpu=fiji -O0 -stop-after=irtranslator -global-isel -o - %s | FileCheck %s6; FIXME: pre-VI should have same ABI without legal i16 operations.7 8define void @void_func_empty_arg({} %arg0, i32 %arg1) #0 {9 ; CHECK-LABEL: name: void_func_empty_arg10 ; CHECK: bb.1 (%ir-block.0):11 ; CHECK-NEXT: liveins: $vgpr012 ; CHECK-NEXT: {{ $}}13 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr014 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF15 ; CHECK-NEXT: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)16 ; CHECK-NEXT: SI_RETURN17 store i32 %arg1, ptr addrspace(1) poison18 ret void19}20 21define void @void_func_empty_array([0 x i8] %arg0, i32 %arg1) #0 {22 ; CHECK-LABEL: name: void_func_empty_array23 ; CHECK: bb.1 (%ir-block.0):24 ; CHECK-NEXT: liveins: $vgpr025 ; CHECK-NEXT: {{ $}}26 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr027 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF28 ; CHECK-NEXT: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)29 ; CHECK-NEXT: SI_RETURN30 store i32 %arg1, ptr addrspace(1) poison31 ret void32}33 34define void @void_func_i1(i1 %arg0) #0 {35 ; CHECK-LABEL: name: void_func_i136 ; CHECK: bb.1 (%ir-block.0):37 ; CHECK-NEXT: liveins: $vgpr038 ; CHECK-NEXT: {{ $}}39 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr040 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)41 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF42 ; CHECK-NEXT: G_STORE [[TRUNC]](s1), [[DEF]](p1) :: (store (s1) into `ptr addrspace(1) poison`, addrspace 1)43 ; CHECK-NEXT: SI_RETURN44 store i1 %arg0, ptr addrspace(1) poison45 ret void46}47 48define void @void_func_i1_zeroext(i1 zeroext %arg0) #0 {49 ; CHECK-LABEL: name: void_func_i1_zeroext50 ; CHECK: bb.1 (%ir-block.0):51 ; CHECK-NEXT: liveins: $vgpr052 ; CHECK-NEXT: {{ $}}53 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr054 ; CHECK-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 155 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[ASSERT_ZEXT]](s32)56 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1257 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF58 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s1)59 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ZEXT]], [[C]]60 ; CHECK-NEXT: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)61 ; CHECK-NEXT: SI_RETURN62 %ext = zext i1 %arg0 to i3263 %add = add i32 %ext, 1264 store i32 %add, ptr addrspace(1) poison65 ret void66}67 68define void @void_func_i1_signext(i1 signext %arg0) #0 {69 ; CHECK-LABEL: name: void_func_i1_signext70 ; CHECK: bb.1 (%ir-block.0):71 ; CHECK-NEXT: liveins: $vgpr072 ; CHECK-NEXT: {{ $}}73 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr074 ; CHECK-NEXT: [[ASSERT_SEXT:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[COPY]], 175 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[ASSERT_SEXT]](s32)76 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1277 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF78 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s1)79 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[SEXT]], [[C]]80 ; CHECK-NEXT: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)81 ; CHECK-NEXT: SI_RETURN82 %ext = sext i1 %arg0 to i3283 %add = add i32 %ext, 1284 store i32 %add, ptr addrspace(1) poison85 ret void86}87 88define void @i1_arg_i1_use(i1 %arg) #0 {89 ; CHECK-LABEL: name: i1_arg_i1_use90 ; CHECK: bb.1.bb:91 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.3(0x40000000)92 ; CHECK-NEXT: liveins: $vgpr093 ; CHECK-NEXT: {{ $}}94 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr095 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)96 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 true97 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 098 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF99 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s1) = G_XOR [[TRUNC]], [[C]]100 ; CHECK-NEXT: [[INT:%[0-9]+]]:_(s1), [[INT1:%[0-9]+]]:_(s64) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.amdgcn.if), [[XOR]](s1)101 ; CHECK-NEXT: G_BRCOND [[INT]](s1), %bb.2102 ; CHECK-NEXT: G_BR %bb.3103 ; CHECK-NEXT: {{ $}}104 ; CHECK-NEXT: bb.2.bb1:105 ; CHECK-NEXT: successors: %bb.3(0x80000000)106 ; CHECK-NEXT: {{ $}}107 ; CHECK-NEXT: G_STORE [[C1]](s32), [[DEF]](p1) :: (volatile store (s32) into `ptr addrspace(1) poison`, addrspace 1)108 ; CHECK-NEXT: G_BR %bb.3109 ; CHECK-NEXT: {{ $}}110 ; CHECK-NEXT: bb.3.bb2:111 ; CHECK-NEXT: G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.amdgcn.end.cf), [[INT1]](s64)112 ; CHECK-NEXT: SI_RETURN113bb:114 br i1 %arg, label %bb2, label %bb1115 116bb1:117 store volatile i32 0, ptr addrspace(1) poison118 br label %bb2119 120bb2:121 ret void122}123 124define void @void_func_i8(i8 %arg0) #0 {125 ; CHECK-LABEL: name: void_func_i8126 ; CHECK: bb.1 (%ir-block.0):127 ; CHECK-NEXT: liveins: $vgpr0128 ; CHECK-NEXT: {{ $}}129 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0130 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)131 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC]](s16)132 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF133 ; CHECK-NEXT: G_STORE [[TRUNC1]](s8), [[DEF]](p1) :: (store (s8) into `ptr addrspace(1) poison`, addrspace 1)134 ; CHECK-NEXT: SI_RETURN135 store i8 %arg0, ptr addrspace(1) poison136 ret void137}138 139define void @void_func_i8_zeroext(i8 zeroext %arg0) #0 {140 ; CHECK-LABEL: name: void_func_i8_zeroext141 ; CHECK: bb.1 (%ir-block.0):142 ; CHECK-NEXT: liveins: $vgpr0143 ; CHECK-NEXT: {{ $}}144 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0145 ; CHECK-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 8146 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_ZEXT]](s32)147 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12148 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF149 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s8)150 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ZEXT]], [[C]]151 ; CHECK-NEXT: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)152 ; CHECK-NEXT: SI_RETURN153 %ext = zext i8 %arg0 to i32154 %add = add i32 %ext, 12155 store i32 %add, ptr addrspace(1) poison156 ret void157}158 159define void @void_func_i8_signext(i8 signext %arg0) #0 {160 ; CHECK-LABEL: name: void_func_i8_signext161 ; CHECK: bb.1 (%ir-block.0):162 ; CHECK-NEXT: liveins: $vgpr0163 ; CHECK-NEXT: {{ $}}164 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0165 ; CHECK-NEXT: [[ASSERT_SEXT:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[COPY]], 8166 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_SEXT]](s32)167 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12168 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF169 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s8)170 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[SEXT]], [[C]]171 ; CHECK-NEXT: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)172 ; CHECK-NEXT: SI_RETURN173 %ext = sext i8 %arg0 to i32174 %add = add i32 %ext, 12175 store i32 %add, ptr addrspace(1) poison176 ret void177}178 179define void @void_func_i16(i16 %arg0) #0 {180 ; CHECK-LABEL: name: void_func_i16181 ; CHECK: bb.1 (%ir-block.0):182 ; CHECK-NEXT: liveins: $vgpr0183 ; CHECK-NEXT: {{ $}}184 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0185 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)186 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF187 ; CHECK-NEXT: G_STORE [[TRUNC]](s16), [[DEF]](p1) :: (store (s16) into `ptr addrspace(1) poison`, addrspace 1)188 ; CHECK-NEXT: SI_RETURN189 store i16 %arg0, ptr addrspace(1) poison190 ret void191}192 193define void @void_func_i16_zeroext(i16 zeroext %arg0) #0 {194 ; CHECK-LABEL: name: void_func_i16_zeroext195 ; CHECK: bb.1 (%ir-block.0):196 ; CHECK-NEXT: liveins: $vgpr0197 ; CHECK-NEXT: {{ $}}198 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0199 ; CHECK-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 16200 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT]](s32)201 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12202 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF203 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s16)204 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ZEXT]], [[C]]205 ; CHECK-NEXT: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)206 ; CHECK-NEXT: SI_RETURN207 %ext = zext i16 %arg0 to i32208 %add = add i32 %ext, 12209 store i32 %add, ptr addrspace(1) poison210 ret void211}212 213define void @void_func_i16_signext(i16 signext %arg0) #0 {214 ; CHECK-LABEL: name: void_func_i16_signext215 ; CHECK: bb.1 (%ir-block.0):216 ; CHECK-NEXT: liveins: $vgpr0217 ; CHECK-NEXT: {{ $}}218 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0219 ; CHECK-NEXT: [[ASSERT_SEXT:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[COPY]], 16220 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_SEXT]](s32)221 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12222 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF223 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s16)224 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[SEXT]], [[C]]225 ; CHECK-NEXT: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)226 ; CHECK-NEXT: SI_RETURN227 %ext = sext i16 %arg0 to i32228 %add = add i32 %ext, 12229 store i32 %add, ptr addrspace(1) poison230 ret void231}232 233define void @void_func_i24(i24 %arg0) #0 {234 ; CHECK-LABEL: name: void_func_i24235 ; CHECK: bb.1 (%ir-block.0):236 ; CHECK-NEXT: liveins: $vgpr0237 ; CHECK-NEXT: {{ $}}238 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0239 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s24) = G_TRUNC [[COPY]](s32)240 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF241 ; CHECK-NEXT: G_STORE [[TRUNC]](s24), [[DEF]](p1) :: (store (s24) into `ptr addrspace(1) poison`, align 4, addrspace 1)242 ; CHECK-NEXT: SI_RETURN243 store i24 %arg0, ptr addrspace(1) poison244 ret void245}246 247define void @void_func_i24_zeroext(i24 zeroext %arg0) #0 {248 ; CHECK-LABEL: name: void_func_i24_zeroext249 ; CHECK: bb.1 (%ir-block.0):250 ; CHECK-NEXT: liveins: $vgpr0251 ; CHECK-NEXT: {{ $}}252 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0253 ; CHECK-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 24254 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s24) = G_TRUNC [[ASSERT_ZEXT]](s32)255 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF256 ; CHECK-NEXT: G_STORE [[TRUNC]](s24), [[DEF]](p1) :: (store (s24) into `ptr addrspace(1) poison`, align 4, addrspace 1)257 ; CHECK-NEXT: SI_RETURN258 store i24 %arg0, ptr addrspace(1) poison259 ret void260}261 262define void @void_func_i24_signext(i24 signext %arg0) #0 {263 ; CHECK-LABEL: name: void_func_i24_signext264 ; CHECK: bb.1 (%ir-block.0):265 ; CHECK-NEXT: liveins: $vgpr0266 ; CHECK-NEXT: {{ $}}267 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0268 ; CHECK-NEXT: [[ASSERT_SEXT:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[COPY]], 24269 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s24) = G_TRUNC [[ASSERT_SEXT]](s32)270 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF271 ; CHECK-NEXT: G_STORE [[TRUNC]](s24), [[DEF]](p1) :: (store (s24) into `ptr addrspace(1) poison`, align 4, addrspace 1)272 ; CHECK-NEXT: SI_RETURN273 store i24 %arg0, ptr addrspace(1) poison274 ret void275}276 277define void @void_func_i32(i32 %arg0) #0 {278 ; CHECK-LABEL: name: void_func_i32279 ; CHECK: bb.1 (%ir-block.0):280 ; CHECK-NEXT: liveins: $vgpr0281 ; CHECK-NEXT: {{ $}}282 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0283 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF284 ; CHECK-NEXT: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)285 ; CHECK-NEXT: SI_RETURN286 store i32 %arg0, ptr addrspace(1) poison287 ret void288}289 290; The signext is an no-op291define void @void_func_i32_signext(i32 signext %arg0) #0 {292 ; CHECK-LABEL: name: void_func_i32_signext293 ; CHECK: bb.1 (%ir-block.0):294 ; CHECK-NEXT: liveins: $vgpr0295 ; CHECK-NEXT: {{ $}}296 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0297 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF298 ; CHECK-NEXT: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)299 ; CHECK-NEXT: SI_RETURN300 store i32 %arg0, ptr addrspace(1) poison301 ret void302}303 304; The zeroext is an no-op305define void @void_func_i32_zeroext(i32 zeroext %arg0) #0 {306 ; CHECK-LABEL: name: void_func_i32_zeroext307 ; CHECK: bb.1 (%ir-block.0):308 ; CHECK-NEXT: liveins: $vgpr0309 ; CHECK-NEXT: {{ $}}310 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0311 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF312 ; CHECK-NEXT: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)313 ; CHECK-NEXT: SI_RETURN314 store i32 %arg0, ptr addrspace(1) poison315 ret void316}317 318define void @void_func_p3i8(ptr addrspace(3) %arg0) #0 {319 ; CHECK-LABEL: name: void_func_p3i8320 ; CHECK: bb.1 (%ir-block.0):321 ; CHECK-NEXT: liveins: $vgpr0322 ; CHECK-NEXT: {{ $}}323 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0324 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF325 ; CHECK-NEXT: G_STORE [[COPY]](p3), [[DEF]](p1) :: (store (p3) into `ptr addrspace(1) poison`, addrspace 1)326 ; CHECK-NEXT: SI_RETURN327 store ptr addrspace(3) %arg0, ptr addrspace(1) poison328 ret void329}330 331define void @void_func_i48(i48 %arg0) #0 {332 ; CHECK-LABEL: name: void_func_i48333 ; CHECK: bb.1 (%ir-block.0):334 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1335 ; CHECK-NEXT: {{ $}}336 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0337 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1338 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)339 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s48) = G_TRUNC [[MV]](s64)340 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF341 ; CHECK-NEXT: G_STORE [[TRUNC]](s48), [[DEF]](p1) :: (store (s48) into `ptr addrspace(1) poison`, align 8, addrspace 1)342 ; CHECK-NEXT: SI_RETURN343 store i48 %arg0, ptr addrspace(1) poison344 ret void345}346 347define void @void_func_i48_zeroext(i48 zeroext %arg0) #0 {348 ; CHECK-LABEL: name: void_func_i48_zeroext349 ; CHECK: bb.1 (%ir-block.0):350 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1351 ; CHECK-NEXT: {{ $}}352 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0353 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1354 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)355 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s48) = G_TRUNC [[MV]](s64)356 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 12357 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF358 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[TRUNC]](s48)359 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[ZEXT]], [[C]]360 ; CHECK-NEXT: G_STORE [[ADD]](s64), [[DEF]](p1) :: (store (s64) into `ptr addrspace(1) poison`, addrspace 1)361 ; CHECK-NEXT: SI_RETURN362 %ext = zext i48 %arg0 to i64363 %add = add i64 %ext, 12364 store i64 %add, ptr addrspace(1) poison365 ret void366}367 368define void @void_func_i48_signext(i48 signext %arg0) #0 {369 ; CHECK-LABEL: name: void_func_i48_signext370 ; CHECK: bb.1 (%ir-block.0):371 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1372 ; CHECK-NEXT: {{ $}}373 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0374 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1375 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)376 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s48) = G_TRUNC [[MV]](s64)377 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 12378 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF379 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[TRUNC]](s48)380 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[SEXT]], [[C]]381 ; CHECK-NEXT: G_STORE [[ADD]](s64), [[DEF]](p1) :: (store (s64) into `ptr addrspace(1) poison`, addrspace 1)382 ; CHECK-NEXT: SI_RETURN383 %ext = sext i48 %arg0 to i64384 %add = add i64 %ext, 12385 store i64 %add, ptr addrspace(1) poison386 ret void387}388 389define void @void_func_i64(i64 %arg0) #0 {390 ; CHECK-LABEL: name: void_func_i64391 ; CHECK: bb.1 (%ir-block.0):392 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1393 ; CHECK-NEXT: {{ $}}394 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0395 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1396 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)397 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF398 ; CHECK-NEXT: G_STORE [[MV]](s64), [[DEF]](p1) :: (store (s64) into `ptr addrspace(1) poison`, addrspace 1)399 ; CHECK-NEXT: SI_RETURN400 store i64 %arg0, ptr addrspace(1) poison401 ret void402}403 404define void @void_func_i95(i95 %arg0) #0 {405 ; CHECK-LABEL: name: void_func_i95406 ; CHECK: bb.1 (%ir-block.0):407 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2408 ; CHECK-NEXT: {{ $}}409 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0410 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1411 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2412 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s96) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)413 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s95) = G_TRUNC [[MV]](s96)414 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF415 ; CHECK-NEXT: G_STORE [[TRUNC]](s95), [[DEF]](p1) :: (store (s95) into `ptr addrspace(1) poison`, align 8, addrspace 1)416 ; CHECK-NEXT: SI_RETURN417 store i95 %arg0, ptr addrspace(1) poison418 ret void419}420 421define void @void_func_i95_zeroext(i95 zeroext %arg0) #0 {422 ; CHECK-LABEL: name: void_func_i95_zeroext423 ; CHECK: bb.1 (%ir-block.0):424 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2425 ; CHECK-NEXT: {{ $}}426 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0427 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1428 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2429 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s96) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)430 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s95) = G_TRUNC [[MV]](s96)431 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s96) = G_CONSTANT i96 12432 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF433 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s96) = G_ZEXT [[TRUNC]](s95)434 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s96) = G_ADD [[ZEXT]], [[C]]435 ; CHECK-NEXT: G_STORE [[ADD]](s96), [[DEF]](p1) :: (store (s96) into `ptr addrspace(1) poison`, align 8, addrspace 1)436 ; CHECK-NEXT: SI_RETURN437 %ext = zext i95 %arg0 to i96438 %add = add i96 %ext, 12439 store i96 %add, ptr addrspace(1) poison440 ret void441}442 443define void @void_func_i95_signext(i95 signext %arg0) #0 {444 ; CHECK-LABEL: name: void_func_i95_signext445 ; CHECK: bb.1 (%ir-block.0):446 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2447 ; CHECK-NEXT: {{ $}}448 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0449 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1450 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2451 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s96) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)452 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s95) = G_TRUNC [[MV]](s96)453 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s96) = G_CONSTANT i96 12454 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF455 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s96) = G_SEXT [[TRUNC]](s95)456 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s96) = G_ADD [[SEXT]], [[C]]457 ; CHECK-NEXT: G_STORE [[ADD]](s96), [[DEF]](p1) :: (store (s96) into `ptr addrspace(1) poison`, align 8, addrspace 1)458 ; CHECK-NEXT: SI_RETURN459 %ext = sext i95 %arg0 to i96460 %add = add i96 %ext, 12461 store i96 %add, ptr addrspace(1) poison462 ret void463}464 465define void @void_func_i96(i96 %arg0) #0 {466 ; CHECK-LABEL: name: void_func_i96467 ; CHECK: bb.1 (%ir-block.0):468 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2469 ; CHECK-NEXT: {{ $}}470 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0471 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1472 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2473 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s96) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)474 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF475 ; CHECK-NEXT: G_STORE [[MV]](s96), [[DEF]](p1) :: (store (s96) into `ptr addrspace(1) poison`, align 8, addrspace 1)476 ; CHECK-NEXT: SI_RETURN477 store i96 %arg0, ptr addrspace(1) poison478 ret void479}480 481define void @void_func_p0i8(ptr %arg0) #0 {482 ; CHECK-LABEL: name: void_func_p0i8483 ; CHECK: bb.1 (%ir-block.0):484 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1485 ; CHECK-NEXT: {{ $}}486 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0487 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1488 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)489 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF490 ; CHECK-NEXT: G_STORE [[MV]](p0), [[DEF]](p1) :: (store (p0) into `ptr addrspace(1) poison`, addrspace 1)491 ; CHECK-NEXT: SI_RETURN492 store ptr %arg0, ptr addrspace(1) poison493 ret void494}495 496define void @void_func_p1i8(ptr addrspace(1) %arg0) #0 {497 ; CHECK-LABEL: name: void_func_p1i8498 ; CHECK: bb.1 (%ir-block.0):499 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1500 ; CHECK-NEXT: {{ $}}501 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0502 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1503 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)504 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF505 ; CHECK-NEXT: G_STORE [[MV]](p1), [[DEF]](p1) :: (store (p1) into `ptr addrspace(1) poison`, addrspace 1)506 ; CHECK-NEXT: SI_RETURN507 store ptr addrspace(1) %arg0, ptr addrspace(1) poison508 ret void509}510 511define void @void_func_f16(half %arg0) #0 {512 ; CHECK-LABEL: name: void_func_f16513 ; CHECK: bb.1 (%ir-block.0):514 ; CHECK-NEXT: liveins: $vgpr0515 ; CHECK-NEXT: {{ $}}516 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0517 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)518 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF519 ; CHECK-NEXT: G_STORE [[TRUNC]](s16), [[DEF]](p1) :: (store (s16) into `ptr addrspace(1) poison`, addrspace 1)520 ; CHECK-NEXT: SI_RETURN521 store half %arg0, ptr addrspace(1) poison522 ret void523}524 525define void @void_func_f32(float %arg0) #0 {526 ; CHECK-LABEL: name: void_func_f32527 ; CHECK: bb.1 (%ir-block.0):528 ; CHECK-NEXT: liveins: $vgpr0529 ; CHECK-NEXT: {{ $}}530 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0531 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF532 ; CHECK-NEXT: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)533 ; CHECK-NEXT: SI_RETURN534 store float %arg0, ptr addrspace(1) poison535 ret void536}537 538define void @void_func_f64(double %arg0) #0 {539 ; CHECK-LABEL: name: void_func_f64540 ; CHECK: bb.1 (%ir-block.0):541 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1542 ; CHECK-NEXT: {{ $}}543 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0544 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1545 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)546 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF547 ; CHECK-NEXT: G_STORE [[MV]](s64), [[DEF]](p1) :: (store (s64) into `ptr addrspace(1) poison`, addrspace 1)548 ; CHECK-NEXT: SI_RETURN549 store double %arg0, ptr addrspace(1) poison550 ret void551}552 553define void @void_func_v2i32(<2 x i32> %arg0) #0 {554 ; CHECK-LABEL: name: void_func_v2i32555 ; CHECK: bb.1 (%ir-block.0):556 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1557 ; CHECK-NEXT: {{ $}}558 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0559 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1560 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)561 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF562 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<2 x s32>), [[DEF]](p1) :: (store (<2 x s32>) into `ptr addrspace(1) poison`, addrspace 1)563 ; CHECK-NEXT: SI_RETURN564 store <2 x i32> %arg0, ptr addrspace(1) poison565 ret void566}567 568define void @void_func_v2i24(<2 x i24> %arg0) #0 {569 ; CHECK-LABEL: name: void_func_v2i24570 ; CHECK: bb.1 (%ir-block.0):571 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1572 ; CHECK-NEXT: {{ $}}573 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0574 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1575 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)576 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<2 x s24>) = G_TRUNC [[BUILD_VECTOR]](<2 x s32>)577 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF578 ; CHECK-NEXT: G_STORE [[TRUNC]](<2 x s24>), [[DEF]](p1) :: (store (<2 x s24>) into `ptr addrspace(1) poison`, align 8, addrspace 1)579 ; CHECK-NEXT: SI_RETURN580 store <2 x i24> %arg0, ptr addrspace(1) poison581 ret void582}583 584define void @void_func_v3i24(<3 x i24> %arg0) #0 {585 ; CHECK-LABEL: name: void_func_v3i24586 ; CHECK: bb.1 (%ir-block.0):587 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2588 ; CHECK-NEXT: {{ $}}589 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0590 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1591 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2592 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)593 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<3 x s24>) = G_TRUNC [[BUILD_VECTOR]](<3 x s32>)594 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF595 ; CHECK-NEXT: G_STORE [[TRUNC]](<3 x s24>), [[DEF]](p1) :: (store (<3 x s24>) into `ptr addrspace(1) poison`, align 16, addrspace 1)596 ; CHECK-NEXT: SI_RETURN597 store <3 x i24> %arg0, ptr addrspace(1) poison598 ret void599}600 601define void @void_func_v2i8(<2 x i8> %arg0) #0 {602 ; CHECK-LABEL: name: void_func_v2i8603 ; CHECK: bb.1 (%ir-block.0):604 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1605 ; CHECK-NEXT: {{ $}}606 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0607 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)608 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1609 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)610 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16)611 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(<2 x s8>) = G_TRUNC [[BUILD_VECTOR]](<2 x s16>)612 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF613 ; CHECK-NEXT: G_STORE [[TRUNC2]](<2 x s8>), [[DEF]](p1) :: (store (<2 x s8>) into `ptr addrspace(1) poison`, addrspace 1)614 ; CHECK-NEXT: SI_RETURN615 store <2 x i8> %arg0, ptr addrspace(1) poison616 ret void617}618 619define void @void_func_v3i8(<3 x i8> %arg0) #0 {620 ; CHECK-LABEL: name: void_func_v3i8621 ; CHECK: bb.1 (%ir-block.0):622 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2623 ; CHECK-NEXT: {{ $}}624 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0625 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)626 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1627 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)628 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2629 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)630 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16), [[TRUNC2]](s16)631 ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(<3 x s8>) = G_TRUNC [[BUILD_VECTOR]](<3 x s16>)632 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF633 ; CHECK-NEXT: G_STORE [[TRUNC3]](<3 x s8>), [[DEF]](p1) :: (store (<3 x s8>) into `ptr addrspace(1) poison`, align 4, addrspace 1)634 ; CHECK-NEXT: SI_RETURN635 store <3 x i8> %arg0, ptr addrspace(1) poison636 ret void637}638 639define void @void_func_v4i8(<4 x i8> %arg0) #0 {640 ; CHECK-LABEL: name: void_func_v4i8641 ; CHECK: bb.1 (%ir-block.0):642 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3643 ; CHECK-NEXT: {{ $}}644 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0645 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)646 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1647 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)648 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2649 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)650 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3651 ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[COPY3]](s32)652 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16), [[TRUNC2]](s16), [[TRUNC3]](s16)653 ; CHECK-NEXT: [[TRUNC4:%[0-9]+]]:_(<4 x s8>) = G_TRUNC [[BUILD_VECTOR]](<4 x s16>)654 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF655 ; CHECK-NEXT: G_STORE [[TRUNC4]](<4 x s8>), [[DEF]](p1) :: (store (<4 x s8>) into `ptr addrspace(1) poison`, addrspace 1)656 ; CHECK-NEXT: SI_RETURN657 store <4 x i8> %arg0, ptr addrspace(1) poison658 ret void659}660 661define void @void_func_v2p3i8(<2 x ptr addrspace(3)> %arg0) #0 {662 ; CHECK-LABEL: name: void_func_v2p3i8663 ; CHECK: bb.1 (%ir-block.0):664 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1665 ; CHECK-NEXT: {{ $}}666 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0667 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1668 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p3>) = G_BUILD_VECTOR [[COPY]](p3), [[COPY1]](p3)669 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF670 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<2 x p3>), [[DEF]](p1) :: (store (<2 x p3>) into `ptr addrspace(1) poison`, addrspace 1)671 ; CHECK-NEXT: SI_RETURN672 store <2 x ptr addrspace(3)> %arg0, ptr addrspace(1) poison673 ret void674}675 676define void @void_func_v3i32(<3 x i32> %arg0) #0 {677 ; CHECK-LABEL: name: void_func_v3i32678 ; CHECK: bb.1 (%ir-block.0):679 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2680 ; CHECK-NEXT: {{ $}}681 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0682 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1683 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2684 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)685 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF686 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<3 x s32>), [[DEF]](p1) :: (store (<3 x s32>) into `ptr addrspace(1) poison`, align 16, addrspace 1)687 ; CHECK-NEXT: SI_RETURN688 store <3 x i32> %arg0, ptr addrspace(1) poison689 ret void690}691 692define void @void_func_v4i32(<4 x i32> %arg0) #0 {693 ; CHECK-LABEL: name: void_func_v4i32694 ; CHECK: bb.1 (%ir-block.0):695 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3696 ; CHECK-NEXT: {{ $}}697 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0698 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1699 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2700 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3701 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)702 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF703 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<4 x s32>), [[DEF]](p1) :: (store (<4 x s32>) into `ptr addrspace(1) poison`, addrspace 1)704 ; CHECK-NEXT: SI_RETURN705 store <4 x i32> %arg0, ptr addrspace(1) poison706 ret void707}708 709define void @void_func_v5i32(<5 x i32> %arg0) #0 {710 ; CHECK-LABEL: name: void_func_v5i32711 ; CHECK: bb.1 (%ir-block.0):712 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4713 ; CHECK-NEXT: {{ $}}714 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0715 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1716 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2717 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3718 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4719 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32)720 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF721 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<5 x s32>), [[DEF]](p1) :: (store (<5 x s32>) into `ptr addrspace(1) poison`, align 32, addrspace 1)722 ; CHECK-NEXT: SI_RETURN723 store <5 x i32> %arg0, ptr addrspace(1) poison724 ret void725}726 727define void @void_func_v8i32(<8 x i32> %arg0) #0 {728 ; CHECK-LABEL: name: void_func_v8i32729 ; CHECK: bb.1 (%ir-block.0):730 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7731 ; CHECK-NEXT: {{ $}}732 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0733 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1734 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2735 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3736 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4737 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5738 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6739 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7740 ; CHECK-NEXT: [[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)741 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF742 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<8 x s32>), [[DEF]](p1) :: (store (<8 x s32>) into `ptr addrspace(1) poison`, addrspace 1)743 ; CHECK-NEXT: SI_RETURN744 store <8 x i32> %arg0, ptr addrspace(1) poison745 ret void746}747 748define void @void_func_v16i32(<16 x i32> %arg0) #0 {749 ; CHECK-LABEL: name: void_func_v16i32750 ; CHECK: bb.1 (%ir-block.0):751 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15752 ; CHECK-NEXT: {{ $}}753 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0754 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1755 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2756 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3757 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4758 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5759 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6760 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7761 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8762 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9763 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10764 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11765 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12766 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13767 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14768 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15769 ; CHECK-NEXT: [[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)770 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF771 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<16 x s32>), [[DEF]](p1) :: (store (<16 x s32>) into `ptr addrspace(1) poison`, addrspace 1)772 ; CHECK-NEXT: SI_RETURN773 store <16 x i32> %arg0, ptr addrspace(1) poison774 ret void775}776 777define void @void_func_v32i32(<32 x i32> %arg0) #0 {778 ; CHECK-LABEL: name: void_func_v32i32779 ; CHECK: bb.1 (%ir-block.0):780 ; CHECK-NEXT: 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, $vgpr30781 ; CHECK-NEXT: {{ $}}782 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0783 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1784 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2785 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3786 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4787 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5788 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6789 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7790 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8791 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9792 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10793 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11794 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12795 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13796 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14797 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15798 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16799 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17800 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18801 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19802 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20803 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21804 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22805 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23806 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24807 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25808 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26809 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27810 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28811 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29812 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30813 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0814 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.0, align 16, addrspace 5)815 ; CHECK-NEXT: [[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), [[LOAD]](s32)816 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF817 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (store (<32 x s32>) into `ptr addrspace(1) poison`, addrspace 1)818 ; CHECK-NEXT: SI_RETURN819 store <32 x i32> %arg0, ptr addrspace(1) poison820 ret void821}822 823; 1 over register limit824define void @void_func_v33i32(<33 x i32> %arg0) #0 {825 ; CHECK-LABEL: name: void_func_v33i32826 ; CHECK: bb.1 (%ir-block.0):827 ; CHECK-NEXT: 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, $vgpr30828 ; CHECK-NEXT: {{ $}}829 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0830 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1831 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2832 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3833 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4834 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5835 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6836 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7837 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8838 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9839 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10840 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11841 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12842 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13843 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14844 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15845 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16846 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17847 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18848 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19849 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20850 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21851 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22852 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23853 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24854 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25855 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26856 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27857 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28858 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29859 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30860 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1861 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.1, align 16, addrspace 5)862 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0863 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.0, addrspace 5)864 ; CHECK-NEXT: [[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), [[LOAD]](s32), [[LOAD1]](s32)865 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF866 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<33 x s32>), [[DEF]](p1) :: (store (<33 x s32>) into `ptr addrspace(1) poison`, align 256, addrspace 1)867 ; CHECK-NEXT: SI_RETURN868 store <33 x i32> %arg0, ptr addrspace(1) poison869 ret void870}871 872define void @void_func_v2i64(<2 x i64> %arg0) #0 {873 ; CHECK-LABEL: name: void_func_v2i64874 ; CHECK: bb.1 (%ir-block.0):875 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3876 ; CHECK-NEXT: {{ $}}877 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0878 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1879 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2880 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3881 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)882 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)883 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64)884 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF885 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<2 x s64>), [[DEF]](p1) :: (store (<2 x s64>) into `ptr addrspace(1) poison`, addrspace 1)886 ; CHECK-NEXT: SI_RETURN887 store <2 x i64> %arg0, ptr addrspace(1) poison888 ret void889}890 891define void @void_func_v2p0i8(<2 x ptr> %arg0) #0 {892 ; CHECK-LABEL: name: void_func_v2p0i8893 ; CHECK: bb.1 (%ir-block.0):894 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3895 ; CHECK-NEXT: {{ $}}896 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0897 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1898 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2899 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3900 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)901 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)902 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[MV]](p0), [[MV1]](p0)903 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF904 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<2 x p0>), [[DEF]](p1) :: (store (<2 x p0>) into `ptr addrspace(1) poison`, addrspace 1)905 ; CHECK-NEXT: SI_RETURN906 store <2 x ptr> %arg0, ptr addrspace(1) poison907 ret void908}909 910define void @void_func_v2p1i8(<2 x ptr addrspace(1)> %arg0) #0 {911 ; CHECK-LABEL: name: void_func_v2p1i8912 ; CHECK: bb.1 (%ir-block.0):913 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3914 ; CHECK-NEXT: {{ $}}915 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0916 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1917 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2918 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3919 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)920 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)921 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p1>) = G_BUILD_VECTOR [[MV]](p1), [[MV1]](p1)922 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF923 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<2 x p1>), [[DEF]](p1) :: (store (<2 x p1>) into `ptr addrspace(1) poison`, addrspace 1)924 ; CHECK-NEXT: SI_RETURN925 store <2 x ptr addrspace(1)> %arg0, ptr addrspace(1) poison926 ret void927}928 929define void @void_func_v3i64(<3 x i64> %arg0) #0 {930 ; CHECK-LABEL: name: void_func_v3i64931 ; CHECK: bb.1 (%ir-block.0):932 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5933 ; CHECK-NEXT: {{ $}}934 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0935 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1936 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2937 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3938 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4939 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5940 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)941 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)942 ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)943 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)944 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF945 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<3 x s64>), [[DEF]](p1) :: (store (<3 x s64>) into `ptr addrspace(1) poison`, align 32, addrspace 1)946 ; CHECK-NEXT: SI_RETURN947 store <3 x i64> %arg0, ptr addrspace(1) poison948 ret void949}950 951define void @void_func_v4i64(<4 x i64> %arg0) #0 {952 ; CHECK-LABEL: name: void_func_v4i64953 ; CHECK: bb.1 (%ir-block.0):954 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7955 ; CHECK-NEXT: {{ $}}956 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0957 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1958 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2959 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3960 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4961 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5962 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6963 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7964 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)965 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)966 ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)967 ; CHECK-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)968 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)969 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF970 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<4 x s64>), [[DEF]](p1) :: (store (<4 x s64>) into `ptr addrspace(1) poison`, addrspace 1)971 ; CHECK-NEXT: SI_RETURN972 store <4 x i64> %arg0, ptr addrspace(1) poison973 ret void974}975 976define void @void_func_v5i64(<5 x i64> %arg0) #0 {977 ; CHECK-LABEL: name: void_func_v5i64978 ; CHECK: bb.1 (%ir-block.0):979 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9980 ; CHECK-NEXT: {{ $}}981 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0982 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1983 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2984 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3985 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4986 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5987 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6988 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7989 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8990 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9991 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)992 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)993 ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)994 ; CHECK-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)995 ; CHECK-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)996 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64), [[MV4]](s64)997 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF998 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<5 x s64>), [[DEF]](p1) :: (store (<5 x s64>) into `ptr addrspace(1) poison`, align 64, addrspace 1)999 ; CHECK-NEXT: SI_RETURN1000 store <5 x i64> %arg0, ptr addrspace(1) poison1001 ret void1002}1003 1004define void @void_func_v8i64(<8 x i64> %arg0) #0 {1005 ; CHECK-LABEL: name: void_func_v8i641006 ; CHECK: bb.1 (%ir-block.0):1007 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr151008 ; CHECK-NEXT: {{ $}}1009 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01010 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11011 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21012 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31013 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41014 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51015 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61016 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71017 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81018 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91019 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101020 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111021 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr121022 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr131023 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr141024 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr151025 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1026 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1027 ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)1028 ; CHECK-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)1029 ; CHECK-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)1030 ; CHECK-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)1031 ; CHECK-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)1032 ; CHECK-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)1033 ; CHECK-NEXT: [[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)1034 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1035 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<8 x s64>), [[DEF]](p1) :: (store (<8 x s64>) into `ptr addrspace(1) poison`, addrspace 1)1036 ; CHECK-NEXT: SI_RETURN1037 store <8 x i64> %arg0, ptr addrspace(1) poison1038 ret void1039}1040 1041define void @void_func_v16i64(<16 x i64> %arg0) #0 {1042 ; CHECK-LABEL: name: void_func_v16i641043 ; CHECK: bb.1 (%ir-block.0):1044 ; CHECK-NEXT: 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, $vgpr301045 ; CHECK-NEXT: {{ $}}1046 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01047 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11048 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21049 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31050 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41051 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51052 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61053 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71054 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81055 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91056 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101057 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111058 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr121059 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr131060 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr141061 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr151062 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr161063 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr171064 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr181065 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr191066 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr201067 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr211068 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr221069 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr231070 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr241071 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr251072 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr261073 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr271074 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr281075 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr291076 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr301077 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.01078 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.0, align 16, addrspace 5)1079 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1080 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1081 ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)1082 ; CHECK-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)1083 ; CHECK-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)1084 ; CHECK-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)1085 ; CHECK-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)1086 ; CHECK-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)1087 ; CHECK-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)1088 ; CHECK-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)1089 ; CHECK-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)1090 ; CHECK-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)1091 ; CHECK-NEXT: [[MV12:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY24]](s32), [[COPY25]](s32)1092 ; CHECK-NEXT: [[MV13:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY26]](s32), [[COPY27]](s32)1093 ; CHECK-NEXT: [[MV14:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY28]](s32), [[COPY29]](s32)1094 ; CHECK-NEXT: [[MV15:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY30]](s32), [[LOAD]](s32)1095 ; CHECK-NEXT: [[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)1096 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1097 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<16 x s64>), [[DEF]](p1) :: (store (<16 x s64>) into `ptr addrspace(1) poison`, addrspace 1)1098 ; CHECK-NEXT: SI_RETURN1099 store <16 x i64> %arg0, ptr addrspace(1) poison1100 ret void1101}1102 1103define void @void_func_v2i16(<2 x i16> %arg0) #0 {1104 ; CHECK-LABEL: name: void_func_v2i161105 ; CHECK: bb.1 (%ir-block.0):1106 ; CHECK-NEXT: liveins: $vgpr01107 ; CHECK-NEXT: {{ $}}1108 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01109 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1110 ; CHECK-NEXT: G_STORE [[COPY]](<2 x s16>), [[DEF]](p1) :: (store (<2 x s16>) into `ptr addrspace(1) poison`, addrspace 1)1111 ; CHECK-NEXT: SI_RETURN1112 store <2 x i16> %arg0, ptr addrspace(1) poison1113 ret void1114}1115 1116define void @void_func_v3i16(<3 x i16> %arg0) #0 {1117 ; CHECK-LABEL: name: void_func_v3i161118 ; CHECK: bb.1 (%ir-block.0):1119 ; CHECK-NEXT: liveins: $vgpr0, $vgpr11120 ; CHECK-NEXT: {{ $}}1121 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01122 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11123 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1124 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16), [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<4 x s16>)1125 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s16>) = G_BUILD_VECTOR [[UV]](s16), [[UV1]](s16), [[UV2]](s16)1126 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1127 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<3 x s16>), [[DEF]](p1) :: (store (<3 x s16>) into `ptr addrspace(1) poison`, align 8, addrspace 1)1128 ; CHECK-NEXT: SI_RETURN1129 store <3 x i16> %arg0, ptr addrspace(1) poison1130 ret void1131}1132 1133define void @void_func_v4i16(<4 x i16> %arg0) #0 {1134 ; CHECK-LABEL: name: void_func_v4i161135 ; CHECK: bb.1 (%ir-block.0):1136 ; CHECK-NEXT: liveins: $vgpr0, $vgpr11137 ; CHECK-NEXT: {{ $}}1138 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01139 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11140 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1141 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1142 ; CHECK-NEXT: G_STORE [[CONCAT_VECTORS]](<4 x s16>), [[DEF]](p1) :: (store (<4 x s16>) into `ptr addrspace(1) poison`, addrspace 1)1143 ; CHECK-NEXT: SI_RETURN1144 store <4 x i16> %arg0, ptr addrspace(1) poison1145 ret void1146}1147 1148define void @void_func_v5i16(<5 x i16> %arg0) #0 {1149 ; CHECK-LABEL: name: void_func_v5i161150 ; CHECK: bb.1 (%ir-block.0):1151 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr21152 ; CHECK-NEXT: {{ $}}1153 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01154 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11155 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21156 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[COPY2]](<2 x s16>)1157 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16), [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16), [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)1158 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s16>) = G_BUILD_VECTOR [[UV]](s16), [[UV1]](s16), [[UV2]](s16), [[UV3]](s16), [[UV4]](s16)1159 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1160 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<5 x s16>), [[DEF]](p1) :: (store (<5 x s16>) into `ptr addrspace(1) poison`, align 16, addrspace 1)1161 ; CHECK-NEXT: SI_RETURN1162 store <5 x i16> %arg0, ptr addrspace(1) poison1163 ret void1164}1165 1166define void @void_func_v8i16(<8 x i16> %arg0) #0 {1167 ; CHECK-LABEL: name: void_func_v8i161168 ; CHECK: bb.1 (%ir-block.0):1169 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr31170 ; CHECK-NEXT: {{ $}}1171 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01172 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11173 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21174 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31175 ; CHECK-NEXT: [[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>)1176 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1177 ; CHECK-NEXT: G_STORE [[CONCAT_VECTORS]](<8 x s16>), [[DEF]](p1) :: (store (<8 x s16>) into `ptr addrspace(1) poison`, addrspace 1)1178 ; CHECK-NEXT: SI_RETURN1179 store <8 x i16> %arg0, ptr addrspace(1) poison1180 ret void1181}1182 1183define void @void_func_v16i16(<16 x i16> %arg0) #0 {1184 ; CHECK-LABEL: name: void_func_v16i161185 ; CHECK: bb.1 (%ir-block.0):1186 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr71187 ; CHECK-NEXT: {{ $}}1188 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01189 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11190 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21191 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31192 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41193 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51194 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr61195 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr71196 ; CHECK-NEXT: [[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>)1197 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1198 ; CHECK-NEXT: G_STORE [[CONCAT_VECTORS]](<16 x s16>), [[DEF]](p1) :: (store (<16 x s16>) into `ptr addrspace(1) poison`, addrspace 1)1199 ; CHECK-NEXT: SI_RETURN1200 store <16 x i16> %arg0, ptr addrspace(1) poison1201 ret void1202}1203 1204; <2 x i16> pieces that start spilling to the stack.1205; FIXME: load of 2 would be sufficient for last piece1206define void @void_func_v65i16(<65 x i16> %arg0) #0 {1207 ; CHECK-LABEL: name: void_func_v65i161208 ; CHECK: bb.1 (%ir-block.0):1209 ; CHECK-NEXT: 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, $vgpr301210 ; CHECK-NEXT: {{ $}}1211 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01212 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11213 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21214 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31215 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41216 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51217 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr61218 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr71219 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr81220 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr91221 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr101222 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr111223 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr121224 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr131225 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr141226 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr151227 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr161228 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr171229 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr181230 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr191231 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr201232 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr211233 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr221234 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr231235 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr241236 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr251237 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr261238 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr271239 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr281240 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr291241 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr301242 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11243 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s16>) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (<2 x s16>) from %fixed-stack.1, align 16, addrspace 5)1244 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.01245 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(<2 x s16>) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (<2 x s16>) from %fixed-stack.0, addrspace 5)1246 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<66 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>), [[LOAD]](<2 x s16>), [[LOAD1]](<2 x s16>)1247 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16), [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16), [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16), [[UV6:%[0-9]+]]:_(s16), [[UV7:%[0-9]+]]:_(s16), [[UV8:%[0-9]+]]:_(s16), [[UV9:%[0-9]+]]:_(s16), [[UV10:%[0-9]+]]:_(s16), [[UV11:%[0-9]+]]:_(s16), [[UV12:%[0-9]+]]:_(s16), [[UV13:%[0-9]+]]:_(s16), [[UV14:%[0-9]+]]:_(s16), [[UV15:%[0-9]+]]:_(s16), [[UV16:%[0-9]+]]:_(s16), [[UV17:%[0-9]+]]:_(s16), [[UV18:%[0-9]+]]:_(s16), [[UV19:%[0-9]+]]:_(s16), [[UV20:%[0-9]+]]:_(s16), [[UV21:%[0-9]+]]:_(s16), [[UV22:%[0-9]+]]:_(s16), [[UV23:%[0-9]+]]:_(s16), [[UV24:%[0-9]+]]:_(s16), [[UV25:%[0-9]+]]:_(s16), [[UV26:%[0-9]+]]:_(s16), [[UV27:%[0-9]+]]:_(s16), [[UV28:%[0-9]+]]:_(s16), [[UV29:%[0-9]+]]:_(s16), [[UV30:%[0-9]+]]:_(s16), [[UV31:%[0-9]+]]:_(s16), [[UV32:%[0-9]+]]:_(s16), [[UV33:%[0-9]+]]:_(s16), [[UV34:%[0-9]+]]:_(s16), [[UV35:%[0-9]+]]:_(s16), [[UV36:%[0-9]+]]:_(s16), [[UV37:%[0-9]+]]:_(s16), [[UV38:%[0-9]+]]:_(s16), [[UV39:%[0-9]+]]:_(s16), [[UV40:%[0-9]+]]:_(s16), [[UV41:%[0-9]+]]:_(s16), [[UV42:%[0-9]+]]:_(s16), [[UV43:%[0-9]+]]:_(s16), [[UV44:%[0-9]+]]:_(s16), [[UV45:%[0-9]+]]:_(s16), [[UV46:%[0-9]+]]:_(s16), [[UV47:%[0-9]+]]:_(s16), [[UV48:%[0-9]+]]:_(s16), [[UV49:%[0-9]+]]:_(s16), [[UV50:%[0-9]+]]:_(s16), [[UV51:%[0-9]+]]:_(s16), [[UV52:%[0-9]+]]:_(s16), [[UV53:%[0-9]+]]:_(s16), [[UV54:%[0-9]+]]:_(s16), [[UV55:%[0-9]+]]:_(s16), [[UV56:%[0-9]+]]:_(s16), [[UV57:%[0-9]+]]:_(s16), [[UV58:%[0-9]+]]:_(s16), [[UV59:%[0-9]+]]:_(s16), [[UV60:%[0-9]+]]:_(s16), [[UV61:%[0-9]+]]:_(s16), [[UV62:%[0-9]+]]:_(s16), [[UV63:%[0-9]+]]:_(s16), [[UV64:%[0-9]+]]:_(s16), [[UV65:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<66 x s16>)1248 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<65 x s16>) = G_BUILD_VECTOR [[UV]](s16), [[UV1]](s16), [[UV2]](s16), [[UV3]](s16), [[UV4]](s16), [[UV5]](s16), [[UV6]](s16), [[UV7]](s16), [[UV8]](s16), [[UV9]](s16), [[UV10]](s16), [[UV11]](s16), [[UV12]](s16), [[UV13]](s16), [[UV14]](s16), [[UV15]](s16), [[UV16]](s16), [[UV17]](s16), [[UV18]](s16), [[UV19]](s16), [[UV20]](s16), [[UV21]](s16), [[UV22]](s16), [[UV23]](s16), [[UV24]](s16), [[UV25]](s16), [[UV26]](s16), [[UV27]](s16), [[UV28]](s16), [[UV29]](s16), [[UV30]](s16), [[UV31]](s16), [[UV32]](s16), [[UV33]](s16), [[UV34]](s16), [[UV35]](s16), [[UV36]](s16), [[UV37]](s16), [[UV38]](s16), [[UV39]](s16), [[UV40]](s16), [[UV41]](s16), [[UV42]](s16), [[UV43]](s16), [[UV44]](s16), [[UV45]](s16), [[UV46]](s16), [[UV47]](s16), [[UV48]](s16), [[UV49]](s16), [[UV50]](s16), [[UV51]](s16), [[UV52]](s16), [[UV53]](s16), [[UV54]](s16), [[UV55]](s16), [[UV56]](s16), [[UV57]](s16), [[UV58]](s16), [[UV59]](s16), [[UV60]](s16), [[UV61]](s16), [[UV62]](s16), [[UV63]](s16), [[UV64]](s16)1249 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1250 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<65 x s16>), [[DEF]](p1) :: (store (<65 x s16>) into `ptr addrspace(1) poison`, align 256, addrspace 1)1251 ; CHECK-NEXT: SI_RETURN1252 store <65 x i16> %arg0, ptr addrspace(1) poison1253 ret void1254}1255 1256define void @void_func_v2f32(<2 x float> %arg0) #0 {1257 ; CHECK-LABEL: name: void_func_v2f321258 ; CHECK: bb.1 (%ir-block.0):1259 ; CHECK-NEXT: liveins: $vgpr0, $vgpr11260 ; CHECK-NEXT: {{ $}}1261 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01262 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11263 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)1264 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1265 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<2 x s32>), [[DEF]](p1) :: (store (<2 x s32>) into `ptr addrspace(1) poison`, addrspace 1)1266 ; CHECK-NEXT: SI_RETURN1267 store <2 x float> %arg0, ptr addrspace(1) poison1268 ret void1269}1270 1271define void @void_func_v3f32(<3 x float> %arg0) #0 {1272 ; CHECK-LABEL: name: void_func_v3f321273 ; CHECK: bb.1 (%ir-block.0):1274 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr21275 ; CHECK-NEXT: {{ $}}1276 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01277 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11278 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21279 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1280 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1281 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<3 x s32>), [[DEF]](p1) :: (store (<3 x s32>) into `ptr addrspace(1) poison`, align 16, addrspace 1)1282 ; CHECK-NEXT: SI_RETURN1283 store <3 x float> %arg0, ptr addrspace(1) poison1284 ret void1285}1286 1287define void @void_func_v4f32(<4 x float> %arg0) #0 {1288 ; CHECK-LABEL: name: void_func_v4f321289 ; CHECK: bb.1 (%ir-block.0):1290 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr31291 ; CHECK-NEXT: {{ $}}1292 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01293 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11294 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21295 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31296 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)1297 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1298 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<4 x s32>), [[DEF]](p1) :: (store (<4 x s32>) into `ptr addrspace(1) poison`, addrspace 1)1299 ; CHECK-NEXT: SI_RETURN1300 store <4 x float> %arg0, ptr addrspace(1) poison1301 ret void1302}1303 1304define void @void_func_v8f32(<8 x float> %arg0) #0 {1305 ; CHECK-LABEL: name: void_func_v8f321306 ; CHECK: bb.1 (%ir-block.0):1307 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr71308 ; CHECK-NEXT: {{ $}}1309 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01310 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11311 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21312 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31313 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41314 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51315 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61316 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71317 ; CHECK-NEXT: [[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)1318 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1319 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<8 x s32>), [[DEF]](p1) :: (store (<8 x s32>) into `ptr addrspace(1) poison`, addrspace 1)1320 ; CHECK-NEXT: SI_RETURN1321 store <8 x float> %arg0, ptr addrspace(1) poison1322 ret void1323}1324 1325define void @void_func_v16f32(<16 x float> %arg0) #0 {1326 ; CHECK-LABEL: name: void_func_v16f321327 ; CHECK: bb.1 (%ir-block.0):1328 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr151329 ; CHECK-NEXT: {{ $}}1330 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01331 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11332 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21333 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31334 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41335 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51336 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61337 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71338 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81339 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91340 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101341 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111342 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr121343 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr131344 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr141345 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr151346 ; CHECK-NEXT: [[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)1347 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1348 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<16 x s32>), [[DEF]](p1) :: (store (<16 x s32>) into `ptr addrspace(1) poison`, addrspace 1)1349 ; CHECK-NEXT: SI_RETURN1350 store <16 x float> %arg0, ptr addrspace(1) poison1351 ret void1352}1353 1354define void @void_func_v2f64(<2 x double> %arg0) #0 {1355 ; CHECK-LABEL: name: void_func_v2f641356 ; CHECK: bb.1 (%ir-block.0):1357 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr31358 ; CHECK-NEXT: {{ $}}1359 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01360 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11361 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21362 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31363 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1364 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1365 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64)1366 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1367 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<2 x s64>), [[DEF]](p1) :: (store (<2 x s64>) into `ptr addrspace(1) poison`, addrspace 1)1368 ; CHECK-NEXT: SI_RETURN1369 store <2 x double> %arg0, ptr addrspace(1) poison1370 ret void1371}1372 1373define void @void_func_v3f64(<3 x double> %arg0) #0 {1374 ; CHECK-LABEL: name: void_func_v3f641375 ; CHECK: bb.1 (%ir-block.0):1376 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51377 ; CHECK-NEXT: {{ $}}1378 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01379 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11380 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21381 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31382 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41383 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51384 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1385 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1386 ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)1387 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)1388 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1389 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<3 x s64>), [[DEF]](p1) :: (store (<3 x s64>) into `ptr addrspace(1) poison`, align 32, addrspace 1)1390 ; CHECK-NEXT: SI_RETURN1391 store <3 x double> %arg0, ptr addrspace(1) poison1392 ret void1393}1394 1395define void @void_func_v4f64(<4 x double> %arg0) #0 {1396 ; CHECK-LABEL: name: void_func_v4f641397 ; CHECK: bb.1 (%ir-block.0):1398 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr71399 ; CHECK-NEXT: {{ $}}1400 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01401 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11402 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21403 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31404 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41405 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51406 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61407 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71408 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1409 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1410 ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)1411 ; CHECK-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)1412 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)1413 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1414 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<4 x s64>), [[DEF]](p1) :: (store (<4 x s64>) into `ptr addrspace(1) poison`, addrspace 1)1415 ; CHECK-NEXT: SI_RETURN1416 store <4 x double> %arg0, ptr addrspace(1) poison1417 ret void1418}1419 1420define void @void_func_v8f64(<8 x double> %arg0) #0 {1421 ; CHECK-LABEL: name: void_func_v8f641422 ; CHECK: bb.1 (%ir-block.0):1423 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr151424 ; CHECK-NEXT: {{ $}}1425 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01426 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11427 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21428 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31429 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41430 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51431 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61432 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71433 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81434 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91435 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101436 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111437 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr121438 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr131439 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr141440 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr151441 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1442 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1443 ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)1444 ; CHECK-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)1445 ; CHECK-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)1446 ; CHECK-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)1447 ; CHECK-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)1448 ; CHECK-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)1449 ; CHECK-NEXT: [[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)1450 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1451 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<8 x s64>), [[DEF]](p1) :: (store (<8 x s64>) into `ptr addrspace(1) poison`, addrspace 1)1452 ; CHECK-NEXT: SI_RETURN1453 store <8 x double> %arg0, ptr addrspace(1) poison1454 ret void1455}1456 1457define void @void_func_v16f64(<16 x double> %arg0) #0 {1458 ; CHECK-LABEL: name: void_func_v16f641459 ; CHECK: bb.1 (%ir-block.0):1460 ; CHECK-NEXT: 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, $vgpr301461 ; CHECK-NEXT: {{ $}}1462 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01463 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11464 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21465 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31466 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41467 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51468 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61469 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71470 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81471 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91472 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101473 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111474 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr121475 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr131476 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr141477 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr151478 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr161479 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr171480 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr181481 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr191482 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr201483 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr211484 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr221485 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr231486 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr241487 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr251488 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr261489 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr271490 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr281491 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr291492 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr301493 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.01494 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.0, align 16, addrspace 5)1495 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1496 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1497 ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)1498 ; CHECK-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)1499 ; CHECK-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)1500 ; CHECK-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)1501 ; CHECK-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)1502 ; CHECK-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)1503 ; CHECK-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)1504 ; CHECK-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)1505 ; CHECK-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)1506 ; CHECK-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)1507 ; CHECK-NEXT: [[MV12:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY24]](s32), [[COPY25]](s32)1508 ; CHECK-NEXT: [[MV13:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY26]](s32), [[COPY27]](s32)1509 ; CHECK-NEXT: [[MV14:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY28]](s32), [[COPY29]](s32)1510 ; CHECK-NEXT: [[MV15:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY30]](s32), [[LOAD]](s32)1511 ; CHECK-NEXT: [[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)1512 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1513 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<16 x s64>), [[DEF]](p1) :: (store (<16 x s64>) into `ptr addrspace(1) poison`, addrspace 1)1514 ; CHECK-NEXT: SI_RETURN1515 store <16 x double> %arg0, ptr addrspace(1) poison1516 ret void1517}1518 1519define void @void_func_v2f16(<2 x half> %arg0) #0 {1520 ; CHECK-LABEL: name: void_func_v2f161521 ; CHECK: bb.1 (%ir-block.0):1522 ; CHECK-NEXT: liveins: $vgpr01523 ; CHECK-NEXT: {{ $}}1524 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01525 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1526 ; CHECK-NEXT: G_STORE [[COPY]](<2 x s16>), [[DEF]](p1) :: (store (<2 x s16>) into `ptr addrspace(1) poison`, addrspace 1)1527 ; CHECK-NEXT: SI_RETURN1528 store <2 x half> %arg0, ptr addrspace(1) poison1529 ret void1530}1531 1532define void @void_func_v3f16(<3 x half> %arg0) #0 {1533 ; CHECK-LABEL: name: void_func_v3f161534 ; CHECK: bb.1 (%ir-block.0):1535 ; CHECK-NEXT: liveins: $vgpr0, $vgpr11536 ; CHECK-NEXT: {{ $}}1537 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01538 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11539 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1540 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16), [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<4 x s16>)1541 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s16>) = G_BUILD_VECTOR [[UV]](s16), [[UV1]](s16), [[UV2]](s16)1542 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1543 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<3 x s16>), [[DEF]](p1) :: (store (<3 x s16>) into `ptr addrspace(1) poison`, align 8, addrspace 1)1544 ; CHECK-NEXT: SI_RETURN1545 store <3 x half> %arg0, ptr addrspace(1) poison1546 ret void1547}1548 1549define void @void_func_v4f16(<4 x half> %arg0) #0 {1550 ; CHECK-LABEL: name: void_func_v4f161551 ; CHECK: bb.1 (%ir-block.0):1552 ; CHECK-NEXT: liveins: $vgpr0, $vgpr11553 ; CHECK-NEXT: {{ $}}1554 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01555 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11556 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1557 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1558 ; CHECK-NEXT: G_STORE [[CONCAT_VECTORS]](<4 x s16>), [[DEF]](p1) :: (store (<4 x s16>) into `ptr addrspace(1) poison`, addrspace 1)1559 ; CHECK-NEXT: SI_RETURN1560 store <4 x half> %arg0, ptr addrspace(1) poison1561 ret void1562}1563 1564define void @void_func_v8f16(<8 x half> %arg0) #0 {1565 ; CHECK-LABEL: name: void_func_v8f161566 ; CHECK: bb.1 (%ir-block.0):1567 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr31568 ; CHECK-NEXT: {{ $}}1569 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01570 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11571 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21572 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31573 ; CHECK-NEXT: [[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>)1574 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1575 ; CHECK-NEXT: G_STORE [[CONCAT_VECTORS]](<8 x s16>), [[DEF]](p1) :: (store (<8 x s16>) into `ptr addrspace(1) poison`, addrspace 1)1576 ; CHECK-NEXT: SI_RETURN1577 store <8 x half> %arg0, ptr addrspace(1) poison1578 ret void1579}1580 1581define void @void_func_v16f16(<16 x half> %arg0) #0 {1582 ; CHECK-LABEL: name: void_func_v16f161583 ; CHECK: bb.1 (%ir-block.0):1584 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr71585 ; CHECK-NEXT: {{ $}}1586 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01587 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11588 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21589 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31590 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41591 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51592 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr61593 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr71594 ; CHECK-NEXT: [[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>)1595 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1596 ; CHECK-NEXT: G_STORE [[CONCAT_VECTORS]](<16 x s16>), [[DEF]](p1) :: (store (<16 x s16>) into `ptr addrspace(1) poison`, addrspace 1)1597 ; CHECK-NEXT: SI_RETURN1598 store <16 x half> %arg0, ptr addrspace(1) poison1599 ret void1600}1601 1602; Make sure there is no alignment requirement for passed vgprs.1603define void @void_func_i32_i64_i32(i32 %arg0, i64 %arg1, i32 %arg2) #0 {1604 ; CHECK-LABEL: name: void_func_i32_i64_i321605 ; CHECK: bb.1 (%ir-block.0):1606 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr31607 ; CHECK-NEXT: {{ $}}1608 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01609 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11610 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21611 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY1]](s32), [[COPY2]](s32)1612 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31613 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1614 ; CHECK-NEXT: G_STORE [[COPY]](s32), [[DEF]](p1) :: (volatile store (s32) into `ptr addrspace(1) poison`, addrspace 1)1615 ; CHECK-NEXT: G_STORE [[MV]](s64), [[DEF]](p1) :: (volatile store (s64) into `ptr addrspace(1) poison`, addrspace 1)1616 ; CHECK-NEXT: G_STORE [[COPY3]](s32), [[DEF]](p1) :: (volatile store (s32) into `ptr addrspace(1) poison`, addrspace 1)1617 ; CHECK-NEXT: SI_RETURN1618 store volatile i32 %arg0, ptr addrspace(1) poison1619 store volatile i64 %arg1, ptr addrspace(1) poison1620 store volatile i32 %arg2, ptr addrspace(1) poison1621 ret void1622}1623 1624define void @void_func_struct_i32({ i32 } %arg0) #0 {1625 ; CHECK-LABEL: name: void_func_struct_i321626 ; CHECK: bb.1 (%ir-block.0):1627 ; CHECK-NEXT: liveins: $vgpr01628 ; CHECK-NEXT: {{ $}}1629 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01630 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1631 ; CHECK-NEXT: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)1632 ; CHECK-NEXT: SI_RETURN1633 store { i32 } %arg0, ptr addrspace(1) poison1634 ret void1635}1636 1637define void @void_func_struct_i8_i32({ i8, i32 } %arg0) #0 {1638 ; CHECK-LABEL: name: void_func_struct_i8_i321639 ; CHECK: bb.1 (%ir-block.0):1640 ; CHECK-NEXT: liveins: $vgpr0, $vgpr11641 ; CHECK-NEXT: {{ $}}1642 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01643 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)1644 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC]](s16)1645 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11646 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1647 ; CHECK-NEXT: G_STORE [[TRUNC1]](s8), [[DEF]](p1) :: (store (s8) into `ptr addrspace(1) poison`, align 4, addrspace 1)1648 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 41649 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[DEF]], [[C]](s64)1650 ; CHECK-NEXT: G_STORE [[COPY1]](s32), [[PTR_ADD]](p1) :: (store (s32) into `ptr addrspace(1) poison` + 4, addrspace 1)1651 ; CHECK-NEXT: SI_RETURN1652 store { i8, i32 } %arg0, ptr addrspace(1) poison1653 ret void1654}1655 1656define void @void_func_byval_struct_i8_i32(ptr addrspace(5) byval({ i8, i32 }) %arg0) #0 {1657 ; CHECK-LABEL: name: void_func_byval_struct_i8_i321658 ; CHECK: bb.1 (%ir-block.0):1659 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.01660 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX]](p5)1661 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1662 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s8) = G_LOAD [[COPY]](p5) :: (load (s8) from %ir.arg0, align 4, addrspace 5)1663 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 41664 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p5) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s32)1665 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p5) :: (load (s32) from %ir.arg0 + 4, addrspace 5)1666 ; CHECK-NEXT: G_STORE [[LOAD]](s8), [[DEF]](p1) :: (store (s8) into `ptr addrspace(1) poison`, align 4, addrspace 1)1667 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 41668 ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[DEF]], [[C1]](s64)1669 ; CHECK-NEXT: G_STORE [[LOAD1]](s32), [[PTR_ADD1]](p1) :: (store (s32) into `ptr addrspace(1) poison` + 4, addrspace 1)1670 ; CHECK-NEXT: SI_RETURN1671 %arg0.load = load { i8, i32 }, ptr addrspace(5) %arg01672 store { i8, i32 } %arg0.load, ptr addrspace(1) poison1673 ret void1674}1675 1676define void @void_func_byval_struct_i8_i32_x2(ptr addrspace(5) byval({ i8, i32 }) %arg0, ptr addrspace(5) byval({ i8, i32 }) %arg1, i32 %arg2) #0 {1677 ; CHECK-LABEL: name: void_func_byval_struct_i8_i32_x21678 ; CHECK: bb.1 (%ir-block.0):1679 ; CHECK-NEXT: liveins: $vgpr01680 ; CHECK-NEXT: {{ $}}1681 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11682 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX]](p5)1683 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.01684 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX1]](p5)1685 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr01686 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1687 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(p3) = G_IMPLICIT_DEF1688 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s8) = G_LOAD [[COPY]](p5) :: (volatile load (s8) from %ir.arg0, align 4, addrspace 5)1689 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 41690 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p5) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s32)1691 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p5) :: (volatile load (s32) from %ir.arg0 + 4, addrspace 5)1692 ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(s8) = G_LOAD [[COPY1]](p5) :: (volatile load (s8) from %ir.arg1, align 4, addrspace 5)1693 ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p5) = nuw inbounds G_PTR_ADD [[COPY1]], [[C]](s32)1694 ; CHECK-NEXT: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p5) :: (volatile load (s32) from %ir.arg1 + 4, addrspace 5)1695 ; CHECK-NEXT: G_STORE [[LOAD]](s8), [[DEF]](p1) :: (volatile store (s8) into `ptr addrspace(1) poison`, align 4, addrspace 1)1696 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 41697 ; CHECK-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[DEF]], [[C1]](s64)1698 ; CHECK-NEXT: G_STORE [[LOAD1]](s32), [[PTR_ADD2]](p1) :: (volatile store (s32) into `ptr addrspace(1) poison` + 4, addrspace 1)1699 ; CHECK-NEXT: G_STORE [[LOAD2]](s8), [[DEF]](p1) :: (volatile store (s8) into `ptr addrspace(1) poison`, align 4, addrspace 1)1700 ; CHECK-NEXT: [[PTR_ADD3:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[DEF]], [[C1]](s64)1701 ; CHECK-NEXT: G_STORE [[LOAD3]](s32), [[PTR_ADD3]](p1) :: (volatile store (s32) into `ptr addrspace(1) poison` + 4, addrspace 1)1702 ; CHECK-NEXT: G_STORE [[COPY2]](s32), [[DEF1]](p3) :: (volatile store (s32) into `ptr addrspace(3) poison`, addrspace 3)1703 ; CHECK-NEXT: SI_RETURN1704 %arg0.load = load volatile { i8, i32 }, ptr addrspace(5) %arg01705 %arg1.load = load volatile { i8, i32 }, ptr addrspace(5) %arg11706 store volatile { i8, i32 } %arg0.load, ptr addrspace(1) poison1707 store volatile { i8, i32 } %arg1.load, ptr addrspace(1) poison1708 store volatile i32 %arg2, ptr addrspace(3) poison1709 ret void1710}1711 1712define void @void_func_byval_i32_byval_i64(ptr addrspace(5) byval(i32) %arg0, ptr addrspace(5) byval(i64) %arg1) #0 {1713 ; CHECK-LABEL: name: void_func_byval_i32_byval_i641714 ; CHECK: bb.1 (%ir-block.0):1715 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11716 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX]](p5)1717 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.01718 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX1]](p5)1719 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1720 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p5) :: (load (s32) from %ir.arg0, addrspace 5)1721 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s64) = G_LOAD [[COPY1]](p5) :: (load (s64) from %ir.arg1, addrspace 5)1722 ; CHECK-NEXT: G_STORE [[LOAD]](s32), [[DEF]](p1) :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)1723 ; CHECK-NEXT: G_STORE [[LOAD1]](s64), [[DEF]](p1) :: (store (s64) into `ptr addrspace(1) poison`, addrspace 1)1724 ; CHECK-NEXT: SI_RETURN1725 %arg0.load = load i32, ptr addrspace(5) %arg01726 %arg1.load = load i64, ptr addrspace(5) %arg11727 store i32 %arg0.load, ptr addrspace(1) poison1728 store i64 %arg1.load, ptr addrspace(1) poison1729 ret void1730}1731 1732define void @void_func_byval_i8_align32_i16_align64(ptr addrspace(5) byval(i8) %arg0, ptr addrspace(5) byval(i16) align 64 %arg1) #0 {1733 ; CHECK-LABEL: name: void_func_byval_i8_align32_i16_align641734 ; CHECK: bb.1 (%ir-block.0):1735 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11736 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX]](p5)1737 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.01738 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX1]](p5)1739 ; CHECK-NEXT: [[C:%[0-9]+]]:_(p1) = G_CONSTANT i64 01740 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s8) = G_LOAD [[COPY]](p5) :: (dereferenceable load (s8) from %ir.arg0, addrspace 5)1741 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s16) = G_LOAD [[COPY1]](p5) :: (dereferenceable load (s16) from %ir.arg1, addrspace 5)1742 ; CHECK-NEXT: G_STORE [[LOAD]](s8), [[C]](p1) :: (store (s8) into `ptr addrspace(1) null`, addrspace 1)1743 ; CHECK-NEXT: G_STORE [[LOAD1]](s16), [[C]](p1) :: (store (s16) into `ptr addrspace(1) null`, addrspace 1)1744 ; CHECK-NEXT: SI_RETURN1745 %arg0.load = load i8, ptr addrspace(5) %arg01746 %arg1.load = load i16, ptr addrspace(5) %arg11747 store i8 %arg0.load, ptr addrspace(1) null1748 store i16 %arg1.load, ptr addrspace(1) null1749 ret void1750}1751 1752; Make sure the alignment is taken from the correct parameter.1753define void @byval_a3i32_align128_byval_i16_align64(ptr addrspace(5) byval([3 x i32]) align 128 %arg0, ptr addrspace(5) byval(i16) align 64 %arg1) #0 {1754 ; CHECK-LABEL: name: byval_a3i32_align128_byval_i16_align641755 ; CHECK: bb.1 (%ir-block.0):1756 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11757 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX]](p5)1758 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.01759 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX1]](p5)1760 ; CHECK-NEXT: [[C:%[0-9]+]]:_(p1) = G_CONSTANT i64 01761 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p5) :: (dereferenceable load (s32) from %ir.arg0, addrspace 5)1762 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 41763 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p5) = nuw inbounds G_PTR_ADD [[COPY]], [[C1]](s32)1764 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p5) :: (dereferenceable load (s32) from %ir.arg0 + 4, addrspace 5)1765 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 81766 ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p5) = nuw inbounds G_PTR_ADD [[COPY]], [[C2]](s32)1767 ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p5) :: (dereferenceable load (s32) from %ir.arg0 + 8, addrspace 5)1768 ; CHECK-NEXT: [[LOAD3:%[0-9]+]]:_(s16) = G_LOAD [[COPY1]](p5) :: (dereferenceable load (s16) from %ir.arg1, addrspace 5)1769 ; CHECK-NEXT: G_STORE [[LOAD]](s32), [[C]](p1) :: (store (s32) into `ptr addrspace(1) null`, addrspace 1)1770 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 41771 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(p1) = G_CONSTANT i64 41772 ; CHECK-NEXT: G_STORE [[LOAD1]](s32), [[C4]](p1) :: (store (s32) into `ptr addrspace(1) null` + 4, addrspace 1)1773 ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 81774 ; CHECK-NEXT: [[C6:%[0-9]+]]:_(p1) = G_CONSTANT i64 81775 ; CHECK-NEXT: G_STORE [[LOAD2]](s32), [[C6]](p1) :: (store (s32) into `ptr addrspace(1) null` + 8, addrspace 1)1776 ; CHECK-NEXT: G_STORE [[LOAD3]](s16), [[C]](p1) :: (store (s16) into `ptr addrspace(1) null`, addrspace 1)1777 ; CHECK-NEXT: SI_RETURN1778 %arg0.load = load [3 x i32], ptr addrspace(5) %arg01779 %arg1.load = load i16, ptr addrspace(5) %arg11780 store [3 x i32] %arg0.load, ptr addrspace(1) null1781 store i16 %arg1.load, ptr addrspace(1) null1782 ret void1783}1784 1785; byval argument after non-byval stack passed argument1786define void @void_func_v32i32_i32_byval_i8(<32 x i32> %arg0, i32 %arg1, ptr addrspace(5) byval(i8) align 8 %arg2) #0 {1787 ; CHECK-LABEL: name: void_func_v32i32_i32_byval_i81788 ; CHECK: bb.1 (%ir-block.0):1789 ; CHECK-NEXT: 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, $vgpr301790 ; CHECK-NEXT: {{ $}}1791 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01792 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11793 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21794 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31795 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41796 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51797 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61798 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71799 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81800 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91801 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101802 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111803 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr121804 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr131805 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr141806 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr151807 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr161808 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr171809 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr181810 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr191811 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr201812 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr211813 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr221814 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr231815 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr241816 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr251817 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr261818 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr271819 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr281820 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr291821 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr301822 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.21823 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.2, align 16, addrspace 5)1824 ; CHECK-NEXT: [[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), [[LOAD]](s32)1825 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11826 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.1, addrspace 5)1827 ; CHECK-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.01828 ; CHECK-NEXT: [[COPY31:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX2]](p5)1829 ; CHECK-NEXT: [[C:%[0-9]+]]:_(p1) = G_CONSTANT i64 01830 ; CHECK-NEXT: G_STORE [[LOAD1]](s32), [[C]](p1) :: (store (s32) into `ptr addrspace(1) null`, addrspace 1)1831 ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(s8) = G_LOAD [[COPY31]](p5) :: (dereferenceable load (s8) from %ir.arg2, addrspace 5)1832 ; CHECK-NEXT: G_STORE [[LOAD2]](s8), [[C]](p1) :: (store (s8) into `ptr addrspace(1) null`, addrspace 1)1833 ; CHECK-NEXT: SI_RETURN1834 store i32 %arg1, ptr addrspace(1) null1835 %arg2.load = load i8, ptr addrspace(5) %arg21836 store i8 %arg2.load, ptr addrspace(1) null1837 ret void1838}1839 1840; byval argument before non-byval stack passed argument1841define void @void_func_v32i32_byval_i8_i32(<32 x i32> %arg0, ptr addrspace(5) byval(i8) %arg1, i32 %arg2) #0 {1842 ; CHECK-LABEL: name: void_func_v32i32_byval_i8_i321843 ; CHECK: bb.1 (%ir-block.0):1844 ; CHECK-NEXT: 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, $vgpr301845 ; CHECK-NEXT: {{ $}}1846 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01847 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11848 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21849 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31850 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41851 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51852 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61853 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71854 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81855 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91856 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101857 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111858 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr121859 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr131860 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr141861 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr151862 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr161863 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr171864 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr181865 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr191866 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr201867 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr211868 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr221869 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr231870 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr241871 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr251872 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr261873 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr271874 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr281875 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr291876 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr301877 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.21878 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.2, align 16, addrspace 5)1879 ; CHECK-NEXT: [[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), [[LOAD]](s32)1880 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11881 ; CHECK-NEXT: [[COPY31:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX1]](p5)1882 ; CHECK-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.01883 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.0, align 8, addrspace 5)1884 ; CHECK-NEXT: [[C:%[0-9]+]]:_(p1) = G_CONSTANT i64 01885 ; CHECK-NEXT: G_STORE [[LOAD1]](s32), [[C]](p1) :: (store (s32) into `ptr addrspace(1) null`, addrspace 1)1886 ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(s8) = G_LOAD [[COPY31]](p5) :: (dereferenceable load (s8) from %ir.arg1, addrspace 5)1887 ; CHECK-NEXT: G_STORE [[LOAD2]](s8), [[C]](p1) :: (store (s8) into `ptr addrspace(1) null`, addrspace 1)1888 ; CHECK-NEXT: SI_RETURN1889 store i32 %arg2, ptr addrspace(1) null1890 %arg1.load = load i8, ptr addrspace(5) %arg11891 store i8 %arg1.load, ptr addrspace(1) null1892 ret void1893}1894 1895define void @void_func_v32i32_i32_i64(<32 x i32> %arg0, i32 %arg1, i64 %arg2) #0 {1896 ; CHECK-LABEL: name: void_func_v32i32_i32_i641897 ; CHECK: bb.1 (%ir-block.0):1898 ; CHECK-NEXT: 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, $vgpr301899 ; CHECK-NEXT: {{ $}}1900 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01901 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11902 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21903 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31904 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41905 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51906 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61907 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71908 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81909 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91910 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101911 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111912 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr121913 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr131914 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr141915 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr151916 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr161917 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr171918 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr181919 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr191920 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr201921 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr211922 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr221923 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr231924 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr241925 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr251926 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr261927 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr271928 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr281929 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr291930 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr301931 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.31932 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.3, align 16, addrspace 5)1933 ; CHECK-NEXT: [[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), [[LOAD]](s32)1934 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.21935 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.2, addrspace 5)1936 ; CHECK-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11937 ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.1, align 8, addrspace 5)1938 ; CHECK-NEXT: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.01939 ; CHECK-NEXT: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s32) from %fixed-stack.0, addrspace 5)1940 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD2]](s32), [[LOAD3]](s32)1941 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF1942 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `ptr addrspace(1) poison`, addrspace 1)1943 ; CHECK-NEXT: G_STORE [[LOAD1]](s32), [[DEF]](p1) :: (volatile store (s32) into `ptr addrspace(1) poison`, addrspace 1)1944 ; CHECK-NEXT: G_STORE [[MV]](s64), [[DEF]](p1) :: (volatile store (s64) into `ptr addrspace(1) poison`, addrspace 1)1945 ; CHECK-NEXT: SI_RETURN1946 store volatile <32 x i32> %arg0, ptr addrspace(1) poison1947 store volatile i32 %arg1, ptr addrspace(1) poison1948 store volatile i64 %arg2, ptr addrspace(1) poison1949 ret void1950}1951 1952; FIXME: Different ext load types on CI vs. VI1953define void @void_func_v32i32_i1_i8_i16(<32 x i32> %arg0, i1 %arg1, i8 %arg2, i16 %arg3, half %arg4) #0 {1954 ; CHECK-LABEL: name: void_func_v32i32_i1_i8_i161955 ; CHECK: bb.1 (%ir-block.0):1956 ; CHECK-NEXT: 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, $vgpr301957 ; CHECK-NEXT: {{ $}}1958 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01959 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11960 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21961 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31962 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41963 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51964 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61965 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71966 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81967 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91968 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101969 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111970 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr121971 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr131972 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr141973 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr151974 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr161975 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr171976 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr181977 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr191978 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr201979 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr211980 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr221981 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr231982 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr241983 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr251984 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr261985 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr271986 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr281987 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr291988 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr301989 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.41990 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.4, align 16, addrspace 5)1991 ; CHECK-NEXT: [[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), [[LOAD]](s32)1992 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.31993 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s1) from %fixed-stack.3, align 4, addrspace 5)1994 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[LOAD1]](s32)1995 ; CHECK-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.21996 ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s16) from %fixed-stack.2, align 8, addrspace 5)1997 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[LOAD2]](s16)1998 ; CHECK-NEXT: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11999 ; CHECK-NEXT: [[LOAD3:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s16) from %fixed-stack.1, align 4, addrspace 5)2000 ; CHECK-NEXT: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.02001 ; CHECK-NEXT: [[LOAD4:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load (s16) from %fixed-stack.0, align 16, addrspace 5)2002 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2003 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2004 ; CHECK-NEXT: G_STORE [[TRUNC]](s1), [[DEF]](p1) :: (volatile store (s1) into `ptr addrspace(1) poison`, addrspace 1)2005 ; CHECK-NEXT: G_STORE [[TRUNC1]](s8), [[DEF]](p1) :: (volatile store (s8) into `ptr addrspace(1) poison`, addrspace 1)2006 ; CHECK-NEXT: G_STORE [[LOAD3]](s16), [[DEF]](p1) :: (volatile store (s16) into `ptr addrspace(1) poison`, addrspace 1)2007 ; CHECK-NEXT: G_STORE [[LOAD4]](s16), [[DEF]](p1) :: (volatile store (s16) into `ptr addrspace(1) poison`, addrspace 1)2008 ; CHECK-NEXT: SI_RETURN2009 store volatile <32 x i32> %arg0, ptr addrspace(1) poison2010 store volatile i1 %arg1, ptr addrspace(1) poison2011 store volatile i8 %arg2, ptr addrspace(1) poison2012 store volatile i16 %arg3, ptr addrspace(1) poison2013 store volatile half %arg4, ptr addrspace(1) poison2014 ret void2015}2016 2017define void @void_func_v32i32_p3_p5_i16(<32 x i32> %arg0, ptr addrspace(3) %arg1, ptr addrspace(5) %arg2) #0 {2018 ; CHECK-LABEL: name: void_func_v32i32_p3_p5_i162019 ; CHECK: bb.1 (%ir-block.0):2020 ; CHECK-NEXT: 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, $vgpr302021 ; CHECK-NEXT: {{ $}}2022 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02023 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12024 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22025 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32026 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42027 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52028 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62029 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72030 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82031 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92032 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102033 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112034 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122035 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132036 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142037 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152038 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162039 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172040 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182041 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192042 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202043 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212044 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222045 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232046 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr242047 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr252048 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr262049 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr272050 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr282051 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr292052 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr302053 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.22054 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.2, align 16, addrspace 5)2055 ; CHECK-NEXT: [[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), [[LOAD]](s32)2056 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12057 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(p3) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (p3) from %fixed-stack.1, addrspace 5)2058 ; CHECK-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.02059 ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(p5) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (p5) from %fixed-stack.0, align 8, addrspace 5)2060 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2061 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2062 ; CHECK-NEXT: G_STORE [[LOAD1]](p3), [[DEF]](p1) :: (volatile store (p3) into `ptr addrspace(1) poison`, addrspace 1)2063 ; CHECK-NEXT: G_STORE [[LOAD2]](p5), [[DEF]](p1) :: (volatile store (p5) into `ptr addrspace(1) poison`, addrspace 1)2064 ; CHECK-NEXT: SI_RETURN2065 store volatile <32 x i32> %arg0, ptr addrspace(1) poison2066 store volatile ptr addrspace(3) %arg1, ptr addrspace(1) poison2067 store volatile ptr addrspace(5) %arg2, ptr addrspace(1) poison2068 ret void2069}2070 2071define void @void_func_v32i32_v2i32_v2f32(<32 x i32> %arg0, <2 x i32> %arg1, <2 x float> %arg2) #0 {2072 ; CHECK-LABEL: name: void_func_v32i32_v2i32_v2f322073 ; CHECK: bb.1 (%ir-block.0):2074 ; CHECK-NEXT: 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, $vgpr302075 ; CHECK-NEXT: {{ $}}2076 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02077 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12078 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22079 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32080 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42081 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52082 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62083 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72084 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82085 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92086 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102087 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112088 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122089 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132090 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142091 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152092 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162093 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172094 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182095 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192096 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202097 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212098 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222099 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232100 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr242101 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr252102 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr262103 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr272104 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr282105 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr292106 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr302107 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.42108 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.4, align 16, addrspace 5)2109 ; CHECK-NEXT: [[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), [[LOAD]](s32)2110 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.32111 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.3, addrspace 5)2112 ; CHECK-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.22113 ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.2, align 8, addrspace 5)2114 ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[LOAD1]](s32), [[LOAD2]](s32)2115 ; CHECK-NEXT: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12116 ; CHECK-NEXT: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s32) from %fixed-stack.1, addrspace 5)2117 ; CHECK-NEXT: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.02118 ; CHECK-NEXT: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load (s32) from %fixed-stack.0, align 16, addrspace 5)2119 ; CHECK-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[LOAD3]](s32), [[LOAD4]](s32)2120 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2121 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2122 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR1]](<2 x s32>), [[DEF]](p1) :: (volatile store (<2 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2123 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR2]](<2 x s32>), [[DEF]](p1) :: (volatile store (<2 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2124 ; CHECK-NEXT: SI_RETURN2125 store volatile <32 x i32> %arg0, ptr addrspace(1) poison2126 store volatile <2 x i32> %arg1, ptr addrspace(1) poison2127 store volatile <2 x float> %arg2, ptr addrspace(1) poison2128 ret void2129}2130 2131define void @void_func_v32i32_v2i16_v2f16(<32 x i32> %arg0, <2 x i16> %arg1, <2 x half> %arg2) #0 {2132 ; CHECK-LABEL: name: void_func_v32i32_v2i16_v2f162133 ; CHECK: bb.1 (%ir-block.0):2134 ; CHECK-NEXT: 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, $vgpr302135 ; CHECK-NEXT: {{ $}}2136 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02137 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12138 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22139 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32140 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42141 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52142 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62143 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72144 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82145 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92146 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102147 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112148 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122149 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132150 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142151 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152152 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162153 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172154 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182155 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192156 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202157 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212158 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222159 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232160 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr242161 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr252162 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr262163 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr272164 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr282165 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr292166 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr302167 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.22168 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.2, align 16, addrspace 5)2169 ; CHECK-NEXT: [[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), [[LOAD]](s32)2170 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12171 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(<2 x s16>) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (<2 x s16>) from %fixed-stack.1, addrspace 5)2172 ; CHECK-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.02173 ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(<2 x s16>) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (<2 x s16>) from %fixed-stack.0, align 8, addrspace 5)2174 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2175 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2176 ; CHECK-NEXT: G_STORE [[LOAD1]](<2 x s16>), [[DEF]](p1) :: (volatile store (<2 x s16>) into `ptr addrspace(1) poison`, addrspace 1)2177 ; CHECK-NEXT: G_STORE [[LOAD2]](<2 x s16>), [[DEF]](p1) :: (volatile store (<2 x s16>) into `ptr addrspace(1) poison`, addrspace 1)2178 ; CHECK-NEXT: SI_RETURN2179 store volatile <32 x i32> %arg0, ptr addrspace(1) poison2180 store volatile <2 x i16> %arg1, ptr addrspace(1) poison2181 store volatile <2 x half> %arg2, ptr addrspace(1) poison2182 ret void2183}2184 2185define void @void_func_v32i32_v2i64_v2f64(<32 x i32> %arg0, <2 x i64> %arg1, <2 x double> %arg2) #0 {2186 ; CHECK-LABEL: name: void_func_v32i32_v2i64_v2f642187 ; CHECK: bb.1 (%ir-block.0):2188 ; CHECK-NEXT: 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, $vgpr302189 ; CHECK-NEXT: {{ $}}2190 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02191 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12192 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22193 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32194 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42195 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52196 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62197 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72198 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82199 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92200 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102201 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112202 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122203 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132204 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142205 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152206 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162207 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172208 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182209 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192210 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202211 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212212 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222213 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232214 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr242215 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr252216 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr262217 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr272218 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr282219 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr292220 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr302221 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.82222 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.8, align 16, addrspace 5)2223 ; CHECK-NEXT: [[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), [[LOAD]](s32)2224 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.72225 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.7, addrspace 5)2226 ; CHECK-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.62227 ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.6, align 8, addrspace 5)2228 ; CHECK-NEXT: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.52229 ; CHECK-NEXT: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s32) from %fixed-stack.5, addrspace 5)2230 ; CHECK-NEXT: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.42231 ; CHECK-NEXT: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load (s32) from %fixed-stack.4, align 16, addrspace 5)2232 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD1]](s32), [[LOAD2]](s32)2233 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD3]](s32), [[LOAD4]](s32)2234 ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64)2235 ; CHECK-NEXT: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.32236 ; CHECK-NEXT: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load (s32) from %fixed-stack.3, addrspace 5)2237 ; CHECK-NEXT: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.22238 ; CHECK-NEXT: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load (s32) from %fixed-stack.2, align 8, addrspace 5)2239 ; CHECK-NEXT: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12240 ; CHECK-NEXT: [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load (s32) from %fixed-stack.1, addrspace 5)2241 ; CHECK-NEXT: [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.02242 ; CHECK-NEXT: [[LOAD8:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX8]](p5) :: (invariant load (s32) from %fixed-stack.0, align 16, addrspace 5)2243 ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD5]](s32), [[LOAD6]](s32)2244 ; CHECK-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD7]](s32), [[LOAD8]](s32)2245 ; CHECK-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV2]](s64), [[MV3]](s64)2246 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2247 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2248 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR1]](<2 x s64>), [[DEF]](p1) :: (volatile store (<2 x s64>) into `ptr addrspace(1) poison`, addrspace 1)2249 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR2]](<2 x s64>), [[DEF]](p1) :: (volatile store (<2 x s64>) into `ptr addrspace(1) poison`, addrspace 1)2250 ; CHECK-NEXT: SI_RETURN2251 store volatile <32 x i32> %arg0, ptr addrspace(1) poison2252 store volatile <2 x i64> %arg1, ptr addrspace(1) poison2253 store volatile <2 x double> %arg2, ptr addrspace(1) poison2254 ret void2255}2256 2257define void @void_func_v32i32_v4i32_v4f32(<32 x i32> %arg0, <4 x i32> %arg1, <4 x float> %arg2) #0 {2258 ; CHECK-LABEL: name: void_func_v32i32_v4i32_v4f322259 ; CHECK: bb.1 (%ir-block.0):2260 ; CHECK-NEXT: 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, $vgpr302261 ; CHECK-NEXT: {{ $}}2262 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02263 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12264 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22265 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32266 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42267 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52268 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62269 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72270 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82271 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92272 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102273 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112274 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122275 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132276 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142277 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152278 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162279 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172280 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182281 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192282 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202283 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212284 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222285 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232286 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr242287 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr252288 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr262289 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr272290 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr282291 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr292292 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr302293 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.82294 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.8, align 16, addrspace 5)2295 ; CHECK-NEXT: [[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), [[LOAD]](s32)2296 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.72297 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.7, addrspace 5)2298 ; CHECK-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.62299 ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.6, align 8, addrspace 5)2300 ; CHECK-NEXT: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.52301 ; CHECK-NEXT: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s32) from %fixed-stack.5, addrspace 5)2302 ; CHECK-NEXT: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.42303 ; CHECK-NEXT: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load (s32) from %fixed-stack.4, align 16, addrspace 5)2304 ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[LOAD1]](s32), [[LOAD2]](s32), [[LOAD3]](s32), [[LOAD4]](s32)2305 ; CHECK-NEXT: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.32306 ; CHECK-NEXT: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load (s32) from %fixed-stack.3, addrspace 5)2307 ; CHECK-NEXT: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.22308 ; CHECK-NEXT: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load (s32) from %fixed-stack.2, align 8, addrspace 5)2309 ; CHECK-NEXT: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12310 ; CHECK-NEXT: [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load (s32) from %fixed-stack.1, addrspace 5)2311 ; CHECK-NEXT: [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.02312 ; CHECK-NEXT: [[LOAD8:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX8]](p5) :: (invariant load (s32) from %fixed-stack.0, align 16, addrspace 5)2313 ; CHECK-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[LOAD5]](s32), [[LOAD6]](s32), [[LOAD7]](s32), [[LOAD8]](s32)2314 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2315 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2316 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR1]](<4 x s32>), [[DEF]](p1) :: (volatile store (<4 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2317 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR2]](<4 x s32>), [[DEF]](p1) :: (volatile store (<4 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2318 ; CHECK-NEXT: SI_RETURN2319 store volatile <32 x i32> %arg0, ptr addrspace(1) poison2320 store volatile <4 x i32> %arg1, ptr addrspace(1) poison2321 store volatile <4 x float> %arg2, ptr addrspace(1) poison2322 ret void2323}2324 2325define void @void_func_v32i32_v8i32_v8f32(<32 x i32> %arg0, <8 x i32> %arg1, <8 x float> %arg2) #0 {2326 ; CHECK-LABEL: name: void_func_v32i32_v8i32_v8f322327 ; CHECK: bb.1 (%ir-block.0):2328 ; CHECK-NEXT: 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, $vgpr302329 ; CHECK-NEXT: {{ $}}2330 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02331 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12332 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22333 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32334 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42335 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52336 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62337 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72338 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82339 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92340 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102341 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112342 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122343 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132344 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142345 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152346 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162347 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172348 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182349 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192350 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202351 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212352 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222353 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232354 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr242355 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr252356 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr262357 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr272358 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr282359 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr292360 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr302361 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.162362 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.16, align 16, addrspace 5)2363 ; CHECK-NEXT: [[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), [[LOAD]](s32)2364 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.152365 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.15, addrspace 5)2366 ; CHECK-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.142367 ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.14, align 8, addrspace 5)2368 ; CHECK-NEXT: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.132369 ; CHECK-NEXT: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s32) from %fixed-stack.13, addrspace 5)2370 ; CHECK-NEXT: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.122371 ; CHECK-NEXT: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load (s32) from %fixed-stack.12, align 16, addrspace 5)2372 ; CHECK-NEXT: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.112373 ; CHECK-NEXT: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load (s32) from %fixed-stack.11, addrspace 5)2374 ; CHECK-NEXT: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.102375 ; CHECK-NEXT: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load (s32) from %fixed-stack.10, align 8, addrspace 5)2376 ; CHECK-NEXT: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.92377 ; CHECK-NEXT: [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load (s32) from %fixed-stack.9, addrspace 5)2378 ; CHECK-NEXT: [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.82379 ; CHECK-NEXT: [[LOAD8:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX8]](p5) :: (invariant load (s32) from %fixed-stack.8, align 16, addrspace 5)2380 ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[LOAD1]](s32), [[LOAD2]](s32), [[LOAD3]](s32), [[LOAD4]](s32), [[LOAD5]](s32), [[LOAD6]](s32), [[LOAD7]](s32), [[LOAD8]](s32)2381 ; CHECK-NEXT: [[FRAME_INDEX9:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.72382 ; CHECK-NEXT: [[LOAD9:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX9]](p5) :: (invariant load (s32) from %fixed-stack.7, addrspace 5)2383 ; CHECK-NEXT: [[FRAME_INDEX10:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.62384 ; CHECK-NEXT: [[LOAD10:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX10]](p5) :: (invariant load (s32) from %fixed-stack.6, align 8, addrspace 5)2385 ; CHECK-NEXT: [[FRAME_INDEX11:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.52386 ; CHECK-NEXT: [[LOAD11:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX11]](p5) :: (invariant load (s32) from %fixed-stack.5, addrspace 5)2387 ; CHECK-NEXT: [[FRAME_INDEX12:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.42388 ; CHECK-NEXT: [[LOAD12:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX12]](p5) :: (invariant load (s32) from %fixed-stack.4, align 16, addrspace 5)2389 ; CHECK-NEXT: [[FRAME_INDEX13:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.32390 ; CHECK-NEXT: [[LOAD13:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX13]](p5) :: (invariant load (s32) from %fixed-stack.3, addrspace 5)2391 ; CHECK-NEXT: [[FRAME_INDEX14:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.22392 ; CHECK-NEXT: [[LOAD14:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX14]](p5) :: (invariant load (s32) from %fixed-stack.2, align 8, addrspace 5)2393 ; CHECK-NEXT: [[FRAME_INDEX15:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12394 ; CHECK-NEXT: [[LOAD15:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX15]](p5) :: (invariant load (s32) from %fixed-stack.1, addrspace 5)2395 ; CHECK-NEXT: [[FRAME_INDEX16:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.02396 ; CHECK-NEXT: [[LOAD16:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX16]](p5) :: (invariant load (s32) from %fixed-stack.0, align 16, addrspace 5)2397 ; CHECK-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[LOAD9]](s32), [[LOAD10]](s32), [[LOAD11]](s32), [[LOAD12]](s32), [[LOAD13]](s32), [[LOAD14]](s32), [[LOAD15]](s32), [[LOAD16]](s32)2398 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2399 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2400 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR1]](<8 x s32>), [[DEF]](p1) :: (volatile store (<8 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2401 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR2]](<8 x s32>), [[DEF]](p1) :: (volatile store (<8 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2402 ; CHECK-NEXT: SI_RETURN2403 store volatile <32 x i32> %arg0, ptr addrspace(1) poison2404 store volatile <8 x i32> %arg1, ptr addrspace(1) poison2405 store volatile <8 x float> %arg2, ptr addrspace(1) poison2406 ret void2407}2408 2409define void @void_func_v32i32_v16i32_v16f32(<32 x i32> %arg0, <16 x i32> %arg1, <16 x float> %arg2) #0 {2410 ; CHECK-LABEL: name: void_func_v32i32_v16i32_v16f322411 ; CHECK: bb.1 (%ir-block.0):2412 ; CHECK-NEXT: 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, $vgpr302413 ; CHECK-NEXT: {{ $}}2414 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02415 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12416 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22417 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32418 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42419 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52420 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62421 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72422 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82423 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92424 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102425 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112426 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122427 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132428 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142429 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152430 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162431 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172432 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182433 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192434 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202435 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212436 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222437 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232438 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr242439 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr252440 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr262441 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr272442 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr282443 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr292444 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr302445 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.322446 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.32, align 16, addrspace 5)2447 ; CHECK-NEXT: [[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), [[LOAD]](s32)2448 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.312449 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.31, addrspace 5)2450 ; CHECK-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.302451 ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.30, align 8, addrspace 5)2452 ; CHECK-NEXT: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.292453 ; CHECK-NEXT: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s32) from %fixed-stack.29, addrspace 5)2454 ; CHECK-NEXT: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.282455 ; CHECK-NEXT: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load (s32) from %fixed-stack.28, align 16, addrspace 5)2456 ; CHECK-NEXT: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.272457 ; CHECK-NEXT: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load (s32) from %fixed-stack.27, addrspace 5)2458 ; CHECK-NEXT: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.262459 ; CHECK-NEXT: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load (s32) from %fixed-stack.26, align 8, addrspace 5)2460 ; CHECK-NEXT: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.252461 ; CHECK-NEXT: [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load (s32) from %fixed-stack.25, addrspace 5)2462 ; CHECK-NEXT: [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.242463 ; CHECK-NEXT: [[LOAD8:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX8]](p5) :: (invariant load (s32) from %fixed-stack.24, align 16, addrspace 5)2464 ; CHECK-NEXT: [[FRAME_INDEX9:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.232465 ; CHECK-NEXT: [[LOAD9:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX9]](p5) :: (invariant load (s32) from %fixed-stack.23, addrspace 5)2466 ; CHECK-NEXT: [[FRAME_INDEX10:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.222467 ; CHECK-NEXT: [[LOAD10:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX10]](p5) :: (invariant load (s32) from %fixed-stack.22, align 8, addrspace 5)2468 ; CHECK-NEXT: [[FRAME_INDEX11:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.212469 ; CHECK-NEXT: [[LOAD11:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX11]](p5) :: (invariant load (s32) from %fixed-stack.21, addrspace 5)2470 ; CHECK-NEXT: [[FRAME_INDEX12:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.202471 ; CHECK-NEXT: [[LOAD12:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX12]](p5) :: (invariant load (s32) from %fixed-stack.20, align 16, addrspace 5)2472 ; CHECK-NEXT: [[FRAME_INDEX13:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.192473 ; CHECK-NEXT: [[LOAD13:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX13]](p5) :: (invariant load (s32) from %fixed-stack.19, addrspace 5)2474 ; CHECK-NEXT: [[FRAME_INDEX14:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.182475 ; CHECK-NEXT: [[LOAD14:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX14]](p5) :: (invariant load (s32) from %fixed-stack.18, align 8, addrspace 5)2476 ; CHECK-NEXT: [[FRAME_INDEX15:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.172477 ; CHECK-NEXT: [[LOAD15:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX15]](p5) :: (invariant load (s32) from %fixed-stack.17, addrspace 5)2478 ; CHECK-NEXT: [[FRAME_INDEX16:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.162479 ; CHECK-NEXT: [[LOAD16:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX16]](p5) :: (invariant load (s32) from %fixed-stack.16, align 16, addrspace 5)2480 ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[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), [[LOAD16]](s32)2481 ; CHECK-NEXT: [[FRAME_INDEX17:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.152482 ; CHECK-NEXT: [[LOAD17:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX17]](p5) :: (invariant load (s32) from %fixed-stack.15, addrspace 5)2483 ; CHECK-NEXT: [[FRAME_INDEX18:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.142484 ; CHECK-NEXT: [[LOAD18:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX18]](p5) :: (invariant load (s32) from %fixed-stack.14, align 8, addrspace 5)2485 ; CHECK-NEXT: [[FRAME_INDEX19:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.132486 ; CHECK-NEXT: [[LOAD19:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX19]](p5) :: (invariant load (s32) from %fixed-stack.13, addrspace 5)2487 ; CHECK-NEXT: [[FRAME_INDEX20:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.122488 ; CHECK-NEXT: [[LOAD20:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX20]](p5) :: (invariant load (s32) from %fixed-stack.12, align 16, addrspace 5)2489 ; CHECK-NEXT: [[FRAME_INDEX21:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.112490 ; CHECK-NEXT: [[LOAD21:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX21]](p5) :: (invariant load (s32) from %fixed-stack.11, addrspace 5)2491 ; CHECK-NEXT: [[FRAME_INDEX22:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.102492 ; CHECK-NEXT: [[LOAD22:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX22]](p5) :: (invariant load (s32) from %fixed-stack.10, align 8, addrspace 5)2493 ; CHECK-NEXT: [[FRAME_INDEX23:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.92494 ; CHECK-NEXT: [[LOAD23:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX23]](p5) :: (invariant load (s32) from %fixed-stack.9, addrspace 5)2495 ; CHECK-NEXT: [[FRAME_INDEX24:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.82496 ; CHECK-NEXT: [[LOAD24:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX24]](p5) :: (invariant load (s32) from %fixed-stack.8, align 16, addrspace 5)2497 ; CHECK-NEXT: [[FRAME_INDEX25:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.72498 ; CHECK-NEXT: [[LOAD25:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX25]](p5) :: (invariant load (s32) from %fixed-stack.7, addrspace 5)2499 ; CHECK-NEXT: [[FRAME_INDEX26:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.62500 ; CHECK-NEXT: [[LOAD26:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX26]](p5) :: (invariant load (s32) from %fixed-stack.6, align 8, addrspace 5)2501 ; CHECK-NEXT: [[FRAME_INDEX27:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.52502 ; CHECK-NEXT: [[LOAD27:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX27]](p5) :: (invariant load (s32) from %fixed-stack.5, addrspace 5)2503 ; CHECK-NEXT: [[FRAME_INDEX28:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.42504 ; CHECK-NEXT: [[LOAD28:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX28]](p5) :: (invariant load (s32) from %fixed-stack.4, align 16, addrspace 5)2505 ; CHECK-NEXT: [[FRAME_INDEX29:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.32506 ; CHECK-NEXT: [[LOAD29:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX29]](p5) :: (invariant load (s32) from %fixed-stack.3, addrspace 5)2507 ; CHECK-NEXT: [[FRAME_INDEX30:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.22508 ; CHECK-NEXT: [[LOAD30:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX30]](p5) :: (invariant load (s32) from %fixed-stack.2, align 8, addrspace 5)2509 ; CHECK-NEXT: [[FRAME_INDEX31:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12510 ; CHECK-NEXT: [[LOAD31:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX31]](p5) :: (invariant load (s32) from %fixed-stack.1, addrspace 5)2511 ; CHECK-NEXT: [[FRAME_INDEX32:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.02512 ; CHECK-NEXT: [[LOAD32:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX32]](p5) :: (invariant load (s32) from %fixed-stack.0, align 16, addrspace 5)2513 ; CHECK-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[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), [[LOAD32]](s32)2514 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2515 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2516 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR1]](<16 x s32>), [[DEF]](p1) :: (volatile store (<16 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2517 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR2]](<16 x s32>), [[DEF]](p1) :: (volatile store (<16 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2518 ; CHECK-NEXT: SI_RETURN2519 store volatile <32 x i32> %arg0, ptr addrspace(1) poison2520 store volatile <16 x i32> %arg1, ptr addrspace(1) poison2521 store volatile <16 x float> %arg2, ptr addrspace(1) poison2522 ret void2523}2524 2525; Make sure v3 isn't a wasted register because of v3 types being promoted to v42526define void @void_func_v3f32_wasted_reg(<3 x float> %arg0, i32 %arg1) #0 {2527 ; CHECK-LABEL: name: void_func_v3f32_wasted_reg2528 ; CHECK: bb.1 (%ir-block.0):2529 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr32530 ; CHECK-NEXT: {{ $}}2531 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02532 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12533 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22534 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)2535 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32536 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 02537 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 12538 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 22539 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p3) = G_IMPLICIT_DEF2540 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C]](s32)2541 ; CHECK-NEXT: [[EVEC1:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C1]](s32)2542 ; CHECK-NEXT: [[EVEC2:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C2]](s32)2543 ; CHECK-NEXT: G_STORE [[EVEC]](s32), [[DEF]](p3) :: (volatile store (s32) into `ptr addrspace(3) poison`, addrspace 3)2544 ; CHECK-NEXT: G_STORE [[EVEC1]](s32), [[DEF]](p3) :: (volatile store (s32) into `ptr addrspace(3) poison`, addrspace 3)2545 ; CHECK-NEXT: G_STORE [[EVEC2]](s32), [[DEF]](p3) :: (volatile store (s32) into `ptr addrspace(3) poison`, addrspace 3)2546 ; CHECK-NEXT: G_STORE [[COPY3]](s32), [[DEF]](p3) :: (volatile store (s32) into `ptr addrspace(3) poison`, addrspace 3)2547 ; CHECK-NEXT: SI_RETURN2548 %arg0.0 = extractelement <3 x float> %arg0, i32 02549 %arg0.1 = extractelement <3 x float> %arg0, i32 12550 %arg0.2 = extractelement <3 x float> %arg0, i32 22551 store volatile float %arg0.0, ptr addrspace(3) poison2552 store volatile float %arg0.1, ptr addrspace(3) poison2553 store volatile float %arg0.2, ptr addrspace(3) poison2554 store volatile i32 %arg1, ptr addrspace(3) poison2555 ret void2556}2557 2558define void @void_func_v3i32_wasted_reg(<3 x i32> %arg0, i32 %arg1) #0 {2559 ; CHECK-LABEL: name: void_func_v3i32_wasted_reg2560 ; CHECK: bb.1 (%ir-block.0):2561 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr32562 ; CHECK-NEXT: {{ $}}2563 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02564 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12565 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22566 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)2567 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32568 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 02569 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 12570 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 22571 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p3) = G_IMPLICIT_DEF2572 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C]](s32)2573 ; CHECK-NEXT: [[EVEC1:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C1]](s32)2574 ; CHECK-NEXT: [[EVEC2:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C2]](s32)2575 ; CHECK-NEXT: G_STORE [[EVEC]](s32), [[DEF]](p3) :: (volatile store (s32) into `ptr addrspace(3) poison`, addrspace 3)2576 ; CHECK-NEXT: G_STORE [[EVEC1]](s32), [[DEF]](p3) :: (volatile store (s32) into `ptr addrspace(3) poison`, addrspace 3)2577 ; CHECK-NEXT: G_STORE [[EVEC2]](s32), [[DEF]](p3) :: (volatile store (s32) into `ptr addrspace(3) poison`, addrspace 3)2578 ; CHECK-NEXT: G_STORE [[COPY3]](s32), [[DEF]](p3) :: (volatile store (s32) into `ptr addrspace(3) poison`, addrspace 3)2579 ; CHECK-NEXT: SI_RETURN2580 %arg0.0 = extractelement <3 x i32> %arg0, i32 02581 %arg0.1 = extractelement <3 x i32> %arg0, i32 12582 %arg0.2 = extractelement <3 x i32> %arg0, i32 22583 store volatile i32 %arg0.0, ptr addrspace(3) poison2584 store volatile i32 %arg0.1, ptr addrspace(3) poison2585 store volatile i32 %arg0.2, ptr addrspace(3) poison2586 store volatile i32 %arg1, ptr addrspace(3) poison2587 ret void2588}2589 2590; Check there is no crash.2591define void @void_func_v16i8(<16 x i8> %arg0) #0 {2592 ; CHECK-LABEL: name: void_func_v16i82593 ; CHECK: bb.1 (%ir-block.0):2594 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr152595 ; CHECK-NEXT: {{ $}}2596 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02597 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)2598 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12599 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)2600 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22601 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)2602 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32603 ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[COPY3]](s32)2604 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42605 ; CHECK-NEXT: [[TRUNC4:%[0-9]+]]:_(s16) = G_TRUNC [[COPY4]](s32)2606 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52607 ; CHECK-NEXT: [[TRUNC5:%[0-9]+]]:_(s16) = G_TRUNC [[COPY5]](s32)2608 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62609 ; CHECK-NEXT: [[TRUNC6:%[0-9]+]]:_(s16) = G_TRUNC [[COPY6]](s32)2610 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72611 ; CHECK-NEXT: [[TRUNC7:%[0-9]+]]:_(s16) = G_TRUNC [[COPY7]](s32)2612 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82613 ; CHECK-NEXT: [[TRUNC8:%[0-9]+]]:_(s16) = G_TRUNC [[COPY8]](s32)2614 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92615 ; CHECK-NEXT: [[TRUNC9:%[0-9]+]]:_(s16) = G_TRUNC [[COPY9]](s32)2616 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102617 ; CHECK-NEXT: [[TRUNC10:%[0-9]+]]:_(s16) = G_TRUNC [[COPY10]](s32)2618 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112619 ; CHECK-NEXT: [[TRUNC11:%[0-9]+]]:_(s16) = G_TRUNC [[COPY11]](s32)2620 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122621 ; CHECK-NEXT: [[TRUNC12:%[0-9]+]]:_(s16) = G_TRUNC [[COPY12]](s32)2622 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132623 ; CHECK-NEXT: [[TRUNC13:%[0-9]+]]:_(s16) = G_TRUNC [[COPY13]](s32)2624 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142625 ; CHECK-NEXT: [[TRUNC14:%[0-9]+]]:_(s16) = G_TRUNC [[COPY14]](s32)2626 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152627 ; CHECK-NEXT: [[TRUNC15:%[0-9]+]]:_(s16) = G_TRUNC [[COPY15]](s32)2628 ; CHECK-NEXT: [[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)2629 ; CHECK-NEXT: [[TRUNC16:%[0-9]+]]:_(<16 x s8>) = G_TRUNC [[BUILD_VECTOR]](<16 x s16>)2630 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2631 ; CHECK-NEXT: G_STORE [[TRUNC16]](<16 x s8>), [[DEF]](p1) :: (volatile store (<16 x s8>) into `ptr addrspace(1) poison`, addrspace 1)2632 ; CHECK-NEXT: SI_RETURN2633 store volatile <16 x i8> %arg0, ptr addrspace(1) poison2634 ret void2635}2636 2637; Check there is no crash.2638define void @void_func_v32i32_v16i8(<32 x i32> %arg0, <16 x i8> %arg1) #0 {2639 ; CHECK-LABEL: name: void_func_v32i32_v16i82640 ; CHECK: bb.1 (%ir-block.0):2641 ; CHECK-NEXT: 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, $vgpr302642 ; CHECK-NEXT: {{ $}}2643 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02644 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12645 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22646 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32647 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42648 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52649 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62650 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72651 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82652 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92653 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102654 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112655 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122656 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132657 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142658 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152659 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162660 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172661 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182662 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192663 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202664 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212665 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222666 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232667 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr242668 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr252669 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr262670 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr272671 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr282672 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr292673 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr302674 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.162675 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.16, align 16, addrspace 5)2676 ; CHECK-NEXT: [[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), [[LOAD]](s32)2677 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.152678 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s16) from %fixed-stack.15, align 4, addrspace 5)2679 ; CHECK-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.142680 ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s16) from %fixed-stack.14, align 8, addrspace 5)2681 ; CHECK-NEXT: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.132682 ; CHECK-NEXT: [[LOAD3:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s16) from %fixed-stack.13, align 4, addrspace 5)2683 ; CHECK-NEXT: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.122684 ; CHECK-NEXT: [[LOAD4:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load (s16) from %fixed-stack.12, align 16, addrspace 5)2685 ; CHECK-NEXT: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.112686 ; CHECK-NEXT: [[LOAD5:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load (s16) from %fixed-stack.11, align 4, addrspace 5)2687 ; CHECK-NEXT: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.102688 ; CHECK-NEXT: [[LOAD6:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load (s16) from %fixed-stack.10, align 8, addrspace 5)2689 ; CHECK-NEXT: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.92690 ; CHECK-NEXT: [[LOAD7:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load (s16) from %fixed-stack.9, align 4, addrspace 5)2691 ; CHECK-NEXT: [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.82692 ; CHECK-NEXT: [[LOAD8:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX8]](p5) :: (invariant load (s16) from %fixed-stack.8, align 16, addrspace 5)2693 ; CHECK-NEXT: [[FRAME_INDEX9:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.72694 ; CHECK-NEXT: [[LOAD9:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX9]](p5) :: (invariant load (s16) from %fixed-stack.7, align 4, addrspace 5)2695 ; CHECK-NEXT: [[FRAME_INDEX10:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.62696 ; CHECK-NEXT: [[LOAD10:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX10]](p5) :: (invariant load (s16) from %fixed-stack.6, align 8, addrspace 5)2697 ; CHECK-NEXT: [[FRAME_INDEX11:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.52698 ; CHECK-NEXT: [[LOAD11:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX11]](p5) :: (invariant load (s16) from %fixed-stack.5, align 4, addrspace 5)2699 ; CHECK-NEXT: [[FRAME_INDEX12:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.42700 ; CHECK-NEXT: [[LOAD12:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX12]](p5) :: (invariant load (s16) from %fixed-stack.4, align 16, addrspace 5)2701 ; CHECK-NEXT: [[FRAME_INDEX13:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.32702 ; CHECK-NEXT: [[LOAD13:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX13]](p5) :: (invariant load (s16) from %fixed-stack.3, align 4, addrspace 5)2703 ; CHECK-NEXT: [[FRAME_INDEX14:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.22704 ; CHECK-NEXT: [[LOAD14:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX14]](p5) :: (invariant load (s16) from %fixed-stack.2, align 8, addrspace 5)2705 ; CHECK-NEXT: [[FRAME_INDEX15:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12706 ; CHECK-NEXT: [[LOAD15:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX15]](p5) :: (invariant load (s16) from %fixed-stack.1, align 4, addrspace 5)2707 ; CHECK-NEXT: [[FRAME_INDEX16:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.02708 ; CHECK-NEXT: [[LOAD16:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX16]](p5) :: (invariant load (s16) from %fixed-stack.0, align 16, addrspace 5)2709 ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<16 x s16>) = G_BUILD_VECTOR [[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), [[LOAD16]](s16)2710 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<16 x s8>) = G_TRUNC [[BUILD_VECTOR1]](<16 x s16>)2711 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2712 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `ptr addrspace(1) poison`, addrspace 1)2713 ; CHECK-NEXT: G_STORE [[TRUNC]](<16 x s8>), [[DEF]](p1) :: (volatile store (<16 x s8>) into `ptr addrspace(1) poison`, addrspace 1)2714 ; CHECK-NEXT: SI_RETURN2715 store volatile <32 x i32> %arg0, ptr addrspace(1) poison2716 store volatile <16 x i8> %arg1, ptr addrspace(1) poison2717 ret void2718}2719 2720define void @pointer_in_struct_argument({ptr addrspace(3), ptr addrspace(1)} %arg0, i8 %pad, {ptr addrspace(3), ptr addrspace(1234)} %arg1) {2721 ; CHECK-LABEL: name: pointer_in_struct_argument2722 ; CHECK: bb.1 (%ir-block.0):2723 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr62724 ; CHECK-NEXT: {{ $}}2725 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr02726 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12727 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22728 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY1]](s32), [[COPY2]](s32)2729 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32730 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY3]](s32)2731 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC]](s16)2732 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(p3) = COPY $vgpr42733 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52734 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62735 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(p1234) = G_MERGE_VALUES [[COPY5]](s32), [[COPY6]](s32)2736 ; CHECK-NEXT: [[C:%[0-9]+]]:_(p1) = G_CONSTANT i64 02737 ; CHECK-NEXT: G_STORE [[COPY]](p3), [[C]](p1) :: (volatile store (p3) into `ptr addrspace(1) null`, addrspace 1)2738 ; CHECK-NEXT: G_STORE [[MV]](p1), [[C]](p1) :: (volatile store (p1) into `ptr addrspace(1) null`, addrspace 1)2739 ; CHECK-NEXT: G_STORE [[TRUNC1]](s8), [[C]](p1) :: (volatile store (s8) into `ptr addrspace(1) null`, addrspace 1)2740 ; CHECK-NEXT: G_STORE [[COPY4]](p3), [[C]](p1) :: (volatile store (p3) into `ptr addrspace(1) null`, addrspace 1)2741 ; CHECK-NEXT: G_STORE [[MV1]](p1234), [[C]](p1) :: (volatile store (p1234) into `ptr addrspace(1) null`, addrspace 1)2742 ; CHECK-NEXT: SI_RETURN2743 %val0 = extractvalue {ptr addrspace(3), ptr addrspace(1)} %arg0, 02744 %val1 = extractvalue {ptr addrspace(3), ptr addrspace(1)} %arg0, 12745 %val2 = extractvalue {ptr addrspace(3), ptr addrspace(1234)} %arg1, 02746 %val3 = extractvalue {ptr addrspace(3), ptr addrspace(1234)} %arg1, 12747 store volatile ptr addrspace(3) %val0, ptr addrspace(1) null2748 store volatile ptr addrspace(1) %val1, ptr addrspace(1) null2749 store volatile i8 %pad, ptr addrspace(1) null2750 store volatile ptr addrspace(3) %val2, ptr addrspace(1) null2751 store volatile ptr addrspace(1234) %val3, ptr addrspace(1) null2752 ret void2753}2754 2755define void @vector_ptr_in_struct_arg({ <2 x ptr addrspace(1)>, <2 x ptr addrspace(3)> } %arg) {2756 ; CHECK-LABEL: name: vector_ptr_in_struct_arg2757 ; CHECK: bb.1 (%ir-block.0):2758 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr52759 ; CHECK-NEXT: {{ $}}2760 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02761 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12762 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22763 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32764 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2765 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2766 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p1>) = G_BUILD_VECTOR [[MV]](p1), [[MV1]](p1)2767 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(p3) = COPY $vgpr42768 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(p3) = COPY $vgpr52769 ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x p3>) = G_BUILD_VECTOR [[COPY4]](p3), [[COPY5]](p3)2770 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2771 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<2 x p1>), [[DEF]](p1) :: (store (<2 x p1>) into `ptr addrspace(1) poison`, addrspace 1)2772 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 162773 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[DEF]], [[C]](s64)2774 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR1]](<2 x p3>), [[PTR_ADD]](p1) :: (store (<2 x p3>) into `ptr addrspace(1) poison` + 16, align 16, addrspace 1)2775 ; CHECK-NEXT: SI_RETURN2776 store { <2 x ptr addrspace(1)>, <2 x ptr addrspace(3)> } %arg, ptr addrspace(1) poison2777 ret void2778}2779 2780define void @void_func_i1_inreg(i1 inreg %arg0) #0 {2781 ; CHECK-LABEL: name: void_func_i1_inreg2782 ; CHECK: bb.1 (%ir-block.0):2783 ; CHECK-NEXT: liveins: $sgpr162784 ; CHECK-NEXT: {{ $}}2785 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr162786 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)2787 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2788 ; CHECK-NEXT: G_STORE [[TRUNC]](s1), [[DEF]](p1) :: (store (s1) into `ptr addrspace(1) poison`, addrspace 1)2789 ; CHECK-NEXT: SI_RETURN2790 store i1 %arg0, ptr addrspace(1) poison2791 ret void2792}2793 2794define void @void_func_i8_inreg(i8 inreg %arg0) #0 {2795 ; CHECK-LABEL: name: void_func_i8_inreg2796 ; CHECK: bb.1 (%ir-block.0):2797 ; CHECK-NEXT: liveins: $sgpr162798 ; CHECK-NEXT: {{ $}}2799 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr162800 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)2801 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC]](s16)2802 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2803 ; CHECK-NEXT: G_STORE [[TRUNC1]](s8), [[DEF]](p1) :: (store (s8) into `ptr addrspace(1) poison`, addrspace 1)2804 ; CHECK-NEXT: SI_RETURN2805 store i8 %arg0, ptr addrspace(1) poison2806 ret void2807}2808 2809define void @void_func_i16_inreg(i16 inreg %arg0) #0 {2810 ; CHECK-LABEL: name: void_func_i16_inreg2811 ; CHECK: bb.1 (%ir-block.0):2812 ; CHECK-NEXT: liveins: $sgpr162813 ; CHECK-NEXT: {{ $}}2814 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr162815 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)2816 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2817 ; CHECK-NEXT: G_STORE [[TRUNC]](s16), [[DEF]](p1) :: (store (s16) into `ptr addrspace(1) poison`, addrspace 1)2818 ; CHECK-NEXT: SI_RETURN2819 store i16 %arg0, ptr addrspace(1) poison2820 ret void2821}2822 2823define void @void_func_i32_inreg(i32 inreg %arg0) #0 {2824 ; CHECK-LABEL: name: void_func_i32_inreg2825 ; CHECK: bb.1 (%ir-block.0):2826 ; CHECK-NEXT: liveins: $sgpr162827 ; CHECK-NEXT: {{ $}}2828 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr162829 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2830 ; CHECK-NEXT: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)2831 ; CHECK-NEXT: SI_RETURN2832 store i32 %arg0, ptr addrspace(1) poison2833 ret void2834}2835 2836define void @void_func_i48_inreg(i48 inreg %arg0) #0 {2837 ; CHECK-LABEL: name: void_func_i48_inreg2838 ; CHECK: bb.1 (%ir-block.0):2839 ; CHECK-NEXT: liveins: $sgpr16, $sgpr172840 ; CHECK-NEXT: {{ $}}2841 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr162842 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr172843 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2844 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s48) = G_TRUNC [[MV]](s64)2845 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2846 ; CHECK-NEXT: G_STORE [[TRUNC]](s48), [[DEF]](p1) :: (store (s48) into `ptr addrspace(1) poison`, align 8, addrspace 1)2847 ; CHECK-NEXT: SI_RETURN2848 store i48 %arg0, ptr addrspace(1) poison2849 ret void2850}2851 2852define void @void_func_i64_inreg(i64 inreg %arg0) #0 {2853 ; CHECK-LABEL: name: void_func_i64_inreg2854 ; CHECK: bb.1 (%ir-block.0):2855 ; CHECK-NEXT: liveins: $sgpr16, $sgpr172856 ; CHECK-NEXT: {{ $}}2857 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr162858 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr172859 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2860 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2861 ; CHECK-NEXT: G_STORE [[MV]](s64), [[DEF]](p1) :: (store (s64) into `ptr addrspace(1) poison`, addrspace 1)2862 ; CHECK-NEXT: SI_RETURN2863 store i64 %arg0, ptr addrspace(1) poison2864 ret void2865}2866 2867define void @void_func_i96_inreg(i96 inreg %arg0) #0 {2868 ; CHECK-LABEL: name: void_func_i96_inreg2869 ; CHECK: bb.1 (%ir-block.0):2870 ; CHECK-NEXT: liveins: $sgpr16, $sgpr17, $sgpr182871 ; CHECK-NEXT: {{ $}}2872 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr162873 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr172874 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr182875 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s96) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)2876 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2877 ; CHECK-NEXT: G_STORE [[MV]](s96), [[DEF]](p1) :: (store (s96) into `ptr addrspace(1) poison`, align 8, addrspace 1)2878 ; CHECK-NEXT: SI_RETURN2879 store i96 %arg0, ptr addrspace(1) poison2880 ret void2881}2882 2883define void @void_func_i128_inreg(i128 inreg %arg0) #0 {2884 ; CHECK-LABEL: name: void_func_i128_inreg2885 ; CHECK: bb.1 (%ir-block.0):2886 ; CHECK-NEXT: liveins: $sgpr16, $sgpr17, $sgpr18, $sgpr192887 ; CHECK-NEXT: {{ $}}2888 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr162889 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr172890 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr182891 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr192892 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)2893 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2894 ; CHECK-NEXT: G_STORE [[MV]](s128), [[DEF]](p1) :: (store (s128) into `ptr addrspace(1) poison`, align 8, addrspace 1)2895 ; CHECK-NEXT: SI_RETURN2896 store i128 %arg0, ptr addrspace(1) poison2897 ret void2898}2899 2900define void @void_func_f16_inreg(half inreg %arg0) #0 {2901 ; CHECK-LABEL: name: void_func_f16_inreg2902 ; CHECK: bb.1 (%ir-block.0):2903 ; CHECK-NEXT: liveins: $sgpr162904 ; CHECK-NEXT: {{ $}}2905 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr162906 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)2907 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2908 ; CHECK-NEXT: G_STORE [[TRUNC]](s16), [[DEF]](p1) :: (store (s16) into `ptr addrspace(1) poison`, addrspace 1)2909 ; CHECK-NEXT: SI_RETURN2910 store half %arg0, ptr addrspace(1) poison2911 ret void2912}2913 2914define void @void_func_bf16_inreg(bfloat inreg %arg0) #0 {2915 ; CHECK-LABEL: name: void_func_bf16_inreg2916 ; CHECK: bb.1 (%ir-block.0):2917 ; CHECK-NEXT: liveins: $sgpr162918 ; CHECK-NEXT: {{ $}}2919 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr162920 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)2921 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2922 ; CHECK-NEXT: G_STORE [[TRUNC]](s16), [[DEF]](p1) :: (store (s16) into `ptr addrspace(1) poison`, addrspace 1)2923 ; CHECK-NEXT: SI_RETURN2924 store bfloat %arg0, ptr addrspace(1) poison2925 ret void2926}2927 2928define void @void_func_f32_inreg(float inreg %arg0) #0 {2929 ; CHECK-LABEL: name: void_func_f32_inreg2930 ; CHECK: bb.1 (%ir-block.0):2931 ; CHECK-NEXT: liveins: $sgpr162932 ; CHECK-NEXT: {{ $}}2933 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr162934 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2935 ; CHECK-NEXT: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)2936 ; CHECK-NEXT: SI_RETURN2937 store float %arg0, ptr addrspace(1) poison2938 ret void2939}2940 2941define void @void_func_f64_inreg(double inreg %arg0) #0 {2942 ; CHECK-LABEL: name: void_func_f64_inreg2943 ; CHECK: bb.1 (%ir-block.0):2944 ; CHECK-NEXT: liveins: $sgpr16, $sgpr172945 ; CHECK-NEXT: {{ $}}2946 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr162947 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr172948 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2949 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2950 ; CHECK-NEXT: G_STORE [[MV]](s64), [[DEF]](p1) :: (store (s64) into `ptr addrspace(1) poison`, addrspace 1)2951 ; CHECK-NEXT: SI_RETURN2952 store double %arg0, ptr addrspace(1) poison2953 ret void2954}2955 2956define void @void_func_v2i1_inreg(<2 x i1> inreg %arg0) #0 {2957 ; CHECK-LABEL: name: void_func_v2i1_inreg2958 ; CHECK: bb.1 (%ir-block.0):2959 ; CHECK-NEXT: liveins: $sgpr16, $sgpr172960 ; CHECK-NEXT: {{ $}}2961 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr162962 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)2963 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr172964 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)2965 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16)2966 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(<2 x s1>) = G_TRUNC [[BUILD_VECTOR]](<2 x s16>)2967 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2968 ; CHECK-NEXT: G_STORE [[TRUNC2]](<2 x s1>), [[DEF]](p1) :: (store (<2 x s1>) into `ptr addrspace(1) poison`, addrspace 1)2969 ; CHECK-NEXT: SI_RETURN2970 store <2 x i1> %arg0, ptr addrspace(1) poison2971 ret void2972}2973 2974 2975define void @void_func_v2i8_inreg(<2 x i8> inreg %arg0) #0 {2976 ; CHECK-LABEL: name: void_func_v2i8_inreg2977 ; CHECK: bb.1 (%ir-block.0):2978 ; CHECK-NEXT: liveins: $sgpr16, $sgpr172979 ; CHECK-NEXT: {{ $}}2980 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr162981 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)2982 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr172983 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)2984 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16)2985 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(<2 x s8>) = G_TRUNC [[BUILD_VECTOR]](<2 x s16>)2986 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF2987 ; CHECK-NEXT: G_STORE [[TRUNC2]](<2 x s8>), [[DEF]](p1) :: (store (<2 x s8>) into `ptr addrspace(1) poison`, addrspace 1)2988 ; CHECK-NEXT: SI_RETURN2989 store <2 x i8> %arg0, ptr addrspace(1) poison2990 ret void2991}2992 2993define void @void_func_v2i16_inreg(<2 x i16> inreg %arg0) #0 {2994 ; CHECK-LABEL: name: void_func_v2i16_inreg2995 ; CHECK: bb.1 (%ir-block.0):2996 ; CHECK-NEXT: liveins: $sgpr162997 ; CHECK-NEXT: {{ $}}2998 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $sgpr162999 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF3000 ; CHECK-NEXT: G_STORE [[COPY]](<2 x s16>), [[DEF]](p1) :: (store (<2 x s16>) into `ptr addrspace(1) poison`, addrspace 1)3001 ; CHECK-NEXT: SI_RETURN3002 store <2 x i16> %arg0, ptr addrspace(1) poison3003 ret void3004}3005 3006define void @void_func_v2f16_inreg(<2 x half> inreg %arg0) #0 {3007 ; CHECK-LABEL: name: void_func_v2f16_inreg3008 ; CHECK: bb.1 (%ir-block.0):3009 ; CHECK-NEXT: liveins: $sgpr163010 ; CHECK-NEXT: {{ $}}3011 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $sgpr163012 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF3013 ; CHECK-NEXT: G_STORE [[COPY]](<2 x s16>), [[DEF]](p1) :: (store (<2 x s16>) into `ptr addrspace(1) poison`, addrspace 1)3014 ; CHECK-NEXT: SI_RETURN3015 store <2 x half> %arg0, ptr addrspace(1) poison3016 ret void3017}3018 3019define void @void_func_v2bf16_inreg(<2 x bfloat> inreg %arg0) #0 {3020 ; CHECK-LABEL: name: void_func_v2bf16_inreg3021 ; CHECK: bb.1 (%ir-block.0):3022 ; CHECK-NEXT: liveins: $sgpr163023 ; CHECK-NEXT: {{ $}}3024 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr163025 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY]](s32)3026 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF3027 ; CHECK-NEXT: G_STORE [[BITCAST]](<2 x s16>), [[DEF]](p1) :: (store (<2 x s16>) into `ptr addrspace(1) poison`, addrspace 1)3028 ; CHECK-NEXT: SI_RETURN3029 store <2 x bfloat> %arg0, ptr addrspace(1) poison3030 ret void3031}3032 3033define void @void_func_v2i32_inreg(<2 x i32> inreg %arg0) #0 {3034 ; CHECK-LABEL: name: void_func_v2i32_inreg3035 ; CHECK: bb.1 (%ir-block.0):3036 ; CHECK-NEXT: liveins: $sgpr16, $sgpr173037 ; CHECK-NEXT: {{ $}}3038 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr163039 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr173040 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)3041 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF3042 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<2 x s32>), [[DEF]](p1) :: (store (<2 x s32>) into `ptr addrspace(1) poison`, addrspace 1)3043 ; CHECK-NEXT: SI_RETURN3044 store <2 x i32> %arg0, ptr addrspace(1) poison3045 ret void3046}3047 3048define void @void_func_v2f32_inreg(<2 x float> inreg %arg0) #0 {3049 ; CHECK-LABEL: name: void_func_v2f32_inreg3050 ; CHECK: bb.1 (%ir-block.0):3051 ; CHECK-NEXT: liveins: $sgpr16, $sgpr173052 ; CHECK-NEXT: {{ $}}3053 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr163054 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr173055 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)3056 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF3057 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<2 x s32>), [[DEF]](p1) :: (store (<2 x s32>) into `ptr addrspace(1) poison`, addrspace 1)3058 ; CHECK-NEXT: SI_RETURN3059 store <2 x float> %arg0, ptr addrspace(1) poison3060 ret void3061}3062 3063define void @void_func_v2i64_inreg(<2 x i64> inreg %arg0) #0 {3064 ; CHECK-LABEL: name: void_func_v2i64_inreg3065 ; CHECK: bb.1 (%ir-block.0):3066 ; CHECK-NEXT: liveins: $sgpr16, $sgpr17, $sgpr18, $sgpr193067 ; CHECK-NEXT: {{ $}}3068 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr163069 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr173070 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr183071 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr193072 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)3073 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)3074 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64)3075 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF3076 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<2 x s64>), [[DEF]](p1) :: (store (<2 x s64>) into `ptr addrspace(1) poison`, addrspace 1)3077 ; CHECK-NEXT: SI_RETURN3078 store <2 x i64> %arg0, ptr addrspace(1) poison3079 ret void3080}3081 3082define void @void_func_v2f64_inreg(<2 x double> inreg %arg0) #0 {3083 ; CHECK-LABEL: name: void_func_v2f64_inreg3084 ; CHECK: bb.1 (%ir-block.0):3085 ; CHECK-NEXT: liveins: $sgpr16, $sgpr17, $sgpr18, $sgpr193086 ; CHECK-NEXT: {{ $}}3087 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr163088 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr173089 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr183090 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr193091 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)3092 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)3093 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64)3094 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF3095 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<2 x s64>), [[DEF]](p1) :: (store (<2 x s64>) into `ptr addrspace(1) poison`, addrspace 1)3096 ; CHECK-NEXT: SI_RETURN3097 store <2 x double> %arg0, ptr addrspace(1) poison3098 ret void3099}3100 3101; FIXME: Broken, see issue #781213102; define void @void_func_v2i128_inreg(<2 x i128> inreg %arg0) #0 {3103; store <2 x i128> %arg0, ptr addrspace(1) poison3104; ret void3105; }3106 3107; define void @void_func_v2f128_inreg(<2 x fp128> inreg %arg0) #0 {3108; store <2 x fp128> %arg0, ptr addrspace(1) poison3109; ret void3110; }3111 3112define void @void_func_p0_inreg(ptr inreg %arg0) #0 {3113 ; CHECK-LABEL: name: void_func_p0_inreg3114 ; CHECK: bb.1 (%ir-block.0):3115 ; CHECK-NEXT: liveins: $sgpr16, $sgpr173116 ; CHECK-NEXT: {{ $}}3117 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr163118 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr173119 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)3120 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF3121 ; CHECK-NEXT: G_STORE [[MV]](p0), [[DEF]](p1) :: (store (p0) into `ptr addrspace(1) poison`, addrspace 1)3122 ; CHECK-NEXT: SI_RETURN3123 store ptr %arg0, ptr addrspace(1) poison3124 ret void3125}3126 3127define void @void_func_p1_inreg(ptr addrspace(1) inreg %arg0) #0 {3128 ; CHECK-LABEL: name: void_func_p1_inreg3129 ; CHECK: bb.1 (%ir-block.0):3130 ; CHECK-NEXT: liveins: $sgpr16, $sgpr173131 ; CHECK-NEXT: {{ $}}3132 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr163133 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr173134 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)3135 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF3136 ; CHECK-NEXT: G_STORE [[MV]](p1), [[DEF]](p1) :: (store (p1) into `ptr addrspace(1) poison`, addrspace 1)3137 ; CHECK-NEXT: SI_RETURN3138 store ptr addrspace(1) %arg0, ptr addrspace(1) poison3139 ret void3140}3141 3142define void @void_func_p3_inreg(ptr addrspace(3) inreg %arg0) #0 {3143 ; CHECK-LABEL: name: void_func_p3_inreg3144 ; CHECK: bb.1 (%ir-block.0):3145 ; CHECK-NEXT: liveins: $sgpr163146 ; CHECK-NEXT: {{ $}}3147 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $sgpr163148 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF3149 ; CHECK-NEXT: G_STORE [[COPY]](p3), [[DEF]](p1) :: (store (p3) into `ptr addrspace(1) poison`, addrspace 1)3150 ; CHECK-NEXT: SI_RETURN3151 store ptr addrspace(3) %arg0, ptr addrspace(1) poison3152 ret void3153}3154 3155define void @void_func_p5_inreg(ptr addrspace(5) inreg %arg0) #0 {3156 ; CHECK-LABEL: name: void_func_p5_inreg3157 ; CHECK: bb.1 (%ir-block.0):3158 ; CHECK-NEXT: liveins: $sgpr163159 ; CHECK-NEXT: {{ $}}3160 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY $sgpr163161 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF3162 ; CHECK-NEXT: G_STORE [[COPY]](p5), [[DEF]](p1) :: (store (p5) into `ptr addrspace(1) poison`, addrspace 1)3163 ; CHECK-NEXT: SI_RETURN3164 store ptr addrspace(5) %arg0, ptr addrspace(1) poison3165 ret void3166}3167 3168define void @void_func_p999_inreg(ptr addrspace(999) inreg %arg0) #0 {3169 ; CHECK-LABEL: name: void_func_p999_inreg3170 ; CHECK: bb.1 (%ir-block.0):3171 ; CHECK-NEXT: liveins: $sgpr16, $sgpr173172 ; CHECK-NEXT: {{ $}}3173 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr163174 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr173175 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p999) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)3176 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF3177 ; CHECK-NEXT: G_STORE [[MV]](p999), [[DEF]](p1) :: (store (p999) into `ptr addrspace(1) poison`, addrspace 1)3178 ; CHECK-NEXT: SI_RETURN3179 store ptr addrspace(999) %arg0, ptr addrspace(1) poison3180 ret void3181}3182 3183define void @void_func_v2p0_inreg(<2 x ptr> inreg %arg0) #0 {3184 ; CHECK-LABEL: name: void_func_v2p0_inreg3185 ; CHECK: bb.1 (%ir-block.0):3186 ; CHECK-NEXT: liveins: $sgpr16, $sgpr17, $sgpr18, $sgpr193187 ; CHECK-NEXT: {{ $}}3188 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr163189 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr173190 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr183191 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr193192 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)3193 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)3194 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[MV]](p0), [[MV1]](p0)3195 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF3196 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<2 x p0>), [[DEF]](p1) :: (store (<2 x p0>) into `ptr addrspace(1) poison`, addrspace 1)3197 ; CHECK-NEXT: SI_RETURN3198 store <2 x ptr> %arg0, ptr addrspace(1) poison3199 ret void3200}3201 3202define void @void_func_v2p1_inreg(<2 x ptr addrspace(1)> inreg %arg0) #0 {3203 ; CHECK-LABEL: name: void_func_v2p1_inreg3204 ; CHECK: bb.1 (%ir-block.0):3205 ; CHECK-NEXT: liveins: $sgpr16, $sgpr17, $sgpr18, $sgpr193206 ; CHECK-NEXT: {{ $}}3207 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr163208 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr173209 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr183210 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr193211 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)3212 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)3213 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p1>) = G_BUILD_VECTOR [[MV]](p1), [[MV1]](p1)3214 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF3215 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<2 x p1>), [[DEF]](p1) :: (store (<2 x p1>) into `ptr addrspace(1) poison`, addrspace 1)3216 ; CHECK-NEXT: SI_RETURN3217 store <2 x ptr addrspace(1)> %arg0, ptr addrspace(1) poison3218 ret void3219}3220 3221define void @void_func_v2p3_inreg(<2 x ptr addrspace(3)> inreg %arg0) #0 {3222 ; CHECK-LABEL: name: void_func_v2p3_inreg3223 ; CHECK: bb.1 (%ir-block.0):3224 ; CHECK-NEXT: liveins: $sgpr16, $sgpr173225 ; CHECK-NEXT: {{ $}}3226 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $sgpr163227 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $sgpr173228 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p3>) = G_BUILD_VECTOR [[COPY]](p3), [[COPY1]](p3)3229 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF3230 ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<2 x p3>), [[DEF]](p1) :: (store (<2 x p3>) into `ptr addrspace(1) poison`, addrspace 1)3231 ; CHECK-NEXT: SI_RETURN3232 store <2 x ptr addrspace(3)> %arg0, ptr addrspace(1) poison3233 ret void3234}3235 3236attributes #0 = { nounwind }3237 3238!llvm.module.flags = !{!0}3239!0 = !{i32 1, !"amdhsa_code_object_version", i32 400}3240