1715 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -run-pass=legalizer -global-isel-abort=0 %s -o - | FileCheck %s3 4---5name: test_insert_s64_s32_offset06body: |7 bb.0:8 liveins: $vgpr0_vgpr1, $vgpr29 10 ; CHECK-LABEL: name: test_insert_s64_s32_offset011 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr212 ; CHECK-NEXT: {{ $}}13 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr114 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr215 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 016 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](s64)17 %0:_(s64) = COPY $vgpr0_vgpr118 %1:_(s32) = COPY $vgpr219 %2:_(s64) = G_INSERT %0, %1, 020 $vgpr0_vgpr1 = COPY %221...22---23name: test_insert_s64_s32_offset3224body: |25 bb.0:26 liveins: $vgpr0_vgpr1, $vgpr227 28 ; CHECK-LABEL: name: test_insert_s64_s32_offset3229 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr230 ; CHECK-NEXT: {{ $}}31 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr132 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr233 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 3234 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](s64)35 %0:_(s64) = COPY $vgpr0_vgpr136 %1:_(s32) = COPY $vgpr237 %2:_(s64) = G_INSERT %0, %1, 3238 $vgpr0_vgpr1 = COPY %239...40 41---42name: test_insert_s64_s32_offset1643body: |44 bb.0:45 liveins: $vgpr0_vgpr1, $vgpr246 47 ; CHECK-LABEL: name: test_insert_s64_s32_offset1648 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr249 ; CHECK-NEXT: {{ $}}50 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr151 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr252 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 1653 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](s64)54 %0:_(s64) = COPY $vgpr0_vgpr155 %1:_(s32) = COPY $vgpr256 %2:_(s64) = G_INSERT %0, %1, 1657 $vgpr0_vgpr1 = COPY %258...59 60---61name: test_insert_s96_s32_offset062body: |63 bb.0:64 liveins: $vgpr0_vgpr1_vgpr2, $vgpr365 66 ; CHECK-LABEL: name: test_insert_s96_s32_offset067 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr368 ; CHECK-NEXT: {{ $}}69 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr270 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr371 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[COPY]], [[COPY1]](s32), 072 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](s96)73 %0:_(s96) = COPY $vgpr0_vgpr1_vgpr274 %1:_(s32) = COPY $vgpr375 %2:_(s96) = G_INSERT %0, %1, 076 $vgpr0_vgpr1_vgpr2 = COPY %277...78---79name: test_insert_s96_s32_offset3280body: |81 bb.0:82 liveins: $vgpr0_vgpr1_vgpr2, $vgpr383 84 ; CHECK-LABEL: name: test_insert_s96_s32_offset3285 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr386 ; CHECK-NEXT: {{ $}}87 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr288 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr389 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[COPY]], [[COPY1]](s32), 3290 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](s96)91 %0:_(s96) = COPY $vgpr0_vgpr1_vgpr292 %1:_(s32) = COPY $vgpr393 %2:_(s96) = G_INSERT %0, %1, 3294 $vgpr0_vgpr1_vgpr2 = COPY %295...96---97name: test_insert_s96_s32_offset6498body: |99 bb.0:100 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3101 102 ; CHECK-LABEL: name: test_insert_s96_s32_offset64103 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3104 ; CHECK-NEXT: {{ $}}105 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2106 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3107 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[COPY]], [[COPY1]](s32), 64108 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](s96)109 %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2110 %1:_(s32) = COPY $vgpr3111 %2:_(s96) = G_INSERT %0, %1, 64112 $vgpr0_vgpr1_vgpr2 = COPY %2113...114---115name: test_insert_s128_s32_offset0116body: |117 bb.0:118 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4119 120 ; CHECK-LABEL: name: test_insert_s128_s32_offset0121 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4122 ; CHECK-NEXT: {{ $}}123 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3124 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4125 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 0126 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)127 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3128 %1:_(s32) = COPY $vgpr4129 %2:_(s128) = G_INSERT %0, %1, 0130 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2131...132---133name: test_insert_s128_s32_offset32134body: |135 bb.0:136 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4137 138 ; CHECK-LABEL: name: test_insert_s128_s32_offset32139 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4140 ; CHECK-NEXT: {{ $}}141 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3142 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4143 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 32144 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)145 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3146 %1:_(s32) = COPY $vgpr4147 %2:_(s128) = G_INSERT %0, %1, 32148 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2149...150---151name: test_insert_s128_s32_offset64152body: |153 bb.0:154 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4155 156 ; CHECK-LABEL: name: test_insert_s128_s32_offset64157 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4158 ; CHECK-NEXT: {{ $}}159 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3160 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4161 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 64162 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)163 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3164 %1:_(s32) = COPY $vgpr4165 %2:_(s128) = G_INSERT %0, %1, 64166 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2167...168---169name: test_insert_s128_s32_offset96170body: |171 bb.0:172 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4173 174 ; CHECK-LABEL: name: test_insert_s128_s32_offset96175 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4176 ; CHECK-NEXT: {{ $}}177 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3178 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4179 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 96180 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)181 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3182 %1:_(s32) = COPY $vgpr4183 %2:_(s128) = G_INSERT %0, %1, 96184 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2185...186---187name: test_insert_s128_s64_offset0188body: |189 bb.0:190 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5191 192 ; CHECK-LABEL: name: test_insert_s128_s64_offset0193 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5194 ; CHECK-NEXT: {{ $}}195 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3196 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5197 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s64), 0198 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)199 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3200 %1:_(s64) = COPY $vgpr4_vgpr5201 %2:_(s128) = G_INSERT %0, %1, 0202 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2203...204---205name: test_insert_s128_s64_offset32206body: |207 bb.0:208 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5209 210 ; CHECK-LABEL: name: test_insert_s128_s64_offset32211 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5212 ; CHECK-NEXT: {{ $}}213 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3214 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5215 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s64), 32216 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)217 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3218 %1:_(s64) = COPY $vgpr4_vgpr5219 %2:_(s128) = G_INSERT %0, %1, 32220 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2221...222---223name: test_insert_s128_s64_offset64224body: |225 bb.0:226 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5227 228 ; CHECK-LABEL: name: test_insert_s128_s64_offset64229 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5230 ; CHECK-NEXT: {{ $}}231 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3232 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5233 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s64), 64234 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)235 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3236 %1:_(s64) = COPY $vgpr4_vgpr5237 %2:_(s128) = G_INSERT %0, %1, 64238 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2239...240---241name: test_insert_s128_s96_offset0242body: |243 bb.0:244 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6245 246 ; CHECK-LABEL: name: test_insert_s128_s96_offset0247 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6248 ; CHECK-NEXT: {{ $}}249 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3250 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6251 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s96), 0252 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)253 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3254 %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6255 %2:_(s128) = G_INSERT %0, %1, 0256 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2257...258---259name: test_insert_s128_s96_offset32260body: |261 bb.0:262 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6263 264 ; CHECK-LABEL: name: test_insert_s128_s96_offset32265 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6266 ; CHECK-NEXT: {{ $}}267 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3268 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6269 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s96), 32270 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)271 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3272 %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6273 %2:_(s128) = G_INSERT %0, %1, 32274 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2275...276---277name: test_insert_p0_s32_offset0278body: |279 bb.0:280 liveins: $vgpr0_vgpr1, $vgpr2281 282 ; CHECK-LABEL: name: test_insert_p0_s32_offset0283 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2284 ; CHECK-NEXT: {{ $}}285 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1286 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2287 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(p0) = G_INSERT [[COPY]], [[COPY1]](s32), 0288 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](p0)289 %0:_(p0) = COPY $vgpr0_vgpr1290 %1:_(s32) = COPY $vgpr2291 %2:_(p0) = G_INSERT %0, %1, 0292 $vgpr0_vgpr1 = COPY %2293...294---295name: test_insert_p0_s32_offset32296body: |297 bb.0:298 liveins: $vgpr0_vgpr1, $vgpr2299 300 ; CHECK-LABEL: name: test_insert_p0_s32_offset32301 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2302 ; CHECK-NEXT: {{ $}}303 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1304 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2305 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(p0) = G_INSERT [[COPY]], [[COPY1]](s32), 32306 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](p0)307 %0:_(p0) = COPY $vgpr0_vgpr1308 %1:_(s32) = COPY $vgpr2309 %2:_(p0) = G_INSERT %0, %1, 32310 $vgpr0_vgpr1 = COPY %2311...312---313name: test_insert_s128_p0_offset0314body: |315 bb.0:316 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5317 318 ; CHECK-LABEL: name: test_insert_s128_p0_offset0319 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5320 ; CHECK-NEXT: {{ $}}321 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3322 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5323 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](p0), 0324 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)325 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3326 %1:_(p0) = COPY $vgpr4_vgpr5327 %2:_(s128) = G_INSERT %0, %1, 0328 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2329...330---331name: test_insert_s128_p0_offset32332body: |333 bb.0:334 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5335 336 ; CHECK-LABEL: name: test_insert_s128_p0_offset32337 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5338 ; CHECK-NEXT: {{ $}}339 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3340 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5341 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](p0), 32342 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)343 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3344 %1:_(p0) = COPY $vgpr4_vgpr5345 %2:_(s128) = G_INSERT %0, %1, 32346 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2347...348---349name: test_insert_s128_p0_offset64350body: |351 bb.0:352 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5353 354 ; CHECK-LABEL: name: test_insert_s128_p0_offset64355 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5356 ; CHECK-NEXT: {{ $}}357 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3358 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5359 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](p0), 64360 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)361 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3362 %1:_(p0) = COPY $vgpr4_vgpr5363 %2:_(s128) = G_INSERT %0, %1, 64364 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2365...366 367---368name: test_insert_s128_s16_offset0369body: |370 bb.0:371 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4372 373 ; CHECK-LABEL: name: test_insert_s128_s16_offset0374 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4375 ; CHECK-NEXT: {{ $}}376 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3377 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4378 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)379 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[TRUNC]](s16), 0380 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)381 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3382 %1:_(s32) = COPY $vgpr4383 %2:_(s16) = G_TRUNC %1384 %3:_(s128) = G_INSERT %0, %2, 0385 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3386...387 388---389name: test_insert_s128_s16_offset16390body: |391 bb.0:392 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4393 394 ; CHECK-LABEL: name: test_insert_s128_s16_offset16395 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4396 ; CHECK-NEXT: {{ $}}397 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3398 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4399 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)400 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[TRUNC]](s16), 16401 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)402 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3403 %1:_(s32) = COPY $vgpr4404 %2:_(s16) = G_TRUNC %1405 %3:_(s128) = G_INSERT %0, %2, 16406 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3407...408 409---410name: test_insert_s128_s16_offset32411body: |412 bb.0:413 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4414 415 ; CHECK-LABEL: name: test_insert_s128_s16_offset32416 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4417 ; CHECK-NEXT: {{ $}}418 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3419 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4420 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)421 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[TRUNC]](s16), 32422 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)423 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3424 %1:_(s32) = COPY $vgpr4425 %2:_(s16) = G_TRUNC %1426 %3:_(s128) = G_INSERT %0, %2, 32427 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3428...429 430---431name: test_insert_s128_s16_offset112432body: |433 bb.0:434 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4435 436 ; CHECK-LABEL: name: test_insert_s128_s16_offset112437 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4438 ; CHECK-NEXT: {{ $}}439 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3440 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4441 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)442 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[TRUNC]](s16), 112443 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)444 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3445 %1:_(s32) = COPY $vgpr4446 %2:_(s16) = G_TRUNC %1447 %3:_(s128) = G_INSERT %0, %2, 112448 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3449...450 451---452name: test_insert_v2s32_s32_offset0453body: |454 bb.0:455 liveins: $vgpr0_vgpr1, $vgpr2456 457 ; CHECK-LABEL: name: test_insert_v2s32_s32_offset0458 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2459 ; CHECK-NEXT: {{ $}}460 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1461 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2462 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)463 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY1]](s32), [[UV1]](s32)464 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)465 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1466 %1:_(s32) = COPY $vgpr2467 %2:_(<2 x s32>) = G_INSERT %0, %1, 0468 $vgpr0_vgpr1 = COPY %2469...470---471name: test_insert_v2s32_s32_offset32472body: |473 bb.0:474 liveins: $vgpr0_vgpr1, $vgpr2475 476 ; CHECK-LABEL: name: test_insert_v2s32_s32_offset32477 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2478 ; CHECK-NEXT: {{ $}}479 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1480 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2481 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)482 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[COPY1]](s32)483 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)484 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1485 %1:_(s32) = COPY $vgpr2486 %2:_(<2 x s32>) = G_INSERT %0, %1, 32487 $vgpr0_vgpr1 = COPY %2488...489---490name: test_insert_v3s32_s32_offset0491body: |492 bb.0:493 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3494 495 ; CHECK-LABEL: name: test_insert_v3s32_s32_offset0496 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3497 ; CHECK-NEXT: {{ $}}498 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2499 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3500 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)501 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY1]](s32), [[UV1]](s32), [[UV2]](s32)502 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)503 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2504 %1:_(s32) = COPY $vgpr3505 %2:_(<3 x s32>) = G_INSERT %0, %1, 0506 $vgpr0_vgpr1_vgpr2 = COPY %2507...508---509name: test_insert_v3s32_s32_offset32510body: |511 bb.0:512 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3513 514 ; CHECK-LABEL: name: test_insert_v3s32_s32_offset32515 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3516 ; CHECK-NEXT: {{ $}}517 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2518 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3519 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)520 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[COPY1]](s32), [[UV2]](s32)521 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)522 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2523 %1:_(s32) = COPY $vgpr3524 %2:_(<3 x s32>) = G_INSERT %0, %1, 32525 $vgpr0_vgpr1_vgpr2 = COPY %2526...527---528name: test_insert_v3s32_s32_offset64529body: |530 bb.0:531 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3532 533 ; CHECK-LABEL: name: test_insert_v3s32_s32_offset64534 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3535 ; CHECK-NEXT: {{ $}}536 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2537 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3538 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)539 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[COPY1]](s32)540 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)541 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2542 %1:_(s32) = COPY $vgpr3543 %2:_(<3 x s32>) = G_INSERT %0, %1, 64544 $vgpr0_vgpr1_vgpr2 = COPY %2545...546---547name: test_insert_v4s32_s32_offset0548body: |549 bb.0:550 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4551 552 ; CHECK-LABEL: name: test_insert_v4s32_s32_offset0553 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4554 ; CHECK-NEXT: {{ $}}555 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3556 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4557 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)558 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY1]](s32), [[UV1]](s32), [[UV2]](s32), [[UV3]](s32)559 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)560 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3561 %1:_(s32) = COPY $vgpr4562 %2:_(<4 x s32>) = G_INSERT %0, %1, 0563 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2564...565---566name: test_insert_v4s32_s32_offset32567body: |568 bb.0:569 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4570 571 ; CHECK-LABEL: name: test_insert_v4s32_s32_offset32572 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4573 ; CHECK-NEXT: {{ $}}574 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3575 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4576 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)577 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[COPY1]](s32), [[UV2]](s32), [[UV3]](s32)578 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)579 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3580 %1:_(s32) = COPY $vgpr4581 %2:_(<4 x s32>) = G_INSERT %0, %1, 32582 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2583...584---585name: test_insert_v4s32_s32_offset64586body: |587 bb.0:588 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4589 590 ; CHECK-LABEL: name: test_insert_v4s32_s32_offset64591 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4592 ; CHECK-NEXT: {{ $}}593 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3594 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4595 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)596 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[COPY1]](s32), [[UV3]](s32)597 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)598 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3599 %1:_(s32) = COPY $vgpr4600 %2:_(<4 x s32>) = G_INSERT %0, %1, 64601 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2602...603---604name: test_insert_v4s32_s32_offset96605body: |606 bb.0:607 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4608 609 ; CHECK-LABEL: name: test_insert_v4s32_s32_offset96610 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4611 ; CHECK-NEXT: {{ $}}612 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3613 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4614 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)615 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[UV2]](s32), [[COPY1]](s32)616 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)617 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3618 %1:_(s32) = COPY $vgpr4619 %2:_(<4 x s32>) = G_INSERT %0, %1, 96620 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2621...622---623name: test_insert_v4s32_s64_offset0624body: |625 bb.0:626 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5627 628 ; CHECK-LABEL: name: test_insert_v4s32_s64_offset0629 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5630 ; CHECK-NEXT: {{ $}}631 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3632 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5633 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)634 ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](s64)635 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV4]](s32), [[UV5]](s32), [[UV2]](s32), [[UV3]](s32)636 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)637 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3638 %1:_(s64) = COPY $vgpr4_vgpr5639 %2:_(<4 x s32>) = G_INSERT %0, %1, 0640 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2641...642---643name: test_insert_v4s32_s64_offset32644body: |645 bb.0:646 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5647 648 ; CHECK-LABEL: name: test_insert_v4s32_s64_offset32649 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5650 ; CHECK-NEXT: {{ $}}651 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3652 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5653 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)654 ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](s64)655 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV4]](s32), [[UV5]](s32), [[UV3]](s32)656 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)657 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3658 %1:_(s64) = COPY $vgpr4_vgpr5659 %2:_(<4 x s32>) = G_INSERT %0, %1, 32660 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2661...662---663name: test_insert_v4s32_s64_offset64664body: |665 bb.0:666 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5667 668 ; CHECK-LABEL: name: test_insert_v4s32_s64_offset64669 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5670 ; CHECK-NEXT: {{ $}}671 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3672 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5673 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)674 ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](s64)675 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[UV4]](s32), [[UV5]](s32)676 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)677 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3678 %1:_(s64) = COPY $vgpr4_vgpr5679 %2:_(<4 x s32>) = G_INSERT %0, %1, 64680 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2681...682---683name: test_insert_v4s32_s96_offset0684body: |685 bb.0:686 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6687 688 ; CHECK-LABEL: name: test_insert_v4s32_s96_offset0689 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6690 ; CHECK-NEXT: {{ $}}691 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3692 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6693 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)694 ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](s96)695 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV4]](s32), [[UV5]](s32), [[UV6]](s32), [[UV3]](s32)696 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)697 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3698 %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6699 %2:_(<4 x s32>) = G_INSERT %0, %1, 0700 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2701...702---703name: test_insert_v4s32_s96_offset32704body: |705 bb.0:706 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6707 708 ; CHECK-LABEL: name: test_insert_v4s32_s96_offset32709 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6710 ; CHECK-NEXT: {{ $}}711 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3712 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6713 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)714 ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](s96)715 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV4]](s32), [[UV5]](s32), [[UV6]](s32)716 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)717 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3718 %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6719 %2:_(<4 x s32>) = G_INSERT %0, %1, 32720 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2721...722---723name: test_insert_v4s32_v2s32_offset0724body: |725 bb.0:726 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5727 728 ; CHECK-LABEL: name: test_insert_v4s32_v2s32_offset0729 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5730 ; CHECK-NEXT: {{ $}}731 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3732 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5733 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)734 ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)735 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV4]](s32), [[UV5]](s32), [[UV2]](s32), [[UV3]](s32)736 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)737 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3738 %1:_(<2 x s32>) = COPY $vgpr4_vgpr5739 %2:_(<4 x s32>) = G_INSERT %0, %1, 0740 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2741...742---743name: test_insert_v4s32_v2s32_offset32744body: |745 bb.0:746 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5747 748 ; CHECK-LABEL: name: test_insert_v4s32_v2s32_offset32749 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5750 ; CHECK-NEXT: {{ $}}751 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3752 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5753 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)754 ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)755 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV4]](s32), [[UV5]](s32), [[UV3]](s32)756 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)757 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3758 %1:_(<2 x s32>) = COPY $vgpr4_vgpr5759 %2:_(<4 x s32>) = G_INSERT %0, %1, 32760 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2761...762---763name: test_insert_v4s32_v2s32_offset64764body: |765 bb.0:766 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5767 768 ; CHECK-LABEL: name: test_insert_v4s32_v2s32_offset64769 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5770 ; CHECK-NEXT: {{ $}}771 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3772 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5773 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)774 ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)775 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[UV4]](s32), [[UV5]](s32)776 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)777 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3778 %1:_(<2 x s32>) = COPY $vgpr4_vgpr5779 %2:_(<4 x s32>) = G_INSERT %0, %1, 64780 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2781...782---783name: test_insert_v4s32_v3s32_offset0784body: |785 bb.0:786 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6787 788 ; CHECK-LABEL: name: test_insert_v4s32_v3s32_offset0789 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6790 ; CHECK-NEXT: {{ $}}791 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3792 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6793 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)794 ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>)795 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV4]](s32), [[UV5]](s32), [[UV6]](s32), [[UV3]](s32)796 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)797 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3798 %1:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6799 %2:_(<4 x s32>) = G_INSERT %0, %1, 0800 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2801...802---803name: test_insert_v4s32_v3s32_offset32804body: |805 bb.0:806 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6807 808 ; CHECK-LABEL: name: test_insert_v4s32_v3s32_offset32809 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6810 ; CHECK-NEXT: {{ $}}811 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3812 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6813 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)814 ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>)815 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV4]](s32), [[UV5]](s32), [[UV6]](s32)816 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)817 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3818 %1:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6819 %2:_(<4 x s32>) = G_INSERT %0, %1, 32820 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2821...822---823name: test_insert_v4s32_p0_offset0824body: |825 bb.0:826 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5827 828 ; CHECK-LABEL: name: test_insert_v4s32_p0_offset0829 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5830 ; CHECK-NEXT: {{ $}}831 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3832 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5833 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](p0), 0834 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)835 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3836 %1:_(p0) = COPY $vgpr4_vgpr5837 %2:_(<4 x s32>) = G_INSERT %0, %1, 0838 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2839...840---841name: test_insert_v4s32_p0_offset32842body: |843 bb.0:844 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5845 846 ; CHECK-LABEL: name: test_insert_v4s32_p0_offset32847 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5848 ; CHECK-NEXT: {{ $}}849 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3850 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5851 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](p0), 32852 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)853 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3854 %1:_(p0) = COPY $vgpr4_vgpr5855 %2:_(<4 x s32>) = G_INSERT %0, %1, 32856 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2857...858---859name: test_insert_v4s32_p0_offset64860body: |861 bb.0:862 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5863 864 ; CHECK-LABEL: name: test_insert_v4s32_p0_offset64865 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5866 ; CHECK-NEXT: {{ $}}867 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3868 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5869 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](p0), 64870 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)871 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3872 %1:_(p0) = COPY $vgpr4_vgpr5873 %2:_(<4 x s32>) = G_INSERT %0, %1, 64874 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2875...876 877---878name: test_insert_v2s16_s16_offset0879body: |880 bb.0:881 liveins: $vgpr0, $vgpr1882 883 ; CHECK-LABEL: name: test_insert_v2s16_s16_offset0884 ; CHECK: liveins: $vgpr0, $vgpr1885 ; CHECK-NEXT: {{ $}}886 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0887 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1888 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)889 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16890 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)891 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535892 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]893 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)894 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]895 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)896 ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST1]](<2 x s16>)897 %0:_(<2 x s16>) = COPY $vgpr0898 %1:_(s32) = COPY $vgpr1899 %2:_(s16) = G_TRUNC %1900 %3:_(<2 x s16>) = G_INSERT %0, %2, 0901 $vgpr0 = COPY %3902...903 904---905name: test_insert_v2s16_s16_offset1906body: |907 bb.0:908 liveins: $vgpr0, $vgpr1909 910 ; CHECK-LABEL: name: test_insert_v2s16_s16_offset1911 ; CHECK: liveins: $vgpr0, $vgpr1912 ; CHECK-NEXT: {{ $}}913 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0914 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1915 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)916 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535917 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]918 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1919 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32)920 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 -131071921 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C2]]922 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL]]923 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)924 ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST1]](<2 x s16>)925 %0:_(<2 x s16>) = COPY $vgpr0926 %1:_(s32) = COPY $vgpr1927 %2:_(s16) = G_TRUNC %1928 %3:_(<2 x s16>) = G_INSERT %0, %2, 1929 $vgpr0 = COPY %3930...931---932name: test_insert_v2s16_s16_offset16933body: |934 bb.0:935 liveins: $vgpr0, $vgpr1936 937 ; CHECK-LABEL: name: test_insert_v2s16_s16_offset16938 ; CHECK: liveins: $vgpr0, $vgpr1939 ; CHECK-NEXT: {{ $}}940 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0941 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1942 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)943 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535944 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C]]945 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]946 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16947 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)948 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]949 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)950 ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST1]](<2 x s16>)951 %0:_(<2 x s16>) = COPY $vgpr0952 %1:_(s32) = COPY $vgpr1953 %2:_(s16) = G_TRUNC %1954 %3:_(<2 x s16>) = G_INSERT %0, %2, 16955 $vgpr0 = COPY %3956...957---958name: test_insert_v3s16_s16_offset0959body: |960 bb.0:961 liveins: $vgpr0_vgpr1, $vgpr2962 963 ; CHECK-LABEL: name: test_insert_v3s16_s16_offset0964 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2965 ; CHECK-NEXT: {{ $}}966 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1967 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)968 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)969 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16970 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)971 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2972 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535973 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]974 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)975 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]976 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)977 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST1]](<2 x s16>), [[UV1]](<2 x s16>)978 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)979 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1980 %1:_(<3 x s16>) = G_EXTRACT %0, 0981 %2:_(s32) = COPY $vgpr2982 %3:_(s16) = G_TRUNC %2983 %4:_(<3 x s16>) = G_INSERT %1, %3, 0984 %5:_(<4 x s16>) = G_IMPLICIT_DEF985 %6:_(<4 x s16>) = G_INSERT %5, %4, 0986 $vgpr0_vgpr1 = COPY %6987...988---989name: test_insert_v3s16_s16_offset16990body: |991 bb.0:992 liveins: $vgpr0_vgpr1, $vgpr2993 994 ; CHECK-LABEL: name: test_insert_v3s16_s16_offset16995 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2996 ; CHECK-NEXT: {{ $}}997 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1998 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)999 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1000 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21001 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351002 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C]]1003 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]1004 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 161005 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)1006 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1007 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1008 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST1]](<2 x s16>), [[UV1]](<2 x s16>)1009 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1010 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11011 %1:_(<3 x s16>) = G_EXTRACT %0, 01012 %2:_(s32) = COPY $vgpr21013 %3:_(s16) = G_TRUNC %21014 %4:_(<3 x s16>) = G_INSERT %1, %3, 161015 %5:_(<4 x s16>) = G_IMPLICIT_DEF1016 %6:_(<4 x s16>) = G_INSERT %5, %4, 01017 $vgpr0_vgpr1 = COPY %61018...1019---1020name: test_insert_v3s16_s16_offset321021body: |1022 bb.0:1023 liveins: $vgpr0_vgpr1, $vgpr21024 1025 ; CHECK-LABEL: name: test_insert_v3s16_s16_offset321026 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21027 ; CHECK-NEXT: {{ $}}1028 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11029 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1030 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21031 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351032 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]1033 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 01034 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 161035 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[C1]], [[C2]](s32)1036 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1037 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1038 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[UV]](<2 x s16>), [[BITCAST]](<2 x s16>)1039 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1040 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11041 %1:_(<3 x s16>) = G_EXTRACT %0, 01042 %2:_(s32) = COPY $vgpr21043 %3:_(s16) = G_TRUNC %21044 %4:_(<3 x s16>) = G_INSERT %1, %3, 321045 %5:_(<4 x s16>) = G_IMPLICIT_DEF1046 %6:_(<4 x s16>) = G_INSERT %5, %4, 01047 $vgpr0_vgpr1 = COPY %61048...1049---1050name: test_insert_v3s16_v2s16_offset01051body: |1052 bb.0:1053 liveins: $vgpr0_vgpr1, $vgpr21054 1055 ; CHECK-LABEL: name: test_insert_v3s16_v2s16_offset01056 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21057 ; CHECK-NEXT: {{ $}}1058 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11059 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1060 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21061 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY1]](<2 x s16>)1062 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161063 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)1064 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351065 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1066 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1067 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1068 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1069 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST1]](<2 x s16>), [[UV1]](<2 x s16>)1070 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1071 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11072 %1:_(<3 x s16>) = G_EXTRACT %0, 01073 %2:_(<2 x s16>) = COPY $vgpr21074 %4:_(<3 x s16>) = G_INSERT %1, %2, 01075 %5:_(<4 x s16>) = G_IMPLICIT_DEF1076 %6:_(<4 x s16>) = G_INSERT %5, %4, 01077 $vgpr0_vgpr1 = COPY %61078...1079---1080name: test_insert_v3s16_v2s16_offset161081body: |1082 bb.0:1083 liveins: $vgpr0_vgpr1, $vgpr21084 1085 ; CHECK-LABEL: name: test_insert_v3s16_v2s16_offset161086 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21087 ; CHECK-NEXT: {{ $}}1088 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11089 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1090 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1091 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161092 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21093 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[COPY1]](<2 x s16>)1094 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32)1095 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351096 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1097 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST1]], [[C1]]1098 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C]](s32)1099 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1100 ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1101 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 01102 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[C2]], [[C]](s32)1103 ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[LSHR]], [[SHL1]]1104 ; CHECK-NEXT: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)1105 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST2]](<2 x s16>), [[BITCAST3]](<2 x s16>)1106 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1107 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11108 %1:_(<3 x s16>) = G_EXTRACT %0, 01109 %2:_(<2 x s16>) = COPY $vgpr21110 %4:_(<3 x s16>) = G_INSERT %1, %2, 161111 %5:_(<4 x s16>) = G_IMPLICIT_DEF1112 %6:_(<4 x s16>) = G_INSERT %5, %4, 01113 $vgpr0_vgpr1 = COPY %61114...1115---1116name: test_insert_v3s16_s32_offset01117body: |1118 bb.0:1119 liveins: $vgpr0_vgpr1, $vgpr21120 1121 ; CHECK-LABEL: name: test_insert_v3s16_s32_offset01122 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21123 ; CHECK-NEXT: {{ $}}1124 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11125 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1126 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21127 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161128 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C]](s32)1129 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351130 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]1131 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1132 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1133 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1134 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[UV1]](<2 x s16>)1135 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1136 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11137 %1:_(<3 x s16>) = G_EXTRACT %0, 01138 %2:_(s32) = COPY $vgpr21139 %4:_(<3 x s16>) = G_INSERT %1, %2, 01140 %5:_(<4 x s16>) = G_IMPLICIT_DEF1141 %6:_(<4 x s16>) = G_INSERT %5, %4, 01142 $vgpr0_vgpr1 = COPY %61143...1144---1145name: test_insert_v3s16_s32_offset161146body: |1147 bb.0:1148 liveins: $vgpr0_vgpr1, $vgpr21149 1150 ; CHECK-LABEL: name: test_insert_v3s16_s32_offset161151 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21152 ; CHECK-NEXT: {{ $}}1153 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11154 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1155 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1156 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161157 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21158 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C]](s32)1159 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351160 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1161 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]1162 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C]](s32)1163 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1164 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1165 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 01166 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[C2]], [[C]](s32)1167 ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[LSHR]], [[SHL1]]1168 ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)1169 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST1]](<2 x s16>), [[BITCAST2]](<2 x s16>)1170 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1171 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11172 %1:_(<3 x s16>) = G_EXTRACT %0, 01173 %2:_(s32) = COPY $vgpr21174 %4:_(<3 x s16>) = G_INSERT %1, %2, 161175 %5:_(<4 x s16>) = G_IMPLICIT_DEF1176 %6:_(<4 x s16>) = G_INSERT %5, %4, 01177 $vgpr0_vgpr1 = COPY %61178...1179---1180name: test_insert_v4s16_s16_offset01181body: |1182 bb.0:1183 liveins: $vgpr0_vgpr1, $vgpr21184 1185 ; CHECK-LABEL: name: test_insert_v4s16_s16_offset01186 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21187 ; CHECK-NEXT: {{ $}}1188 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11189 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21190 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1191 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1192 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161193 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)1194 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351195 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]1196 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1197 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1198 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1199 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST1]](<2 x s16>), [[UV1]](<2 x s16>)1200 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1201 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11202 %1:_(s32) = COPY $vgpr21203 %2:_(s16) = G_TRUNC %11204 %3:_(<4 x s16>) = G_INSERT %0, %2, 01205 $vgpr0_vgpr1 = COPY %31206...1207---1208name: test_insert_v4s16_s16_offset161209body: |1210 bb.0:1211 liveins: $vgpr0_vgpr1, $vgpr21212 1213 ; CHECK-LABEL: name: test_insert_v4s16_s16_offset161214 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21215 ; CHECK-NEXT: {{ $}}1216 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11217 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21218 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1219 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1220 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351221 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C]]1222 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]1223 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 161224 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)1225 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1226 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1227 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST1]](<2 x s16>), [[UV1]](<2 x s16>)1228 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1229 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11230 %1:_(s32) = COPY $vgpr21231 %2:_(s16) = G_TRUNC %11232 %3:_(<4 x s16>) = G_INSERT %0, %2, 161233 $vgpr0_vgpr1 = COPY %31234...1235---1236name: test_insert_v4s16_s16_offset321237body: |1238 bb.0:1239 liveins: $vgpr0_vgpr1, $vgpr21240 1241 ; CHECK-LABEL: name: test_insert_v4s16_s16_offset321242 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21243 ; CHECK-NEXT: {{ $}}1244 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11245 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21246 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1247 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)1248 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161249 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)1250 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351251 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]1252 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1253 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1254 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1255 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[UV]](<2 x s16>), [[BITCAST1]](<2 x s16>)1256 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1257 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11258 %1:_(s32) = COPY $vgpr21259 %2:_(s16) = G_TRUNC %11260 %3:_(<4 x s16>) = G_INSERT %0, %2, 321261 $vgpr0_vgpr1 = COPY %31262...1263---1264name: test_insert_v4s16_s16_offset481265body: |1266 bb.0:1267 liveins: $vgpr0_vgpr1, $vgpr21268 1269 ; CHECK-LABEL: name: test_insert_v4s16_s16_offset481270 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21271 ; CHECK-NEXT: {{ $}}1272 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11273 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21274 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1275 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)1276 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351277 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C]]1278 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]1279 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 161280 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)1281 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1282 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1283 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[UV]](<2 x s16>), [[BITCAST1]](<2 x s16>)1284 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1285 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11286 %1:_(s32) = COPY $vgpr21287 %2:_(s16) = G_TRUNC %11288 %3:_(<4 x s16>) = G_INSERT %0, %2, 481289 $vgpr0_vgpr1 = COPY %31290...1291---1292name: test_insert_v4s16_v2s16_offset01293body: |1294 bb.0:1295 liveins: $vgpr0_vgpr1, $vgpr21296 1297 ; CHECK-LABEL: name: test_insert_v4s16_v2s16_offset01298 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21299 ; CHECK-NEXT: {{ $}}1300 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11301 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21302 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1303 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY1]](<2 x s16>)1304 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161305 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)1306 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351307 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1308 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1309 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1310 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1311 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST1]](<2 x s16>), [[UV1]](<2 x s16>)1312 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1313 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11314 %1:_(<2 x s16>) = COPY $vgpr21315 %2:_(<4 x s16>) = G_INSERT %0, %1, 01316 $vgpr0_vgpr1 = COPY %21317...1318---1319name: test_insert_v4s16_v2s16_offset161320body: |1321 bb.0:1322 liveins: $vgpr0_vgpr1, $vgpr21323 1324 ; CHECK-LABEL: name: test_insert_v4s16_v2s16_offset161325 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21326 ; CHECK-NEXT: {{ $}}1327 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11328 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21329 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1330 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1331 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161332 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)1333 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32)1334 ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[COPY1]](<2 x s16>)1335 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C]](s32)1336 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351337 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1338 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST2]], [[C1]]1339 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C]](s32)1340 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1341 ; CHECK-NEXT: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1342 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1343 ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[LSHR1]], [[SHL1]]1344 ; CHECK-NEXT: [[BITCAST4:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)1345 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST3]](<2 x s16>), [[BITCAST4]](<2 x s16>)1346 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1347 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11348 %1:_(<2 x s16>) = COPY $vgpr21349 %2:_(<4 x s16>) = G_INSERT %0, %1, 161350 $vgpr0_vgpr1 = COPY %21351...1352---1353name: test_insert_v4s16_v2s16_offset321354body: |1355 bb.0:1356 liveins: $vgpr0_vgpr1, $vgpr21357 1358 ; CHECK-LABEL: name: test_insert_v4s16_v2s16_offset321359 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21360 ; CHECK-NEXT: {{ $}}1361 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11362 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21363 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1364 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY1]](<2 x s16>)1365 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161366 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)1367 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351368 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1369 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1370 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1371 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1372 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[UV]](<2 x s16>), [[BITCAST1]](<2 x s16>)1373 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1374 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11375 %1:_(<2 x s16>) = COPY $vgpr21376 %2:_(<4 x s16>) = G_INSERT %0, %1, 321377 $vgpr0_vgpr1 = COPY %21378...1379---1380name: test_insert_v4s16_v3s16_offset01381body: |1382 bb.0:1383 liveins: $vgpr0_vgpr1, $vgpr2_vgpr31384 1385 ; CHECK-LABEL: name: test_insert_v4s16_v3s16_offset01386 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr31387 ; CHECK-NEXT: {{ $}}1388 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11389 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr2_vgpr31390 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>)1391 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)1392 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161393 ; CHECK-NEXT: [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1394 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV3]](<2 x s16>)1395 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32)1396 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351397 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1398 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1399 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1400 ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1401 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[UV]](<2 x s16>), [[BITCAST2]](<2 x s16>)1402 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1403 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11404 %1:_(<4 x s16>) = COPY $vgpr2_vgpr31405 %2:_(<3 x s16>) = G_EXTRACT %1, 01406 %3:_(<4 x s16>) = G_INSERT %0, %2, 01407 $vgpr0_vgpr1 = COPY %31408...1409---1410name: test_insert_v4s16_v3s16_offset161411body: |1412 bb.0:1413 liveins: $vgpr0_vgpr1, $vgpr2_vgpr31414 1415 ; CHECK-LABEL: name: test_insert_v4s16_v3s16_offset161416 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr31417 ; CHECK-NEXT: {{ $}}1418 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11419 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr2_vgpr31420 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>)1421 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1422 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161423 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)1424 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)1425 ; CHECK-NEXT: [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1426 ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV2]](<2 x s16>)1427 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351428 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST2]], [[C1]]1429 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1430 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C]](s32)1431 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1432 ; CHECK-NEXT: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1433 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[BITCAST1]], [[C1]]1434 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C]](s32)1435 ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[LSHR]], [[SHL1]]1436 ; CHECK-NEXT: [[BITCAST4:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)1437 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST3]](<2 x s16>), [[BITCAST4]](<2 x s16>)1438 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1439 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11440 %1:_(<4 x s16>) = COPY $vgpr2_vgpr31441 %2:_(<3 x s16>) = G_EXTRACT %1, 01442 %3:_(<4 x s16>) = G_INSERT %0, %2, 161443 $vgpr0_vgpr1 = COPY %31444...1445---1446name: test_insert_v4s16_s32_offset01447body: |1448 bb.0:1449 liveins: $vgpr0_vgpr1, $vgpr21450 1451 ; CHECK-LABEL: name: test_insert_v4s16_s32_offset01452 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21453 ; CHECK-NEXT: {{ $}}1454 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11455 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21456 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1457 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161458 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C]](s32)1459 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351460 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]1461 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1462 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1463 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1464 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[UV1]](<2 x s16>)1465 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1466 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11467 %1:_(s32) = COPY $vgpr21468 %2:_(<4 x s16>) = G_INSERT %0, %1, 01469 $vgpr0_vgpr1 = COPY %21470...1471---1472name: test_insert_v4s16_s32_offset161473body: |1474 bb.0:1475 liveins: $vgpr0_vgpr1, $vgpr21476 1477 ; CHECK-LABEL: name: test_insert_v4s16_s32_offset161478 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21479 ; CHECK-NEXT: {{ $}}1480 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11481 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21482 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1483 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1484 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161485 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)1486 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32)1487 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C]](s32)1488 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351489 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1490 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]1491 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C]](s32)1492 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1493 ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1494 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1495 ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[LSHR1]], [[SHL1]]1496 ; CHECK-NEXT: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)1497 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST2]](<2 x s16>), [[BITCAST3]](<2 x s16>)1498 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1499 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11500 %1:_(s32) = COPY $vgpr21501 %2:_(<4 x s16>) = G_INSERT %0, %1, 161502 $vgpr0_vgpr1 = COPY %21503...1504---1505name: test_insert_v4s16_s32_offset321506body: |1507 bb.0:1508 liveins: $vgpr0_vgpr1, $vgpr21509 1510 ; CHECK-LABEL: name: test_insert_v4s16_s32_offset321511 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21512 ; CHECK-NEXT: {{ $}}1513 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11514 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21515 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1516 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161517 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C]](s32)1518 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351519 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]1520 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1521 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1522 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1523 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[UV]](<2 x s16>), [[BITCAST]](<2 x s16>)1524 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1525 %0:_(<4 x s16>) = COPY $vgpr0_vgpr11526 %1:_(s32) = COPY $vgpr21527 %2:_(<4 x s16>) = G_INSERT %0, %1, 321528 $vgpr0_vgpr1 = COPY %21529...1530 1531---1532name: test_insert_s64_s16_offset01533body: |1534 bb.0:1535 liveins: $vgpr0_vgpr1, $vgpr21536 1537 ; CHECK-LABEL: name: test_insert_s64_s16_offset01538 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21539 ; CHECK-NEXT: {{ $}}1540 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr11541 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21542 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)1543 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[TRUNC]](s16), 01544 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](s64)1545 %0:_(s64) = COPY $vgpr0_vgpr11546 %1:_(s32) = COPY $vgpr21547 %2:_(s16) = G_TRUNC %11548 %3:_(s64) = G_INSERT %0, %2, 01549 $vgpr0_vgpr1 = COPY %31550...1551---1552name: test_insert_s64_s16_offset161553body: |1554 bb.0:1555 liveins: $vgpr0_vgpr1, $vgpr21556 1557 ; CHECK-LABEL: name: test_insert_s64_s16_offset161558 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21559 ; CHECK-NEXT: {{ $}}1560 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr11561 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21562 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)1563 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[TRUNC]](s16), 161564 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](s64)1565 %0:_(s64) = COPY $vgpr0_vgpr11566 %1:_(s32) = COPY $vgpr21567 %2:_(s16) = G_TRUNC %11568 %3:_(s64) = G_INSERT %0, %2, 161569 $vgpr0_vgpr1 = COPY %31570...1571---1572name: test_insert_s64_s16_offset321573body: |1574 bb.0:1575 liveins: $vgpr0_vgpr1, $vgpr21576 1577 ; CHECK-LABEL: name: test_insert_s64_s16_offset321578 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21579 ; CHECK-NEXT: {{ $}}1580 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr11581 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21582 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)1583 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[TRUNC]](s16), 321584 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](s64)1585 %0:_(s64) = COPY $vgpr0_vgpr11586 %1:_(s32) = COPY $vgpr21587 %2:_(s16) = G_TRUNC %11588 %3:_(s64) = G_INSERT %0, %2, 321589 $vgpr0_vgpr1 = COPY %31590...1591---1592name: test_insert_s64_s16_offset481593body: |1594 bb.0:1595 liveins: $vgpr0_vgpr1, $vgpr21596 1597 ; CHECK-LABEL: name: test_insert_s64_s16_offset481598 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21599 ; CHECK-NEXT: {{ $}}1600 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr11601 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21602 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)1603 ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[TRUNC]](s16), 481604 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](s64)1605 %0:_(s64) = COPY $vgpr0_vgpr11606 %1:_(s32) = COPY $vgpr21607 %2:_(s16) = G_TRUNC %11608 %3:_(s64) = G_INSERT %0, %2, 481609 $vgpr0_vgpr1 = COPY %31610...1611---1612name: test_insert_s32_s16_offset01613body: |1614 bb.0:1615 liveins: $vgpr0, $vgpr11616 1617 ; CHECK-LABEL: name: test_insert_s32_s16_offset01618 ; CHECK: liveins: $vgpr0, $vgpr11619 ; CHECK-NEXT: {{ $}}1620 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01621 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11622 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351623 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]1624 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -655361625 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]1626 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[AND]]1627 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR]](s32)1628 ; CHECK-NEXT: $vgpr0 = COPY [[COPY2]](s32)1629 %0:_(s32) = COPY $vgpr01630 %1:_(s32) = COPY $vgpr11631 %2:_(s16) = G_TRUNC %11632 %3:_(s32) = G_INSERT %1, %2, 01633 $vgpr0 = COPY %31634...1635 1636---1637name: test_insert_s32_s16_offset11638body: |1639 bb.0:1640 liveins: $vgpr0, $vgpr11641 1642 ; CHECK-LABEL: name: test_insert_s32_s16_offset11643 ; CHECK: liveins: $vgpr0, $vgpr11644 ; CHECK-NEXT: {{ $}}1645 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01646 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11647 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351648 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]1649 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 11650 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32)1651 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1310711652 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C2]]1653 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL]]1654 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR]](s32)1655 ; CHECK-NEXT: $vgpr0 = COPY [[COPY2]](s32)1656 %0:_(s32) = COPY $vgpr01657 %1:_(s32) = COPY $vgpr11658 %2:_(s16) = G_TRUNC %11659 %3:_(s32) = G_INSERT %1, %2, 11660 $vgpr0 = COPY %31661...1662 1663---1664name: test_insert_s32_s16_offset81665body: |1666 bb.0:1667 liveins: $vgpr0, $vgpr11668 1669 ; CHECK-LABEL: name: test_insert_s32_s16_offset81670 ; CHECK: liveins: $vgpr0, $vgpr11671 ; CHECK-NEXT: {{ $}}1672 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01673 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11674 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351675 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]1676 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 81677 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32)1678 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 -167769611679 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C2]]1680 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL]]1681 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR]](s32)1682 ; CHECK-NEXT: $vgpr0 = COPY [[COPY2]](s32)1683 %0:_(s32) = COPY $vgpr01684 %1:_(s32) = COPY $vgpr11685 %2:_(s16) = G_TRUNC %11686 %3:_(s32) = G_INSERT %1, %2, 81687 $vgpr0 = COPY %31688...1689 1690---1691name: test_insert_s32_s16_offset161692body: |1693 bb.0:1694 liveins: $vgpr0, $vgpr11695 1696 ; CHECK-LABEL: name: test_insert_s32_s16_offset161697 ; CHECK: liveins: $vgpr0, $vgpr11698 ; CHECK-NEXT: {{ $}}1699 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01700 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11701 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351702 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]1703 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[AND]](s32)1704 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 161705 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY2]], [[C1]](s32)1706 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1707 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[OR]](s32)1708 ; CHECK-NEXT: $vgpr0 = COPY [[COPY3]](s32)1709 %0:_(s32) = COPY $vgpr01710 %1:_(s32) = COPY $vgpr11711 %2:_(s16) = G_TRUNC %11712 %3:_(s32) = G_INSERT %1, %2, 161713 $vgpr0 = COPY %31714...1715