brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.1 KiB · 3780542 Raw
302 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-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX6 %s3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -run-pass=amdgpu-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX9 %s4 5---6name: narrow_shl_s32_by_2_from_zext_s167tracksRegLiveness: true8body:             |9  bb.0:10    liveins: $vgpr011 12    ; GFX6-LABEL: name: narrow_shl_s32_by_2_from_zext_s1613    ; GFX6: liveins: $vgpr014    ; GFX6-NEXT: {{  $}}15    ; GFX6-NEXT: %argument:_(s32) = COPY $vgpr016    ; GFX6-NEXT: %narrow:_(s16) = G_TRUNC %argument(s32)17    ; GFX6-NEXT: %masklow14:_(s16) = G_CONSTANT i16 1638318    ; GFX6-NEXT: %masked:_(s16) = G_AND %narrow, %masklow1419    ; GFX6-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 220    ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL %masked, [[C]](s16)21    ; GFX6-NEXT: %shl:_(s32) = G_ZEXT [[SHL]](s16)22    ; GFX6-NEXT: $vgpr0 = COPY %shl(s32)23    ;24    ; GFX9-LABEL: name: narrow_shl_s32_by_2_from_zext_s1625    ; GFX9: liveins: $vgpr026    ; GFX9-NEXT: {{  $}}27    ; GFX9-NEXT: %argument:_(s32) = COPY $vgpr028    ; GFX9-NEXT: %narrow:_(s16) = G_TRUNC %argument(s32)29    ; GFX9-NEXT: %masklow14:_(s16) = G_CONSTANT i16 1638330    ; GFX9-NEXT: %masked:_(s16) = G_AND %narrow, %masklow1431    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 232    ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL %masked, [[C]](s16)33    ; GFX9-NEXT: %shl:_(s32) = G_ZEXT [[SHL]](s16)34    ; GFX9-NEXT: $vgpr0 = COPY %shl(s32)35    %argument:_(s32) = COPY $vgpr036    %narrow:_(s16) = G_TRUNC %argument37    %masklow14:_(s16) = G_CONSTANT i16 1638338    %masked:_(s16) = G_AND %narrow, %masklow1439    %extend:_(s32) = G_ZEXT %masked40    %shiftamt:_(s32) = G_CONSTANT i32 241    %shl:_(s32) = G_SHL %extend, %shiftamt42    $vgpr0 = COPY %shl43...44 45---46name: narrow_shl_s64_by_2_from_zext_s1647tracksRegLiveness: true48body:             |49  bb.0:50    liveins: $vgpr051 52    ; GFX6-LABEL: name: narrow_shl_s64_by_2_from_zext_s1653    ; GFX6: liveins: $vgpr054    ; GFX6-NEXT: {{  $}}55    ; GFX6-NEXT: %argument:_(s32) = COPY $vgpr056    ; GFX6-NEXT: %narrow:_(s16) = G_TRUNC %argument(s32)57    ; GFX6-NEXT: %masklow14:_(s16) = G_CONSTANT i16 1638358    ; GFX6-NEXT: %masked:_(s16) = G_AND %narrow, %masklow1459    ; GFX6-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 260    ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL %masked, [[C]](s16)61    ; GFX6-NEXT: %shl:_(s64) = G_ZEXT [[SHL]](s16)62    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY %shl(s64)63    ;64    ; GFX9-LABEL: name: narrow_shl_s64_by_2_from_zext_s1665    ; GFX9: liveins: $vgpr066    ; GFX9-NEXT: {{  $}}67    ; GFX9-NEXT: %argument:_(s32) = COPY $vgpr068    ; GFX9-NEXT: %narrow:_(s16) = G_TRUNC %argument(s32)69    ; GFX9-NEXT: %masklow14:_(s16) = G_CONSTANT i16 1638370    ; GFX9-NEXT: %masked:_(s16) = G_AND %narrow, %masklow1471    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 272    ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL %masked, [[C]](s16)73    ; GFX9-NEXT: %shl:_(s64) = G_ZEXT [[SHL]](s16)74    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY %shl(s64)75    %argument:_(s32) = COPY $vgpr076    %narrow:_(s16) = G_TRUNC %argument77    %masklow14:_(s16) = G_CONSTANT i16 1638378    %masked:_(s16) = G_AND %narrow, %masklow1479    %extend:_(s64) = G_ZEXT %masked80    %shiftamt:_(s32) = G_CONSTANT i32 281    %shl:_(s64) = G_SHL %extend, %shiftamt82    $vgpr0_vgpr1 = COPY %shl83...84 85---86name: narrow_shl_s16_by_2_from_zext_s887tracksRegLiveness: true88body:             |89  bb.0:90    liveins: $vgpr091 92    ; GFX6-LABEL: name: narrow_shl_s16_by_2_from_zext_s893    ; GFX6: liveins: $vgpr094    ; GFX6-NEXT: {{  $}}95    ; GFX6-NEXT: %argument:_(s32) = COPY $vgpr096    ; GFX6-NEXT: %narrow:_(s8) = G_TRUNC %argument(s32)97    ; GFX6-NEXT: %masklow6:_(s8) = G_CONSTANT i8 6398    ; GFX6-NEXT: %masked:_(s8) = G_AND %narrow, %masklow699    ; GFX6-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 2100    ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s8) = G_SHL %masked, [[C]](s8)101    ; GFX6-NEXT: %result:_(s32) = G_ZEXT [[SHL]](s8)102    ; GFX6-NEXT: $vgpr0 = COPY %result(s32)103    ;104    ; GFX9-LABEL: name: narrow_shl_s16_by_2_from_zext_s8105    ; GFX9: liveins: $vgpr0106    ; GFX9-NEXT: {{  $}}107    ; GFX9-NEXT: %argument:_(s32) = COPY $vgpr0108    ; GFX9-NEXT: %narrow:_(s8) = G_TRUNC %argument(s32)109    ; GFX9-NEXT: %masklow6:_(s8) = G_CONSTANT i8 63110    ; GFX9-NEXT: %masked:_(s8) = G_AND %narrow, %masklow6111    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 2112    ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s8) = G_SHL %masked, [[C]](s8)113    ; GFX9-NEXT: %result:_(s32) = G_ZEXT [[SHL]](s8)114    ; GFX9-NEXT: $vgpr0 = COPY %result(s32)115    %argument:_(s32) = COPY $vgpr0116    %narrow:_(s8) = G_TRUNC %argument117    %masklow6:_(s8) = G_CONSTANT i8 63118    %masked:_(s8) = G_AND %narrow, %masklow6119    %extend:_(s16) = G_ZEXT %masked120    %shiftamt:_(s16) = G_CONSTANT i16 2121    %shl:_(s16) = G_SHL %extend, %shiftamt122    %result:_(s32) = G_ANYEXT %shl123    $vgpr0 = COPY %result124...125 126---127name: narrow_shl_v2s32_by_2_from_zext_v2s16128tracksRegLiveness: true129body:             |130  bb.0:131    liveins: $vgpr0132 133    ; GFX6-LABEL: name: narrow_shl_v2s32_by_2_from_zext_v2s16134    ; GFX6: liveins: $vgpr0135    ; GFX6-NEXT: {{  $}}136    ; GFX6-NEXT: %narrow:_(<2 x s16>) = COPY $vgpr0137    ; GFX6-NEXT: %masklow14:_(s16) = G_CONSTANT i16 16383138    ; GFX6-NEXT: %masklow14vec:_(<2 x s16>) = G_BUILD_VECTOR %masklow14(s16), %masklow14(s16)139    ; GFX6-NEXT: %masked:_(<2 x s16>) = G_AND %narrow, %masklow14vec140    ; GFX6-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 2141    ; GFX6-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[C]](s16), [[C]](s16)142    ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(<2 x s16>) = G_SHL %masked, [[BUILD_VECTOR]](<2 x s16>)143    ; GFX6-NEXT: %shl:_(<2 x s32>) = G_ZEXT [[SHL]](<2 x s16>)144    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY %shl(<2 x s32>)145    ;146    ; GFX9-LABEL: name: narrow_shl_v2s32_by_2_from_zext_v2s16147    ; GFX9: liveins: $vgpr0148    ; GFX9-NEXT: {{  $}}149    ; GFX9-NEXT: %narrow:_(<2 x s16>) = COPY $vgpr0150    ; GFX9-NEXT: %masklow14:_(s16) = G_CONSTANT i16 16383151    ; GFX9-NEXT: %masklow14vec:_(<2 x s16>) = G_BUILD_VECTOR %masklow14(s16), %masklow14(s16)152    ; GFX9-NEXT: %masked:_(<2 x s16>) = G_AND %narrow, %masklow14vec153    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 2154    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[C]](s16), [[C]](s16)155    ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(<2 x s16>) = G_SHL %masked, [[BUILD_VECTOR]](<2 x s16>)156    ; GFX9-NEXT: %shl:_(<2 x s32>) = G_ZEXT [[SHL]](<2 x s16>)157    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY %shl(<2 x s32>)158    %narrow:_(<2 x s16>) = COPY $vgpr0159    %masklow14:_(s16) = G_CONSTANT i16 16383160    %masklow14vec:_(<2 x s16>) = G_BUILD_VECTOR %masklow14, %masklow14161    %masked:_(<2 x s16>) = G_AND %narrow, %masklow14vec162    %extend:_(<2 x s32>) = G_ZEXT %masked163    %shiftamt:_(s32) = G_CONSTANT i32 2164    %shiftamtvec:_(<2 x s32>) = G_BUILD_VECTOR %shiftamt, %shiftamt165    %shl:_(<2 x s32>) = G_SHL %extend, %shiftamtvec166    $vgpr0_vgpr1 = COPY %shl167...168 169---170name: narrow_shl_v2s64_by_2_from_anyext_v2s32171tracksRegLiveness: true172body:             |173  bb.0:174    liveins: $vgpr0_vgpr1175 176    ; GFX6-LABEL: name: narrow_shl_v2s64_by_2_from_anyext_v2s32177    ; GFX6: liveins: $vgpr0_vgpr1178    ; GFX6-NEXT: {{  $}}179    ; GFX6-NEXT: %narrow:_(<2 x s32>) = COPY $vgpr0_vgpr1180    ; GFX6-NEXT: %masklow30:_(s32) = G_CONSTANT i32 1073741823181    ; GFX6-NEXT: %masklow30vec:_(<2 x s32>) = G_BUILD_VECTOR %masklow30(s32), %masklow30(s32)182    ; GFX6-NEXT: %masked:_(<2 x s32>) = G_AND %narrow, %masklow30vec183    ; GFX6-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 2184    ; GFX6-NEXT: %shiftamtvec:_(<2 x s32>) = G_BUILD_VECTOR %shiftamt(s32), %shiftamt(s32)185    ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(<2 x s32>) = G_SHL %masked, %shiftamtvec(<2 x s32>)186    ; GFX6-NEXT: %shl:_(<2 x s64>) = G_ZEXT [[SHL]](<2 x s32>)187    ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %shl(<2 x s64>)188    ;189    ; GFX9-LABEL: name: narrow_shl_v2s64_by_2_from_anyext_v2s32190    ; GFX9: liveins: $vgpr0_vgpr1191    ; GFX9-NEXT: {{  $}}192    ; GFX9-NEXT: %narrow:_(<2 x s32>) = COPY $vgpr0_vgpr1193    ; GFX9-NEXT: %masklow30:_(s32) = G_CONSTANT i32 1073741823194    ; GFX9-NEXT: %masklow30vec:_(<2 x s32>) = G_BUILD_VECTOR %masklow30(s32), %masklow30(s32)195    ; GFX9-NEXT: %masked:_(<2 x s32>) = G_AND %narrow, %masklow30vec196    ; GFX9-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 2197    ; GFX9-NEXT: %shiftamtvec:_(<2 x s32>) = G_BUILD_VECTOR %shiftamt(s32), %shiftamt(s32)198    ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(<2 x s32>) = G_SHL %masked, %shiftamtvec(<2 x s32>)199    ; GFX9-NEXT: %shl:_(<2 x s64>) = G_ZEXT [[SHL]](<2 x s32>)200    ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %shl(<2 x s64>)201    %narrow:_(<2 x s32>) = COPY $vgpr0_vgpr1202    %masklow30:_(s32) = G_CONSTANT i32 1073741823203    %masklow30vec:_(<2 x s32>) = G_BUILD_VECTOR %masklow30, %masklow30204    %masked:_(<2 x s32>) = G_AND %narrow, %masklow30vec205    %extend:_(<2 x s64>) = G_ANYEXT %masked206    %shiftamt:_(s32) = G_CONSTANT i32 2207    %shiftamtvec:_(<2 x s32>) = G_BUILD_VECTOR %shiftamt, %shiftamt208    %shl:_(<2 x s64>) = G_SHL %extend, %shiftamtvec209    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %shl210...211 212---213name: do_not_shl_s32_zero_by_16_from_zext_s16214tracksRegLiveness: true215legalized: true216 217body:             |218  bb.0:219    liveins: $vgpr0220    ; GFX6-LABEL: name: do_not_shl_s32_zero_by_16_from_zext_s16221    ; GFX6: liveins: $vgpr0222    ; GFX6-NEXT: {{  $}}223    ; GFX6-NEXT: %extend:_(s32) = G_CONSTANT i32 0224    ; GFX6-NEXT: $vgpr0 = COPY %extend(s32)225    ;226    ; GFX9-LABEL: name: do_not_shl_s32_zero_by_16_from_zext_s16227    ; GFX9: liveins: $vgpr0228    ; GFX9-NEXT: {{  $}}229    ; GFX9-NEXT: %extend:_(s32) = G_CONSTANT i32 0230    ; GFX9-NEXT: $vgpr0 = COPY %extend(s32)231    %zero:_(s16) = G_CONSTANT i16 0232    %extend:_(s32) = G_ZEXT %zero:_(s16)233    %shiftamt:_(s16) = G_CONSTANT i16 16234    %shl:_(s32) = G_SHL %extend, %shiftamt(s16)235    $vgpr0 = COPY %shl236...237 238---239name: do_not_shl_v2s32_zero_by_16_from_zext_v2s16240tracksRegLiveness: true241legalized: true242 243body:             |244  bb.0:245    liveins: $vgpr0, $vgpr1246    ; GFX6-LABEL: name: do_not_shl_v2s32_zero_by_16_from_zext_v2s16247    ; GFX6: liveins: $vgpr0, $vgpr1248    ; GFX6-NEXT: {{  $}}249    ; GFX6-NEXT: %6:_(s32) = G_CONSTANT i32 0250    ; GFX6-NEXT: %shl:_(<2 x s32>) = G_BUILD_VECTOR %6(s32), %6(s32)251    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY %shl(<2 x s32>)252    ;253    ; GFX9-LABEL: name: do_not_shl_v2s32_zero_by_16_from_zext_v2s16254    ; GFX9: liveins: $vgpr0, $vgpr1255    ; GFX9-NEXT: {{  $}}256    ; GFX9-NEXT: %6:_(s32) = G_CONSTANT i32 0257    ; GFX9-NEXT: %shl:_(<2 x s32>) = G_BUILD_VECTOR %6(s32), %6(s32)258    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY %shl(<2 x s32>)259    %zero:_(s16) = G_CONSTANT i16 0260    %zerovector:_(<2 x s16>) = G_BUILD_VECTOR %zero, %zero:_(s16)261    %shiftamt:_(s16) = G_CONSTANT i16 16262    %shiftamtvector:_(<2 x s16>) = G_BUILD_VECTOR %shiftamt, %shiftamt:_(s16)263    %extend:_(<2 x s32>) = G_ZEXT %zerovector:_(<2 x s16>)264    %shl:_(<2 x s32>) = G_SHL %extend, %shiftamtvector265    $vgpr0_vgpr1 = COPY %shl266...267 268---269name: do_not_shl_s32_by_16_from_zext_s16270tracksRegLiveness: true271legalized: true272 273body:             |274  bb.0:275    liveins: $vgpr0276    ; GFX6-LABEL: name: do_not_shl_s32_by_16_from_zext_s16277    ; GFX6: liveins: $vgpr0278    ; GFX6-NEXT: {{  $}}279    ; GFX6-NEXT: %argument:_(s32) = COPY $vgpr0280    ; GFX6-NEXT: %truncate:_(s16) = G_TRUNC %argument(s32)281    ; GFX6-NEXT: %shiftamt:_(s16) = G_CONSTANT i16 16282    ; GFX6-NEXT: %extend:_(s32) = G_ZEXT %truncate(s16)283    ; GFX6-NEXT: %shl:_(s32) = G_SHL %extend, %shiftamt(s16)284    ; GFX6-NEXT: $vgpr0 = COPY %shl(s32)285    ;286    ; GFX9-LABEL: name: do_not_shl_s32_by_16_from_zext_s16287    ; GFX9: liveins: $vgpr0288    ; GFX9-NEXT: {{  $}}289    ; GFX9-NEXT: %argument:_(s32) = COPY $vgpr0290    ; GFX9-NEXT: %truncate:_(s16) = G_TRUNC %argument(s32)291    ; GFX9-NEXT: %shiftamt:_(s16) = G_CONSTANT i16 16292    ; GFX9-NEXT: %extend:_(s32) = G_ZEXT %truncate(s16)293    ; GFX9-NEXT: %shl:_(s32) = G_SHL %extend, %shiftamt(s16)294    ; GFX9-NEXT: $vgpr0 = COPY %shl(s32)295    %argument:_(s32) = COPY $vgpr0296    %truncate:_(s16) = G_TRUNC %argument:_(s32)297    %shiftamt:_(s16) = G_CONSTANT i16 16298    %extend:_(s32) = G_ZEXT %truncate:_(s16)299    %shl:_(s32) = G_SHL %extend, %shiftamt(s16)300    $vgpr0 = COPY %shl301...302