113 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 --check-prefix=HasF64 %s3# RUN: llc -mtriple=riscv32 -mattr=+zve64x -run-pass=legalizer %s -o - | FileCheck --check-prefix=NoF64 %s4 5---6name: splatvector_nxv1i647legalized: false8tracksRegLiveness: true9body: |10 bb.1:11 ; HasF64-LABEL: name: splatvector_nxv1i6412 ; HasF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF13 ; HasF64-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[DEF]](s32), [[DEF]](s32)14 ; HasF64-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR [[MV]](s64)15 ; HasF64-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s64>)16 ; HasF64-NEXT: PseudoRET implicit $v817 ;18 ; NoF64-LABEL: name: splatvector_nxv1i6419 ; NoF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF20 ; NoF64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -121 ; NoF64-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 1 x s1>) = G_VMSET_VL [[C]](s32)22 ; NoF64-NEXT: [[DEF1:%[0-9]+]]:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF23 ; NoF64-NEXT: [[SPLAT_VECTOR_SPLIT_I64_VL:%[0-9]+]]:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR_SPLIT_I64_VL [[DEF1]], [[DEF]](s32), [[DEF]], [[C]](s32)24 ; NoF64-NEXT: $v8 = COPY [[SPLAT_VECTOR_SPLIT_I64_VL]](<vscale x 1 x s64>)25 ; NoF64-NEXT: PseudoRET implicit $v826 %0:_(s64) = G_IMPLICIT_DEF27 %1:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR %0(s64)28 $v8 = COPY %1(<vscale x 1 x s64>)29 PseudoRET implicit $v830 31...32---33name: splatvector_nxv2i6434legalized: false35tracksRegLiveness: true36body: |37 bb.1:38 ; HasF64-LABEL: name: splatvector_nxv2i6439 ; HasF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF40 ; HasF64-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[DEF]](s32), [[DEF]](s32)41 ; HasF64-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR [[MV]](s64)42 ; HasF64-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s64>)43 ; HasF64-NEXT: PseudoRET implicit $v8m244 ;45 ; NoF64-LABEL: name: splatvector_nxv2i6446 ; NoF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF47 ; NoF64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -148 ; NoF64-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 2 x s1>) = G_VMSET_VL [[C]](s32)49 ; NoF64-NEXT: [[DEF1:%[0-9]+]]:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF50 ; NoF64-NEXT: [[SPLAT_VECTOR_SPLIT_I64_VL:%[0-9]+]]:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR_SPLIT_I64_VL [[DEF1]], [[DEF]](s32), [[DEF]], [[C]](s32)51 ; NoF64-NEXT: $v8m2 = COPY [[SPLAT_VECTOR_SPLIT_I64_VL]](<vscale x 2 x s64>)52 ; NoF64-NEXT: PseudoRET implicit $v8m253 %0:_(s64) = G_IMPLICIT_DEF54 %1:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR %0(s64)55 $v8m2 = COPY %1(<vscale x 2 x s64>)56 PseudoRET implicit $v8m257 58...59---60name: splatvector_nxv4i6461legalized: false62tracksRegLiveness: true63body: |64 bb.1:65 ; HasF64-LABEL: name: splatvector_nxv4i6466 ; HasF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF67 ; HasF64-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[DEF]](s32), [[DEF]](s32)68 ; HasF64-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR [[MV]](s64)69 ; HasF64-NEXT: $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s64>)70 ; HasF64-NEXT: PseudoRET implicit $v8m471 ;72 ; NoF64-LABEL: name: splatvector_nxv4i6473 ; NoF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF74 ; NoF64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -175 ; NoF64-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 4 x s1>) = G_VMSET_VL [[C]](s32)76 ; NoF64-NEXT: [[DEF1:%[0-9]+]]:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF77 ; NoF64-NEXT: [[SPLAT_VECTOR_SPLIT_I64_VL:%[0-9]+]]:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR_SPLIT_I64_VL [[DEF1]], [[DEF]](s32), [[DEF]], [[C]](s32)78 ; NoF64-NEXT: $v8m4 = COPY [[SPLAT_VECTOR_SPLIT_I64_VL]](<vscale x 4 x s64>)79 ; NoF64-NEXT: PseudoRET implicit $v8m480 %0:_(s64) = G_IMPLICIT_DEF81 %1:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR %0(s64)82 $v8m4 = COPY %1(<vscale x 4 x s64>)83 PseudoRET implicit $v8m484 85...86---87name: splatvector_nxv8i6488legalized: false89tracksRegLiveness: true90body: |91 bb.1:92 ; HasF64-LABEL: name: splatvector_nxv8i6493 ; HasF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF94 ; HasF64-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[DEF]](s32), [[DEF]](s32)95 ; HasF64-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR [[MV]](s64)96 ; HasF64-NEXT: $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s64>)97 ; HasF64-NEXT: PseudoRET implicit $v8m898 ;99 ; NoF64-LABEL: name: splatvector_nxv8i64100 ; NoF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF101 ; NoF64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1102 ; NoF64-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 8 x s1>) = G_VMSET_VL [[C]](s32)103 ; NoF64-NEXT: [[DEF1:%[0-9]+]]:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF104 ; NoF64-NEXT: [[SPLAT_VECTOR_SPLIT_I64_VL:%[0-9]+]]:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR_SPLIT_I64_VL [[DEF1]], [[DEF]](s32), [[DEF]], [[C]](s32)105 ; NoF64-NEXT: $v8m8 = COPY [[SPLAT_VECTOR_SPLIT_I64_VL]](<vscale x 8 x s64>)106 ; NoF64-NEXT: PseudoRET implicit $v8m8107 %0:_(s64) = G_IMPLICIT_DEF108 %1:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR %0(s64)109 $v8m8 = COPY %1(<vscale x 8 x s64>)110 PseudoRET implicit $v8m8111 112...113