diff options
-rw-r--r-- | include/llvm/Target/TargetTransformImpl.h | 2 | ||||
-rw-r--r-- | include/llvm/TargetTransformInfo.h | 10 | ||||
-rw-r--r-- | lib/Target/TargetTransformImpl.cpp | 3 |
3 files changed, 10 insertions, 5 deletions
diff --git a/include/llvm/Target/TargetTransformImpl.h b/include/llvm/Target/TargetTransformImpl.h index 59b7ffc826..f2229748be 100644 --- a/include/llvm/Target/TargetTransformImpl.h +++ b/include/llvm/Target/TargetTransformImpl.h @@ -71,7 +71,7 @@ public: virtual unsigned getArithmeticInstrCost(unsigned Opcode, Type *Ty) const; - virtual unsigned getBroadcastCost(Type *Tp) const; + virtual unsigned getShuffleCost(ShuffleKind Kind, Type *Tp) const; virtual unsigned getCastInstrCost(unsigned Opcode, Type *Dst, Type *Src) const; diff --git a/include/llvm/TargetTransformInfo.h b/include/llvm/TargetTransformInfo.h index 718d4bcfea..1a5dda3bb2 100644 --- a/include/llvm/TargetTransformInfo.h +++ b/include/llvm/TargetTransformInfo.h @@ -157,14 +157,18 @@ class VectorTargetTransformInfo { public: virtual ~VectorTargetTransformInfo() {} + enum ShuffleKind { + Broadcast, // Broadcast element 0 to all other elements. + Reverse // Reverse the order of the vector. + }; + /// Returns the expected cost of arithmetic ops, such as mul, xor, fsub, etc. virtual unsigned getArithmeticInstrCost(unsigned Opcode, Type *Ty) const { return 1; } - /// Returns the cost of a vector broadcast of a scalar at place zero to a - /// vector of type 'Tp'. - virtual unsigned getBroadcastCost(Type *Tp) const { + /// Returns the cost of a shuffle instruction of kind Kind and of type Tp. + virtual unsigned getShuffleCost(ShuffleKind Kind, Type *Tp) const { return 1; } diff --git a/lib/Target/TargetTransformImpl.cpp b/lib/Target/TargetTransformImpl.cpp index 3d640dc023..a320e16c98 100644 --- a/lib/Target/TargetTransformImpl.cpp +++ b/lib/Target/TargetTransformImpl.cpp @@ -208,7 +208,8 @@ unsigned VectorTargetTransformImpl::getArithmeticInstrCost(unsigned Opcode, return 1; } -unsigned VectorTargetTransformImpl::getBroadcastCost(Type *Tp) const { +unsigned VectorTargetTransformImpl::getShuffleCost(ShuffleKind Kind, + Type *Tp) const { return 1; } |