brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.6 KiB · 01e4162 Raw
273 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -run-pass=legalizer %s -o - | FileCheck -check-prefix=GFX9 %s3 4# The G_ZEXT and G_SHL will be scalarized, introducing a5# G_UNMERGE_VALUES of G_BUILD_VECTOR. The artifact combiner should6# eliminate the pair.7---8name: revisit_build_vector_unmerge_user9tracksRegLiveness: true10body:             |11  bb.0:12    liveins: $vgpr0_vgpr113 14    ; GFX9-LABEL: name: revisit_build_vector_unmerge_user15    ; GFX9: liveins: $vgpr0_vgpr116    ; GFX9-NEXT: {{  $}}17    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr118    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 219    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)20    ; GFX9-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[UV]](s32)21    ; GFX9-NEXT: [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[UV1]](s32)22    ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXT]], [[C]](s32)23    ; GFX9-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[ZEXT1]], [[C]](s32)24    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[SHL]](s64), [[SHL1]](s64)25    ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)26    %0:_(<2 x s32>) = COPY $vgpr0_vgpr127    %1:_(s32) = G_CONSTANT i32 228    %2:_(<2 x s32>) = G_BUILD_VECTOR %1, %129    %3:_(<2 x s64>) = G_ZEXT %030    %4:_(<2 x s64>) = G_SHL %3, %231    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %432...33 34---35name: copy_scalar36body: |37  bb.0:38    liveins: $vgpr0_vgpr1, $vgpr2_vgpr339 40    ; GFX9-LABEL: name: copy_scalar41    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr342    ; GFX9-NEXT: {{  $}}43    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr144    ; GFX9-NEXT: $vgpr2_vgpr3 = COPY [[COPY]](s64)45    %0:_(s64) = COPY $vgpr0_vgpr146    %1:_(s32), %2:_(s32) = G_UNMERGE_VALUES %0(s64)47    %3:_(s64) = G_MERGE_VALUES %1, %248    $vgpr2_vgpr3= COPY %349...50 51---52name: copy_vector_using_elements53body: |54  bb.0:55    liveins: $vgpr0_vgpr1, $vgpr2_vgpr356 57    ; GFX9-LABEL: name: copy_vector_using_elements58    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr359    ; GFX9-NEXT: {{  $}}60    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr161    ; GFX9-NEXT: $vgpr2_vgpr3 = COPY [[COPY]](<2 x s32>)62    %0:_(<2 x s32>) = COPY $vgpr0_vgpr163    %1:_(s32), %2:_(s32) = G_UNMERGE_VALUES %0(<2 x s32>)64    %3:_(<2 x s32>) = G_BUILD_VECTOR %1, %265    $vgpr2_vgpr3= COPY %366...67 68---69name: copy_vector_using_subvectors70body: |71  bb.0:72    liveins: $vgpr0_vgpr1, $vgpr2_vgpr373 74    ; GFX9-LABEL: name: copy_vector_using_subvectors75    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr376    ; GFX9-NEXT: {{  $}}77    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr178    ; GFX9-NEXT: $vgpr2_vgpr3 = COPY [[COPY]](<4 x s16>)79    %0:_(<4 x s16>) = COPY $vgpr0_vgpr180    %1:_(<2 x s16>), %2:_(<2 x s16>) = G_UNMERGE_VALUES %0(<4 x s16>)81    %3:_(<4 x s16>) = G_CONCAT_VECTORS %1, %282    $vgpr2_vgpr3= COPY %383...84 85---86name: shuffle_vector_elements87body: |88  bb.0:89    liveins: $vgpr0_vgpr1, $vgpr2_vgpr390 91    ; GFX9-LABEL: name: shuffle_vector_elements92    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr393    ; GFX9-NEXT: {{  $}}94    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr195    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)96    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[UV1]](s32), [[UV]](s32)97    ; GFX9-NEXT: $vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s32>)98    %0:_(<2 x s32>) = COPY $vgpr0_vgpr199    %1:_(s32), %2:_(s32) = G_UNMERGE_VALUES %0(<2 x s32>)100    %3:_(<2 x s32>) = G_BUILD_VECTOR %2, %1101    $vgpr2_vgpr3= COPY %3102...103 104---105name: insert_element106body: |107  bb.0:108    liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3_vgpr4109 110    ; GFX9-LABEL: name: insert_element111    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3_vgpr4112    ; GFX9-NEXT: {{  $}}113    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1114    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2115    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)116    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[COPY1]](s32)117    ; GFX9-NEXT: $vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s32>)118    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1119    %1:_(s32) = COPY $vgpr2120    %2:_(s32), %3:_(s32) = G_UNMERGE_VALUES %0(<2 x s32>)121    %4:_(<2 x s32>) = G_BUILD_VECTOR %2, %1122    $vgpr2_vgpr3= COPY %4123...124 125---126name: unmerge_to_sub_vectors127body: |128  bb.0:129    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7130 131    ; GFX9-LABEL: name: unmerge_to_sub_vectors132    ; GFX9: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7133    ; GFX9-NEXT: {{  $}}134    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3135    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(<2 x s32>), [[UV1:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)136    ; GFX9-NEXT: $vgpr4_vgpr5 = COPY [[UV]](<2 x s32>)137    ; GFX9-NEXT: $vgpr6_vgpr7 = COPY [[UV1]](<2 x s32>)138    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3139    %1:_(s32), %2:_(s32), %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %0(<4 x s32>)140    %5:_(<2 x s32>) = G_BUILD_VECTOR %1, %2141    %6:_(<2 x s32>) = G_BUILD_VECTOR %3, %4142    $vgpr4_vgpr5= COPY %5143    $vgpr6_vgpr7= COPY %6144...145 146---147name: cant_unmerge_to_sub_vectors148body: |149  bb.0:150    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7151 152    ; GFX9-LABEL: name: cant_unmerge_to_sub_vectors153    ; GFX9: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7154    ; GFX9-NEXT: {{  $}}155    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3156    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)157    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV3]](s32)158    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[UV1]](s32), [[UV2]](s32)159    ; GFX9-NEXT: $vgpr4_vgpr5 = COPY [[BUILD_VECTOR]](<2 x s32>)160    ; GFX9-NEXT: $vgpr6_vgpr7 = COPY [[BUILD_VECTOR1]](<2 x s32>)161    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3162    %1:_(s32), %2:_(s32), %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %0(<4 x s32>)163    %5:_(<2 x s32>) = G_BUILD_VECTOR %1, %4164    %6:_(<2 x s32>) = G_BUILD_VECTOR %2, %3165    $vgpr4_vgpr5= COPY %5166    $vgpr6_vgpr7= COPY %6167...168 169---170name: concat171body: |172  bb.0:173    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7174 175    ; GFX9-LABEL: name: concat176    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7177    ; GFX9-NEXT: {{  $}}178    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1179    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3180    ; GFX9-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s32>) = G_CONCAT_VECTORS [[COPY]](<2 x s32>), [[COPY1]](<2 x s32>)181    ; GFX9-NEXT: $vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[CONCAT_VECTORS]](<4 x s32>)182    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1183    %1:_(<2 x s32>) = COPY $vgpr2_vgpr3184    %2:_(s32), %3:_(s32) = G_UNMERGE_VALUES %0(<2 x s32>)185    %4:_(s32), %5:_(s32) = G_UNMERGE_VALUES %1(<2 x s32>)186    %6:_(<4 x s32>) = G_BUILD_VECTOR %2, %3, %4, %5187    $vgpr4_vgpr5_vgpr6_vgpr7= COPY %6188...189 190---191name: concat_same_vector192body: |193  bb.0:194    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5195 196    ; GFX9-LABEL: name: concat_same_vector197    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5198    ; GFX9-NEXT: {{  $}}199    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1200    ; GFX9-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s32>) = G_CONCAT_VECTORS [[COPY]](<2 x s32>), [[COPY]](<2 x s32>)201    ; GFX9-NEXT: $vgpr2_vgpr3_vgpr4_vgpr5 = COPY [[CONCAT_VECTORS]](<4 x s32>)202    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1203    %1:_(s32), %2:_(s32) = G_UNMERGE_VALUES %0(<2 x s32>)204    %3:_(<4 x s32>) = G_BUILD_VECTOR %1, %2, %1, %2205    $vgpr2_vgpr3_vgpr4_vgpr5= COPY %3206...207 208---209name: shuffle_not_concat210body: |211  bb.0:212    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7213 214    ; GFX9-LABEL: name: shuffle_not_concat215    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7216    ; GFX9-NEXT: {{  $}}217    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1218    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3219    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)220    ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)221    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV2]](s32), [[UV]](s32), [[UV1]](s32), [[UV3]](s32)222    ; GFX9-NEXT: $vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[BUILD_VECTOR]](<4 x s32>)223    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1224    %1:_(<2 x s32>) = COPY $vgpr2_vgpr3225    %2:_(s32), %3:_(s32) = G_UNMERGE_VALUES %0(<2 x s32>)226    %4:_(s32), %5:_(s32) = G_UNMERGE_VALUES %1(<2 x s32>)227    %6:_(<4 x s32>) = G_BUILD_VECTOR %4, %2, %3, %5228    $vgpr4_vgpr5_vgpr6_vgpr7= COPY %6229...230 231---232name: not_a_concat233body: |234  bb.0:235    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4, $vgpr5_vgpr6_vgpr7_vgpr8_vgpr9236 237    ; GFX9-LABEL: name: not_a_concat238    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4, $vgpr5_vgpr6_vgpr7_vgpr8_vgpr9239    ; GFX9-NEXT: {{  $}}240    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1241    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3242    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr4243    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)244    ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)245    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[UV2]](s32), [[UV3]](s32), [[COPY2]](s32)246    ; GFX9-NEXT: $vgpr5_vgpr6_vgpr7_vgpr8_vgpr9 = COPY [[BUILD_VECTOR]](<5 x s32>)247    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1248    %1:_(<2 x s32>) = COPY $vgpr2_vgpr3249    %2:_(s32) = COPY $vgpr4250    %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %0(<2 x s32>)251    %5:_(s32), %6:_(s32) = G_UNMERGE_VALUES %1(<2 x s32>)252    %7:_(<5 x s32>) = G_BUILD_VECTOR %3, %4, %5, %6, %2253    $vgpr5_vgpr6_vgpr7_vgpr8_vgpr9= COPY %7254...255 256---257name: value_finder_look_through_copy258body: |259  bb.0:260    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3261 262    ; GFX9-LABEL: name: value_finder_look_through_copy263    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3264    ; GFX9-NEXT: {{  $}}265    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1266    ; GFX9-NEXT: $vgpr2_vgpr3 = COPY [[COPY]](<2 x s32>)267    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1268    %1:_(s32), %2:_(s32) = G_UNMERGE_VALUES %0(<2 x s32>)269    %3:_(s32) = COPY %1270    %4:_(<2 x s32>) = G_BUILD_VECTOR %3, %2271    $vgpr2_vgpr3= COPY %4272...273