357 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv32 -mattr=+v -run-pass=legalizer %s -o - | FileCheck %s3# RUN: llc -mtriple=riscv64 -mattr=+v -run-pass=legalizer %s -o - | FileCheck %s4 5---6name: bitcast_nxv1i87legalized: true8tracksRegLiveness: true9body: |10 bb.0.entry:11 ; CHECK-LABEL: name: bitcast_nxv1i812 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 1 x s8>) = G_IMPLICIT_DEF13 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 8 x s1>) = G_BITCAST [[DEF]](<vscale x 1 x s8>)14 ; CHECK-NEXT: $v8 = COPY [[BITCAST]](<vscale x 8 x s1>)15 ; CHECK-NEXT: PseudoRET implicit $v816 %0:_(<vscale x 1 x s8>) = G_IMPLICIT_DEF17 %1:_(<vscale x 8 x s1>) = G_BITCAST %0(<vscale x 1 x s8>)18 $v8 = COPY %1(<vscale x 8 x s1>)19 PseudoRET implicit $v820...21---22name: bitcast_nxv2i823legalized: true24tracksRegLiveness: true25body: |26 bb.0.entry:27 ; CHECK-LABEL: name: bitcast_nxv2i828 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 2 x s8>) = G_IMPLICIT_DEF29 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 1 x s16>) = G_BITCAST [[DEF]](<vscale x 2 x s8>)30 ; CHECK-NEXT: $v8 = COPY [[BITCAST]](<vscale x 1 x s16>)31 ; CHECK-NEXT: PseudoRET implicit $v832 %0:_(<vscale x 2 x s8>) = G_IMPLICIT_DEF33 %1:_(<vscale x 1 x s16>) = G_BITCAST %0(<vscale x 2 x s8>)34 $v8 = COPY %1(<vscale x 1 x s16>)35 PseudoRET implicit $v836...37---38name: bitcast_nxv4i839legalized: true40tracksRegLiveness: true41body: |42 bb.0.entry:43 ; CHECK-LABEL: name: bitcast_nxv4i844 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 4 x s8>) = G_IMPLICIT_DEF45 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 2 x s16>) = G_BITCAST [[DEF]](<vscale x 4 x s8>)46 ; CHECK-NEXT: $v8 = COPY [[BITCAST]](<vscale x 2 x s16>)47 ; CHECK-NEXT: PseudoRET implicit $v848 %0:_(<vscale x 4 x s8>) = G_IMPLICIT_DEF49 %1:_(<vscale x 2 x s16>) = G_BITCAST %0(<vscale x 4 x s8>)50 $v8 = COPY %1(<vscale x 2 x s16>)51 PseudoRET implicit $v852...53---54name: bitcast_nxv8i855legalized: true56tracksRegLiveness: true57body: |58 bb.0.entry:59 ; CHECK-LABEL: name: bitcast_nxv8i860 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 8 x s8>) = G_IMPLICIT_DEF61 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 64 x s1>) = G_BITCAST [[DEF]](<vscale x 8 x s8>)62 ; CHECK-NEXT: $v8 = COPY [[BITCAST]](<vscale x 64 x s1>)63 ; CHECK-NEXT: PseudoRET implicit $v864 %0:_(<vscale x 8 x s8>) = G_IMPLICIT_DEF65 %1:_(<vscale x 64 x s1>) = G_BITCAST %0(<vscale x 8 x s8>)66 $v8 = COPY %1(<vscale x 64 x s1>)67 PseudoRET implicit $v868...69---70name: bitcast_nxv16i871legalized: true72tracksRegLiveness: true73body: |74 bb.0.entry:75 ; CHECK-LABEL: name: bitcast_nxv16i876 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF77 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 4 x s32>) = G_BITCAST [[DEF]](<vscale x 16 x s8>)78 ; CHECK-NEXT: $v8m2 = COPY [[BITCAST]](<vscale x 4 x s32>)79 ; CHECK-NEXT: PseudoRET implicit $v8m280 %0:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF81 %1:_(<vscale x 4 x s32>) = G_BITCAST %0(<vscale x 16 x s8>)82 $v8m2 = COPY %1(<vscale x 4 x s32>)83 PseudoRET implicit $v8m284...85---86name: bitcast_nxv32i887legalized: true88tracksRegLiveness: true89body: |90 bb.0.entry:91 ; CHECK-LABEL: name: bitcast_nxv32i892 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 32 x s8>) = G_IMPLICIT_DEF93 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 16 x s16>) = G_BITCAST [[DEF]](<vscale x 32 x s8>)94 ; CHECK-NEXT: $v8m4 = COPY [[BITCAST]](<vscale x 16 x s16>)95 ; CHECK-NEXT: PseudoRET implicit $v8m496 %0:_(<vscale x 32 x s8>) = G_IMPLICIT_DEF97 %1:_(<vscale x 16 x s16>) = G_BITCAST %0(<vscale x 32 x s8>)98 $v8m4 = COPY %1(<vscale x 16 x s16>)99 PseudoRET implicit $v8m4100...101---102name: bitcast_nxv64i8103legalized: true104tracksRegLiveness: true105body: |106 bb.0.entry:107 ; CHECK-LABEL: name: bitcast_nxv64i8108 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 64 x s8>) = G_IMPLICIT_DEF109 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 8 x s64>) = G_BITCAST [[DEF]](<vscale x 64 x s8>)110 ; CHECK-NEXT: $v8m8 = COPY [[BITCAST]](<vscale x 8 x s64>)111 ; CHECK-NEXT: PseudoRET implicit $v8m8112 %0:_(<vscale x 64 x s8>) = G_IMPLICIT_DEF113 %1:_(<vscale x 8 x s64>) = G_BITCAST %0(<vscale x 64 x s8>)114 $v8m8 = COPY %1(<vscale x 8 x s64>)115 PseudoRET implicit $v8m8116...117---118name: bitcast_nxv1i16119legalized: true120tracksRegLiveness: true121body: |122 bb.0.entry:123 ; CHECK-LABEL: name: bitcast_nxv1i16124 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF125 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 2 x s8>) = G_BITCAST [[DEF]](<vscale x 1 x s16>)126 ; CHECK-NEXT: $v8 = COPY [[BITCAST]](<vscale x 2 x s8>)127 ; CHECK-NEXT: PseudoRET implicit $v8128 %0:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF129 %1:_(<vscale x 2 x s8>) = G_BITCAST %0(<vscale x 1 x s16>)130 $v8 = COPY %1(<vscale x 2 x s8>)131 PseudoRET implicit $v8132...133---134name: bitcast_nxv2i16135legalized: true136tracksRegLiveness: true137body: |138 bb.0.entry:139 ; CHECK-LABEL: name: bitcast_nxv2i16140 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF141 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 1 x s32>) = G_BITCAST [[DEF]](<vscale x 2 x s16>)142 ; CHECK-NEXT: $v8 = COPY [[BITCAST]](<vscale x 1 x s32>)143 ; CHECK-NEXT: PseudoRET implicit $v8144 %0:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF145 %1:_(<vscale x 1 x s32>) = G_BITCAST %0(<vscale x 2 x s16>)146 $v8 = COPY %1(<vscale x 1 x s32>)147 PseudoRET implicit $v8148...149---150name: bitcast_nxv4i16151legalized: true152tracksRegLiveness: true153body: |154 bb.0.entry:155 ; CHECK-LABEL: name: bitcast_nxv4i16156 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF157 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 1 x s64>) = G_BITCAST [[DEF]](<vscale x 4 x s16>)158 ; CHECK-NEXT: $v8 = COPY [[BITCAST]](<vscale x 1 x s64>)159 ; CHECK-NEXT: PseudoRET implicit $v8160 %0:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF161 %1:_(<vscale x 1 x s64>) = G_BITCAST %0(<vscale x 4 x s16>)162 $v8 = COPY %1(<vscale x 1 x s64>)163 PseudoRET implicit $v8164...165---166name: bitcast_nxv8i16167legalized: true168tracksRegLiveness: true169body: |170 bb.0.entry:171 ; CHECK-LABEL: name: bitcast_nxv8i16172 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF173 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 2 x s64>) = G_BITCAST [[DEF]](<vscale x 8 x s16>)174 ; CHECK-NEXT: $v8m2 = COPY [[BITCAST]](<vscale x 2 x s64>)175 ; CHECK-NEXT: PseudoRET implicit $v8m2176 %0:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF177 %1:_(<vscale x 2 x s64>) = G_BITCAST %0(<vscale x 8 x s16>)178 $v8m2 = COPY %1(<vscale x 2 x s64>)179 PseudoRET implicit $v8m2180...181---182name: bitcast_nxv16i16183legalized: true184tracksRegLiveness: true185body: |186 bb.0.entry:187 ; CHECK-LABEL: name: bitcast_nxv16i16188 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF189 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 8 x s32>) = G_BITCAST [[DEF]](<vscale x 16 x s16>)190 ; CHECK-NEXT: $v8m4 = COPY [[BITCAST]](<vscale x 8 x s32>)191 ; CHECK-NEXT: PseudoRET implicit $v8m4192 %0:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF193 %1:_(<vscale x 8 x s32>) = G_BITCAST %0(<vscale x 16 x s16>)194 $v8m4 = COPY %1(<vscale x 8 x s32>)195 PseudoRET implicit $v8m4196...197---198name: bitcast_nxv32i16199legalized: true200tracksRegLiveness: true201body: |202 bb.0.entry:203 ; CHECK-LABEL: name: bitcast_nxv32i16204 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 32 x s16>) = G_IMPLICIT_DEF205 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 8 x s64>) = G_BITCAST [[DEF]](<vscale x 32 x s16>)206 ; CHECK-NEXT: $v8m8 = COPY [[BITCAST]](<vscale x 8 x s64>)207 ; CHECK-NEXT: PseudoRET implicit $v8m8208 %0:_(<vscale x 32 x s16>) = G_IMPLICIT_DEF209 %1:_(<vscale x 8 x s64>) = G_BITCAST %0(<vscale x 32 x s16>)210 $v8m8 = COPY %1(<vscale x 8 x s64>)211 PseudoRET implicit $v8m8212...213---214name: bitcast_nxv1i32215legalized: true216tracksRegLiveness: true217body: |218 bb.0.entry:219 ; CHECK-LABEL: name: bitcast_nxv1i32220 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF221 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 2 x s16>) = G_BITCAST [[DEF]](<vscale x 1 x s32>)222 ; CHECK-NEXT: $v8 = COPY [[BITCAST]](<vscale x 2 x s16>)223 ; CHECK-NEXT: PseudoRET implicit $v8224 %0:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF225 %1:_(<vscale x 2 x s16>) = G_BITCAST %0(<vscale x 1 x s32>)226 $v8 = COPY %1(<vscale x 2 x s16>)227 PseudoRET implicit $v8228...229---230name: bitcast_nxv2i32231legalized: true232tracksRegLiveness: true233body: |234 bb.0.entry:235 ; CHECK-LABEL: name: bitcast_nxv2i32236 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF237 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 4 x s16>) = G_BITCAST [[DEF]](<vscale x 2 x s32>)238 ; CHECK-NEXT: $v8 = COPY [[BITCAST]](<vscale x 4 x s16>)239 ; CHECK-NEXT: PseudoRET implicit $v8240 %0:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF241 %1:_(<vscale x 4 x s16>) = G_BITCAST %0(<vscale x 2 x s32>)242 $v8 = COPY %1(<vscale x 4 x s16>)243 PseudoRET implicit $v8244...245---246name: bitcast_nxv4i32247legalized: true248tracksRegLiveness: true249body: |250 bb.0.entry:251 ; CHECK-LABEL: name: bitcast_nxv4i32252 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF253 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 8 x s16>) = G_BITCAST [[DEF]](<vscale x 4 x s32>)254 ; CHECK-NEXT: $v8m2 = COPY [[BITCAST]](<vscale x 8 x s16>)255 ; CHECK-NEXT: PseudoRET implicit $v8m2256 %0:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF257 %1:_(<vscale x 8 x s16>) = G_BITCAST %0(<vscale x 4 x s32>)258 $v8m2 = COPY %1(<vscale x 8 x s16>)259 PseudoRET implicit $v8m2260...261---262name: bitcast_nxv8i32263legalized: true264tracksRegLiveness: true265body: |266 bb.0.entry:267 ; CHECK-LABEL: name: bitcast_nxv8i32268 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF269 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 4 x s64>) = G_BITCAST [[DEF]](<vscale x 8 x s32>)270 ; CHECK-NEXT: $v8m4 = COPY [[BITCAST]](<vscale x 4 x s64>)271 ; CHECK-NEXT: PseudoRET implicit $v8m4272 %0:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF273 %1:_(<vscale x 4 x s64>) = G_BITCAST %0(<vscale x 8 x s32>)274 $v8m4 = COPY %1(<vscale x 4 x s64>)275 PseudoRET implicit $v8m4276...277---278name: bitcast_nxv16i32279legalized: true280tracksRegLiveness: true281body: |282 bb.0.entry:283 ; CHECK-LABEL: name: bitcast_nxv16i32284 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF285 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 32 x s16>) = G_BITCAST [[DEF]](<vscale x 16 x s32>)286 ; CHECK-NEXT: $v8m8 = COPY [[BITCAST]](<vscale x 32 x s16>)287 ; CHECK-NEXT: PseudoRET implicit $v8m8288 %0:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF289 %1:_(<vscale x 32 x s16>) = G_BITCAST %0(<vscale x 16 x s32>)290 $v8m8 = COPY %1(<vscale x 32 x s16>)291 PseudoRET implicit $v8m8292...293---294name: bitcast_nxv1i64295legalized: true296tracksRegLiveness: true297body: |298 bb.0.entry:299 ; CHECK-LABEL: name: bitcast_nxv1i64300 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF301 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 2 x s32>) = G_BITCAST [[DEF]](<vscale x 1 x s64>)302 ; CHECK-NEXT: $v8 = COPY [[BITCAST]](<vscale x 2 x s32>)303 ; CHECK-NEXT: PseudoRET implicit $v8304 %0:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF305 %1:_(<vscale x 2 x s32>) = G_BITCAST %0(<vscale x 1 x s64>)306 $v8 = COPY %1(<vscale x 2 x s32>)307 PseudoRET implicit $v8308...309---310name: bitcast_nxv2i64311legalized: true312tracksRegLiveness: true313body: |314 bb.0.entry:315 ; CHECK-LABEL: name: bitcast_nxv2i64316 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF317 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 4 x s32>) = G_BITCAST [[DEF]](<vscale x 2 x s64>)318 ; CHECK-NEXT: $v8m2 = COPY [[BITCAST]](<vscale x 4 x s32>)319 ; CHECK-NEXT: PseudoRET implicit $v8m2320 %0:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF321 %1:_(<vscale x 4 x s32>) = G_BITCAST %0(<vscale x 2 x s64>)322 $v8m2 = COPY %1(<vscale x 4 x s32>)323 PseudoRET implicit $v8m2324...325---326name: bitcast_nxv4i64327legalized: true328tracksRegLiveness: true329body: |330 bb.0.entry:331 ; CHECK-LABEL: name: bitcast_nxv4i64332 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF333 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 16 x s16>) = G_BITCAST [[DEF]](<vscale x 4 x s64>)334 ; CHECK-NEXT: $v8m4 = COPY [[BITCAST]](<vscale x 16 x s16>)335 ; CHECK-NEXT: PseudoRET implicit $v8m4336 %0:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF337 %1:_(<vscale x 16 x s16>) = G_BITCAST %0(<vscale x 4 x s64>)338 $v8m4 = COPY %1(<vscale x 16 x s16>)339 PseudoRET implicit $v8m4340...341---342name: bitcast_nxv8i64343legalized: true344tracksRegLiveness: true345body: |346 bb.0.entry:347 ; CHECK-LABEL: name: bitcast_nxv8i64348 ; CHECK: [[DEF:%[0-9]+]]:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF349 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<vscale x 64 x s8>) = G_BITCAST [[DEF]](<vscale x 8 x s64>)350 ; CHECK-NEXT: $v8m8 = COPY [[BITCAST]](<vscale x 64 x s8>)351 ; CHECK-NEXT: PseudoRET implicit $v8m8352 %0:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF353 %1:_(<vscale x 64 x s8>) = G_BITCAST %0(<vscale x 8 x s64>)354 $v8m8 = COPY %1(<vscale x 64 x s8>)355 PseudoRET implicit $v8m8356...357