brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.3 KiB · 8dedb26 Raw
334 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple aarch64 -run-pass=aarch64-postlegalizer-lowering -verify-machineinstrs %s -o - | FileCheck %s3#4# Check that we can combine a G_SHUFFLE_VECTOR into a G_EXT.5 6...7---8name:            v8s8_cst39alignment:       410legalized:       true11tracksRegLiveness: true12body:             |13  bb.0:14    liveins: $d0, $d115    ; CHECK-LABEL: name: v8s8_cst316    ; CHECK: liveins: $d0, $d117    ; CHECK-NEXT: {{  $}}18    ; CHECK-NEXT: %v1:_(<8 x s8>) = COPY $d019    ; CHECK-NEXT: %v2:_(<8 x s8>) = COPY $d120    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 321    ; CHECK-NEXT: %shuf:_(<8 x s8>) = G_EXT %v1, %v2, [[C]](s32)22    ; CHECK-NEXT: $d0 = COPY %shuf(<8 x s8>)23    ; CHECK-NEXT: RET_ReallyLR implicit $d024    %v1:_(<8 x s8>) = COPY $d025    %v2:_(<8 x s8>) = COPY $d126    %shuf:_(<8 x s8>) = G_SHUFFLE_VECTOR %v1(<8 x s8>), %v2, shufflemask(3, 4, 5, 6, 7, 8, 9, 10)27    $d0 = COPY %shuf(<8 x s8>)28    RET_ReallyLR implicit $d029...30---31name:            v8s8_cst532alignment:       433legalized:       true34tracksRegLiveness: true35body:             |36  bb.0:37    liveins: $d0, $d138    ; CHECK-LABEL: name: v8s8_cst539    ; CHECK: liveins: $d0, $d140    ; CHECK-NEXT: {{  $}}41    ; CHECK-NEXT: %v1:_(<8 x s8>) = COPY $d042    ; CHECK-NEXT: %v2:_(<8 x s8>) = COPY $d143    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 544    ; CHECK-NEXT: %shuf:_(<8 x s8>) = G_EXT %v2, %v1, [[C]](s32)45    ; CHECK-NEXT: $d0 = COPY %shuf(<8 x s8>)46    ; CHECK-NEXT: RET_ReallyLR implicit $d047    %v1:_(<8 x s8>) = COPY $d048    %v2:_(<8 x s8>) = COPY $d149    %shuf:_(<8 x s8>) = G_SHUFFLE_VECTOR %v1(<8 x s8>), %v2, shufflemask(13, 14, 15, 0, 1, 2, 3, 4)50    $d0 = COPY %shuf(<8 x s8>)51    RET_ReallyLR implicit $d052...53---54name:            v16s8_cst355alignment:       456legalized:       true57tracksRegLiveness: true58body:             |59  bb.0:60    liveins: $q0, $q161    ; CHECK-LABEL: name: v16s8_cst362    ; CHECK: liveins: $q0, $q163    ; CHECK-NEXT: {{  $}}64    ; CHECK-NEXT: %v1:_(<16 x s8>) = COPY $q065    ; CHECK-NEXT: %v2:_(<16 x s8>) = COPY $q166    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 367    ; CHECK-NEXT: %shuf:_(<16 x s8>) = G_EXT %v1, %v2, [[C]](s32)68    ; CHECK-NEXT: $q0 = COPY %shuf(<16 x s8>)69    ; CHECK-NEXT: RET_ReallyLR implicit $q070    %v1:_(<16 x s8>) = COPY $q071    %v2:_(<16 x s8>) = COPY $q172    %shuf:_(<16 x s8>) = G_SHUFFLE_VECTOR %v1(<16 x s8>), %v2, shufflemask(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)73    $q0 = COPY %shuf(<16 x s8>)74    RET_ReallyLR implicit $q075...76---77name:            v16s8_cst778alignment:       479legalized:       true80tracksRegLiveness: true81body:             |82  bb.0:83    liveins: $q0, $q184    ; CHECK-LABEL: name: v16s8_cst785    ; CHECK: liveins: $q0, $q186    ; CHECK-NEXT: {{  $}}87    ; CHECK-NEXT: %v1:_(<16 x s8>) = COPY $q088    ; CHECK-NEXT: %v2:_(<16 x s8>) = COPY $q189    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 790    ; CHECK-NEXT: %shuf:_(<16 x s8>) = G_EXT %v2, %v1, [[C]](s32)91    ; CHECK-NEXT: $q0 = COPY %shuf(<16 x s8>)92    ; CHECK-NEXT: RET_ReallyLR implicit $q093    %v1:_(<16 x s8>) = COPY $q094    %v2:_(<16 x s8>) = COPY $q195    %shuf:_(<16 x s8>) = G_SHUFFLE_VECTOR %v1(<16 x s8>), %v2, shufflemask(23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6)96    $q0 = COPY %shuf(<16 x s8>)97    RET_ReallyLR implicit $q098...99---100name:            v4s16_cst6101alignment:       4102legalized:       true103tracksRegLiveness: true104body:             |105  bb.0:106    liveins: $d0, $d1107    ; CHECK-LABEL: name: v4s16_cst6108    ; CHECK: liveins: $d0, $d1109    ; CHECK-NEXT: {{  $}}110    ; CHECK-NEXT: %v1:_(<4 x s16>) = COPY $d0111    ; CHECK-NEXT: %v2:_(<4 x s16>) = COPY $d1112    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 6113    ; CHECK-NEXT: %shuf:_(<4 x s16>) = G_EXT %v1, %v2, [[C]](s32)114    ; CHECK-NEXT: $d0 = COPY %shuf(<4 x s16>)115    ; CHECK-NEXT: RET_ReallyLR implicit $d0116    %v1:_(<4 x s16>) = COPY $d0117    %v2:_(<4 x s16>) = COPY $d1118    %shuf:_(<4 x s16>) = G_SHUFFLE_VECTOR %v1(<4 x s16>), %v2, shufflemask(3, 4, 5, 6)119    $d0 = COPY %shuf(<4 x s16>)120    RET_ReallyLR implicit $d0121...122---123name:            v4s32_cst12124alignment:       4125legalized:       true126tracksRegLiveness: true127body:             |128  bb.0:129    liveins: $q0, $q1130    ; CHECK-LABEL: name: v4s32_cst12131    ; CHECK: liveins: $q0, $q1132    ; CHECK-NEXT: {{  $}}133    ; CHECK-NEXT: %v1:_(<4 x s32>) = COPY $q0134    ; CHECK-NEXT: %v2:_(<4 x s32>) = COPY $q1135    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12136    ; CHECK-NEXT: %shuf:_(<4 x s32>) = G_EXT %v1, %v2, [[C]](s32)137    ; CHECK-NEXT: $q0 = COPY %shuf(<4 x s32>)138    ; CHECK-NEXT: RET_ReallyLR implicit $q0139    %v1:_(<4 x s32>) = COPY $q0140    %v2:_(<4 x s32>) = COPY $q1141    %shuf:_(<4 x s32>) = G_SHUFFLE_VECTOR %v1(<4 x s32>), %v2, shufflemask(3, 4, 5, 6)142    $q0 = COPY %shuf(<4 x s32>)143    RET_ReallyLR implicit $q0144...145---146name:            undef_elts_should_match_1147alignment:       4148legalized:       true149tracksRegLiveness: true150body:             |151  bb.0:152    liveins: $d0, $d1153    ; Undef shuffle indices should not prevent matching G_EXT.154    ; We should get a constant 3 here.155    ; CHECK-LABEL: name: undef_elts_should_match_1156    ; CHECK: liveins: $d0, $d1157    ; CHECK-NEXT: {{  $}}158    ; CHECK-NEXT: %v1:_(<8 x s8>) = COPY $d0159    ; CHECK-NEXT: %v2:_(<8 x s8>) = COPY $d1160    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 3161    ; CHECK-NEXT: %shuf:_(<8 x s8>) = G_EXT %v1, %v2, [[C]](s32)162    ; CHECK-NEXT: $d0 = COPY %shuf(<8 x s8>)163    ; CHECK-NEXT: RET_ReallyLR implicit $d0164    %v1:_(<8 x s8>) = COPY $d0165    %v2:_(<8 x s8>) = COPY $d1166    %shuf:_(<8 x s8>) = G_SHUFFLE_VECTOR %v1(<8 x s8>), %v2, shufflemask(3, -1, -1, 6, 7, 8, 9, 10)167    $d0 = COPY %shuf(<8 x s8>)168    RET_ReallyLR implicit $d0169...170---171name:            undef_elts_should_match_2172alignment:       4173legalized:       true174tracksRegLiveness: true175body:             |176  bb.0:177    liveins: $d0, $d1178    ; Undef shuffle indices should not prevent matching G_EXT.179    ; We should get a constant 6 here.180    ; CHECK-LABEL: name: undef_elts_should_match_2181    ; CHECK: liveins: $d0, $d1182    ; CHECK-NEXT: {{  $}}183    ; CHECK-NEXT: %v1:_(<8 x s8>) = COPY $d0184    ; CHECK-NEXT: %v2:_(<8 x s8>) = COPY $d1185    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 6186    ; CHECK-NEXT: %shuf:_(<8 x s8>) = G_EXT %v2, %v1, [[C]](s32)187    ; CHECK-NEXT: $d0 = COPY %shuf(<8 x s8>)188    ; CHECK-NEXT: RET_ReallyLR implicit $d0189    %v1:_(<8 x s8>) = COPY $d0190    %v2:_(<8 x s8>) = COPY $d1191    %shuf:_(<8 x s8>) = G_SHUFFLE_VECTOR %v1(<8 x s8>), %v2, shufflemask(-1, -1, -1, -1, 2, 3, 4, 5)192    $d0 = COPY %shuf(<8 x s8>)193    RET_ReallyLR implicit $d0194...195---196name:            undef_elts_should_match_3197alignment:       4198legalized:       true199tracksRegLiveness: true200body:             |201  bb.0:202    liveins: $q0, $q1203    ; Undef shuffle indices should not prevent matching G_EXT.204    ; We should get a constant 7 here.205    ; CHECK-LABEL: name: undef_elts_should_match_3206    ; CHECK: liveins: $q0, $q1207    ; CHECK-NEXT: {{  $}}208    ; CHECK-NEXT: %v1:_(<16 x s8>) = COPY $q0209    ; CHECK-NEXT: %v2:_(<16 x s8>) = COPY $q1210    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 7211    ; CHECK-NEXT: %shuf:_(<16 x s8>) = G_EXT %v2, %v1, [[C]](s32)212    ; CHECK-NEXT: $q0 = COPY %shuf(<16 x s8>)213    ; CHECK-NEXT: RET_ReallyLR implicit $q0214    %v1:_(<16 x s8>) = COPY $q0215    %v2:_(<16 x s8>) = COPY $q1216    %shuf:_(<16 x s8>) = G_SHUFFLE_VECTOR %v1(<16 x s8>), %v2, shufflemask(23, 24, 25, 26, -1, -1, 29, 30, 31, 0, 1, 2, 3, 4, -1, 6)217    $q0 = COPY %shuf(<16 x s8>)218    RET_ReallyLR implicit $q0219...220---221name:            undef_elts_should_match_4222alignment:       4223legalized:       true224tracksRegLiveness: true225body:             |226  bb.0:227    liveins: $q0, $q1228    ; Undef shuffle indices should not prevent matching G_EXT.229    ; We should get a constant 10 here.230    ; CHECK-LABEL: name: undef_elts_should_match_4231    ; CHECK: liveins: $q0, $q1232    ; CHECK-NEXT: {{  $}}233    ; CHECK-NEXT: %v1:_(<8 x s16>) = COPY $q0234    ; CHECK-NEXT: %v2:_(<8 x s16>) = COPY $q1235    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 10236    ; CHECK-NEXT: %shuf:_(<8 x s16>) = G_EXT %v2, %v1, [[C]](s32)237    ; CHECK-NEXT: $q0 = COPY %shuf(<8 x s16>)238    ; CHECK-NEXT: RET_ReallyLR implicit $q0239    %v1:_(<8 x s16>) = COPY $q0240    %v2:_(<8 x s16>) = COPY $q1241    %shuf:_(<8 x s16>) = G_SHUFFLE_VECTOR %v1(<8 x s16>), %v2, shufflemask(-1, -1, -1, -1, 1, 2, 3, 4)242    $q0 = COPY %shuf(<8 x s16>)243    RET_ReallyLR implicit $q0244...245---246name:            all_undef247alignment:       4248legalized:       true249tracksRegLiveness: true250body:             |251  bb.0:252    liveins: $q0, $q1253    ; We expect at least one defined element in the shuffle mask.254    ; CHECK-LABEL: name: all_undef255    ; CHECK: liveins: $q0, $q1256    ; CHECK-NEXT: {{  $}}257    ; CHECK-NEXT: %v1:_(<8 x s16>) = COPY $q0258    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0259    ; CHECK-NEXT: %shuf:_(<8 x s16>) = G_DUPLANE16 %v1, [[C]](s64)260    ; CHECK-NEXT: $q0 = COPY %shuf(<8 x s16>)261    ; CHECK-NEXT: RET_ReallyLR implicit $q0262    %v1:_(<8 x s16>) = COPY $q0263    %v2:_(<8 x s16>) = COPY $q1264    %shuf:_(<8 x s16>) = G_SHUFFLE_VECTOR %v1(<8 x s16>), %v2, shufflemask(-1, -1, -1, -1, -1, -1, -1, -1)265    $q0 = COPY %shuf(<8 x s16>)266    RET_ReallyLR implicit $q0267...268---269name:            v2s64_singleton_ext270alignment:       4271legalized:       true272tracksRegLiveness: true273body:             |274  bb.0:275    liveins: $q0276    ; CHECK-LABEL: name: v2s64_singleton_ext277    ; CHECK: liveins: $q0278    ; CHECK-NEXT: {{  $}}279    ; CHECK-NEXT: %v1:_(<2 x s64>) = COPY $q0280    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8281    ; CHECK-NEXT: %shuf:_(<2 x s64>) = G_EXT %v1, %v1, [[C]](s32)282    ; CHECK-NEXT: $q0 = COPY %shuf(<2 x s64>)283    ; CHECK-NEXT: RET_ReallyLR implicit $q0284    %v1:_(<2 x s64>) = COPY $q0285    %v2:_(<2 x s64>) = G_IMPLICIT_DEF286    %shuf:_(<2 x s64>) = G_SHUFFLE_VECTOR %v1(<2 x s64>), %v2, shufflemask(1, 0)287    $q0 = COPY %shuf(<2 x s64>)288    RET_ReallyLR implicit $q0289...290---291name:            v2s64_singleton_ext_all_undef292alignment:       4293legalized:       true294tracksRegLiveness: true295body:             |296  bb.0:297    liveins: $q0298    ; CHECK-LABEL: name: v2s64_singleton_ext_all_undef299    ; CHECK: liveins: $q0300    ; CHECK-NEXT: {{  $}}301    ; CHECK-NEXT: %v1:_(<2 x s64>) = COPY $q0302    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0303    ; CHECK-NEXT: %shuf:_(<2 x s64>) = G_DUPLANE64 %v1, [[C]](s64)304    ; CHECK-NEXT: $q0 = COPY %shuf(<2 x s64>)305    ; CHECK-NEXT: RET_ReallyLR implicit $q0306    %v1:_(<2 x s64>) = COPY $q0307    %v2:_(<2 x s64>) = G_IMPLICIT_DEF308    %shuf:_(<2 x s64>) = G_SHUFFLE_VECTOR %v1(<2 x s64>), %v2, shufflemask(undef, undef)309    $q0 = COPY %shuf(<2 x s64>)310    RET_ReallyLR implicit $q0311...312---313name:            v2s64_singleton_ext_same314alignment:       4315legalized:       true316tracksRegLiveness: true317body:             |318  bb.0:319    liveins: $q0320    ; CHECK-LABEL: name: v2s64_singleton_ext_same321    ; CHECK: liveins: $q0322    ; CHECK-NEXT: {{  $}}323    ; CHECK-NEXT: %v1:_(<2 x s64>) = COPY $q0324    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1325    ; CHECK-NEXT: %shuf:_(<2 x s64>) = G_DUPLANE64 %v1, [[C]](s64)326    ; CHECK-NEXT: $q0 = COPY %shuf(<2 x s64>)327    ; CHECK-NEXT: RET_ReallyLR implicit $q0328    %v1:_(<2 x s64>) = COPY $q0329    %v2:_(<2 x s64>) = G_IMPLICIT_DEF330    %shuf:_(<2 x s64>) = G_SHUFFLE_VECTOR %v1(<2 x s64>), %v2, shufflemask(1, 1)331    $q0 = COPY %shuf(<2 x s64>)332    RET_ReallyLR implicit $q0333...334