249 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple aarch64 -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s3 4...5---6name: s32_legal7tracksRegLiveness: true8body: |9 bb.0:10 liveins: $w011 ; CHECK-LABEL: name: s32_legal12 ; CHECK: liveins: $w013 ; CHECK-NEXT: {{ $}}14 ; CHECK-NEXT: %copy:_(s32) = COPY $w015 ; CHECK-NEXT: %bitreverse:_(s32) = G_BITREVERSE %copy16 ; CHECK-NEXT: $w0 = COPY %bitreverse(s32)17 ; CHECK-NEXT: RET_ReallyLR implicit $w018 %copy:_(s32) = COPY $w019 %bitreverse:_(s32) = G_BITREVERSE %copy20 $w0 = COPY %bitreverse21 RET_ReallyLR implicit $w022...23---24name: s64_legal25tracksRegLiveness: true26body: |27 bb.0:28 liveins: $x029 ; CHECK-LABEL: name: s64_legal30 ; CHECK: liveins: $x031 ; CHECK-NEXT: {{ $}}32 ; CHECK-NEXT: %copy:_(s64) = COPY $x033 ; CHECK-NEXT: %bitreverse:_(s64) = G_BITREVERSE %copy34 ; CHECK-NEXT: $x0 = COPY %bitreverse(s64)35 ; CHECK-NEXT: RET_ReallyLR implicit $x036 %copy:_(s64) = COPY $x037 %bitreverse:_(s64) = G_BITREVERSE %copy38 $x0 = COPY %bitreverse39 RET_ReallyLR implicit $x040...41---42name: v8s8_legal43tracksRegLiveness: true44body: |45 bb.0:46 liveins: $x047 ; CHECK-LABEL: name: v8s8_legal48 ; CHECK: liveins: $x049 ; CHECK-NEXT: {{ $}}50 ; CHECK-NEXT: %vec:_(<8 x s8>) = G_IMPLICIT_DEF51 ; CHECK-NEXT: %bitreverse:_(<8 x s8>) = G_BITREVERSE %vec52 ; CHECK-NEXT: $x0 = COPY %bitreverse(<8 x s8>)53 ; CHECK-NEXT: RET_ReallyLR implicit $x054 %vec:_(<8 x s8>) = G_IMPLICIT_DEF55 %bitreverse:_(<8 x s8>) = G_BITREVERSE %vec56 $x0 = COPY %bitreverse57 RET_ReallyLR implicit $x058...59---60name: v16s8_legal61tracksRegLiveness: true62body: |63 bb.0:64 liveins: $q065 ; CHECK-LABEL: name: v16s8_legal66 ; CHECK: liveins: $q067 ; CHECK-NEXT: {{ $}}68 ; CHECK-NEXT: %vec:_(<16 x s8>) = G_IMPLICIT_DEF69 ; CHECK-NEXT: %bitreverse:_(<16 x s8>) = G_BITREVERSE %vec70 ; CHECK-NEXT: $q0 = COPY %bitreverse(<16 x s8>)71 ; CHECK-NEXT: RET_ReallyLR implicit $q072 %vec:_(<16 x s8>) = G_IMPLICIT_DEF73 %bitreverse:_(<16 x s8>) = G_BITREVERSE %vec74 $q0 = COPY %bitreverse75 RET_ReallyLR implicit $q076...77---78name: s8_widen79tracksRegLiveness: true80body: |81 bb.0:82 liveins: $b083 ; CHECK-LABEL: name: s8_widen84 ; CHECK: liveins: $b085 ; CHECK-NEXT: {{ $}}86 ; CHECK-NEXT: %copy:_(s8) = COPY $b087 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %copy(s8)88 ; CHECK-NEXT: [[BITREVERSE:%[0-9]+]]:_(s32) = G_BITREVERSE [[ANYEXT]]89 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 2490 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITREVERSE]], [[C]](s64)91 ; CHECK-NEXT: %bitreverse:_(s8) = G_TRUNC [[LSHR]](s32)92 ; CHECK-NEXT: $b0 = COPY %bitreverse(s8)93 ; CHECK-NEXT: RET_ReallyLR implicit $b094 %copy:_(s8) = COPY $b095 %bitreverse:_(s8) = G_BITREVERSE %copy96 $b0 = COPY %bitreverse97 RET_ReallyLR implicit $b098...99---100name: s3_widen101tracksRegLiveness: true102body: |103 bb.0:104 liveins: $b0105 ; CHECK-LABEL: name: s3_widen106 ; CHECK: liveins: $b0107 ; CHECK-NEXT: {{ $}}108 ; CHECK-NEXT: %copy:_(s8) = COPY $b0109 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %copy(s8)110 ; CHECK-NEXT: [[BITREVERSE:%[0-9]+]]:_(s32) = G_BITREVERSE [[ANYEXT]]111 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 29112 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITREVERSE]], [[C]](s64)113 ; CHECK-NEXT: %ext:_(s8) = G_TRUNC [[LSHR]](s32)114 ; CHECK-NEXT: $b0 = COPY %ext(s8)115 ; CHECK-NEXT: RET_ReallyLR implicit $b0116 %copy:_(s8) = COPY $b0117 %trunc:_(s3) = G_TRUNC %copy118 %bitreverse:_(s3) = G_BITREVERSE %trunc119 %ext:_(s8) = G_ANYEXT %bitreverse120 $b0 = COPY %ext121 RET_ReallyLR implicit $b0122...123---124name: s128_narrow125tracksRegLiveness: true126body: |127 bb.0:128 liveins: $q0129 ; CHECK-LABEL: name: s128_narrow130 ; CHECK: liveins: $q0131 ; CHECK-NEXT: {{ $}}132 ; CHECK-NEXT: %copy:_(s128) = COPY $q0133 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES %copy(s128)134 ; CHECK-NEXT: [[BITREVERSE:%[0-9]+]]:_(s64) = G_BITREVERSE [[UV1]]135 ; CHECK-NEXT: [[BITREVERSE1:%[0-9]+]]:_(s64) = G_BITREVERSE [[UV]]136 ; CHECK-NEXT: %bitreverse:_(s128) = G_MERGE_VALUES [[BITREVERSE]](s64), [[BITREVERSE1]](s64)137 ; CHECK-NEXT: $q0 = COPY %bitreverse(s128)138 ; CHECK-NEXT: RET_ReallyLR implicit $q0139 %copy:_(s128) = COPY $q0140 %bitreverse:_(s128) = G_BITREVERSE %copy141 $q0 = COPY %bitreverse142 RET_ReallyLR implicit $q0143...144---145name: v4s16146tracksRegLiveness: true147body: |148 bb.0:149 liveins: $d0150 ; CHECK-LABEL: name: v4s16151 ; CHECK: liveins: $d0152 ; CHECK-NEXT: {{ $}}153 ; CHECK-NEXT: %vec:_(<4 x s16>) = COPY $d0154 ; CHECK-NEXT: [[BSWAP:%[0-9]+]]:_(<4 x s16>) = G_BSWAP %vec155 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<8 x s8>) = G_BITCAST [[BSWAP]](<4 x s16>)156 ; CHECK-NEXT: [[BITREVERSE:%[0-9]+]]:_(<8 x s8>) = G_BITREVERSE [[BITCAST]]157 ; CHECK-NEXT: %bitreverse:_(<4 x s16>) = G_BITCAST [[BITREVERSE]](<8 x s8>)158 ; CHECK-NEXT: $d0 = COPY %bitreverse(<4 x s16>)159 ; CHECK-NEXT: RET_ReallyLR implicit $q0160 %vec:_(<4 x s16>) = COPY $d0161 %bitreverse:_(<4 x s16>) = G_BITREVERSE %vec162 $d0 = COPY %bitreverse163 RET_ReallyLR implicit $q0164...165---166name: v2s32167tracksRegLiveness: true168body: |169 bb.0:170 liveins: $d0171 ; CHECK-LABEL: name: v2s32172 ; CHECK: liveins: $d0173 ; CHECK-NEXT: {{ $}}174 ; CHECK-NEXT: %vec:_(<2 x s32>) = COPY $d0175 ; CHECK-NEXT: [[BSWAP:%[0-9]+]]:_(<2 x s32>) = G_BSWAP %vec176 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<8 x s8>) = G_BITCAST [[BSWAP]](<2 x s32>)177 ; CHECK-NEXT: [[BITREVERSE:%[0-9]+]]:_(<8 x s8>) = G_BITREVERSE [[BITCAST]]178 ; CHECK-NEXT: %bitreverse:_(<2 x s32>) = G_BITCAST [[BITREVERSE]](<8 x s8>)179 ; CHECK-NEXT: $d0 = COPY %bitreverse(<2 x s32>)180 ; CHECK-NEXT: RET_ReallyLR implicit $d0181 %vec:_(<2 x s32>) = COPY $d0182 %bitreverse:_(<2 x s32>) = G_BITREVERSE %vec183 $d0 = COPY %bitreverse184 RET_ReallyLR implicit $d0185...186---187name: v2s64188tracksRegLiveness: true189body: |190 bb.0:191 liveins: $q0192 ; CHECK-LABEL: name: v2s64193 ; CHECK: liveins: $q0194 ; CHECK-NEXT: {{ $}}195 ; CHECK-NEXT: %vec:_(<2 x s64>) = COPY $q0196 ; CHECK-NEXT: [[BSWAP:%[0-9]+]]:_(<2 x s64>) = G_BSWAP %vec197 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<16 x s8>) = G_BITCAST [[BSWAP]](<2 x s64>)198 ; CHECK-NEXT: [[BITREVERSE:%[0-9]+]]:_(<16 x s8>) = G_BITREVERSE [[BITCAST]]199 ; CHECK-NEXT: %bitreverse:_(<2 x s64>) = G_BITCAST [[BITREVERSE]](<16 x s8>)200 ; CHECK-NEXT: $q0 = COPY %bitreverse(<2 x s64>)201 ; CHECK-NEXT: RET_ReallyLR implicit $q0202 %vec:_(<2 x s64>) = COPY $q0203 %bitreverse:_(<2 x s64>) = G_BITREVERSE %vec204 $q0 = COPY %bitreverse205 RET_ReallyLR implicit $q0206...207---208name: v4s32209tracksRegLiveness: true210body: |211 bb.0:212 liveins: $q0213 ; CHECK-LABEL: name: v4s32214 ; CHECK: liveins: $q0215 ; CHECK-NEXT: {{ $}}216 ; CHECK-NEXT: %vec:_(<4 x s32>) = COPY $q0217 ; CHECK-NEXT: [[BSWAP:%[0-9]+]]:_(<4 x s32>) = G_BSWAP %vec218 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<16 x s8>) = G_BITCAST [[BSWAP]](<4 x s32>)219 ; CHECK-NEXT: [[BITREVERSE:%[0-9]+]]:_(<16 x s8>) = G_BITREVERSE [[BITCAST]]220 ; CHECK-NEXT: %bitreverse:_(<4 x s32>) = G_BITCAST [[BITREVERSE]](<16 x s8>)221 ; CHECK-NEXT: $q0 = COPY %bitreverse(<4 x s32>)222 ; CHECK-NEXT: RET_ReallyLR implicit $q0223 %vec:_(<4 x s32>) = COPY $q0224 %bitreverse:_(<4 x s32>) = G_BITREVERSE %vec225 $q0 = COPY %bitreverse226 RET_ReallyLR implicit $q0227...228---229name: v8s16230tracksRegLiveness: true231body: |232 bb.0:233 liveins: $q0234 ; CHECK-LABEL: name: v8s16235 ; CHECK: liveins: $q0236 ; CHECK-NEXT: {{ $}}237 ; CHECK-NEXT: %vec:_(<8 x s16>) = COPY $q0238 ; CHECK-NEXT: [[BSWAP:%[0-9]+]]:_(<8 x s16>) = G_BSWAP %vec239 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<16 x s8>) = G_BITCAST [[BSWAP]](<8 x s16>)240 ; CHECK-NEXT: [[BITREVERSE:%[0-9]+]]:_(<16 x s8>) = G_BITREVERSE [[BITCAST]]241 ; CHECK-NEXT: %bitreverse:_(<8 x s16>) = G_BITCAST [[BITREVERSE]](<16 x s8>)242 ; CHECK-NEXT: $q0 = COPY %bitreverse(<8 x s16>)243 ; CHECK-NEXT: RET_ReallyLR implicit $q0244 %vec:_(<8 x s16>) = COPY $q0245 %bitreverse:_(<8 x s16>) = G_BITREVERSE %vec246 $q0 = COPY %bitreverse247 RET_ReallyLR implicit $q0248...249