diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/PowerPC/PPCInstrFormats.td | 20 | ||||
-rw-r--r-- | lib/Target/PowerPC/PPCInstrInfo.td | 6 |
2 files changed, 20 insertions, 6 deletions
diff --git a/lib/Target/PowerPC/PPCInstrFormats.td b/lib/Target/PowerPC/PPCInstrFormats.td index ca4f612be5..a52bda249a 100644 --- a/lib/Target/PowerPC/PPCInstrFormats.td +++ b/lib/Target/PowerPC/PPCInstrFormats.td @@ -378,19 +378,33 @@ class XFXForm_3<bits<6> opcode, bits<10> xo, dag OL, string asmstr> let Inst{31} = 0; } -class XFXForm_5<bits<6> opcode, bit mfcrf, bits<10> xo, - dag OL, string asmstr> : I<opcode, OL, asmstr> { +class XFXForm_5<bits<6> opcode, bits<10> xo, dag OL, string asmstr> + : I<opcode, OL, asmstr> { bits<8> FXM; bits<5> ST; let Inst{6-10} = ST; - let Inst{11} = mfcrf; + let Inst{11} = 0; let Inst{12-19} = FXM; let Inst{20} = 0; let Inst{21-30} = xo; let Inst{31} = 0; } +class XFXForm_5a<bits<6> opcode, bits<10> xo, dag OL, string asmstr> + : I<opcode, OL, asmstr> { + bits<5> ST; + bits<8> FXM; + + let Inst{6-10} = ST; + let Inst{11} = 1; + let Inst{12-19} = FXM; + let Inst{20} = 0; + let Inst{21-30} = xo; + let Inst{31} = 0; +} + + class XFXForm_7<bits<6> opcode, bits<10> xo, dag OL, string asmstr> : XFXForm_1<opcode, xo, OL, asmstr>; diff --git a/lib/Target/PowerPC/PPCInstrInfo.td b/lib/Target/PowerPC/PPCInstrInfo.td index 1e7c7a57fb..41e84ac5b5 100644 --- a/lib/Target/PowerPC/PPCInstrInfo.td +++ b/lib/Target/PowerPC/PPCInstrInfo.td @@ -364,10 +364,10 @@ def MCRF : XLForm_3<19, 0, (ops CRRC:$BF, CRRC:$BFA), def MFCTR : XFXForm_1_ext<31, 339, 288, (ops GPRC:$rT), "mfctr $rT">; def MFLR : XFXForm_1_ext<31, 339, 256, (ops GPRC:$rT), "mflr $rT">; def MFCR : XFXForm_3<31, 19, (ops GPRC:$rT), "mfcr $rT">; -def MTCRF : XFXForm_5<31, 0, 144, (ops CRRC:$FXM, GPRC:$rS), +def MTCRF : XFXForm_5<31, 144, (ops CRRC:$FXM, GPRC:$rS), "mtcrf $FXM, $rS">; -def MFOCRF : XFXForm_5<31, 1, 19, (ops GPRC:$rT, crbitm:$FXM), - "mfcr $rT, $FXM">; +def MFOCRF : XFXForm_5a<31, 19, (ops GPRC:$rT, crbitm:$FXM), + "mfcr $rT, $FXM">; def MTCTR : XFXForm_7_ext<31, 467, 288, (ops GPRC:$rS), "mtctr $rS">; def MTLR : XFXForm_7_ext<31, 467, 256, (ops GPRC:$rS), "mtlr $rS">; |