summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-12-17 20:42:29 +0000
committerChris Lattner <sabre@nondot.org>2005-12-17 20:42:29 +0000
commit233e0447388989972f3616ffcdbe095c9d6dd7c9 (patch)
treeefd5774ccdec6a2487a7587e36804962cb8e0f77 /llvm/lib
parent7e7c355154cf8061f5cefeacea9c36922a5383bb (diff)
downloadbcm5719-llvm-233e0447388989972f3616ffcdbe095c9d6dd7c9.tar.gz
bcm5719-llvm-233e0447388989972f3616ffcdbe095c9d6dd7c9.zip
add truncstore
llvm-svn: 24787
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/TargetSelectionDAG.td12
1 files changed, 9 insertions, 3 deletions
diff --git a/llvm/lib/Target/TargetSelectionDAG.td b/llvm/lib/Target/TargetSelectionDAG.td
index 0da445d5d14..953a0874e8f 100644
--- a/llvm/lib/Target/TargetSelectionDAG.td
+++ b/llvm/lib/Target/TargetSelectionDAG.td
@@ -135,8 +135,7 @@ def SDTBrCond : SDTypeProfile<0, 2, [ // brcond
SDTCisInt<0>, SDTCisVT<1, OtherVT>
]>;
-def SDTRet : SDTypeProfile<0, 0, [ // ret
-]>;
+def SDTRet : SDTypeProfile<0, 0, []>; // ret
def SDTWritePort : SDTypeProfile<0, 2, [ // writeport
SDTCisInt<0>, SDTCisInt<1>
@@ -153,6 +152,9 @@ def SDTStore : SDTypeProfile<0, 2, [ // store
def SDTIntExtLoad : SDTypeProfile<1, 3, [ // sextload, zextload, extload
SDTCisInt<0>, SDTCisPtrTy<1>, SDTCisVT<2, OtherVT>, SDTCisVT<3, OtherVT>
]>;
+def SDTTruncStore : SDTypeProfile<0, 4, [ // truncstore
+ SDTCisInt<0>, SDTCisPtrTy<1>, SDTCisVT<2, OtherVT>, SDTCisVT<3, OtherVT>
+]>;
//===----------------------------------------------------------------------===//
@@ -262,6 +264,7 @@ def store : SDNode<"ISD::STORE" , SDTStore, [SDNPHasChain]>;
def sextld : SDNode<"ISD::SEXTLOAD" , SDTIntExtLoad, [SDNPHasChain]>;
def zextld : SDNode<"ISD::ZEXTLOAD" , SDTIntExtLoad, [SDNPHasChain]>;
def extld : SDNode<"ISD::EXTLOAD" , SDTIntExtLoad, [SDNPHasChain]>;
+def truncst : SDNode<"ISD::TRUNCSTORE" , SDTTruncStore, [SDNPHasChain]>;
//===----------------------------------------------------------------------===//
// Selection DAG Condition Codes
@@ -329,13 +332,16 @@ def vtFP : PatLeaf<(vt), [{ return MVT::isFloatingPoint(N->getVT()); }]>;
def not : PatFrag<(ops node:$in), (xor node:$in, immAllOnes)>;
def ineg : PatFrag<(ops node:$in), (sub 0, node:$in)>;
-// extending load fragments.
+// extending load & truncstore fragments.
def sextload : PatFrag<(ops node:$ptr, node:$vt),
(sextld node:$ptr, srcvalue:$dummy, node:$vt)>;
def zextload : PatFrag<(ops node:$ptr, node:$vt),
(zextld node:$ptr, srcvalue:$dummy, node:$vt)>;
def extload : PatFrag<(ops node:$ptr, node:$vt),
(extld node:$ptr, srcvalue:$dummy, node:$vt)>;
+def truncstore : PatFrag<(ops node:$val, node:$ptr, node:$vt),
+ (truncst node:$val, node:$ptr, srcvalue:$dummy,
+ node:$vt)>;
// setcc convenience fragments.
def setoeq : PatFrag<(ops node:$lhs, node:$rhs),
OpenPOWER on IntegriCloud