diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2023-04-14 21:41:27 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2023-06-22 18:20:56 +0000 |
commit | bdd1243df58e60e85101c09001d9812a789b6bc4 (patch) | |
tree | a1ce621c7301dd47ba2ddc3b8eaa63b441389481 /contrib/llvm-project/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h | |
parent | 781624ca2d054430052c828ba8d2c2eaf2d733e7 (diff) | |
parent | e3b557809604d036af6e00c60f012c2025b59a5e (diff) | |
download | src-bdd1243df58e60e85101c09001d9812a789b6bc4.tar.gz src-bdd1243df58e60e85101c09001d9812a789b6bc4.zip |
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h')
-rw-r--r-- | contrib/llvm-project/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/contrib/llvm-project/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h b/contrib/llvm-project/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h index 7bbaf7ae9cb2..3d1e51ad3d73 100644 --- a/contrib/llvm-project/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h +++ b/contrib/llvm-project/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h @@ -43,6 +43,7 @@ class HexagonTTIImpl : public BasicTTIImplBase<HexagonTTIImpl> { const HexagonTargetLowering *getTLI() const { return &TLI; } bool useHVX() const; + bool isHVXVectorType(Type *Ty) const; // Returns the number of vector elements of Ty, if Ty is a vector type, // or 1 if Ty is a scalar type. It is incorrect to call this function @@ -106,9 +107,12 @@ public: InstructionCost getScalarizationOverhead(VectorType *Ty, const APInt &DemandedElts, - bool Insert, bool Extract); - InstructionCost getOperandsScalarizationOverhead(ArrayRef<const Value *> Args, - ArrayRef<Type *> Tys); + bool Insert, bool Extract, + TTI::TargetCostKind CostKind); + InstructionCost + getOperandsScalarizationOverhead(ArrayRef<const Value *> Args, + ArrayRef<Type *> Tys, + TTI::TargetCostKind CostKind); InstructionCost getCallInstrCost(Function *F, Type *RetTy, ArrayRef<Type *> Tys, TTI::TargetCostKind CostKind); @@ -116,16 +120,19 @@ public: TTI::TargetCostKind CostKind); InstructionCost getAddressComputationCost(Type *Tp, ScalarEvolution *SE, const SCEV *S); - InstructionCost getMemoryOpCost(unsigned Opcode, Type *Src, - MaybeAlign Alignment, unsigned AddressSpace, - TTI::TargetCostKind CostKind, - const Instruction *I = nullptr); + InstructionCost + getMemoryOpCost(unsigned Opcode, Type *Src, MaybeAlign Alignment, + unsigned AddressSpace, TTI::TargetCostKind CostKind, + TTI::OperandValueInfo OpInfo = {TTI::OK_AnyValue, TTI::OP_None}, + const Instruction *I = nullptr); InstructionCost getMaskedMemoryOpCost(unsigned Opcode, Type *Src, Align Alignment, unsigned AddressSpace, TTI::TargetCostKind CostKind); InstructionCost getShuffleCost(TTI::ShuffleKind Kind, Type *Tp, - ArrayRef<int> Mask, int Index, Type *SubTp, - ArrayRef<const Value *> Args = None); + ArrayRef<int> Mask, + TTI::TargetCostKind CostKind, int Index, + Type *SubTp, + ArrayRef<const Value *> Args = std::nullopt); InstructionCost getGatherScatterOpCost(unsigned Opcode, Type *DataTy, const Value *Ptr, bool VariableMask, Align Alignment, @@ -141,18 +148,18 @@ public: const Instruction *I = nullptr); InstructionCost getArithmeticInstrCost( unsigned Opcode, Type *Ty, TTI::TargetCostKind CostKind, - TTI::OperandValueKind Opd1Info = TTI::OK_AnyValue, - TTI::OperandValueKind Opd2Info = TTI::OK_AnyValue, - TTI::OperandValueProperties Opd1PropInfo = TTI::OP_None, - TTI::OperandValueProperties Opd2PropInfo = TTI::OP_None, + TTI::OperandValueInfo Op1Info = {TTI::OK_AnyValue, TTI::OP_None}, + TTI::OperandValueInfo Op2Info = {TTI::OK_AnyValue, TTI::OP_None}, ArrayRef<const Value *> Args = ArrayRef<const Value *>(), const Instruction *CxtI = nullptr); InstructionCost getCastInstrCost(unsigned Opcode, Type *Dst, Type *Src, TTI::CastContextHint CCH, TTI::TargetCostKind CostKind, const Instruction *I = nullptr); + using BaseT::getVectorInstrCost; InstructionCost getVectorInstrCost(unsigned Opcode, Type *Val, - unsigned Index); + TTI::TargetCostKind CostKind, + unsigned Index, Value *Op0, Value *Op1); InstructionCost getCFInstrCost(unsigned Opcode, TTI::TargetCostKind CostKind, const Instruction *I = nullptr) { @@ -164,8 +171,9 @@ public: /// @} - InstructionCost getUserCost(const User *U, ArrayRef<const Value *> Operands, - TTI::TargetCostKind CostKind); + InstructionCost getInstructionCost(const User *U, + ArrayRef<const Value *> Operands, + TTI::TargetCostKind CostKind); // Hexagon specific decision to generate a lookup table. bool shouldBuildLookupTables() const; |