summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRobert Lytton <robert@xmos.com>2013-10-11 10:26:29 +0000
committerRobert Lytton <robert@xmos.com>2013-10-11 10:26:29 +0000
commit7b5376659c1c822960a5cb56d5e1417cfd74673f (patch)
treeb818d22174632fc11ac7afba213c0bc622a6e0cd /lib
parentc879eabcc25c4099a50939ed0bca86471201b183 (diff)
downloadllvm-7b5376659c1c822960a5cb56d5e1417cfd74673f.tar.gz
llvm-7b5376659c1c822960a5cb56d5e1417cfd74673f.tar.bz2
llvm-7b5376659c1c822960a5cb56d5e1417cfd74673f.tar.xz
XCore target: add XCoreTargetLowering::isZExtFree()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192431 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/XCore/XCoreISelLowering.cpp18
-rw-r--r--lib/Target/XCore/XCoreISelLowering.h4
2 files changed, 22 insertions, 0 deletions
diff --git a/lib/Target/XCore/XCoreISelLowering.cpp b/lib/Target/XCore/XCoreISelLowering.cpp
index e209c29522..489f0a7244 100644
--- a/lib/Target/XCore/XCoreISelLowering.cpp
+++ b/lib/Target/XCore/XCoreISelLowering.cpp
@@ -166,6 +166,24 @@ XCoreTargetLowering::XCoreTargetLowering(XCoreTargetMachine &XTM)
setMinFunctionAlignment(1);
}
+bool XCoreTargetLowering::isZExtFree(SDValue Val, EVT VT2) const {
+ if (Val.getOpcode() != ISD::LOAD)
+ return false;
+
+ EVT VT1 = Val.getValueType();
+ if (!VT1.isSimple() || !VT1.isInteger() ||
+ !VT2.isSimple() || !VT2.isInteger())
+ return false;
+
+ switch (VT1.getSimpleVT().SimpleTy) {
+ default: break;
+ case MVT::i8:
+ return true;
+ }
+
+ return false;
+}
+
SDValue XCoreTargetLowering::
LowerOperation(SDValue Op, SelectionDAG &DAG) const {
switch (Op.getOpcode())
diff --git a/lib/Target/XCore/XCoreISelLowering.h b/lib/Target/XCore/XCoreISelLowering.h
index 7761b7cef6..2a6c8748cd 100644
--- a/lib/Target/XCore/XCoreISelLowering.h
+++ b/lib/Target/XCore/XCoreISelLowering.h
@@ -83,6 +83,10 @@ namespace llvm {
explicit XCoreTargetLowering(XCoreTargetMachine &TM);
+ using TargetLowering::isZExtFree;
+ virtual bool isZExtFree(SDValue Val, EVT VT2) const;
+
+
virtual unsigned getJumpTableEncoding() const;
virtual MVT getScalarShiftAmountTy(EVT LHSTy) const { return MVT::i32; }