231 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 42# RUN: llc -o - -mtriple=aarch64-unknown-unknown -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s | FileCheck %s3 4---5name: shuffle_concat_16tracksRegLiveness: true7body: |8 bb.0:9 liveins: $x0, $x1, $x2, $x310 11 ; CHECK-LABEL: name: shuffle_concat_112 ; CHECK: liveins: $x0, $x1, $x2, $x313 ; CHECK-NEXT: {{ $}}14 ; CHECK-NEXT: %p2:_(p0) = COPY $x115 ; CHECK-NEXT: %p3:_(p0) = COPY $x216 ; CHECK-NEXT: %p4:_(p0) = COPY $x317 ; CHECK-NEXT: %a:_(<4 x s8>) = G_LOAD %p4(p0) :: (load (<4 x s8>))18 ; CHECK-NEXT: %b:_(<4 x s8>) = G_LOAD %p3(p0) :: (load (<4 x s8>))19 ; CHECK-NEXT: %c:_(<4 x s8>) = G_LOAD %p2(p0) :: (load (<4 x s8>))20 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<4 x s8>) = G_IMPLICIT_DEF21 ; CHECK-NEXT: %z:_(<16 x s8>) = G_CONCAT_VECTORS %a(<4 x s8>), %b(<4 x s8>), %c(<4 x s8>), [[DEF]](<4 x s8>)22 ; CHECK-NEXT: $q0 = COPY %z(<16 x s8>)23 ; CHECK-NEXT: RET_ReallyLR implicit $q024 %p1:_(p0) = COPY $x025 %p2:_(p0) = COPY $x126 %p3:_(p0) = COPY $x227 %p4:_(p0) = COPY $x328 29 %ImpDef:_(<4 x s8>) = G_IMPLICIT_DEF30 %a:_(<4 x s8>) = G_LOAD %p4:_(p0) :: (load (<4 x s8>))31 %b:_(<4 x s8>) = G_LOAD %p3:_(p0) :: (load (<4 x s8>))32 %c:_(<4 x s8>) = G_LOAD %p2:_(p0) :: (load (<4 x s8>))33 %d:_(<4 x s8>) = G_LOAD %p1:_(p0) :: (load (<4 x s8>))34 35 %x:_(<16 x s8>) = G_SHUFFLE_VECTOR %a:_(<4 x s8>), %b:_, shufflemask(0, 1, 2, 3, 4, 5, 6, 7, undef, undef, undef, undef, undef, undef, undef, undef)36 %y:_(<16 x s8>) = G_SHUFFLE_VECTOR %c:_(<4 x s8>), %d:_, shufflemask(0, 1, 2, 3, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef)37 %z:_(<16 x s8>) = G_SHUFFLE_VECTOR %x:_(<16 x s8>), %y:_, shufflemask(0, 1, 2, 3, 4, 5, 6, 7, 16, 17, 18, 19, -1, -1, -1, -1)38 39 $q0 = COPY %z(<16 x s8>)40 RET_ReallyLR implicit $q041...42 43---44name: shuffle_concat_245tracksRegLiveness: true46body: |47 bb.0:48 liveins: $x0, $x1, $x2, $x349 50 ; CHECK-LABEL: name: shuffle_concat_251 ; CHECK: liveins: $x0, $x1, $x2, $x352 ; CHECK-NEXT: {{ $}}53 ; CHECK-NEXT: %p1:_(p0) = COPY $x054 ; CHECK-NEXT: %p2:_(p0) = COPY $x155 ; CHECK-NEXT: %p3:_(p0) = COPY $x256 ; CHECK-NEXT: %p4:_(p0) = COPY $x357 ; CHECK-NEXT: %a:_(<4 x s8>) = G_LOAD %p4(p0) :: (load (<4 x s8>))58 ; CHECK-NEXT: %b:_(<4 x s8>) = G_LOAD %p3(p0) :: (load (<4 x s8>))59 ; CHECK-NEXT: %c:_(<4 x s8>) = G_LOAD %p2(p0) :: (load (<4 x s8>))60 ; CHECK-NEXT: %d:_(<4 x s8>) = G_LOAD %p1(p0) :: (load (<4 x s8>))61 ; CHECK-NEXT: %z:_(<16 x s8>) = G_CONCAT_VECTORS %a(<4 x s8>), %b(<4 x s8>), %c(<4 x s8>), %d(<4 x s8>)62 ; CHECK-NEXT: $q0 = COPY %z(<16 x s8>)63 ; CHECK-NEXT: RET_ReallyLR implicit $q064 %p1:_(p0) = COPY $x065 %p2:_(p0) = COPY $x166 %p3:_(p0) = COPY $x267 %p4:_(p0) = COPY $x368 69 %ImpDef:_(<4 x s8>) = G_IMPLICIT_DEF70 %a:_(<4 x s8>) = G_LOAD %p4:_(p0) :: (load (<4 x s8>))71 %b:_(<4 x s8>) = G_LOAD %p3:_(p0) :: (load (<4 x s8>))72 %c:_(<4 x s8>) = G_LOAD %p2:_(p0) :: (load (<4 x s8>))73 %d:_(<4 x s8>) = G_LOAD %p1:_(p0) :: (load (<4 x s8>))74 75 %v:_(<16 x s8>) = G_SHUFFLE_VECTOR %a:_(<4 x s8>), %b:_, shufflemask(0, 1, 2, 3, 4, 5, 6, 7, undef, undef, undef, undef, undef, undef, undef, undef)76 %w:_(<16 x s8>) = G_SHUFFLE_VECTOR %c:_(<4 x s8>), %ImpDef:_, shufflemask(0, 1, 2, 3, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef)77 %x:_(<16 x s8>) = G_SHUFFLE_VECTOR %v:_(<16 x s8>), %w:_, shufflemask(0, 1, 2, 3, 4, 5, 6, 7, 16, 17, 18, 19, undef, undef, undef, undef)78 %y:_(<16 x s8>) = G_SHUFFLE_VECTOR %d:_(<4 x s8>), %ImpDef:_, shufflemask(0, 1, 2, 3, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef)79 %z:_(<16 x s8>) = G_SHUFFLE_VECTOR %x:_(<16 x s8>), %y:_, shufflemask(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17, 18, 19)80 81 $q0 = COPY %z(<16 x s8>)82 RET_ReallyLR implicit $q083...84 85---86name: shuffle_concat_387tracksRegLiveness: true88body: |89 bb.0:90 liveins: $x0, $x1, $x2, $x391 92 ; CHECK-LABEL: name: shuffle_concat_393 ; CHECK: liveins: $x0, $x1, $x2, $x394 ; CHECK-NEXT: {{ $}}95 ; CHECK-NEXT: %p2:_(p0) = COPY $x196 ; CHECK-NEXT: %p3:_(p0) = COPY $x297 ; CHECK-NEXT: %p4:_(p0) = COPY $x398 ; CHECK-NEXT: %a:_(<4 x s8>) = G_LOAD %p4(p0) :: (load (<4 x s8>))99 ; CHECK-NEXT: %b:_(<4 x s8>) = G_LOAD %p3(p0) :: (load (<4 x s8>))100 ; CHECK-NEXT: %c:_(<4 x s8>) = G_LOAD %p2(p0) :: (load (<4 x s8>))101 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<4 x s8>) = G_IMPLICIT_DEF102 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<16 x s8>) = G_CONCAT_VECTORS %a(<4 x s8>), %b(<4 x s8>), [[DEF]](<4 x s8>), [[DEF]](<4 x s8>)103 ; CHECK-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<16 x s8>) = G_CONCAT_VECTORS %c(<4 x s8>), [[DEF]](<4 x s8>), [[DEF]](<4 x s8>), [[DEF]](<4 x s8>)104 ; CHECK-NEXT: %z:_(<16 x s8>) = G_SHUFFLE_VECTOR [[CONCAT_VECTORS]](<16 x s8>), [[CONCAT_VECTORS1]], shufflemask(0, undef, 2, 3, 4, 5, 6, 7, 16, 17, 18, 19, undef, undef, undef, undef)105 ; CHECK-NEXT: $q0 = COPY %z(<16 x s8>)106 ; CHECK-NEXT: RET_ReallyLR implicit $q0107 %p1:_(p0) = COPY $x0108 %p2:_(p0) = COPY $x1109 %p3:_(p0) = COPY $x2110 %p4:_(p0) = COPY $x3111 112 %ImpDef:_(<4 x s8>) = G_IMPLICIT_DEF113 %a:_(<4 x s8>) = G_LOAD %p4:_(p0) :: (load (<4 x s8>))114 %b:_(<4 x s8>) = G_LOAD %p3:_(p0) :: (load (<4 x s8>))115 %c:_(<4 x s8>) = G_LOAD %p2:_(p0) :: (load (<4 x s8>))116 %d:_(<4 x s8>) = G_LOAD %p1:_(p0) :: (load (<4 x s8>))117 118 %x:_(<16 x s8>) = G_SHUFFLE_VECTOR %a:_(<4 x s8>), %b:_, shufflemask(0, 1, 2, 3, 4, 5, 6, 7, undef, undef, undef, undef, undef, undef, undef, undef)119 %y:_(<16 x s8>) = G_SHUFFLE_VECTOR %c:_(<4 x s8>), %d:_, shufflemask(0, 1, 2, 3, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef)120 %z:_(<16 x s8>) = G_SHUFFLE_VECTOR %x:_(<16 x s8>), %y:_, shufflemask(0, -1, 2, 3, 4, 5, 6, 7, 16, 17, 18, 19, -1, -1, -1, -1)121 122 $q0 = COPY %z(<16 x s8>)123 RET_ReallyLR implicit $q0124...125 126---127name: shuffle_concat_4128tracksRegLiveness: true129body: |130 bb.0:131 liveins: $x0, $x1, $x2, $x3132 133 ; CHECK-LABEL: name: shuffle_concat_4134 ; CHECK: liveins: $x0, $x1, $x2, $x3135 ; CHECK-NEXT: {{ $}}136 ; CHECK-NEXT: %p2:_(p0) = COPY $x1137 ; CHECK-NEXT: %p4:_(p0) = COPY $x3138 ; CHECK-NEXT: %a:_(<4 x s8>) = G_LOAD %p4(p0) :: (load (<4 x s8>))139 ; CHECK-NEXT: %c:_(<4 x s8>) = G_LOAD %p2(p0) :: (load (<4 x s8>))140 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<4 x s8>) = G_IMPLICIT_DEF141 ; CHECK-NEXT: %z:_(<16 x s8>) = G_CONCAT_VECTORS %a(<4 x s8>), [[DEF]](<4 x s8>), %c(<4 x s8>), [[DEF]](<4 x s8>)142 ; CHECK-NEXT: $q0 = COPY %z(<16 x s8>)143 ; CHECK-NEXT: RET_ReallyLR implicit $q0144 %p1:_(p0) = COPY $x0145 %p2:_(p0) = COPY $x1146 %p3:_(p0) = COPY $x2147 %p4:_(p0) = COPY $x3148 149 %ImpDef:_(<4 x s8>) = G_IMPLICIT_DEF150 %a:_(<4 x s8>) = G_LOAD %p4:_(p0) :: (load (<4 x s8>))151 %b:_(<4 x s8>) = G_LOAD %p3:_(p0) :: (load (<4 x s8>))152 %c:_(<4 x s8>) = G_LOAD %p2:_(p0) :: (load (<4 x s8>))153 %d:_(<4 x s8>) = G_LOAD %p1:_(p0) :: (load (<4 x s8>))154 155 %x:_(<16 x s8>) = G_SHUFFLE_VECTOR %a:_(<4 x s8>), %b:_, shufflemask(0, 1, 2, 3, 4, 5, 6, 7, undef, undef, undef, undef, undef, undef, undef, undef)156 %y:_(<16 x s8>) = G_SHUFFLE_VECTOR %c:_(<4 x s8>), %d:_, shufflemask(0, 1, 2, 3, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef)157 %z:_(<16 x s8>) = G_SHUFFLE_VECTOR %x:_(<16 x s8>), %y:_, shufflemask(0, 1, 2, 3, -1, -1, -1, -1, 16, 17, 18, 19, -1, -1, -1, -1)158 159 $q0 = COPY %z(<16 x s8>)160 RET_ReallyLR implicit $q0161...162 163---164name: shuffle_concat_5165tracksRegLiveness: true166body: |167 bb.0:168 liveins: $x0, $x1, $x2, $x3169 170 ; CHECK-LABEL: name: shuffle_concat_5171 ; CHECK: liveins: $x0, $x1, $x2, $x3172 ; CHECK-NEXT: {{ $}}173 ; CHECK-NEXT: %p2:_(p0) = COPY $x1174 ; CHECK-NEXT: %p3:_(p0) = COPY $x2175 ; CHECK-NEXT: %p4:_(p0) = COPY $x3176 ; CHECK-NEXT: %a:_(<4 x s8>) = G_LOAD %p4(p0) :: (load (<4 x s8>))177 ; CHECK-NEXT: %b:_(<4 x s8>) = G_LOAD %p3(p0) :: (load (<4 x s8>))178 ; CHECK-NEXT: %c:_(<4 x s8>) = G_LOAD %p2(p0) :: (load (<4 x s8>))179 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<4 x s8>) = G_IMPLICIT_DEF180 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<16 x s8>) = G_CONCAT_VECTORS %a(<4 x s8>), %b(<4 x s8>), [[DEF]](<4 x s8>), [[DEF]](<4 x s8>)181 ; CHECK-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<16 x s8>) = G_CONCAT_VECTORS %c(<4 x s8>), [[DEF]](<4 x s8>), [[DEF]](<4 x s8>), [[DEF]](<4 x s8>)182 ; CHECK-NEXT: %z:_(<16 x s8>) = G_SHUFFLE_VECTOR [[CONCAT_VECTORS]](<16 x s8>), [[CONCAT_VECTORS1]], shufflemask(undef, 1, 2, 3, 4, 5, 6, 7, 16, 17, 18, 19, undef, undef, undef, undef)183 ; CHECK-NEXT: $q0 = COPY %z(<16 x s8>)184 ; CHECK-NEXT: RET_ReallyLR implicit $q0185 %p1:_(p0) = COPY $x0186 %p2:_(p0) = COPY $x1187 %p3:_(p0) = COPY $x2188 %p4:_(p0) = COPY $x3189 190 %ImpDef:_(<4 x s8>) = G_IMPLICIT_DEF191 %a:_(<4 x s8>) = G_LOAD %p4:_(p0) :: (load (<4 x s8>))192 %b:_(<4 x s8>) = G_LOAD %p3:_(p0) :: (load (<4 x s8>))193 %c:_(<4 x s8>) = G_LOAD %p2:_(p0) :: (load (<4 x s8>))194 %d:_(<4 x s8>) = G_LOAD %p1:_(p0) :: (load (<4 x s8>))195 196 %x:_(<16 x s8>) = G_SHUFFLE_VECTOR %a:_(<4 x s8>), %b:_, shufflemask(0, 1, 2, 3, 4, 5, 6, 7, undef, undef, undef, undef, undef, undef, undef, undef)197 %y:_(<16 x s8>) = G_SHUFFLE_VECTOR %c:_(<4 x s8>), %d:_, shufflemask(0, 1, 2, 3, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef)198 %z:_(<16 x s8>) = G_SHUFFLE_VECTOR %x:_(<16 x s8>), %y:_, shufflemask(-1, 1, 2, 3, 4, 5, 6, 7, 16, 17, 18, 19, -1, -1, -1, -1)199 200 $q0 = COPY %z(<16 x s8>)201 RET_ReallyLR implicit $q0202...203 204---205name: single_vector_to_copy206tracksRegLiveness: true207body: |208 bb.0:209 liveins: $q0, $q1210 211 ; CHECK-LABEL: name: single_vector_to_copy212 ; CHECK: liveins: $q0, $q1213 ; CHECK-NEXT: {{ $}}214 ; CHECK-NEXT: %p1:_(<4 x s32>) = COPY $q0215 ; CHECK-NEXT: %p2:_(<4 x s32>) = COPY $q1216 ; CHECK-NEXT: $q0 = COPY %p1(<4 x s32>)217 ; CHECK-NEXT: $q1 = COPY %p2(<4 x s32>)218 ; CHECK-NEXT: RET_ReallyLR implicit $q0219 %p1:_(<4 x s32>) = COPY $q0220 %p2:_(<4 x s32>) = COPY $q1221 222 %a:_(<8 x s32>) = G_CONCAT_VECTORS %p1:_(<4 x s32>), %p2:_(<4 x s32>)223 224 %x:_(<4 x s32>) = G_SHUFFLE_VECTOR %a:_(<8 x s32>), %a:_, shufflemask(0, 1, 2, 3)225 %y:_(<4 x s32>) = G_SHUFFLE_VECTOR %a:_(<8 x s32>), %a:_, shufflemask(4, 5, 6, 7)226 227 $q0 = COPY %x(<4 x s32>)228 $q1 = COPY %y(<4 x s32>)229 RET_ReallyLR implicit $q0230...231