430 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=amdgpu-postlegalizer-combiner -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX6 %s3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -run-pass=amdgpu-postlegalizer-combiner -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX9 %s4 5# Can't narrow this; need known bits6---7name: shl_s64_by_2_from_anyext_s328tracksRegLiveness: true9legalized: true10body: |11 bb.0:12 liveins: $vgpr013 14 ; GFX6-LABEL: name: shl_s64_by_2_from_anyext_s3215 ; GFX6: liveins: $vgpr016 ; GFX6-NEXT: {{ $}}17 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr018 ; GFX6-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s32)19 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 220 ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ANYEXT]], [[C]](s32)21 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[SHL]](s64)22 ;23 ; GFX9-LABEL: name: shl_s64_by_2_from_anyext_s3224 ; GFX9: liveins: $vgpr025 ; GFX9-NEXT: {{ $}}26 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr027 ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s32)28 ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 229 ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ANYEXT]], [[C]](s32)30 ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[SHL]](s64)31 %0:_(s32) = COPY $vgpr032 %1:_(s64) = G_ANYEXT %033 %2:_(s32) = G_CONSTANT i32 234 %3:_(s64) = G_SHL %1, %235 $vgpr0_vgpr1 = COPY %336...37 38# Can't narrow this; need known bits39---40name: shl_s64_by_2_from_sext_s3241tracksRegLiveness: true42legalized: true43body: |44 bb.0:45 liveins: $vgpr046 47 ; GFX6-LABEL: name: shl_s64_by_2_from_sext_s3248 ; GFX6: liveins: $vgpr049 ; GFX6-NEXT: {{ $}}50 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr051 ; GFX6-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[COPY]](s32)52 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 253 ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[SEXT]], [[C]](s32)54 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[SHL]](s64)55 ;56 ; GFX9-LABEL: name: shl_s64_by_2_from_sext_s3257 ; GFX9: liveins: $vgpr058 ; GFX9-NEXT: {{ $}}59 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr060 ; GFX9-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[COPY]](s32)61 ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 262 ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[SEXT]], [[C]](s32)63 ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[SHL]](s64)64 %0:_(s32) = COPY $vgpr065 %1:_(s64) = G_SEXT %066 %2:_(s32) = G_CONSTANT i32 267 %3:_(s64) = G_SHL %1, %268 $vgpr0_vgpr1 = COPY %369...70 71# Can't narrow this; need known bits72---73name: shl_s64_by_2_from_zext_s3274tracksRegLiveness: true75legalized: true76body: |77 bb.0:78 liveins: $vgpr079 80 ; GFX6-LABEL: name: shl_s64_by_2_from_zext_s3281 ; GFX6: liveins: $vgpr082 ; GFX6-NEXT: {{ $}}83 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr084 ; GFX6-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY]](s32)85 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 286 ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXT]], [[C]](s32)87 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[SHL]](s64)88 ;89 ; GFX9-LABEL: name: shl_s64_by_2_from_zext_s3290 ; GFX9: liveins: $vgpr091 ; GFX9-NEXT: {{ $}}92 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr093 ; GFX9-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY]](s32)94 ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 295 ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXT]], [[C]](s32)96 ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[SHL]](s64)97 %0:_(s32) = COPY $vgpr098 %1:_(s64) = G_ZEXT %099 %2:_(s32) = G_CONSTANT i32 2100 %3:_(s64) = G_SHL %1, %2101 $vgpr0_vgpr1 = COPY %3102...103 104---105name: narrow_shl_s64_by_2_from_anyext_s32106tracksRegLiveness: true107legalized: true108body: |109 bb.0:110 liveins: $vgpr0111 112 ; GFX6-LABEL: name: narrow_shl_s64_by_2_from_anyext_s32113 ; GFX6: liveins: $vgpr0114 ; GFX6-NEXT: {{ $}}115 ; GFX6-NEXT: %narrow:_(s32) = COPY $vgpr0116 ; GFX6-NEXT: %masklow30:_(s32) = G_CONSTANT i32 1073741823117 ; GFX6-NEXT: %masked:_(s32) = G_AND %narrow, %masklow30118 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2119 ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL %masked, [[C]](s32)120 ; GFX6-NEXT: %shl:_(s64) = G_ZEXT [[SHL]](s32)121 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY %shl(s64)122 ;123 ; GFX9-LABEL: name: narrow_shl_s64_by_2_from_anyext_s32124 ; GFX9: liveins: $vgpr0125 ; GFX9-NEXT: {{ $}}126 ; GFX9-NEXT: %narrow:_(s32) = COPY $vgpr0127 ; GFX9-NEXT: %masklow30:_(s32) = G_CONSTANT i32 1073741823128 ; GFX9-NEXT: %masked:_(s32) = G_AND %narrow, %masklow30129 ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2130 ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL %masked, [[C]](s32)131 ; GFX9-NEXT: %shl:_(s64) = G_ZEXT [[SHL]](s32)132 ; GFX9-NEXT: $vgpr0_vgpr1 = COPY %shl(s64)133 %narrow:_(s32) = COPY $vgpr0134 %masklow30:_(s32) = G_CONSTANT i32 1073741823135 %masked:_(s32) = G_AND %narrow, %masklow30136 %extend:_(s64) = G_ANYEXT %masked137 %shiftamt:_(s32) = G_CONSTANT i32 2138 %shl:_(s64) = G_SHL %extend, %shiftamt139 $vgpr0_vgpr1 = COPY %shl140...141 142---143name: narrow_shl_s64_by_2_from_zext_s32144tracksRegLiveness: true145legalized: true146body: |147 bb.0:148 liveins: $vgpr0149 150 ; GFX6-LABEL: name: narrow_shl_s64_by_2_from_zext_s32151 ; GFX6: liveins: $vgpr0152 ; GFX6-NEXT: {{ $}}153 ; GFX6-NEXT: %narrow:_(s32) = COPY $vgpr0154 ; GFX6-NEXT: %masklow30:_(s32) = G_CONSTANT i32 1073741823155 ; GFX6-NEXT: %masked:_(s32) = G_AND %narrow, %masklow30156 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2157 ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL %masked, [[C]](s32)158 ; GFX6-NEXT: %shl:_(s64) = G_ZEXT [[SHL]](s32)159 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY %shl(s64)160 ;161 ; GFX9-LABEL: name: narrow_shl_s64_by_2_from_zext_s32162 ; GFX9: liveins: $vgpr0163 ; GFX9-NEXT: {{ $}}164 ; GFX9-NEXT: %narrow:_(s32) = COPY $vgpr0165 ; GFX9-NEXT: %masklow30:_(s32) = G_CONSTANT i32 1073741823166 ; GFX9-NEXT: %masked:_(s32) = G_AND %narrow, %masklow30167 ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2168 ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL %masked, [[C]](s32)169 ; GFX9-NEXT: %shl:_(s64) = G_ZEXT [[SHL]](s32)170 ; GFX9-NEXT: $vgpr0_vgpr1 = COPY %shl(s64)171 %narrow:_(s32) = COPY $vgpr0172 %masklow30:_(s32) = G_CONSTANT i32 1073741823173 %masked:_(s32) = G_AND %narrow, %masklow30174 %extend:_(s64) = G_ZEXT %masked175 %shiftamt:_(s32) = G_CONSTANT i32 2176 %shl:_(s64) = G_SHL %extend, %shiftamt177 $vgpr0_vgpr1 = COPY %shl178...179 180---181name: narrow_shl_s64_by_2_from_sext_s32182tracksRegLiveness: true183legalized: true184body: |185 bb.0:186 liveins: $vgpr0187 188 ; GFX6-LABEL: name: narrow_shl_s64_by_2_from_sext_s32189 ; GFX6: liveins: $vgpr0190 ; GFX6-NEXT: {{ $}}191 ; GFX6-NEXT: %narrow:_(s32) = COPY $vgpr0192 ; GFX6-NEXT: %masklow30:_(s32) = G_CONSTANT i32 1073741823193 ; GFX6-NEXT: %masked:_(s32) = G_AND %narrow, %masklow30194 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2195 ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL %masked, [[C]](s32)196 ; GFX6-NEXT: %shl:_(s64) = G_ZEXT [[SHL]](s32)197 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY %shl(s64)198 ;199 ; GFX9-LABEL: name: narrow_shl_s64_by_2_from_sext_s32200 ; GFX9: liveins: $vgpr0201 ; GFX9-NEXT: {{ $}}202 ; GFX9-NEXT: %narrow:_(s32) = COPY $vgpr0203 ; GFX9-NEXT: %masklow30:_(s32) = G_CONSTANT i32 1073741823204 ; GFX9-NEXT: %masked:_(s32) = G_AND %narrow, %masklow30205 ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2206 ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL %masked, [[C]](s32)207 ; GFX9-NEXT: %shl:_(s64) = G_ZEXT [[SHL]](s32)208 ; GFX9-NEXT: $vgpr0_vgpr1 = COPY %shl(s64)209 %narrow:_(s32) = COPY $vgpr0210 %masklow30:_(s32) = G_CONSTANT i32 1073741823211 %masked:_(s32) = G_AND %narrow, %masklow30212 %extend:_(s64) = G_SEXT %masked213 %shiftamt:_(s32) = G_CONSTANT i32 2214 %shl:_(s64) = G_SHL %extend, %shiftamt215 $vgpr0_vgpr1 = COPY %shl216...217 218---219name: narrow_shl_s64_by_2_from_zext_s32_lookthrough_amount220tracksRegLiveness: true221legalized: true222body: |223 bb.0:224 liveins: $vgpr0225 226 ; GFX6-LABEL: name: narrow_shl_s64_by_2_from_zext_s32_lookthrough_amount227 ; GFX6: liveins: $vgpr0228 ; GFX6-NEXT: {{ $}}229 ; GFX6-NEXT: %narrow:_(s32) = COPY $vgpr0230 ; GFX6-NEXT: %masklow30:_(s32) = G_CONSTANT i32 1073741823231 ; GFX6-NEXT: %masked:_(s32) = G_AND %narrow, %masklow30232 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2233 ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL %masked, [[C]](s32)234 ; GFX6-NEXT: %shl:_(s64) = G_ZEXT [[SHL]](s32)235 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY %shl(s64)236 ;237 ; GFX9-LABEL: name: narrow_shl_s64_by_2_from_zext_s32_lookthrough_amount238 ; GFX9: liveins: $vgpr0239 ; GFX9-NEXT: {{ $}}240 ; GFX9-NEXT: %narrow:_(s32) = COPY $vgpr0241 ; GFX9-NEXT: %masklow30:_(s32) = G_CONSTANT i32 1073741823242 ; GFX9-NEXT: %masked:_(s32) = G_AND %narrow, %masklow30243 ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2244 ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL %masked, [[C]](s32)245 ; GFX9-NEXT: %shl:_(s64) = G_ZEXT [[SHL]](s32)246 ; GFX9-NEXT: $vgpr0_vgpr1 = COPY %shl(s64)247 %narrow:_(s32) = COPY $vgpr0248 %masklow30:_(s32) = G_CONSTANT i32 1073741823249 %masked:_(s32) = G_AND %narrow, %masklow30250 %extend:_(s64) = G_ZEXT %masked251 %shiftamt64:_(s64) = G_CONSTANT i64 2252 %shiftamt:_(s32) = G_TRUNC %shiftamt64253 %shl:_(s64) = G_SHL %extend, %shiftamt254 $vgpr0_vgpr1 = COPY %shl255...256 257# Can't introduce a 16-bit shift before gfx8258---259name: narrow_shl_s32_by_2_from_zext_s16260tracksRegLiveness: true261legalized: true262body: |263 bb.0:264 liveins: $vgpr0265 266 ; GFX6-LABEL: name: narrow_shl_s32_by_2_from_zext_s16267 ; GFX6: liveins: $vgpr0268 ; GFX6-NEXT: {{ $}}269 ; GFX6-NEXT: %argument:_(s32) = COPY $vgpr0270 ; GFX6-NEXT: %narrow:_(s16) = G_TRUNC %argument(s32)271 ; GFX6-NEXT: %masklow14:_(s16) = G_CONSTANT i16 16383272 ; GFX6-NEXT: %masked:_(s16) = G_AND %narrow, %masklow14273 ; GFX6-NEXT: %extend:_(s32) = G_ZEXT %masked(s16)274 ; GFX6-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 2275 ; GFX6-NEXT: %shl:_(s32) = G_SHL %extend, %shiftamt(s32)276 ; GFX6-NEXT: $vgpr0 = COPY %shl(s32)277 ;278 ; GFX9-LABEL: name: narrow_shl_s32_by_2_from_zext_s16279 ; GFX9: liveins: $vgpr0280 ; GFX9-NEXT: {{ $}}281 ; GFX9-NEXT: %argument:_(s32) = COPY $vgpr0282 ; GFX9-NEXT: %narrow:_(s16) = G_TRUNC %argument(s32)283 ; GFX9-NEXT: %masklow14:_(s16) = G_CONSTANT i16 16383284 ; GFX9-NEXT: %masked:_(s16) = G_AND %narrow, %masklow14285 ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 2286 ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL %masked, [[C]](s16)287 ; GFX9-NEXT: %shl:_(s32) = G_ZEXT [[SHL]](s16)288 ; GFX9-NEXT: $vgpr0 = COPY %shl(s32)289 %argument:_(s32) = COPY $vgpr0290 %narrow:_(s16) = G_TRUNC %argument291 %masklow14:_(s16) = G_CONSTANT i16 16383292 %masked:_(s16) = G_AND %narrow, %masklow14293 %extend:_(s32) = G_ZEXT %masked294 %shiftamt:_(s32) = G_CONSTANT i32 2295 %shl:_(s32) = G_SHL %extend, %shiftamt296 $vgpr0 = COPY %shl297...298 299---300name: narrow_shl_s64_by_2_from_zext_s16301tracksRegLiveness: true302legalized: true303body: |304 bb.0:305 liveins: $vgpr0306 307 ; GFX6-LABEL: name: narrow_shl_s64_by_2_from_zext_s16308 ; GFX6: liveins: $vgpr0309 ; GFX6-NEXT: {{ $}}310 ; GFX6-NEXT: %argument:_(s32) = COPY $vgpr0311 ; GFX6-NEXT: %narrow:_(s16) = G_TRUNC %argument(s32)312 ; GFX6-NEXT: %masklow14:_(s16) = G_CONSTANT i16 16383313 ; GFX6-NEXT: %masked:_(s16) = G_AND %narrow, %masklow14314 ; GFX6-NEXT: %extend:_(s64) = G_ZEXT %masked(s16)315 ; GFX6-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 2316 ; GFX6-NEXT: %shl:_(s64) = G_SHL %extend, %shiftamt(s32)317 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY %shl(s64)318 ;319 ; GFX9-LABEL: name: narrow_shl_s64_by_2_from_zext_s16320 ; GFX9: liveins: $vgpr0321 ; GFX9-NEXT: {{ $}}322 ; GFX9-NEXT: %argument:_(s32) = COPY $vgpr0323 ; GFX9-NEXT: %narrow:_(s16) = G_TRUNC %argument(s32)324 ; GFX9-NEXT: %masklow14:_(s16) = G_CONSTANT i16 16383325 ; GFX9-NEXT: %masked:_(s16) = G_AND %narrow, %masklow14326 ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 2327 ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL %masked, [[C]](s16)328 ; GFX9-NEXT: %shl:_(s64) = G_ZEXT [[SHL]](s16)329 ; GFX9-NEXT: $vgpr0_vgpr1 = COPY %shl(s64)330 %argument:_(s32) = COPY $vgpr0331 %narrow:_(s16) = G_TRUNC %argument332 %masklow14:_(s16) = G_CONSTANT i16 16383333 %masked:_(s16) = G_AND %narrow, %masklow14334 %extend:_(s64) = G_ZEXT %masked335 %shiftamt:_(s32) = G_CONSTANT i32 2336 %shl:_(s64) = G_SHL %extend, %shiftamt337 $vgpr0_vgpr1 = COPY %shl338...339 340---341name: do_not_shl_s32_zero_by_16_from_zext_s16342tracksRegLiveness: true343legalized: true344 345body: |346 bb.0:347 liveins: $vgpr0348 ; GFX6-LABEL: name: do_not_shl_s32_zero_by_16_from_zext_s16349 ; GFX6: liveins: $vgpr0350 ; GFX6-NEXT: {{ $}}351 ; GFX6-NEXT: %extend:_(s32) = G_CONSTANT i32 0352 ; GFX6-NEXT: $vgpr0 = COPY %extend(s32)353 ;354 ; GFX9-LABEL: name: do_not_shl_s32_zero_by_16_from_zext_s16355 ; GFX9: liveins: $vgpr0356 ; GFX9-NEXT: {{ $}}357 ; GFX9-NEXT: %extend:_(s32) = G_CONSTANT i32 0358 ; GFX9-NEXT: $vgpr0 = COPY %extend(s32)359 %zero:_(s16) = G_CONSTANT i16 0360 %extend:_(s32) = G_ZEXT %zero:_(s16)361 %shiftamt:_(s16) = G_CONSTANT i16 16362 %shl:_(s32) = G_SHL %extend, %shiftamt(s16)363 $vgpr0 = COPY %shl364...365 366---367name: do_not_shl_v2s32_zero_by_16_from_zext_v2s16368tracksRegLiveness: true369legalized: true370 371body: |372 bb.0:373 liveins: $vgpr0374 ; GFX6-LABEL: name: do_not_shl_v2s32_zero_by_16_from_zext_v2s16375 ; GFX6: liveins: $vgpr0376 ; GFX6-NEXT: {{ $}}377 ; GFX6-NEXT: %6:_(s32) = G_CONSTANT i32 0378 ; GFX6-NEXT: %shl:_(<2 x s32>) = G_BUILD_VECTOR %6(s32), %6(s32)379 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY %shl(<2 x s32>)380 ;381 ; GFX9-LABEL: name: do_not_shl_v2s32_zero_by_16_from_zext_v2s16382 ; GFX9: liveins: $vgpr0383 ; GFX9-NEXT: {{ $}}384 ; GFX9-NEXT: %6:_(s32) = G_CONSTANT i32 0385 ; GFX9-NEXT: %shl:_(<2 x s32>) = G_BUILD_VECTOR %6(s32), %6(s32)386 ; GFX9-NEXT: $vgpr0_vgpr1 = COPY %shl(<2 x s32>)387 %zero:_(s16) = G_CONSTANT i16 0388 %zerovector:_(<2 x s16>) = G_BUILD_VECTOR %zero, %zero:_(s16)389 %shiftamt:_(s16) = G_CONSTANT i16 16390 %shiftamtvector:_(<2 x s16>) = G_BUILD_VECTOR %shiftamt, %shiftamt:_(s16)391 %extend:_(<2 x s32>) = G_ZEXT %zerovector:_(<2 x s16>)392 %shl:_(<2 x s32>) = G_SHL %extend, %shiftamtvector393 $vgpr0_vgpr1 = COPY %shl394...395 396---397name: do_not_shl_s32_by_16_from_zext_s16398tracksRegLiveness: true399legalized: true400 401body: |402 bb.0:403 liveins: $vgpr0404 ; GFX6-LABEL: name: do_not_shl_s32_by_16_from_zext_s16405 ; GFX6: liveins: $vgpr0406 ; GFX6-NEXT: {{ $}}407 ; GFX6-NEXT: %argument:_(s32) = COPY $vgpr0408 ; GFX6-NEXT: %truncate:_(s16) = G_TRUNC %argument(s32)409 ; GFX6-NEXT: %shiftamt:_(s16) = G_CONSTANT i16 16410 ; GFX6-NEXT: %extend:_(s32) = G_ZEXT %truncate(s16)411 ; GFX6-NEXT: %shl:_(s32) = G_SHL %extend, %shiftamt(s16)412 ; GFX6-NEXT: $vgpr0 = COPY %shl(s32)413 ;414 ; GFX9-LABEL: name: do_not_shl_s32_by_16_from_zext_s16415 ; GFX9: liveins: $vgpr0416 ; GFX9-NEXT: {{ $}}417 ; GFX9-NEXT: %argument:_(s32) = COPY $vgpr0418 ; GFX9-NEXT: %truncate:_(s16) = G_TRUNC %argument(s32)419 ; GFX9-NEXT: %shiftamt:_(s16) = G_CONSTANT i16 16420 ; GFX9-NEXT: %extend:_(s32) = G_ZEXT %truncate(s16)421 ; GFX9-NEXT: %shl:_(s32) = G_SHL %extend, %shiftamt(s16)422 ; GFX9-NEXT: $vgpr0 = COPY %shl(s32)423 %argument:_(s32) = COPY $vgpr0424 %truncate:_(s16) = G_TRUNC %argument:_(s32)425 %shiftamt:_(s16) = G_CONSTANT i16 16426 %extend:_(s32) = G_ZEXT %truncate:_(s16)427 %shl:_(s32) = G_SHL %extend, %shiftamt(s16)428 $vgpr0 = COPY %shl429...430