diff options
author | Chris Lattner <sabre@nondot.org> | 2006-06-06 21:29:23 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-06-06 21:29:23 +0000 |
commit | 001db453f5df586af9625d68e715950106e4f961 (patch) | |
tree | f1e04ee48e474229acd7ba7835418478e30b48a6 /lib | |
parent | 73ebd0974c80d2c0ab79587bb11f948e962df704 (diff) | |
download | external_llvm-001db453f5df586af9625d68e715950106e4f961.zip external_llvm-001db453f5df586af9625d68e715950106e4f961.tar.gz external_llvm-001db453f5df586af9625d68e715950106e4f961.tar.bz2 |
Add PowerPC intrinsics to support dcbz[l]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28696 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/PowerPC/PPCInstrFormats.td | 17 | ||||
-rw-r--r-- | lib/Target/PowerPC/PPCInstrInfo.td | 8 |
2 files changed, 25 insertions, 0 deletions
diff --git a/lib/Target/PowerPC/PPCInstrFormats.td b/lib/Target/PowerPC/PPCInstrFormats.td index 10ac79b..bb0ccf8 100644 --- a/lib/Target/PowerPC/PPCInstrFormats.td +++ b/lib/Target/PowerPC/PPCInstrFormats.td @@ -325,6 +325,23 @@ class XForm_28<bits<6> opcode, bits<10> xo, dag OL, string asmstr, : XForm_base_r3xo<opcode, xo, OL, asmstr, itin, pattern> { } +// DCB_Form - Form X instruction, used for dcb* instructions. +class DCB_Form<bits<10> xo, bits<5> immfield, dag OL, string asmstr, + InstrItinClass itin, list<dag> pattern> + : I<31, OL, asmstr, itin> { + bits<5> A; + bits<5> B; + + let Pattern = pattern; + + let Inst{6-10} = immfield; + let Inst{11-15} = A; + let Inst{16-20} = B; + let Inst{21-30} = xo; + let Inst{31} = 0; +} + + // DSS_Form - Form X instruction, used for altivec dss* instructions. class DSS_Form<bits<10> xo, dag OL, string asmstr, InstrItinClass itin, list<dag> pattern> diff --git a/lib/Target/PowerPC/PPCInstrInfo.td b/lib/Target/PowerPC/PPCInstrInfo.td index d75c794..c93e0d4 100644 --- a/lib/Target/PowerPC/PPCInstrInfo.td +++ b/lib/Target/PowerPC/PPCInstrInfo.td @@ -318,6 +318,14 @@ let isCall = 1, noResults = 1, PPC970_Unit = 7, [(PPCbctrl)]>; } +// DCB* instructions. +def DCBZ : DCB_Form<1014, 0, (ops memrr:$dst), + "dcbz $dst", LdStDCBF, [(int_ppc_dcbz xoaddr:$dst)]>, + PPC970_DGroup_Single; +def DCBZL : DCB_Form<1014, 1, (ops memrr:$dst), + "dcbzl $dst", LdStDCBF, [(int_ppc_dcbzl xoaddr:$dst)]>, + PPC970_DGroup_Single; + // D-Form instructions. Most instructions that perform an operation on a // register and an immediate are of this type. // |