aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/Target/TargetLowering.h
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2013-08-05 22:22:01 +0000
committerTom Stellard <thomas.stellard@amd.com>2013-08-05 22:22:01 +0000
commit425b76c2314ff7ee7ad507011bdda1988ae481ef (patch)
tree22daf252e02f57ea9ecde1ea4d753970aa98c6b8 /include/llvm/Target/TargetLowering.h
parentde5cb6b24925c8d3113f02e94d2c16cfed69c47d (diff)
downloadexternal_llvm-425b76c2314ff7ee7ad507011bdda1988ae481ef.zip
external_llvm-425b76c2314ff7ee7ad507011bdda1988ae481ef.tar.gz
external_llvm-425b76c2314ff7ee7ad507011bdda1988ae481ef.tar.bz2
TargetLowering: Add getVectorIdxTy() function v2
This virtual function can be implemented by targets to specify the type to use for the index operand of INSERT_VECTOR_ELT, EXTRACT_VECTOR_ELT, INSERT_SUBVECTOR, EXTRACT_SUBVECTOR. The default implementation returns the result from TargetLowering::getPointerTy() The previous code was using TargetLowering::getPointerTy() for vector indices, because this is guaranteed to be legal on all targets. However, using TargetLowering::getPointerTy() can be a problem for targets with pointer sizes that differ across address spaces. On such targets, when vectors need to be loaded or stored to an address space other than the default 'zero' address space (which is the address space assumed by TargetLowering::getPointerTy()), having an index that is a different size than the pointer can lead to inefficient pointer calculations, (e.g. 64-bit adds for a 32-bit address space). There is no intended functionality change with this patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187748 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Target/TargetLowering.h')
-rw-r--r--include/llvm/Target/TargetLowering.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/llvm/Target/TargetLowering.h b/include/llvm/Target/TargetLowering.h
index 095b1ce..69bfe70 100644
--- a/include/llvm/Target/TargetLowering.h
+++ b/include/llvm/Target/TargetLowering.h
@@ -156,6 +156,13 @@ public:
EVT getShiftAmountTy(EVT LHSTy) const;
+ /// Returns the type to be used for the index operand of:
+ /// ISD::INSERT_VECTOR_ELT, ISD::EXTRACT_VECTOR_ELT,
+ /// ISD::INSERT_SUBVECTOR, and ISD::EXTRACT_SUBVECTOR
+ virtual MVT getVectorIdxTy() const {
+ return getPointerTy();
+ }
+
/// Return true if the select operation is expensive for this target.
bool isSelectExpensive() const { return SelectIsExpensive; }