diff options
author | Chris Lattner <sabre@nondot.org> | 2005-12-04 19:01:59 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-12-04 19:01:59 +0000 |
commit | 937a79dbe3d71320e2bda8050541080f04412f14 (patch) | |
tree | 399ad31b389e55486608419aaf7b62ef0c2012ab /lib/Target/PowerPC/PPCInstrInfo.td | |
parent | 60a4ab2d5c5e0e2647590882d77fe5d21d0c4990 (diff) | |
download | external_llvm-937a79dbe3d71320e2bda8050541080f04412f14.zip external_llvm-937a79dbe3d71320e2bda8050541080f04412f14.tar.gz external_llvm-937a79dbe3d71320e2bda8050541080f04412f14.tar.bz2 |
Autogen matching code for ADJCALLSTACK[UP|DOWN], thanks to Evan's tblgen
improvements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24591 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/PowerPC/PPCInstrInfo.td')
-rw-r--r-- | lib/Target/PowerPC/PPCInstrInfo.td | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/Target/PowerPC/PPCInstrInfo.td b/lib/Target/PowerPC/PPCInstrInfo.td index ad8f91e..ba86096 100644 --- a/lib/Target/PowerPC/PPCInstrInfo.td +++ b/lib/Target/PowerPC/PPCInstrInfo.td @@ -30,6 +30,11 @@ def PPCfsel : SDNode<"PPCISD::FSEL", def PPChi : SDNode<"PPCISD::Hi", SDTIntBinOp, []>; def PPClo : SDNode<"PPCISD::Lo", SDTIntBinOp, []>; +// These are target-independent nodes, but have target-specific formats. +def SDT_PPCCallSeq : SDTypeProfile<0, 1, [ SDTCisVT<0, i32> ]>; +def callseq_start : SDNode<"ISD::CALLSEQ_START", SDT_PPCCallSeq,[SDNPHasChain]>; +def callseq_end : SDNode<"ISD::CALLSEQ_END", SDT_PPCCallSeq,[SDNPHasChain]>; + //===----------------------------------------------------------------------===// // PowerPC specific transformation functions and pattern fragments. // @@ -158,9 +163,13 @@ def crbitm: Operand<i8> { // Pseudo-instructions: def PHI : Pseudo<(ops variable_ops), "; PHI", []>; -let isLoad = 1 in { -def ADJCALLSTACKDOWN : Pseudo<(ops u16imm:$amt), "; ADJCALLSTACKDOWN", []>; -def ADJCALLSTACKUP : Pseudo<(ops u16imm:$amt), "; ADJCALLSTACKUP", []>; +let isLoad = 1, hasCtrlDep = 1 in { +def ADJCALLSTACKDOWN : Pseudo<(ops u16imm:$amt), + "; ADJCALLSTACKDOWN", + [(callseq_start imm:$amt)]>; +def ADJCALLSTACKUP : Pseudo<(ops u16imm:$amt), + "; ADJCALLSTACKUP", + [(callseq_end imm:$amt)]>; } def IMPLICIT_DEF_GPR : Pseudo<(ops GPRC:$rD), "; $rD = IMPLICIT_DEF_GPRC", [(set GPRC:$rD, (undef))]>; |