diff --git a/llvm/lib/Target/RISCV/GISel/RISCVLegalizerInfo.cpp b/llvm/lib/Target/RISCV/GISel/RISCVLegalizerInfo.cpp index 66e9f752a1bbd..d1449f751b40a 100644 --- a/llvm/lib/Target/RISCV/GISel/RISCVLegalizerInfo.cpp +++ b/llvm/lib/Target/RISCV/GISel/RISCVLegalizerInfo.cpp @@ -833,19 +833,21 @@ static MachineInstrBuilder buildAllOnesMask(LLT VecTy, const SrcOp &VL, /// Gets the two common "VL" operands: an all-ones mask and the vector length. /// VecTy is a scalable vector type. -static std::pair +static std::pair buildDefaultVLOps(const DstOp &Dst, MachineIRBuilder &MIB, MachineRegisterInfo &MRI) { LLT VecTy = Dst.getLLTTy(MRI); assert(VecTy.isScalableVector() && "Expecting scalable container type"); - Register VL(RISCV::X0); - MachineInstrBuilder Mask = buildAllOnesMask(VecTy, VL, MIB, MRI); + const RISCVSubtarget &STI = MIB.getMF().getSubtarget(); + LLT XLenTy(STI.getXLenVT()); + auto VL = MIB.buildConstant(XLenTy, -1); + auto Mask = buildAllOnesMask(VecTy, VL, MIB, MRI); return {Mask, VL}; } static MachineInstrBuilder buildSplatPartsS64WithVL(const DstOp &Dst, const SrcOp &Passthru, Register Lo, - Register Hi, Register VL, MachineIRBuilder &MIB, + Register Hi, const SrcOp &VL, MachineIRBuilder &MIB, MachineRegisterInfo &MRI) { // TODO: If the Hi bits of the splat are undefined, then it's fine to just // splat Lo even if it might be sign extended. I don't think we have @@ -861,7 +863,7 @@ buildSplatPartsS64WithVL(const DstOp &Dst, const SrcOp &Passthru, Register Lo, static MachineInstrBuilder buildSplatSplitS64WithVL(const DstOp &Dst, const SrcOp &Passthru, - const SrcOp &Scalar, Register VL, + const SrcOp &Scalar, const SrcOp &VL, MachineIRBuilder &MIB, MachineRegisterInfo &MRI) { assert(Scalar.getLLTTy(MRI) == LLT::scalar(64) && "Unexpected VecTy!"); auto Unmerge = MIB.buildUnmerge(LLT::scalar(32), Scalar); diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-constbarrier-rv32.mir b/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-constbarrier-rv32.mir index bbe8ef4b092d3..b1630d9c5f6e0 100644 --- a/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-constbarrier-rv32.mir +++ b/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-constbarrier-rv32.mir @@ -52,8 +52,9 @@ name: constbarrier_nxv2i1 body: | bb.0.entry: ; CHECK-LABEL: name: constbarrier_nxv2i1 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL [[C]](s32) ; CHECK-NEXT: [[CONSTANT_FOLD_BARRIER:%[0-9]+]]:_() = G_CONSTANT_FOLD_BARRIER [[VMCLR_VL]] ; CHECK-NEXT: $v8 = COPY [[CONSTANT_FOLD_BARRIER]]() ; CHECK-NEXT: PseudoRET implicit $v8 diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-constbarrier-rv64.mir b/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-constbarrier-rv64.mir index 96b1aa53d46ea..029205cc6bc22 100644 --- a/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-constbarrier-rv64.mir +++ b/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-constbarrier-rv64.mir @@ -70,8 +70,9 @@ name: constbarrier_nxv2i1 body: | bb.0.entry: ; CHECK-LABEL: name: constbarrier_nxv2i1 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL [[C]](s64) ; CHECK-NEXT: [[CONSTANT_FOLD_BARRIER:%[0-9]+]]:_() = G_CONSTANT_FOLD_BARRIER [[VMCLR_VL]] ; CHECK-NEXT: $v8 = COPY [[CONSTANT_FOLD_BARRIER]]() ; CHECK-NEXT: PseudoRET implicit $v8 diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-extract-subvector.mir b/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-extract-subvector.mir index 7e172b27eecf1..ca03482eee0d1 100644 --- a/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-extract-subvector.mir +++ b/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-extract-subvector.mir @@ -19,12 +19,13 @@ body: | ; RV32-NEXT: [[READ_VLENB:%[0-9]+]]:_(s32) = G_READ_VLENB ; RV32-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 2 ; RV32-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[READ_VLENB]], [[C2]](s32) - ; RV32-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; RV32-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; RV32-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C3]](s32) ; RV32-NEXT: [[DEF1:%[0-9]+]]:_() = G_IMPLICIT_DEF - ; RV32-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[SELECT]], [[LSHR]](s32), [[VMSET_VL]](), $x0, 3 + ; RV32-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[SELECT]], [[LSHR]](s32), [[VMSET_VL]](), [[C3]], 3 ; RV32-NEXT: [[EXTRACT_SUBVECTOR:%[0-9]+]]:_() = G_EXTRACT_SUBVECTOR [[VSLIDEDOWN_VL]](), 0 - ; RV32-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 - ; RV32-NEXT: [[SPLAT_VECTOR2:%[0-9]+]]:_() = G_SPLAT_VECTOR [[C3]](s32) + ; RV32-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 + ; RV32-NEXT: [[SPLAT_VECTOR2:%[0-9]+]]:_() = G_SPLAT_VECTOR [[C4]](s32) ; RV32-NEXT: [[ICMP:%[0-9]+]]:_() = G_ICMP intpred(ne), [[EXTRACT_SUBVECTOR]](), [[SPLAT_VECTOR2]] ; RV32-NEXT: $v8 = COPY [[ICMP]]() ; RV32-NEXT: PseudoRET implicit $v8 @@ -41,12 +42,13 @@ body: | ; RV64-NEXT: [[READ_VLENB:%[0-9]+]]:_(s64) = G_READ_VLENB ; RV64-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 ; RV64-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[READ_VLENB]], [[C2]](s64) - ; RV64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; RV64-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; RV64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C3]](s64) ; RV64-NEXT: [[DEF1:%[0-9]+]]:_() = G_IMPLICIT_DEF - ; RV64-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[SELECT]], [[LSHR]](s64), [[VMSET_VL]](), $x0, 3 + ; RV64-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[SELECT]], [[LSHR]](s64), [[VMSET_VL]](), [[C3]], 3 ; RV64-NEXT: [[EXTRACT_SUBVECTOR:%[0-9]+]]:_() = G_EXTRACT_SUBVECTOR [[VSLIDEDOWN_VL]](), 0 - ; RV64-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 - ; RV64-NEXT: [[ANYEXT2:%[0-9]+]]:_(s64) = G_ANYEXT [[C3]](s32) + ; RV64-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 + ; RV64-NEXT: [[ANYEXT2:%[0-9]+]]:_(s64) = G_ANYEXT [[C4]](s32) ; RV64-NEXT: [[SPLAT_VECTOR2:%[0-9]+]]:_() = G_SPLAT_VECTOR [[ANYEXT2]](s64) ; RV64-NEXT: [[ICMP:%[0-9]+]]:_() = G_ICMP intpred(ne), [[EXTRACT_SUBVECTOR]](), [[SPLAT_VECTOR2]] ; RV64-NEXT: $v8 = COPY [[ICMP]]() @@ -72,12 +74,13 @@ body: | ; RV32-NEXT: [[READ_VLENB:%[0-9]+]]:_(s32) = G_READ_VLENB ; RV32-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 2 ; RV32-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[READ_VLENB]], [[C2]](s32) - ; RV32-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; RV32-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; RV32-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C3]](s32) ; RV32-NEXT: [[DEF1:%[0-9]+]]:_() = G_IMPLICIT_DEF - ; RV32-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[SELECT]], [[LSHR]](s32), [[VMSET_VL]](), $x0, 3 + ; RV32-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[SELECT]], [[LSHR]](s32), [[VMSET_VL]](), [[C3]], 3 ; RV32-NEXT: [[EXTRACT_SUBVECTOR:%[0-9]+]]:_() = G_EXTRACT_SUBVECTOR [[VSLIDEDOWN_VL]](), 0 - ; RV32-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 - ; RV32-NEXT: [[SPLAT_VECTOR2:%[0-9]+]]:_() = G_SPLAT_VECTOR [[C3]](s32) + ; RV32-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 + ; RV32-NEXT: [[SPLAT_VECTOR2:%[0-9]+]]:_() = G_SPLAT_VECTOR [[C4]](s32) ; RV32-NEXT: [[ICMP:%[0-9]+]]:_() = G_ICMP intpred(ne), [[EXTRACT_SUBVECTOR]](), [[SPLAT_VECTOR2]] ; RV32-NEXT: $v8 = COPY [[ICMP]]() ; RV32-NEXT: PseudoRET implicit $v8 @@ -94,12 +97,13 @@ body: | ; RV64-NEXT: [[READ_VLENB:%[0-9]+]]:_(s64) = G_READ_VLENB ; RV64-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 ; RV64-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[READ_VLENB]], [[C2]](s64) - ; RV64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; RV64-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; RV64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C3]](s64) ; RV64-NEXT: [[DEF1:%[0-9]+]]:_() = G_IMPLICIT_DEF - ; RV64-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[SELECT]], [[LSHR]](s64), [[VMSET_VL]](), $x0, 3 + ; RV64-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[SELECT]], [[LSHR]](s64), [[VMSET_VL]](), [[C3]], 3 ; RV64-NEXT: [[EXTRACT_SUBVECTOR:%[0-9]+]]:_() = G_EXTRACT_SUBVECTOR [[VSLIDEDOWN_VL]](), 0 - ; RV64-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 - ; RV64-NEXT: [[ANYEXT2:%[0-9]+]]:_(s64) = G_ANYEXT [[C3]](s32) + ; RV64-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 + ; RV64-NEXT: [[ANYEXT2:%[0-9]+]]:_(s64) = G_ANYEXT [[C4]](s32) ; RV64-NEXT: [[SPLAT_VECTOR2:%[0-9]+]]:_() = G_SPLAT_VECTOR [[ANYEXT2]](s64) ; RV64-NEXT: [[ICMP:%[0-9]+]]:_() = G_ICMP intpred(ne), [[EXTRACT_SUBVECTOR]](), [[SPLAT_VECTOR2]] ; RV64-NEXT: $v8 = COPY [[ICMP]]() @@ -162,9 +166,10 @@ body: | ; RV32-NEXT: [[READ_VLENB:%[0-9]+]]:_(s32) = G_READ_VLENB ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 ; RV32-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[READ_VLENB]], [[C]](s32) - ; RV32-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; RV32-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C1]](s32) ; RV32-NEXT: [[DEF1:%[0-9]+]]:_() = G_IMPLICIT_DEF - ; RV32-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[BITCAST]], [[LSHR]](s32), [[VMSET_VL]](), $x0, 3 + ; RV32-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[BITCAST]], [[LSHR]](s32), [[VMSET_VL]](), [[C1]], 3 ; RV32-NEXT: [[EXTRACT_SUBVECTOR:%[0-9]+]]:_() = G_EXTRACT_SUBVECTOR [[VSLIDEDOWN_VL]](), 0 ; RV32-NEXT: [[BITCAST1:%[0-9]+]]:_() = G_BITCAST [[EXTRACT_SUBVECTOR]]() ; RV32-NEXT: $v8 = COPY [[BITCAST1]]() @@ -176,9 +181,10 @@ body: | ; RV64-NEXT: [[READ_VLENB:%[0-9]+]]:_(s64) = G_READ_VLENB ; RV64-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1 ; RV64-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[READ_VLENB]], [[C]](s64) - ; RV64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; RV64-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; RV64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C1]](s64) ; RV64-NEXT: [[DEF1:%[0-9]+]]:_() = G_IMPLICIT_DEF - ; RV64-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[BITCAST]], [[LSHR]](s64), [[VMSET_VL]](), $x0, 3 + ; RV64-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[BITCAST]], [[LSHR]](s64), [[VMSET_VL]](), [[C1]], 3 ; RV64-NEXT: [[EXTRACT_SUBVECTOR:%[0-9]+]]:_() = G_EXTRACT_SUBVECTOR [[VSLIDEDOWN_VL]](), 0 ; RV64-NEXT: [[BITCAST1:%[0-9]+]]:_() = G_BITCAST [[EXTRACT_SUBVECTOR]]() ; RV64-NEXT: $v8 = COPY [[BITCAST1]]() @@ -319,8 +325,9 @@ body: | ; RV32-NEXT: [[READ_VLENB:%[0-9]+]]:_(s32) = G_READ_VLENB ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 3 ; RV32-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[READ_VLENB]], [[C]](s32) - ; RV32-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; RV32-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF]], [[DEF]], [[LSHR]](s32), [[VMSET_VL]](), $x0, 3 + ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; RV32-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C1]](s32) + ; RV32-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF]], [[DEF]], [[LSHR]](s32), [[VMSET_VL]](), [[C1]], 3 ; RV32-NEXT: [[EXTRACT_SUBVECTOR:%[0-9]+]]:_() = G_EXTRACT_SUBVECTOR [[VSLIDEDOWN_VL]](), 0 ; RV32-NEXT: $v8 = COPY [[EXTRACT_SUBVECTOR]]() ; RV32-NEXT: PseudoRET implicit $v8 @@ -330,8 +337,9 @@ body: | ; RV64-NEXT: [[READ_VLENB:%[0-9]+]]:_(s64) = G_READ_VLENB ; RV64-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 3 ; RV64-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[READ_VLENB]], [[C]](s64) - ; RV64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; RV64-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF]], [[DEF]], [[LSHR]](s64), [[VMSET_VL]](), $x0, 3 + ; RV64-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; RV64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C1]](s64) + ; RV64-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF]], [[DEF]], [[LSHR]](s64), [[VMSET_VL]](), [[C1]], 3 ; RV64-NEXT: [[EXTRACT_SUBVECTOR:%[0-9]+]]:_() = G_EXTRACT_SUBVECTOR [[VSLIDEDOWN_VL]](), 0 ; RV64-NEXT: $v8 = COPY [[EXTRACT_SUBVECTOR]]() ; RV64-NEXT: PseudoRET implicit $v8 @@ -351,8 +359,9 @@ body: | ; RV32-NEXT: [[READ_VLENB:%[0-9]+]]:_(s32) = G_READ_VLENB ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2 ; RV32-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[READ_VLENB]], [[C]](s32) - ; RV32-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; RV32-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF]], [[DEF]], [[LSHR]](s32), [[VMSET_VL]](), $x0, 3 + ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; RV32-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C1]](s32) + ; RV32-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF]], [[DEF]], [[LSHR]](s32), [[VMSET_VL]](), [[C1]], 3 ; RV32-NEXT: [[EXTRACT_SUBVECTOR:%[0-9]+]]:_() = G_EXTRACT_SUBVECTOR [[VSLIDEDOWN_VL]](), 0 ; RV32-NEXT: $v8 = COPY [[EXTRACT_SUBVECTOR]]() ; RV32-NEXT: PseudoRET implicit $v8 @@ -362,8 +371,9 @@ body: | ; RV64-NEXT: [[READ_VLENB:%[0-9]+]]:_(s64) = G_READ_VLENB ; RV64-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 ; RV64-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[READ_VLENB]], [[C]](s64) - ; RV64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; RV64-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF]], [[DEF]], [[LSHR]](s64), [[VMSET_VL]](), $x0, 3 + ; RV64-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; RV64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C1]](s64) + ; RV64-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF]], [[DEF]], [[LSHR]](s64), [[VMSET_VL]](), [[C1]], 3 ; RV64-NEXT: [[EXTRACT_SUBVECTOR:%[0-9]+]]:_() = G_EXTRACT_SUBVECTOR [[VSLIDEDOWN_VL]](), 0 ; RV64-NEXT: $v8 = COPY [[EXTRACT_SUBVECTOR]]() ; RV64-NEXT: PseudoRET implicit $v8 @@ -416,9 +426,10 @@ body: | ; RV32-NEXT: [[READ_VLENB:%[0-9]+]]:_(s32) = G_READ_VLENB ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 3 ; RV32-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[READ_VLENB]], [[C]](s32) - ; RV32-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; RV32-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C1]](s32) ; RV32-NEXT: [[DEF1:%[0-9]+]]:_() = G_IMPLICIT_DEF - ; RV32-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[EXTRACT_SUBVECTOR]], [[LSHR]](s32), [[VMSET_VL]](), $x0, 3 + ; RV32-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[EXTRACT_SUBVECTOR]], [[LSHR]](s32), [[VMSET_VL]](), [[C1]], 3 ; RV32-NEXT: [[EXTRACT_SUBVECTOR1:%[0-9]+]]:_() = G_EXTRACT_SUBVECTOR [[VSLIDEDOWN_VL]](), 0 ; RV32-NEXT: $v8 = COPY [[EXTRACT_SUBVECTOR1]]() ; RV32-NEXT: PseudoRET implicit $v8 @@ -429,9 +440,10 @@ body: | ; RV64-NEXT: [[READ_VLENB:%[0-9]+]]:_(s64) = G_READ_VLENB ; RV64-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 3 ; RV64-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[READ_VLENB]], [[C]](s64) - ; RV64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; RV64-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; RV64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C1]](s64) ; RV64-NEXT: [[DEF1:%[0-9]+]]:_() = G_IMPLICIT_DEF - ; RV64-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[EXTRACT_SUBVECTOR]], [[LSHR]](s64), [[VMSET_VL]](), $x0, 3 + ; RV64-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[EXTRACT_SUBVECTOR]], [[LSHR]](s64), [[VMSET_VL]](), [[C1]], 3 ; RV64-NEXT: [[EXTRACT_SUBVECTOR1:%[0-9]+]]:_() = G_EXTRACT_SUBVECTOR [[VSLIDEDOWN_VL]](), 0 ; RV64-NEXT: $v8 = COPY [[EXTRACT_SUBVECTOR1]]() ; RV64-NEXT: PseudoRET implicit $v8 @@ -452,9 +464,10 @@ body: | ; RV32-NEXT: [[READ_VLENB:%[0-9]+]]:_(s32) = G_READ_VLENB ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 3 ; RV32-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[READ_VLENB]], [[C]](s32) - ; RV32-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; RV32-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C1]](s32) ; RV32-NEXT: [[DEF1:%[0-9]+]]:_() = G_IMPLICIT_DEF - ; RV32-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[EXTRACT_SUBVECTOR]], [[LSHR]](s32), [[VMSET_VL]](), $x0, 3 + ; RV32-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[EXTRACT_SUBVECTOR]], [[LSHR]](s32), [[VMSET_VL]](), [[C1]], 3 ; RV32-NEXT: [[EXTRACT_SUBVECTOR1:%[0-9]+]]:_() = G_EXTRACT_SUBVECTOR [[VSLIDEDOWN_VL]](), 0 ; RV32-NEXT: $v8 = COPY [[EXTRACT_SUBVECTOR1]]() ; RV32-NEXT: PseudoRET implicit $v8 @@ -465,9 +478,10 @@ body: | ; RV64-NEXT: [[READ_VLENB:%[0-9]+]]:_(s64) = G_READ_VLENB ; RV64-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 3 ; RV64-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[READ_VLENB]], [[C]](s64) - ; RV64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; RV64-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; RV64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C1]](s64) ; RV64-NEXT: [[DEF1:%[0-9]+]]:_() = G_IMPLICIT_DEF - ; RV64-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[EXTRACT_SUBVECTOR]], [[LSHR]](s64), [[VMSET_VL]](), $x0, 3 + ; RV64-NEXT: [[VSLIDEDOWN_VL:%[0-9]+]]:_() = G_VSLIDEDOWN_VL [[DEF1]], [[EXTRACT_SUBVECTOR]], [[LSHR]](s64), [[VMSET_VL]](), [[C1]], 3 ; RV64-NEXT: [[EXTRACT_SUBVECTOR1:%[0-9]+]]:_() = G_EXTRACT_SUBVECTOR [[VSLIDEDOWN_VL]](), 0 ; RV64-NEXT: $v8 = COPY [[EXTRACT_SUBVECTOR1]]() ; RV64-NEXT: PseudoRET implicit $v8 diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-splatvector-rv32.mir b/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-splatvector-rv32.mir index 18241413a3a60..5b14dcd0b6905 100644 --- a/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-splatvector-rv32.mir +++ b/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-splatvector-rv32.mir @@ -8,8 +8,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv1i1_0 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL [[C]](s32) ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 0 @@ -25,8 +26,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv1i1_1 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) + ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 1 @@ -69,8 +71,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv2i1_0 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL [[C]](s32) ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 0 @@ -86,8 +89,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv2i1_1 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) + ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 1 @@ -130,8 +134,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv4i1_0 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL [[C]](s32) ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 0 @@ -147,8 +152,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv4i1_1 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) + ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 1 @@ -191,8 +197,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv8i1_0 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL [[C]](s32) ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 0 @@ -208,8 +215,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv8i1_1 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) + ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 1 @@ -252,8 +260,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv16i1_0 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL [[C]](s32) ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 0 @@ -269,8 +278,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv16i1_1 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) + ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 1 @@ -313,8 +323,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv32i1_0 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL [[C]](s32) ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 0 @@ -330,8 +341,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv32i1_1 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) + ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 1 @@ -374,8 +386,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv64i1_0 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL [[C]](s32) ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 0 @@ -391,8 +404,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv64i1_1 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) + ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 1 diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-splatvector-rv64.mir b/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-splatvector-rv64.mir index 5f484f3736392..c95db3262471d 100644 --- a/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-splatvector-rv64.mir +++ b/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-splatvector-rv64.mir @@ -8,8 +8,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv1i1_0 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL [[C]](s64) ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 0 @@ -25,8 +26,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv1i1_1 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) + ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 1 @@ -72,8 +74,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv2i1_0 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL [[C]](s64) ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 0 @@ -89,8 +92,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv2i1_1 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) + ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 1 @@ -136,8 +140,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv4i1_0 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL [[C]](s64) ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 0 @@ -153,8 +158,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv4i1_1 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) + ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 1 @@ -200,8 +206,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv8i1_0 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL [[C]](s64) ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 0 @@ -217,8 +224,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv8i1_1 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) + ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 1 @@ -264,8 +272,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv16i1_0 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL [[C]](s64) ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 0 @@ -281,8 +290,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv16i1_1 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) + ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 1 @@ -328,8 +338,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv32i1_0 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL [[C]](s64) ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 0 @@ -345,8 +356,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv32i1_1 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) + ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 1 @@ -392,8 +404,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv64i1_0 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_() = G_VMCLR_VL [[C]](s64) ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 0 @@ -409,8 +422,9 @@ tracksRegLiveness: true body: | bb.1: ; CHECK-LABEL: name: splatvector_nxv64i1_1 - ; CHECK: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 - ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) + ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_() = G_VMSET_VL [[C]](s64) ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]]() ; CHECK-NEXT: PseudoRET implicit $v0 %0:_(s1) = G_CONSTANT i1 1 diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-splatvector-s64-rv32.mir b/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-splatvector-s64-rv32.mir index 692dce3d9f071..a80ffb7087547 100644 --- a/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-splatvector-s64-rv32.mir +++ b/llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-splatvector-s64-rv32.mir @@ -17,9 +17,10 @@ body: | ; ; NoF64-LABEL: name: splatvector_nxv1i64 ; NoF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF - ; NoF64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; NoF64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; NoF64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) ; NoF64-NEXT: [[DEF1:%[0-9]+]]:_() = G_IMPLICIT_DEF - ; NoF64-NEXT: [[SPLAT_VECTOR_SPLIT_I64_VL:%[0-9]+]]:_() = G_SPLAT_VECTOR_SPLIT_I64_VL [[DEF1]], [[DEF]](s32), [[DEF]], $x0 + ; NoF64-NEXT: [[SPLAT_VECTOR_SPLIT_I64_VL:%[0-9]+]]:_() = G_SPLAT_VECTOR_SPLIT_I64_VL [[DEF1]], [[DEF]](s32), [[DEF]], [[C]](s32) ; NoF64-NEXT: $v8 = COPY [[SPLAT_VECTOR_SPLIT_I64_VL]]() ; NoF64-NEXT: PseudoRET implicit $v8 %0:_(s64) = G_IMPLICIT_DEF @@ -43,9 +44,10 @@ body: | ; ; NoF64-LABEL: name: splatvector_nxv2i64 ; NoF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF - ; NoF64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; NoF64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; NoF64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) ; NoF64-NEXT: [[DEF1:%[0-9]+]]:_() = G_IMPLICIT_DEF - ; NoF64-NEXT: [[SPLAT_VECTOR_SPLIT_I64_VL:%[0-9]+]]:_() = G_SPLAT_VECTOR_SPLIT_I64_VL [[DEF1]], [[DEF]](s32), [[DEF]], $x0 + ; NoF64-NEXT: [[SPLAT_VECTOR_SPLIT_I64_VL:%[0-9]+]]:_() = G_SPLAT_VECTOR_SPLIT_I64_VL [[DEF1]], [[DEF]](s32), [[DEF]], [[C]](s32) ; NoF64-NEXT: $v8m2 = COPY [[SPLAT_VECTOR_SPLIT_I64_VL]]() ; NoF64-NEXT: PseudoRET implicit $v8m2 %0:_(s64) = G_IMPLICIT_DEF @@ -69,9 +71,10 @@ body: | ; ; NoF64-LABEL: name: splatvector_nxv4i64 ; NoF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF - ; NoF64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; NoF64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; NoF64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) ; NoF64-NEXT: [[DEF1:%[0-9]+]]:_() = G_IMPLICIT_DEF - ; NoF64-NEXT: [[SPLAT_VECTOR_SPLIT_I64_VL:%[0-9]+]]:_() = G_SPLAT_VECTOR_SPLIT_I64_VL [[DEF1]], [[DEF]](s32), [[DEF]], $x0 + ; NoF64-NEXT: [[SPLAT_VECTOR_SPLIT_I64_VL:%[0-9]+]]:_() = G_SPLAT_VECTOR_SPLIT_I64_VL [[DEF1]], [[DEF]](s32), [[DEF]], [[C]](s32) ; NoF64-NEXT: $v8m4 = COPY [[SPLAT_VECTOR_SPLIT_I64_VL]]() ; NoF64-NEXT: PseudoRET implicit $v8m4 %0:_(s64) = G_IMPLICIT_DEF @@ -95,9 +98,10 @@ body: | ; ; NoF64-LABEL: name: splatvector_nxv8i64 ; NoF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF - ; NoF64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL $x0 + ; NoF64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1 + ; NoF64-NEXT: [[VMSET_VL:%[0-9]+]]:_() = G_VMSET_VL [[C]](s32) ; NoF64-NEXT: [[DEF1:%[0-9]+]]:_() = G_IMPLICIT_DEF - ; NoF64-NEXT: [[SPLAT_VECTOR_SPLIT_I64_VL:%[0-9]+]]:_() = G_SPLAT_VECTOR_SPLIT_I64_VL [[DEF1]], [[DEF]](s32), [[DEF]], $x0 + ; NoF64-NEXT: [[SPLAT_VECTOR_SPLIT_I64_VL:%[0-9]+]]:_() = G_SPLAT_VECTOR_SPLIT_I64_VL [[DEF1]], [[DEF]](s32), [[DEF]], [[C]](s32) ; NoF64-NEXT: $v8m8 = COPY [[SPLAT_VECTOR_SPLIT_I64_VL]]() ; NoF64-NEXT: PseudoRET implicit $v8m8 %0:_(s64) = G_IMPLICIT_DEF diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/regbankselect/rvv/vmclr-rv32.mir b/llvm/test/CodeGen/RISCV/GlobalISel/regbankselect/rvv/vmclr-rv32.mir new file mode 100644 index 0000000000000..b2ad2dd777f6c --- /dev/null +++ b/llvm/test/CodeGen/RISCV/GlobalISel/regbankselect/rvv/vmclr-rv32.mir @@ -0,0 +1,125 @@ +# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5 +# RUN: llc -mtriple=riscv32 -mattr=+m,+v -run-pass=regbankselect \ +# RUN: -disable-gisel-legality-check -simplify-mir -verify-machineinstrs %s \ +# RUN: -o - | FileCheck %s + +--- +name: splat_zero_nxv1i1 +legalized: true +regBankSelected: false +body: | + bb.1: + ; CHECK-LABEL: name: splat_zero_nxv1i1 + ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL [[C]](s32) + ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() + ; CHECK-NEXT: PseudoRET implicit $v0 + %0:_(s32) = G_CONSTANT i32 -1 + %1:_() = G_VMCLR_VL %0(s32) + $v0 = COPY %1() + PseudoRET implicit $v0 + +... +--- +name: splat_zero_nxv2i1 +legalized: true +regBankSelected: false +body: | + bb.1: + ; CHECK-LABEL: name: splat_zero_nxv2i1 + ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL [[C]](s32) + ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() + ; CHECK-NEXT: PseudoRET implicit $v0 + %0:_(s32) = G_CONSTANT i32 -1 + %1:_() = G_VMCLR_VL %0(s32) + $v0 = COPY %1() + PseudoRET implicit $v0 + +... +--- +name: splat_zero_nxv4i1 +legalized: true +regBankSelected: false +body: | + bb.1: + ; CHECK-LABEL: name: splat_zero_nxv4i1 + ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL [[C]](s32) + ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() + ; CHECK-NEXT: PseudoRET implicit $v0 + %0:_(s32) = G_CONSTANT i32 -1 + %1:_() = G_VMCLR_VL %0(s32) + $v0 = COPY %1() + PseudoRET implicit $v0 + +... +--- +name: splat_zero_nxv8i1 +legalized: true +regBankSelected: false +body: | + bb.1: + ; CHECK-LABEL: name: splat_zero_nxv8i1 + ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL [[C]](s32) + ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() + ; CHECK-NEXT: PseudoRET implicit $v0 + %0:_(s32) = G_CONSTANT i32 -1 + %1:_() = G_VMCLR_VL %0(s32) + $v0 = COPY %1() + PseudoRET implicit $v0 + +... +--- +name: splat_zero_nxv16i1 +legalized: true +regBankSelected: false +body: | + bb.1: + ; CHECK-LABEL: name: splat_zero_nxv16i1 + ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL [[C]](s32) + ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() + ; CHECK-NEXT: PseudoRET implicit $v0 + %0:_(s32) = G_CONSTANT i32 -1 + %1:_() = G_VMCLR_VL %0(s32) + $v0 = COPY %1() + PseudoRET implicit $v0 + +... +--- +name: splat_zero_nxv32i1 +legalized: true +regBankSelected: false +body: | + bb.1: + ; CHECK-LABEL: name: splat_zero_nxv32i1 + ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL [[C]](s32) + ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() + ; CHECK-NEXT: PseudoRET implicit $v0 + %0:_(s32) = G_CONSTANT i32 -1 + %1:_() = G_VMCLR_VL %0(s32) + $v0 = COPY %1() + PseudoRET implicit $v0 + +... +--- +name: splat_zero_nxv64i1 +legalized: true +regBankSelected: false +body: | + bb.1: + ; CHECK-LABEL: name: splat_zero_nxv64i1 + ; CHECK: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 -1 + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL [[C]](s32) + ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() + ; CHECK-NEXT: PseudoRET implicit $v0 + %0:_(s32) = G_CONSTANT i32 -1 + %1:_() = G_VMCLR_VL %0(s32) + $v0 = COPY %1() + PseudoRET implicit $v0 + +... + diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/regbankselect/rvv/vmclr-rv64.mir b/llvm/test/CodeGen/RISCV/GlobalISel/regbankselect/rvv/vmclr-rv64.mir new file mode 100644 index 0000000000000..9997805eb5f76 --- /dev/null +++ b/llvm/test/CodeGen/RISCV/GlobalISel/regbankselect/rvv/vmclr-rv64.mir @@ -0,0 +1,125 @@ +# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5 +# RUN: llc -mtriple=riscv64 -mattr=+m,+v -run-pass=regbankselect \ +# RUN: -disable-gisel-legality-check -simplify-mir -verify-machineinstrs %s \ +# RUN: -o - | FileCheck %s + +--- +name: splat_zero_nxv1i1 +legalized: true +regBankSelected: false +body: | + bb.1: + ; CHECK-LABEL: name: splat_zero_nxv1i1 + ; CHECK: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL [[C]](s64) + ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() + ; CHECK-NEXT: PseudoRET implicit $v0 + %0:_(s64) = G_CONSTANT i64 -1 + %1:_() = G_VMCLR_VL %0(s64) + $v0 = COPY %1() + PseudoRET implicit $v0 + +... +--- +name: splat_zero_nxv2i1 +legalized: true +regBankSelected: false +body: | + bb.1: + ; CHECK-LABEL: name: splat_zero_nxv2i1 + ; CHECK: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL [[C]](s64) + ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() + ; CHECK-NEXT: PseudoRET implicit $v0 + %0:_(s64) = G_CONSTANT i64 -1 + %1:_() = G_VMCLR_VL %0(s64) + $v0 = COPY %1() + PseudoRET implicit $v0 + +... +--- +name: splat_zero_nxv4i1 +legalized: true +regBankSelected: false +body: | + bb.1: + ; CHECK-LABEL: name: splat_zero_nxv4i1 + ; CHECK: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL [[C]](s64) + ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() + ; CHECK-NEXT: PseudoRET implicit $v0 + %0:_(s64) = G_CONSTANT i64 -1 + %1:_() = G_VMCLR_VL %0(s64) + $v0 = COPY %1() + PseudoRET implicit $v0 + +... +--- +name: splat_zero_nxv8i1 +legalized: true +regBankSelected: false +body: | + bb.1: + ; CHECK-LABEL: name: splat_zero_nxv8i1 + ; CHECK: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL [[C]](s64) + ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() + ; CHECK-NEXT: PseudoRET implicit $v0 + %0:_(s64) = G_CONSTANT i64 -1 + %1:_() = G_VMCLR_VL %0(s64) + $v0 = COPY %1() + PseudoRET implicit $v0 + +... +--- +name: splat_zero_nxv16i1 +legalized: true +regBankSelected: false +body: | + bb.1: + ; CHECK-LABEL: name: splat_zero_nxv16i1 + ; CHECK: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL [[C]](s64) + ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() + ; CHECK-NEXT: PseudoRET implicit $v0 + %0:_(s64) = G_CONSTANT i64 -1 + %1:_() = G_VMCLR_VL %0(s64) + $v0 = COPY %1() + PseudoRET implicit $v0 + +... +--- +name: splat_zero_nxv32i1 +legalized: true +regBankSelected: false +body: | + bb.1: + ; CHECK-LABEL: name: splat_zero_nxv32i1 + ; CHECK: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL [[C]](s64) + ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() + ; CHECK-NEXT: PseudoRET implicit $v0 + %0:_(s64) = G_CONSTANT i64 -1 + %1:_() = G_VMCLR_VL %0(s64) + $v0 = COPY %1() + PseudoRET implicit $v0 + +... +--- +name: splat_zero_nxv64i1 +legalized: true +regBankSelected: false +body: | + bb.1: + ; CHECK-LABEL: name: splat_zero_nxv64i1 + ; CHECK: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 -1 + ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL [[C]](s64) + ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]]() + ; CHECK-NEXT: PseudoRET implicit $v0 + %0:_(s64) = G_CONSTANT i64 -1 + %1:_() = G_VMCLR_VL %0(s64) + $v0 = COPY %1() + PseudoRET implicit $v0 + +... + diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/regbankselect/rvv/vmclr.mir b/llvm/test/CodeGen/RISCV/GlobalISel/regbankselect/rvv/vmclr.mir deleted file mode 100644 index f12818227119b..0000000000000 --- a/llvm/test/CodeGen/RISCV/GlobalISel/regbankselect/rvv/vmclr.mir +++ /dev/null @@ -1,149 +0,0 @@ -# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5 -# RUN: llc -mtriple=riscv32 -mattr=+m,+v -run-pass=regbankselect \ -# RUN: -disable-gisel-legality-check -simplify-mir -verify-machineinstrs %s \ -# RUN: -o - | FileCheck -check-prefix=RV32I %s -# RUN: llc -mtriple=riscv64 -mattr=+m,+v -run-pass=regbankselect \ -# RUN: -disable-gisel-legality-check -simplify-mir -verify-machineinstrs %s \ -# RUN: -o - | FileCheck -check-prefix=RV64I %s - ---- -name: splat_zero_nxv1i1 -legalized: true -regBankSelected: false -body: | - bb.1: - ; RV32I-LABEL: name: splat_zero_nxv1i1 - ; RV32I: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL $x0 - ; RV32I-NEXT: $v0 = COPY [[VMCLR_VL]]() - ; RV32I-NEXT: PseudoRET implicit $v0 - ; - ; RV64I-LABEL: name: splat_zero_nxv1i1 - ; RV64I: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL $x0 - ; RV64I-NEXT: $v0 = COPY [[VMCLR_VL]]() - ; RV64I-NEXT: PseudoRET implicit $v0 - %0:_() = G_VMCLR_VL $x0 - $v0 = COPY %0() - PseudoRET implicit $v0 - -... ---- -name: splat_zero_nxv2i1 -legalized: true -regBankSelected: false -body: | - bb.1: - ; RV32I-LABEL: name: splat_zero_nxv2i1 - ; RV32I: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL $x0 - ; RV32I-NEXT: $v0 = COPY [[VMCLR_VL]]() - ; RV32I-NEXT: PseudoRET implicit $v0 - ; - ; RV64I-LABEL: name: splat_zero_nxv2i1 - ; RV64I: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL $x0 - ; RV64I-NEXT: $v0 = COPY [[VMCLR_VL]]() - ; RV64I-NEXT: PseudoRET implicit $v0 - %0:_() = G_VMCLR_VL $x0 - $v0 = COPY %0() - PseudoRET implicit $v0 - -... ---- -name: splat_zero_nxv4i1 -legalized: true -regBankSelected: false -body: | - bb.1: - ; RV32I-LABEL: name: splat_zero_nxv4i1 - ; RV32I: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL $x0 - ; RV32I-NEXT: $v0 = COPY [[VMCLR_VL]]() - ; RV32I-NEXT: PseudoRET implicit $v0 - ; - ; RV64I-LABEL: name: splat_zero_nxv4i1 - ; RV64I: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL $x0 - ; RV64I-NEXT: $v0 = COPY [[VMCLR_VL]]() - ; RV64I-NEXT: PseudoRET implicit $v0 - %0:_() = G_VMCLR_VL $x0 - $v0 = COPY %0() - PseudoRET implicit $v0 - -... ---- -name: splat_zero_nxv8i1 -legalized: true -regBankSelected: false -body: | - bb.1: - ; RV32I-LABEL: name: splat_zero_nxv8i1 - ; RV32I: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL $x0 - ; RV32I-NEXT: $v0 = COPY [[VMCLR_VL]]() - ; RV32I-NEXT: PseudoRET implicit $v0 - ; - ; RV64I-LABEL: name: splat_zero_nxv8i1 - ; RV64I: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL $x0 - ; RV64I-NEXT: $v0 = COPY [[VMCLR_VL]]() - ; RV64I-NEXT: PseudoRET implicit $v0 - %0:_() = G_VMCLR_VL $x0 - $v0 = COPY %0() - PseudoRET implicit $v0 - -... ---- -name: splat_zero_nxv16i1 -legalized: true -regBankSelected: false -body: | - bb.1: - ; RV32I-LABEL: name: splat_zero_nxv16i1 - ; RV32I: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL $x0 - ; RV32I-NEXT: $v0 = COPY [[VMCLR_VL]]() - ; RV32I-NEXT: PseudoRET implicit $v0 - ; - ; RV64I-LABEL: name: splat_zero_nxv16i1 - ; RV64I: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL $x0 - ; RV64I-NEXT: $v0 = COPY [[VMCLR_VL]]() - ; RV64I-NEXT: PseudoRET implicit $v0 - %0:_() = G_VMCLR_VL $x0 - $v0 = COPY %0() - PseudoRET implicit $v0 - -... ---- -name: splat_zero_nxv32i1 -legalized: true -regBankSelected: false -body: | - bb.1: - ; RV32I-LABEL: name: splat_zero_nxv32i1 - ; RV32I: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL $x0 - ; RV32I-NEXT: $v0 = COPY [[VMCLR_VL]]() - ; RV32I-NEXT: PseudoRET implicit $v0 - ; - ; RV64I-LABEL: name: splat_zero_nxv32i1 - ; RV64I: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL $x0 - ; RV64I-NEXT: $v0 = COPY [[VMCLR_VL]]() - ; RV64I-NEXT: PseudoRET implicit $v0 - %0:_() = G_VMCLR_VL $x0 - $v0 = COPY %0() - PseudoRET implicit $v0 - -... ---- -name: splat_zero_nxv64i1 -legalized: true -regBankSelected: false -body: | - bb.1: - ; RV32I-LABEL: name: splat_zero_nxv64i1 - ; RV32I: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL $x0 - ; RV32I-NEXT: $v0 = COPY [[VMCLR_VL]]() - ; RV32I-NEXT: PseudoRET implicit $v0 - ; - ; RV64I-LABEL: name: splat_zero_nxv64i1 - ; RV64I: [[VMCLR_VL:%[0-9]+]]:vrb() = G_VMCLR_VL $x0 - ; RV64I-NEXT: $v0 = COPY [[VMCLR_VL]]() - ; RV64I-NEXT: PseudoRET implicit $v0 - %0:_() = G_VMCLR_VL $x0 - $v0 = COPY %0() - PseudoRET implicit $v0 - -... -