diff options
author | Chris Lattner <sabre@nondot.org> | 2006-03-12 09:13:49 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-03-12 09:13:49 +0000 |
commit | 88d211f82304e53694ece666d4a2507b170e4582 (patch) | |
tree | f22a19cb276dc3821ce97d632be91172303eab4b /lib/Target/PowerPC/PPCInstrFormats.td | |
parent | fc3549ee8ccf15ab3fad8ec18a299eef0aa53b41 (diff) |
Several big changes:
1. Use flags on the instructions in the .td file to indicate the PPC970 unit
type instead of a table in the .cpp file. Much cleaner.
2. Change the hazard recognizer to build d-groups according to the actual
algorithm used, not my flawed understanding of it.
3. Model "must be in the first slot" and "must be the only instr in a group"
accurately.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26719 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/PowerPC/PPCInstrFormats.td')
-rw-r--r-- | lib/Target/PowerPC/PPCInstrFormats.td | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/lib/Target/PowerPC/PPCInstrFormats.td b/lib/Target/PowerPC/PPCInstrFormats.td index 0c7dca0d7b..6901543d05 100644 --- a/lib/Target/PowerPC/PPCInstrFormats.td +++ b/lib/Target/PowerPC/PPCInstrFormats.td @@ -27,7 +27,27 @@ class I<bits<6> opcode, dag OL, string asmstr, InstrItinClass itin> let OperandList = OL; let AsmString = asmstr; let Itinerary = itin; -} + + /// These fields correspond to the fields in PPCInstrInfo.h. Any changes to + /// these must be reflected there! See comments there for what these are. + bits<1> PPC970_First = 0; + bits<1> PPC970_Single = 0; + bits<3> PPC970_Unit = 0; +} + +class PPC970_DGroup_First { bits<1> PPC970_First = 1; } +class PPC970_DGroup_Single { bits<1> PPC970_Single = 1; } +class PPC970_MicroCode; + +class PPC970_Unit_Pseudo { bits<3> PPC970_Unit = 0; } +class PPC970_Unit_FXU { bits<3> PPC970_Unit = 1; } +class PPC970_Unit_LSU { bits<3> PPC970_Unit = 2; } +class PPC970_Unit_FPU { bits<3> PPC970_Unit = 3; } +class PPC970_Unit_CRU { bits<3> PPC970_Unit = 4; } +class PPC970_Unit_VALU { bits<3> PPC970_Unit = 5; } +class PPC970_Unit_VPERM { bits<3> PPC970_Unit = 6; } +class PPC970_Unit_BRU { bits<3> PPC970_Unit = 7; } + // 1.7.1 I-Form class IForm<bits<6> opcode, bit aa, bit lk, dag OL, string asmstr, |