brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.9 KiB · d1d5c6c Raw
153 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2#3# Check that we can recognize a shuffle mask for a uzp instruction and produce4# a G_UZP1 or G_UZP2 where appropriate.5#6# RUN: llc -mtriple aarch64 -run-pass=aarch64-postlegalizer-lowering -verify-machineinstrs %s -o - | FileCheck %s7 8...9---10name:            uzp1_v4s3211legalized:       true12tracksRegLiveness: true13body:             |14  bb.1.entry:15    liveins: $q0, $q116 17    ; CHECK-LABEL: name: uzp1_v4s3218    ; CHECK: liveins: $q0, $q119    ; CHECK-NEXT: {{  $}}20    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q021    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q122    ; CHECK-NEXT: [[UZP1_:%[0-9]+]]:_(<4 x s32>) = G_UZP1 [[COPY]], [[COPY1]]23    ; CHECK-NEXT: $q0 = COPY [[UZP1_]](<4 x s32>)24    ; CHECK-NEXT: RET_ReallyLR implicit $q025    %0:_(<4 x s32>) = COPY $q026    %1:_(<4 x s32>) = COPY $q127    %2:_(<4 x s32>) = G_SHUFFLE_VECTOR %0(<4 x s32>), %1, shufflemask(0, 2, 4, 6)28    $q0 = COPY %2(<4 x s32>)29    RET_ReallyLR implicit $q030 31...32---33name:            uzp2_v4s3234legalized:       true35tracksRegLiveness: true36body:             |37  bb.1.entry:38    liveins: $q0, $q139 40    ; CHECK-LABEL: name: uzp2_v4s3241    ; CHECK: liveins: $q0, $q142    ; CHECK-NEXT: {{  $}}43    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q044    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q145    ; CHECK-NEXT: [[UZP2_:%[0-9]+]]:_(<4 x s32>) = G_UZP2 [[COPY]], [[COPY1]]46    ; CHECK-NEXT: $q0 = COPY [[UZP2_]](<4 x s32>)47    ; CHECK-NEXT: RET_ReallyLR implicit $q048    %0:_(<4 x s32>) = COPY $q049    %1:_(<4 x s32>) = COPY $q150    %2:_(<4 x s32>) = G_SHUFFLE_VECTOR %0(<4 x s32>), %1, shufflemask(1, 3, 5, 7)51    $q0 = COPY %2(<4 x s32>)52    RET_ReallyLR implicit $q053 54...55---56name:            no_uzp157legalized:       true58tracksRegLiveness: true59body:             |60  bb.1.entry:61    liveins: $q0, $q162 63    ; See isUZPMask: Mask[1] != 2 * i + 064 65    ; CHECK-LABEL: name: no_uzp166    ; CHECK: liveins: $q0, $q167    ; CHECK-NEXT: {{  $}}68    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q069    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q170    ; CHECK-NEXT: [[SHUF:%[0-9]+]]:_(<4 x s32>) = G_SHUFFLE_VECTOR [[COPY]](<4 x s32>), [[COPY1]], shufflemask(0, 1, 4, 6)71    ; CHECK-NEXT: $q0 = COPY [[SHUF]](<4 x s32>)72    ; CHECK-NEXT: RET_ReallyLR implicit $q073    %0:_(<4 x s32>) = COPY $q074    %1:_(<4 x s32>) = COPY $q175    %2:_(<4 x s32>) = G_SHUFFLE_VECTOR %0(<4 x s32>), %1, shufflemask(0, 1, 4, 6)76    $q0 = COPY %2(<4 x s32>)77    RET_ReallyLR implicit $q078 79...80---81name:            no_uzp282legalized:       true83tracksRegLiveness: true84body:             |85  bb.1.entry:86    liveins: $q0, $q187 88    ; See isUZPMask: Mask[1] != 2 * i + 189 90    ; CHECK-LABEL: name: no_uzp291    ; CHECK: liveins: $q0, $q192    ; CHECK-NEXT: {{  $}}93    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q094    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q195    ; CHECK-NEXT: [[SHUF:%[0-9]+]]:_(<4 x s32>) = G_SHUFFLE_VECTOR [[COPY]](<4 x s32>), [[COPY1]], shufflemask(1, 4, 5, 7)96    ; CHECK-NEXT: $q0 = COPY [[SHUF]](<4 x s32>)97    ; CHECK-NEXT: RET_ReallyLR implicit $q098    %0:_(<4 x s32>) = COPY $q099    %1:_(<4 x s32>) = COPY $q1100    %2:_(<4 x s32>) = G_SHUFFLE_VECTOR %0(<4 x s32>), %1, shufflemask(1, 4, 5, 7)101    $q0 = COPY %2(<4 x s32>)102    RET_ReallyLR implicit $q0103 104...105---106name:            uzp1_undef107legalized:       true108tracksRegLiveness: true109body:             |110  bb.1.entry:111    liveins: $q0, $q1112 113    ; Make sure that we can still produce a uzp1/uzp2 with undef indices.114 115    ; CHECK-LABEL: name: uzp1_undef116    ; CHECK: liveins: $q0, $q1117    ; CHECK-NEXT: {{  $}}118    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0119    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q1120    ; CHECK-NEXT: [[UZP1_:%[0-9]+]]:_(<4 x s32>) = G_UZP1 [[COPY]], [[COPY1]]121    ; CHECK-NEXT: $q0 = COPY [[UZP1_]](<4 x s32>)122    ; CHECK-NEXT: RET_ReallyLR implicit $q0123    %0:_(<4 x s32>) = COPY $q0124    %1:_(<4 x s32>) = COPY $q1125    %2:_(<4 x s32>) = G_SHUFFLE_VECTOR %0(<4 x s32>), %1, shufflemask(0, -1, 4, 6)126    $q0 = COPY %2(<4 x s32>)127    RET_ReallyLR implicit $q0128 129...130---131name:            uzp2_undef132legalized:       true133tracksRegLiveness: true134body:             |135  bb.1.entry:136    liveins: $q0, $q1137 138    ; Make sure that we can still produce a uzp1/uzp2 with undef indices.139 140    ; CHECK-LABEL: name: uzp2_undef141    ; CHECK: liveins: $q0, $q1142    ; CHECK-NEXT: {{  $}}143    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0144    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q1145    ; CHECK-NEXT: [[UZP2_:%[0-9]+]]:_(<4 x s32>) = G_UZP2 [[COPY]], [[COPY1]]146    ; CHECK-NEXT: $q0 = COPY [[UZP2_]](<4 x s32>)147    ; CHECK-NEXT: RET_ReallyLR implicit $q0148    %0:_(<4 x s32>) = COPY $q0149    %1:_(<4 x s32>) = COPY $q1150    %2:_(<4 x s32>) = G_SHUFFLE_VECTOR %0(<4 x s32>), %1, shufflemask(1, 3, -1, 7)151    $q0 = COPY %2(<4 x s32>)152    RET_ReallyLR implicit $q0153