aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/XCore/XCoreISelDAGToDAG.cpp
diff options
context:
space:
mode:
authorRichard Osborne <richard@xmos.com>2011-05-31 16:24:49 +0000
committerRichard Osborne <richard@xmos.com>2011-05-31 16:24:49 +0000
commit9497466190a46ba06bf856302b1c81f1c4b5c951 (patch)
tree19e5385b7600894f5fa22e3bc8458a5ea44f645d /lib/Target/XCore/XCoreISelDAGToDAG.cpp
parent7736c37c142f05f4ba53c52973658bf9abc6f4cc (diff)
downloadexternal_llvm-9497466190a46ba06bf856302b1c81f1c4b5c951.zip
external_llvm-9497466190a46ba06bf856302b1c81f1c4b5c951.tar.gz
external_llvm-9497466190a46ba06bf856302b1c81f1c4b5c951.tar.bz2
Add XCore intrinsic for crc8.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132340 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/XCore/XCoreISelDAGToDAG.cpp')
-rw-r--r--lib/Target/XCore/XCoreISelDAGToDAG.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/Target/XCore/XCoreISelDAGToDAG.cpp b/lib/Target/XCore/XCoreISelDAGToDAG.cpp
index 6bec9f9..a8dd847 100644
--- a/lib/Target/XCore/XCoreISelDAGToDAG.cpp
+++ b/lib/Target/XCore/XCoreISelDAGToDAG.cpp
@@ -205,6 +205,16 @@ SDNode *XCoreDAGToDAGISel::Select(SDNode *N) {
return CurDAG->getMachineNode(XCore::LMUL_l6r, dl, MVT::i32, MVT::i32,
Ops, 4);
}
+ case ISD::INTRINSIC_WO_CHAIN: {
+ unsigned IntNo = cast<ConstantSDNode>(N->getOperand(0))->getZExtValue();
+ switch (IntNo) {
+ case Intrinsic::xcore_crc8:
+ SDValue Ops[] = { N->getOperand(1), N->getOperand(2), N->getOperand(3) };
+ return CurDAG->getMachineNode(XCore::CRC8_l4r, dl, MVT::i32, MVT::i32,
+ Ops, 3);
+ }
+ break;
+ }
case ISD::BRIND:
if (SDNode *ResNode = SelectBRIND(N))
return ResNode;