brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.0 KiB · cfafc68 Raw
241 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 produce G_TRN1 or G_TRN2 when we have an appropriate shuffle5# mask.6#7 8...9---10name:            trn1_v8s811alignment:       412legalized:       true13tracksRegLiveness: true14body:             |15  bb.1.entry:16    liveins: $d0, $d117    ; CHECK-LABEL: name: trn1_v8s818    ; CHECK: liveins: $d0, $d119    ; CHECK-NEXT: {{  $}}20    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d021    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d122    ; CHECK-NEXT: [[TRN1_:%[0-9]+]]:_(<8 x s8>) = G_TRN1 [[COPY]], [[COPY1]]23    ; CHECK-NEXT: $d0 = COPY [[TRN1_]](<8 x s8>)24    ; CHECK-NEXT: RET_ReallyLR implicit $q025    %0:_(<8 x s8>) = COPY $d026    %1:_(<8 x s8>) = COPY $d127    %2:_(<8 x s8>) = G_SHUFFLE_VECTOR %0(<8 x s8>), %1, shufflemask(0, 8, 2, 10, 4, 12, 6, 14)28    $d0 = COPY %2(<8 x s8>)29    RET_ReallyLR implicit $q030 31...32---33name:            trn2_v8s834alignment:       435legalized:       true36tracksRegLiveness: true37body:             |38  bb.1.entry:39    liveins: $d0, $d140    ; CHECK-LABEL: name: trn2_v8s841    ; CHECK: liveins: $d0, $d142    ; CHECK-NEXT: {{  $}}43    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d044    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d145    ; CHECK-NEXT: [[TRN2_:%[0-9]+]]:_(<8 x s8>) = G_TRN2 [[COPY]], [[COPY1]]46    ; CHECK-NEXT: $d0 = COPY [[TRN2_]](<8 x s8>)47    ; CHECK-NEXT: RET_ReallyLR implicit $q048    %0:_(<8 x s8>) = COPY $d049    %1:_(<8 x s8>) = COPY $d150    %2:_(<8 x s8>) = G_SHUFFLE_VECTOR %0(<8 x s8>), %1, shufflemask(1, 9, 3, 11, 5, 13, 7, 15)51    $d0 = COPY %2(<8 x s8>)52    RET_ReallyLR implicit $q053 54...55---56name:            trn1_v16s857alignment:       458legalized:       true59tracksRegLiveness: true60body:             |61  bb.1.entry:62    liveins: $q0, $q163    ; CHECK-LABEL: name: trn1_v16s864    ; CHECK: liveins: $q0, $q165    ; CHECK-NEXT: {{  $}}66    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<16 x s8>) = COPY $q067    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<16 x s8>) = COPY $q168    ; CHECK-NEXT: [[TRN1_:%[0-9]+]]:_(<16 x s8>) = G_TRN1 [[COPY]], [[COPY1]]69    ; CHECK-NEXT: $q0 = COPY [[TRN1_]](<16 x s8>)70    ; CHECK-NEXT: RET_ReallyLR implicit $q071    %0:_(<16 x s8>) = COPY $q072    %1:_(<16 x s8>) = COPY $q173    %2:_(<16 x s8>) = G_SHUFFLE_VECTOR %0(<16 x s8>), %1, shufflemask(0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30)74    $q0 = COPY %2(<16 x s8>)75    RET_ReallyLR implicit $q076 77...78---79name:            trn2_v16s880alignment:       481legalized:       true82tracksRegLiveness: true83body:             |84  bb.1.entry:85    liveins: $q0, $q186    ; CHECK-LABEL: name: trn2_v16s887    ; CHECK: liveins: $q0, $q188    ; CHECK-NEXT: {{  $}}89    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<16 x s8>) = COPY $q090    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<16 x s8>) = COPY $q191    ; CHECK-NEXT: [[TRN2_:%[0-9]+]]:_(<16 x s8>) = G_TRN2 [[COPY]], [[COPY1]]92    ; CHECK-NEXT: $q0 = COPY [[TRN2_]](<16 x s8>)93    ; CHECK-NEXT: RET_ReallyLR implicit $q094    %0:_(<16 x s8>) = COPY $q095    %1:_(<16 x s8>) = COPY $q196    %2:_(<16 x s8>) = G_SHUFFLE_VECTOR %0(<16 x s8>), %1, shufflemask(1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31)97    $q0 = COPY %2(<16 x s8>)98    RET_ReallyLR implicit $q099 100...101---102name:            trn1_v4s32103alignment:       4104legalized:       true105tracksRegLiveness: true106body:             |107  bb.1.entry:108    liveins: $q0, $q1109    ; CHECK-LABEL: name: trn1_v4s32110    ; CHECK: liveins: $q0, $q1111    ; CHECK-NEXT: {{  $}}112    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0113    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q1114    ; CHECK-NEXT: [[TRN1_:%[0-9]+]]:_(<4 x s32>) = G_TRN1 [[COPY]], [[COPY1]]115    ; CHECK-NEXT: $q0 = COPY [[TRN1_]](<4 x s32>)116    ; CHECK-NEXT: RET_ReallyLR implicit $q0117    %0:_(<4 x s32>) = COPY $q0118    %1:_(<4 x s32>) = COPY $q1119    %2:_(<4 x s32>) = G_SHUFFLE_VECTOR %0(<4 x s32>), %1, shufflemask(0, 4, 2, 6)120    $q0 = COPY %2(<4 x s32>)121    RET_ReallyLR implicit $q0122 123...124---125name:            trn2_v4s32126alignment:       4127legalized:       true128tracksRegLiveness: true129body:             |130  bb.1.entry:131    liveins: $q0, $q1132    ; CHECK-LABEL: name: trn2_v4s32133    ; CHECK: liveins: $q0, $q1134    ; CHECK-NEXT: {{  $}}135    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0136    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q1137    ; CHECK-NEXT: [[TRN2_:%[0-9]+]]:_(<4 x s32>) = G_TRN2 [[COPY]], [[COPY1]]138    ; CHECK-NEXT: $q0 = COPY [[TRN2_]](<4 x s32>)139    ; CHECK-NEXT: RET_ReallyLR implicit $q0140    %0:_(<4 x s32>) = COPY $q0141    %1:_(<4 x s32>) = COPY $q1142    %2:_(<4 x s32>) = G_SHUFFLE_VECTOR %0(<4 x s32>), %1, shufflemask(1, 5, 3, 7)143    $q0 = COPY %2(<4 x s32>)144    RET_ReallyLR implicit $q0145 146...147---148name:            redundant_with_zip1149alignment:       4150legalized:       true151tracksRegLiveness: true152body:             |153  bb.1.entry:154    liveins: $d0, $d1155    ; 2 x s32 TRN is redundant with ZIP. Make sure we prioritize ZIP.156    ; CHECK-LABEL: name: redundant_with_zip1157    ; CHECK: liveins: $d0, $d1158    ; CHECK-NEXT: {{  $}}159    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0160    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $d1161    ; CHECK-NEXT: [[ZIP1_:%[0-9]+]]:_(<2 x s32>) = G_ZIP1 [[COPY]], [[COPY1]]162    ; CHECK-NEXT: $d0 = COPY [[ZIP1_]](<2 x s32>)163    ; CHECK-NEXT: RET_ReallyLR implicit $d0164    %0:_(<2 x s32>) = COPY $d0165    %1:_(<2 x s32>) = COPY $d1166    %2:_(<2 x s32>) = G_SHUFFLE_VECTOR %0(<2 x s32>), %1, shufflemask(0, 2)167    $d0 = COPY %2(<2 x s32>)168    RET_ReallyLR implicit $d0169 170...171---172name:            redundant_with_zip2173alignment:       4174legalized:       true175tracksRegLiveness: true176body:             |177  bb.1.entry:178    liveins: $d0, $d1179    ; 2 x s32 TRN is redundant with ZIP. Make sure we prioritize ZIP.180    ; CHECK-LABEL: name: redundant_with_zip2181    ; CHECK: liveins: $d0, $d1182    ; CHECK-NEXT: {{  $}}183    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0184    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $d1185    ; CHECK-NEXT: [[ZIP2_:%[0-9]+]]:_(<2 x s32>) = G_ZIP2 [[COPY]], [[COPY1]]186    ; CHECK-NEXT: $d0 = COPY [[ZIP2_]](<2 x s32>)187    ; CHECK-NEXT: RET_ReallyLR implicit $d0188    %0:_(<2 x s32>) = COPY $d0189    %1:_(<2 x s32>) = COPY $d1190    %2:_(<2 x s32>) = G_SHUFFLE_VECTOR %0(<2 x s32>), %1, shufflemask(1, 3)191    $d0 = COPY %2(<2 x s32>)192    RET_ReallyLR implicit $d0193 194...195---196name:            trn1_undef197alignment:       4198legalized:       true199tracksRegLiveness: true200body:             |201  bb.1.entry:202    liveins: $d0, $d1203    ; Undef shuffle indices should not prevent matching to G_TRN1.204    ; CHECK-LABEL: name: trn1_undef205    ; CHECK: liveins: $d0, $d1206    ; CHECK-NEXT: {{  $}}207    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d0208    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d1209    ; CHECK-NEXT: [[TRN1_:%[0-9]+]]:_(<8 x s8>) = G_TRN1 [[COPY]], [[COPY1]]210    ; CHECK-NEXT: $d0 = COPY [[TRN1_]](<8 x s8>)211    ; CHECK-NEXT: RET_ReallyLR implicit $d0212    %0:_(<8 x s8>) = COPY $d0213    %1:_(<8 x s8>) = COPY $d1214    %2:_(<8 x s8>) = G_SHUFFLE_VECTOR %0(<8 x s8>), %1, shufflemask(0, 8, -1, -1, 4, 12, 6, 14)215    $d0 = COPY %2(<8 x s8>)216    RET_ReallyLR implicit $d0217 218...219---220name:            trn2_undef221alignment:       4222legalized:       true223tracksRegLiveness: true224body:             |225  bb.1.entry:226    liveins: $d0, $d1227    ; Undef shuffle indices should not prevent matching to G_TRN2.228    ; CHECK-LABEL: name: trn2_undef229    ; CHECK: liveins: $d0, $d1230    ; CHECK-NEXT: {{  $}}231    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d0232    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d1233    ; CHECK-NEXT: [[TRN2_:%[0-9]+]]:_(<8 x s8>) = G_TRN2 [[COPY]], [[COPY1]]234    ; CHECK-NEXT: $d0 = COPY [[TRN2_]](<8 x s8>)235    ; CHECK-NEXT: RET_ReallyLR implicit $d0236    %0:_(<8 x s8>) = COPY $d0237    %1:_(<8 x s8>) = COPY $d1238    %2:_(<8 x s8>) = G_SHUFFLE_VECTOR %0(<8 x s8>), %1, shufflemask(1, -1, 3, 11, 5, 13, -1, -1)239    $d0 = COPY %2(<8 x s8>)240    RET_ReallyLR implicit $d0241