diff options
author | Robert Lytton <robert@xmos.com> | 2013-10-11 10:26:29 +0000 |
---|---|---|
committer | Robert Lytton <robert@xmos.com> | 2013-10-11 10:26:29 +0000 |
commit | 7b5376659c1c822960a5cb56d5e1417cfd74673f (patch) | |
tree | b818d22174632fc11ac7afba213c0bc622a6e0cd /lib/Target/XCore | |
parent | c879eabcc25c4099a50939ed0bca86471201b183 (diff) | |
download | external_llvm-7b5376659c1c822960a5cb56d5e1417cfd74673f.zip external_llvm-7b5376659c1c822960a5cb56d5e1417cfd74673f.tar.gz external_llvm-7b5376659c1c822960a5cb56d5e1417cfd74673f.tar.bz2 |
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/Target/XCore')
-rw-r--r-- | lib/Target/XCore/XCoreISelLowering.cpp | 18 | ||||
-rw-r--r-- | lib/Target/XCore/XCoreISelLowering.h | 4 |
2 files changed, 22 insertions, 0 deletions
diff --git a/lib/Target/XCore/XCoreISelLowering.cpp b/lib/Target/XCore/XCoreISelLowering.cpp index e209c29..489f0a7 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 7761b7c..2a6c874 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; } |