summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorPaul Redmond <paul.redmond@intel.com>2012-12-09 20:42:17 +0000
committerPaul Redmond <paul.redmond@intel.com>2012-12-09 20:42:17 +0000
commit880166684e5af0f5b4bfe26870b9f7813e537354 (patch)
tree51c6a6d48732a0ddf166bb34ac207b59b172d403 /include
parent855d0255d0bc388da7554d05f8cf184e26f5a00d (diff)
downloadllvm-880166684e5af0f5b4bfe26870b9f7813e537354.tar.gz
llvm-880166684e5af0f5b4bfe26870b9f7813e537354.tar.bz2
llvm-880166684e5af0f5b4bfe26870b9f7813e537354.tar.xz
LoopVectorize: support vectorizing intrinsic calls
- added function to VectorTargetTransformInfo to query cost of intrinsics - vectorize trivially vectorizable intrinsic calls such as sin, cos, log, etc. Reviewed by: Nadav git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169711 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Target/TargetTransformImpl.h3
-rw-r--r--include/llvm/TargetTransformInfo.h8
2 files changed, 11 insertions, 0 deletions
diff --git a/include/llvm/Target/TargetTransformImpl.h b/include/llvm/Target/TargetTransformImpl.h
index f4ec97ae93..a94278cfa3 100644
--- a/include/llvm/Target/TargetTransformImpl.h
+++ b/include/llvm/Target/TargetTransformImpl.h
@@ -90,6 +90,9 @@ public:
unsigned Alignment,
unsigned AddressSpace) const;
+ virtual unsigned getIntrinsicInstrCost(Intrinsic::ID, Type *RetTy,
+ ArrayRef<Type*> Tys) const;
+
virtual unsigned getNumberOfParts(Type *Tp) const;
};
diff --git a/include/llvm/TargetTransformInfo.h b/include/llvm/TargetTransformInfo.h
index a18cef6d01..519ccb9263 100644
--- a/include/llvm/TargetTransformInfo.h
+++ b/include/llvm/TargetTransformInfo.h
@@ -23,6 +23,7 @@
#define LLVM_TRANSFORMS_TARGET_TRANSFORM_INTERFACE
#include "llvm/AddressingMode.h"
+#include "llvm/Intrinsics.h"
#include "llvm/Pass.h"
#include "llvm/Support/DataTypes.h"
#include "llvm/Type.h"
@@ -209,6 +210,13 @@ public:
return 1;
}
+ /// Returns the cost of Intrinsic instructions.
+ virtual unsigned getIntrinsicInstrCost(Intrinsic::ID,
+ Type *RetTy,
+ ArrayRef<Type*> Tys) const {
+ return 1;
+ }
+
/// Returns the number of pieces into which the provided type must be
/// split during legalization. Zero is returned when the answer is unknown.
virtual unsigned getNumberOfParts(Type *Tp) const {