Lines Matching +full:1 +full:mib

52            (Query.Types[TypeIdx].getElementCount().getKnownMinValue() != 1 ||  in typeIsLegalIntOrFPVec()
64 (Query.Types[TypeIdx].getElementCount().getKnownMinValue() != 1 || in typeIsLegalBoolVec()
74 const LLT s1 = LLT::scalar(1); in RISCVLegalizerInfo()
80 const LLT nxv1s1 = LLT::scalable_vector(1, s1); in RISCVLegalizerInfo()
88 const LLT nxv1s8 = LLT::scalable_vector(1, s8); in RISCVLegalizerInfo()
96 const LLT nxv1s16 = LLT::scalable_vector(1, s16); in RISCVLegalizerInfo()
103 const LLT nxv1s32 = LLT::scalable_vector(1, s32); in RISCVLegalizerInfo()
109 const LLT nxv1s64 = LLT::scalable_vector(1, s64); in RISCVLegalizerInfo()
143 .clampScalar(1, s32, sXLen) in RISCVLegalizerInfo()
145 .minScalarSameAs(1, 0) in RISCVLegalizerInfo()
146 .widenScalarToNextPow2(1); in RISCVLegalizerInfo()
151 typeIsLegalIntOrFPVec(1, IntOrFPVecTys, ST))); in RISCVLegalizerInfo()
161 ExtActions.customIf(typeIsLegalBoolVec(1, BoolVecTys, ST)) in RISCVLegalizerInfo()
167 unsigned BigTyIdx = Op == G_MERGE_VALUES ? 0 : 1; in RISCVLegalizerInfo()
168 unsigned LitTyIdx = Op == G_MERGE_VALUES ? 1 : 0; in RISCVLegalizerInfo()
186 RotateActions.widenScalarIf(all(typeIs(0, s32), typeIs(1, s32)), in RISCVLegalizerInfo()
187 changeTo(1, sXLen)); in RISCVLegalizerInfo()
196 LegalityPredicates::any(typeIsLegalIntOrFPVec(1, IntOrFPVecTys, ST), in RISCVLegalizerInfo()
197 typeIsLegalBoolVec(1, BoolVecTys, ST)))); in RISCVLegalizerInfo()
212 .scalarSameSizeAs(1, 0); in RISCVLegalizerInfo()
214 CountZerosActions.maxScalar(0, sXLen).scalarSameSizeAs(1, 0).lower(); in RISCVLegalizerInfo()
215 CountZerosUndefActions.maxScalar(0, sXLen).scalarSameSizeAs(1, 0); in RISCVLegalizerInfo()
224 .scalarSameSizeAs(1, 0); in RISCVLegalizerInfo()
226 CTPOPActions.maxScalar(0, sXLen).scalarSameSizeAs(1, 0).lower(); in RISCVLegalizerInfo()
247 typeIsLegalIntOrFPVec(1, IntOrFPVecTys, ST))) in RISCVLegalizerInfo()
248 .widenScalarOrEltToNextPow2OrMinSize(1, 8) in RISCVLegalizerInfo()
249 .clampScalar(1, sXLen, sXLen) in RISCVLegalizerInfo()
256 typeIsLegalBoolVec(1, BoolVecTys, ST))); in RISCVLegalizerInfo()
261 .clampScalar(1, sXLen, sXLen); in RISCVLegalizerInfo()
293 .clampScalar(1, sXLen, sXLen); in RISCVLegalizerInfo()
385 .legalIf(all(typeIsScalarFPArith(0, ST), typeIsScalarFPArith(1, ST))); in RISCVLegalizerInfo()
391 typeIs(1, s64)(Query)) || in RISCVLegalizerInfo()
393 typeIs(1, s32)(Query)) || in RISCVLegalizerInfo()
395 typeIs(1, s64)(Query)); in RISCVLegalizerInfo()
400 typeIs(1, s32)(Query)) || in RISCVLegalizerInfo()
402 typeIs(1, s16)(Query)) || in RISCVLegalizerInfo()
404 typeIs(1, s16)(Query)); in RISCVLegalizerInfo()
408 .legalIf(all(typeIs(0, sXLen), typeIsScalarFPArith(1, ST))) in RISCVLegalizerInfo()
413 .customIf(all(typeIs(0, s1), typeIsScalarFPArith(1, ST))); in RISCVLegalizerInfo()
420 .legalIf(all(typeInSet(0, {s32, sXLen}), typeIsScalarFPArith(1, ST))) in RISCVLegalizerInfo()
426 .legalIf(all(typeIsScalarFPArith(0, ST), typeInSet(1, {s32, sXLen}))) in RISCVLegalizerInfo()
427 .widenScalarToNextPow2(1) in RISCVLegalizerInfo()
428 .clampScalar(1, s32, sXLen); in RISCVLegalizerInfo()
452 typeIs(1, sXLen))) in RISCVLegalizerInfo()
453 .customIf(all(typeIsLegalBoolVec(0, BoolVecTys, ST), typeIs(1, s1))); in RISCVLegalizerInfo()
464 typeInSet(0, {nxv1s64, nxv2s64, nxv4s64, nxv8s64}), typeIs(1, s64))); in RISCVLegalizerInfo()
467 typeInSet(0, {nxv1s64, nxv2s64, nxv4s64, nxv8s64}), typeIs(1, s64))); in RISCVLegalizerInfo()
470 SplatActions.clampScalar(1, sXLen, sXLen); in RISCVLegalizerInfo()
491 Register DstLst = MI.getOperand(1).getReg(); in legalizeIntrinsic()
587 MachineIRBuilder &MIB) const { in legalizeVScale()
591 // We define our scalable vector types for lmul=1 to use a 64 bit known in legalizeVScale()
601 uint64_t Val = MI.getOperand(1).getCImm()->getZExtValue(); in legalizeVScale()
605 auto VLENB = MIB.buildInstr(RISCV::G_READ_VLENB, {XLenTy}, {}); in legalizeVScale()
606 MIB.buildLShr(Dst, VLENB, MIB.buildConstant(XLenTy, 3 - Log2)); in legalizeVScale()
608 auto VLENB = MIB.buildInstr(RISCV::G_READ_VLENB, {XLenTy}, {}); in legalizeVScale()
609 MIB.buildShl(Dst, VLENB, MIB.buildConstant(XLenTy, Log2 - 3)); in legalizeVScale()
611 MIB.buildInstr(RISCV::G_READ_VLENB, {Dst}, {}); in legalizeVScale()
616 auto VLENB = MIB.buildInstr(RISCV::G_READ_VLENB, {XLenTy}, {}); in legalizeVScale()
617 MIB.buildMul(Dst, VLENB, MIB.buildConstant(XLenTy, Val / 8)); in legalizeVScale()
619 auto VLENB = MIB.buildInstr(RISCV::G_READ_VLENB, {XLenTy}, {}); in legalizeVScale()
620 auto VScale = MIB.buildLShr(XLenTy, VLENB, MIB.buildConstant(XLenTy, 3)); in legalizeVScale()
621 MIB.buildMul(Dst, VScale, MIB.buildConstant(XLenTy, Val)); in legalizeVScale()
627 // Custom-lower extensions from mask vectors by using a vselect either with 1
628 // for zero/any-extension or -1 for sign-extension:
629 // (vXiN = (s|z)ext vXi1:vmask) -> (vXiN = vselect vmask, (-1 or 1), 0)
632 MachineIRBuilder &MIB) const { in legalizeExt()
638 MachineRegisterInfo &MRI = *MIB.getMRI(); in legalizeExt()
640 Register Src = MI.getOperand(1).getReg(); in legalizeExt()
643 int64_t ExtTrueVal = Opc == TargetOpcode::G_SEXT ? -1 : 1; in legalizeExt()
645 auto SplatZero = MIB.buildSplatVector(DstTy, MIB.buildConstant(DstEltTy, 0)); in legalizeExt()
647 MIB.buildSplatVector(DstTy, MIB.buildConstant(DstEltTy, ExtTrueVal)); in legalizeExt()
648 MIB.buildSelect(Dst, Src, SplatTrue, SplatZero); in legalizeExt()
660 return LLT::vector(EC, LLT::scalar(1)); in getMaskTypeFor()
666 MachineIRBuilder &MIB, in buildAllOnesMask() argument
669 return MIB.buildInstr(RISCV::G_VMSET_VL, {MaskTy}, {VL}); in buildAllOnesMask()
675 buildDefaultVLOps(const DstOp &Dst, MachineIRBuilder &MIB, in buildDefaultVLOps() argument
680 MachineInstrBuilder Mask = buildAllOnesMask(VecTy, VL, MIB, MRI); in buildDefaultVLOps()
686 Register Hi, Register VL, MachineIRBuilder &MIB, in buildSplatPartsS64WithVL() argument
696 return MIB.buildInstr(RISCV::G_SPLAT_VECTOR_SPLIT_I64_VL, {Dst}, in buildSplatPartsS64WithVL()
703 MachineIRBuilder &MIB, MachineRegisterInfo &MRI) { in buildSplatSplitS64WithVL() argument
705 auto Unmerge = MIB.buildUnmerge(LLT::scalar(32), Scalar); in buildSplatSplitS64WithVL()
707 Unmerge.getReg(1), VL, MIB, MRI); in buildSplatSplitS64WithVL()
715 MachineIRBuilder &MIB) const { in legalizeSplatVector()
718 MachineRegisterInfo &MRI = *MIB.getMRI(); in legalizeSplatVector()
721 Register SplatVal = MI.getOperand(1).getReg(); in legalizeSplatVector()
729 auto [_, VL] = buildDefaultVLOps(Dst, MIB, MRI); in legalizeSplatVector()
730 buildSplatSplitS64WithVL(Dst, MIB.buildUndef(VecTy), SplatVal, VL, MIB, in legalizeSplatVector()
739 auto VL = buildDefaultVLOps(VecTy, MIB, MRI).second; in legalizeSplatVector()
740 MIB.buildInstr(RISCV::G_VMSET_VL, {Dst}, {VL}); in legalizeSplatVector()
745 auto VL = buildDefaultVLOps(VecTy, MIB, MRI).second; in legalizeSplatVector()
746 MIB.buildInstr(RISCV::G_VMCLR_VL, {Dst}, {VL}); in legalizeSplatVector()
755 auto ZExtSplatVal = MIB.buildZExt(InterEltTy, SplatVal); in legalizeSplatVector()
757 MIB.buildAnd(InterEltTy, ZExtSplatVal, MIB.buildConstant(InterEltTy, 1)); in legalizeSplatVector()
758 auto LHS = MIB.buildSplatVector(InterTy, And); in legalizeSplatVector()
760 MIB.buildSplatVector(InterTy, MIB.buildConstant(InterEltTy, 0)); in legalizeSplatVector()
761 MIB.buildICmp(CmpInst::Predicate::ICMP_NE, Dst, LHS, ZeroSplat); in legalizeSplatVector()
784 const ConstantInt *ConstVal = MI.getOperand(1).getCImm(); in legalizeCustom()
804 Register Src = MI.getOperand(1).getReg(); in legalizeCustom()
806 MachineIRBuilder MIB(MI); in legalizeCustom() local
811 auto FClassMask = MIB.buildConstant(sXLen, GFpClassImm.rotr(2).zext(XLen)); in legalizeCustom()
812 auto ConstZero = MIB.buildConstant(sXLen, 0); in legalizeCustom()
814 auto GFClass = MIB.buildInstr(RISCV::G_FCLASS, {sXLen}, {Src}); in legalizeCustom()
815 auto And = MIB.buildAnd(sXLen, GFClass, FClassMask); in legalizeCustom()
816 MIB.buildICmp(CmpInst::ICMP_NE, GISFPCLASS, And, ConstZero); in legalizeCustom()