| /openbsd-src/regress/sys/altivec_ast/ |
| H A D | vecast.c | 38 #define VF(a, b, c, d) (vector float)(a, b, c, d) macro 148 in1 = VF(10, 0x10p-140, 0x20p-130, -0x2000p-134); in main() 149 in2 = VF( 4, 0x5p-140, -0x1p-130, 0x1fffp-134); in main() 150 ans = VF(14, 0x15p-140, 0x1fp-130, -0x1p-134); in main() 154 in1 = VF(0x4000p-134, 10, 0x10p-140, 0x3p-130); in main() 155 in2 = VF(0x3ffep-134, 4, 0x5p-140, 0x40p-130); in main() 156 ans = VF( 0x2p-134, 6, 0xbp-140, -0x3dp-130); in main() 160 in1 = VF( 0x6p-70, 0x6p-140, 6, 0x6p-100); in main() 161 in2 = VF( 0x7p-70, 0x7p50, 7, 0x7p-30); in main() 162 in3 = VF( 0, 0, 1, -0x20p-130); in main() [all …]
|
| /openbsd-src/gnu/llvm/llvm/lib/Transforms/Vectorize/ |
| H A D | LoopVectorize.cpp | 457 AC(AC), ORE(ORE), VF(VecWidth), UF(UnrollFactor), in InnerLoopVectorizer() 675 ElementCount VF; member in llvm::InnerLoopVectorizer 953 Value *createStepForVF(IRBuilderBase &B, Type *Ty, ElementCount VF, in createStepForVF() argument 956 Constant *StepVal = ConstantInt::get(Ty, Step * VF.getKnownMinValue()); in createStepForVF() 957 return VF.isScalable() ? B.CreateVScale(StepVal) : StepVal; in createStepForVF() 961 Value *getRuntimeVF(IRBuilderBase &B, Type *Ty, ElementCount VF) { in getRuntimeVF() argument 962 Constant *EC = ConstantInt::get(Ty, VF.getKnownMinValue()); in getRuntimeVF() 963 return VF.isScalable() ? B.CreateVScale(EC) : EC; in getRuntimeVF() 988 ElementCount VF) { in getRuntimeVFAsFloat() argument 991 Value *RuntimeVF = getRuntimeVF(B, IntTy, VF); in getRuntimeVFAsFloat() [all …]
|
| H A D | VPlanRecipes.cpp | 138 auto Lane = VPLane::getLastLaneForVF(State.VF); in fixPhi() 235 auto *PredTy = VectorType::get(Int1Ty, State.VF); in generateInstruction() 276 createStepForVF(Builder, Phi->getType(), State.VF, State.UF); in generateInstruction() 297 Value *Step = createStepForVF(Builder, IV->getType(), State.VF, Part); in generateInstruction() 449 ToVectorTy(ArgOperand->getType(), State.VF.getKnownMinValue())); in execute() 471 if (State.VF.isVector()) in execute() 473 VectorType::get(CI.getType()->getScalarType(), State.VF); in execute() 479 const VFShape Shape = VFShape::get(CI, State.VF, false /*HasGlobalPred*/); in execute() 666 Type *DestTy = (State.VF.isScalar()) in execute() 668 : VectorType::get(CI->getType(), State.VF); in execute() [all …]
|
| H A D | VPlan.cpp | 64 const ElementCount &VF) const { in getAsRuntimeExpr() 68 return Builder.CreateSub(getRuntimeVF(Builder, Builder.getInt32Ty(), VF), in getAsRuntimeExpr() 69 Builder.getInt32(VF.getKnownMinValue() - Lane)); in getAsRuntimeExpr() 217 .PerPartScalars[Def][Instance.Part][Instance.Lane.mapToCacheIndex(VF)]; in get() 227 Value *Lane = Instance.Lane.getAsRuntimeExpr(Builder, VF); in get() 271 DIL->cloneByMultiplyingDuplicationFactor(UF * VF.getKnownMinValue()); in setDebugLocFromInst() 548 assert(!State->VF.isScalable() && "VF is assumed to be non scalable."); in execute() 549 for (unsigned Lane = 0, VF = State->VF.getKnownMinValue(); Lane < VF; in execute() local 625 auto VF = State.VF; in prepareToExecute() local 627 VF.isScalar() ? TCMO : Builder.CreateVectorSplat(VF, TCMO, "broadcast"); in prepareToExecute() [all …]
|
| H A D | VPlan.h | 73 Value *getRuntimeVF(IRBuilderBase &B, Type *Ty, ElementCount VF); 76 Value *createStepForVF(IRBuilderBase &B, Type *Ty, ElementCount VF, 139 static VPLane getLastLaneForVF(const ElementCount &VF) { in getLastLaneForVF() argument 140 unsigned LaneOffset = VF.getKnownMinValue() - 1; in getLastLaneForVF() 142 if (VF.isScalable()) in getLastLaneForVF() 160 Value *getAsRuntimeExpr(IRBuilderBase &Builder, const ElementCount &VF) const; 169 unsigned mapToCacheIndex(const ElementCount &VF) const { in mapToCacheIndex() argument 172 assert(VF.isScalable() && Lane < VF.getKnownMinValue()); in mapToCacheIndex() 173 return VF.getKnownMinValue() + Lane; in mapToCacheIndex() 175 assert(Lane < VF.getKnownMinValue()); in mapToCacheIndex() [all …]
|
| H A D | LoadStoreVectorizer.cpp | 851 unsigned VF = VecRegSize / TySize; in collectInstructions() local 856 (VecTy && TTI.getLoadVectorFactor(VF, TySize, TySize / 8, VecTy) == 0)) in collectInstructions() 891 unsigned VF = VecRegSize / TySize; in collectInstructions() local 896 (VecTy && TTI.getStoreVectorFactor(VF, TySize, TySize / 8, VecTy) == 0)) in collectInstructions() 1021 unsigned VF = VecRegSize / Sz; in vectorizeStoreChain() local 1025 if (!isPowerOf2_32(Sz) || VF < 2 || ChainSize < 2) { in vectorizeStoreChain() 1061 unsigned TargetVF = TTI.getStoreVectorFactor(VF, Sz, SzInBytes, VecTy); in vectorizeStoreChain() 1062 if (ChainSize > VF || (VF != TargetVF && TargetVF < ChainSize)) { in vectorizeStoreChain() 1187 unsigned VF = VecRegSize / Sz; in vectorizeLoadChain() local 1191 if (!isPowerOf2_32(Sz) || VF < 2 || ChainSize < 2) { in vectorizeLoadChain() [all …]
|
| H A D | LoopVectorizationPlanner.h | 307 VPlan &getBestPlanFor(ElementCount VF) const; 314 void executePlan(ElementCount VF, unsigned UF, VPlan &BestPlan, 324 bool hasPlanWithVF(ElementCount VF) const { in hasPlanWithVF() argument 326 [&](const VPlanPtr &Plan) { return Plan->hasVF(VF); }); in hasPlanWithVF()
|
| H A D | SLPVectorizer.cpp | 342 static SmallBitVector buildUseMask(int VF, ArrayRef<int> Mask, in buildUseMask() argument 344 SmallBitVector UseMask(VF, true); in buildUseMask() 351 if (MaskArg == UseMask::FirstArg && P.value() < VF) in buildUseMask() 353 else if (MaskArg == UseMask::SecondArg && P.value() >= VF) in buildUseMask() 354 UseMask.reset(P.value() - VF); in buildUseMask() 757 Mappings.front().Shape.VF != BaseMappings.front().Shape.VF || in getSameOpcode() 3930 unsigned VF = TE.getVectorFactor(); in getReorderingData() local 3944 for (unsigned I = 0; I < VF; ++I) { in getReorderingData() 3955 OrdersType ResOrder(VF); in getReorderingData() 3958 for (unsigned K = 0; K < VF; K += Sz) { in getReorderingData() [all …]
|
| H A D | LoopVectorizationLegality.cpp | 643 for (ElementCount VF = ElementCount::getFixed(2); in isTLIScalarize() local 644 ElementCount::isKnownLE(VF, WidestFixedVF); VF *= 2) in isTLIScalarize() 645 Scalarize &= !TLI.isFunctionVectorizable(ScalarName, VF); in isTLIScalarize() 646 for (ElementCount VF = ElementCount::getScalable(1); in isTLIScalarize() local 647 ElementCount::isKnownLE(VF, WidestScalableVF); VF *= 2) in isTLIScalarize() 648 Scalarize &= !TLI.isFunctionVectorizable(ScalarName, VF); in isTLIScalarize()
|
| /openbsd-src/gnu/llvm/llvm/lib/Transforms/Utils/ |
| H A D | InjectTLIMappings.cpp | 42 static void addVariantDeclaration(CallInst &CI, const ElementCount &VF, in addVariantDeclaration() argument 47 Type *RetTy = ToVectorTy(CI.getType(), VF); in addVariantDeclaration() 50 Tys.push_back(ToVectorTy(ArgOperand->getType(), VF)); in addVariantDeclaration() 92 auto AddVariantDecl = [&](const ElementCount &VF) { in addMappingsFromTLI() argument 94 std::string(TLI.getVectorizedFunction(ScalarName, VF)); in addMappingsFromTLI() 97 VFABI::mangleTLIVectorName(TLIName, ScalarName, CI.arg_size(), VF); in addMappingsFromTLI() 104 addVariantDeclaration(CI, VF, TLIName); in addMappingsFromTLI() 112 for (ElementCount VF = ElementCount::getFixed(2); in addMappingsFromTLI() local 113 ElementCount::isKnownLE(VF, WidestFixedVF); VF *= 2) in addMappingsFromTLI() 114 AddVariantDecl(VF); in addMappingsFromTLI()
|
| /openbsd-src/gnu/llvm/llvm/lib/Target/SystemZ/ |
| H A D | SystemZTargetTransformInfo.cpp | 521 unsigned VF = VTy->getNumElements(); in getArithmeticInstrCost() local 535 return VF * DivMulSeqCost + in getArithmeticInstrCost() 538 if ((SignedDivRem || UnsignedDivRem) && VF > 4) in getArithmeticInstrCost() 562 (VF * ScalarCost) + in getArithmeticInstrCost() 566 if (VF == 2) in getArithmeticInstrCost() 581 InstructionCost Cost = (VF * LIBCALL_COST) + in getArithmeticInstrCost() 584 if (VF == 2 && ScalarBits == 32) in getArithmeticInstrCost() 672 unsigned VF = cast<FixedVectorType>(SrcTy)->getNumElements(); in getVectorTruncCost() local 682 if (VF == 8 && SrcTy->getScalarSizeInBits() == 64 && in getVectorTruncCost() 716 static Type *getCmpOpsType(const Instruction *I, unsigned VF = 1) { in getCmpOpsType() argument [all …]
|
| /openbsd-src/gnu/llvm/llvm/lib/CodeGen/ |
| H A D | ReplaceWithVeclib.cpp | 106 ElementCount VF = ElementCount::getFixed(0); in replaceWithCallToVeclib() local 129 if (VF.isNonZero() && VF != NumElements) { in replaceWithCallToVeclib() 133 VF = NumElements; in replaceWithCallToVeclib() 159 std::string(TLI.getVectorizedFunction(ScalarName, VF)); in replaceWithCallToVeclib() 162 << ScalarName << "` and vector width " << VF << ".\n"); in replaceWithCallToVeclib()
|
| /openbsd-src/gnu/llvm/llvm/lib/Analysis/ |
| H A D | VFABIDemangling.cpp | 69 ParseRet tryParseVLEN(StringRef &ParseString, unsigned &VF, bool &IsScalable) { in tryParseVLEN() argument 74 VF = 0; in tryParseVLEN() 79 if (ParseString.consumeInteger(10, VF)) in tryParseVLEN() 83 if (VF == 0) in tryParseVLEN() 341 unsigned VF; in tryDemangleForVFABI() local 343 if (tryParseVLEN(MangledName, VF, IsScalable) != ParseRet::OK) in tryDemangleForVFABI() 443 VF = EC.getKnownMinValue(); in tryDemangleForVFABI() 449 if (VF == 0) in tryDemangleForVFABI() 454 const VFShape Shape({ElementCount::get(VF, IsScalable), Parameters}); in tryDemangleForVFABI()
|
| H A D | VectorUtils.cpp | 614 for (int Idx = 0, VF = FirstMask.size(); Idx < VF; ++Idx) { in processShuffleMasks() local 618 FirstMask[Idx] = SecondMask[Idx] + VF; in processShuffleMasks() 623 for (int Idx = 0, VF = Mask.size(); Idx < VF; ++Idx) { in processShuffleMasks() local 937 llvm::createBitMaskForGaps(IRBuilderBase &Builder, unsigned VF, in createBitMaskForGaps() argument 947 for (unsigned i = 0; i < VF; i++) in createBitMaskForGaps() 957 llvm::createReplicatedMask(unsigned ReplicationFactor, unsigned VF) { in createReplicatedMask() argument 959 for (unsigned i = 0; i < VF; i++) in createReplicatedMask() 966 llvm::SmallVector<int, 16> llvm::createInterleaveMask(unsigned VF, in createInterleaveMask() argument 969 for (unsigned i = 0; i < VF; i++) in createInterleaveMask() 971 Mask.push_back(j * VF + i); in createInterleaveMask() [all …]
|
| H A D | TargetTransformInfo.cpp | 682 unsigned TargetTransformInfo::getStoreMinimumVF(unsigned VF, Type *ScalarMemTy, in getStoreMinimumVF() argument 684 return TTIImpl->getStoreMinimumVF(VF, ScalarMemTy, ScalarValTy); in getStoreMinimumVF() 731 unsigned TargetTransformInfo::getMaxInterleaveFactor(unsigned VF) const { in getMaxInterleaveFactor() 732 return TTIImpl->getMaxInterleaveFactor(VF); in getMaxInterleaveFactor() 926 Type *EltTy, int ReplicationFactor, int VF, const APInt &DemandedDstElts, in getReplicationShuffleCost() argument 929 EltTy, ReplicationFactor, VF, DemandedDstElts, CostKind); in getReplicationShuffleCost() 1125 const RecurrenceDescriptor &RdxDesc, ElementCount VF) const { in isLegalToVectorizeReduction() 1126 return TTIImpl->isLegalToVectorizeReduction(RdxDesc, VF); in isLegalToVectorizeReduction() 1133 unsigned TargetTransformInfo::getLoadVectorFactor(unsigned VF, in getLoadVectorFactor() argument 1137 return TTIImpl->getLoadVectorFactor(VF, LoadSize, ChainSizeInBytes, VecTy); in getLoadVectorFactor() [all …]
|
| /openbsd-src/gnu/llvm/llvm/include/llvm/Analysis/ |
| H A D | VectorUtils.h | 83 ElementCount VF; // Vectorization factor. member 87 return std::tie(VF, Parameters) == std::tie(Other.VF, Other.Parameters); 188 unsigned numArgs, ElementCount VF); 306 inline Type *ToVectorTy(Type *Scalar, unsigned VF) { in ToVectorTy() argument 307 return ToVectorTy(Scalar, ElementCount::getFixed(VF)); in ToVectorTy() 508 Constant *createBitMaskForGaps(IRBuilderBase &Builder, unsigned VF, 524 unsigned VF); 537 llvm::SmallVector<int, 16> createInterleaveMask(unsigned VF, unsigned NumVecs); 552 unsigned VF);
|
| H A D | TargetLibraryInfo.h | 163 bool isFunctionVectorizable(StringRef F, const ElementCount &VF) const { in isFunctionVectorizable() argument 164 return !getVectorizedFunction(F, VF).empty(); in isFunctionVectorizable() 173 StringRef getVectorizedFunction(StringRef F, const ElementCount &VF) const; 343 bool isFunctionVectorizable(StringRef F, const ElementCount &VF) const { in isFunctionVectorizable() argument 344 return Impl->isFunctionVectorizable(F, VF); in isFunctionVectorizable() 349 StringRef getVectorizedFunction(StringRef F, const ElementCount &VF) const { in getVectorizedFunction() argument 350 return Impl->getVectorizedFunction(F, VF); in getVectorizedFunction()
|
| H A D | TargetTransformInfo.h | 1012 unsigned getStoreMinimumVF(unsigned VF, Type *ScalarMemTy, 1080 unsigned getMaxInterleaveFactor(unsigned VF) const; 1219 int VF, 1444 ElementCount VF) const; 1451 unsigned getLoadVectorFactor(unsigned VF, unsigned LoadSize, 1457 unsigned getStoreVectorFactor(unsigned VF, unsigned StoreSize, 1733 virtual unsigned getStoreMinimumVF(unsigned VF, Type *ScalarMemTy, 1769 virtual unsigned getMaxInterleaveFactor(unsigned VF) = 0; 1804 getReplicationShuffleCost(Type *EltTy, int ReplicationFactor, int VF, 1888 ElementCount VF) const = 0; [all …]
|
| H A D | TargetTransformInfoImpl.h | 452 unsigned getStoreMinimumVF(unsigned VF, Type *, Type *) const { return VF; } in getStoreMinimumVF() argument 494 unsigned getMaxInterleaveFactor(unsigned VF) const { return 1; } in getMaxInterleaveFactor() argument 604 unsigned getReplicationShuffleCost(Type *EltTy, int ReplicationFactor, int VF, in getReplicationShuffleCost() argument 811 ElementCount VF) const { in isLegalToVectorizeReduction() argument 817 unsigned getLoadVectorFactor(unsigned VF, unsigned LoadSize, in getLoadVectorFactor() argument 820 return VF; in getLoadVectorFactor() 823 unsigned getStoreVectorFactor(unsigned VF, unsigned StoreSize, in getStoreVectorFactor() argument 826 return VF; in getStoreVectorFactor() 1213 int ReplicationFactor, VF; in getInstructionCost() local 1214 if (Shuffle->isReplicationMask(ReplicationFactor, VF)) { in getInstructionCost() [all …]
|
| /openbsd-src/gnu/llvm/llvm/lib/Target/AArch64/ |
| H A D | AArch64TargetTransformInfo.h | 140 unsigned getMaxNumElements(ElementCount VF) const { in getMaxNumElements() argument 141 if (!VF.isScalable()) in getMaxNumElements() 142 return VF.getFixedValue(); in getMaxNumElements() 144 return VF.getKnownMinValue() * ST->getVScaleForTuning(); in getMaxNumElements() 147 unsigned getMaxInterleaveFactor(unsigned VF); 367 ElementCount VF) const;
|
| /openbsd-src/gnu/llvm/llvm/lib/Target/X86/ |
| H A D | X86InterleavedAccess.cpp | 443 int VF = VT.getVectorNumElements(); in createShuffleStride() local 446 for (int i = 0, LaneSize = VF / LaneCount; i != LaneSize; ++i) in createShuffleStride() 456 int VF = VT.getVectorNumElements() / std::max(VectorSize / 128, 1); in setGroupSize() local 458 int GroupSize = std::ceil((VF - FirstGroupElement) / 3.0); in setGroupSize() 460 FirstGroupElement = ((GroupSize)*3 + FirstGroupElement) % VF; in setGroupSize() 615 int VF = VT.getVectorNumElements(); in group2Shuffle() local 619 IndexGroup[(Index * 3) % (VF / Lane)] = Index; in group2Shuffle() 623 for (int i = 0; i < VF / Lane; i++) { in group2Shuffle()
|
| /openbsd-src/gnu/llvm/llvm/lib/Target/RISCV/ |
| H A D | RISCVTargetTransformInfo.h | 256 ElementCount VF) const { in isLegalToVectorizeReduction() argument 257 if (!VF.isScalable()) in isLegalToVectorizeReduction() 285 unsigned getMaxInterleaveFactor(unsigned VF) { in getMaxInterleaveFactor() argument 288 return VF == 1 ? 1 : ST->getMaxInterleaveFactor(); in getMaxInterleaveFactor()
|
| /openbsd-src/gnu/llvm/llvm/lib/Target/AMDGPU/ |
| H A D | R600TargetTransformInfo.cpp | 85 unsigned R600TTIImpl::getMaxInterleaveFactor(unsigned VF) { in getMaxInterleaveFactor() argument 88 if (VF == 1) in getMaxInterleaveFactor()
|
| H A D | AMDGPUTargetTransformInfo.h | 122 unsigned getLoadVectorFactor(unsigned VF, unsigned LoadSize, 125 unsigned getStoreVectorFactor(unsigned VF, unsigned StoreSize, 146 unsigned getMaxInterleaveFactor(unsigned VF);
|
| /openbsd-src/gnu/llvm/llvm/lib/Target/PowerPC/MCTargetDesc/ |
| H A D | PPCMCTargetDesc.h | 187 static const MCPhysReg VFRegs[32] = PPC_REGS0_31(PPC::VF); \ 196 PPC_REGS_LO_HI(PPC::F, PPC::VF); \ 198 PPC_REGS_LO_HI(PPC::F, PPC::VF); \
|