From 394cd13ba3249d6aa8f8a21603e377b923fe4675 Mon Sep 17 00:00:00 2001 From: Nate Begeman Date: Mon, 8 Aug 2005 20:04:52 +0000 Subject: [PATCH] Fix JIT encoding of ppc mfocrf instruction; the operands were reversed git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22707 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/PowerPC/PPCInstrFormats.td | 20 +++++++++++++++++--- 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 ca4f612be5f..a52bda249ad 100644 --- a/lib/Target/PowerPC/PPCInstrFormats.td +++ b/lib/Target/PowerPC/PPCInstrFormats.td @@ -378,19 +378,33 @@ class XFXForm_3 opcode, bits<10> xo, dag OL, string asmstr> let Inst{31} = 0; } -class XFXForm_5 opcode, bit mfcrf, bits<10> xo, - dag OL, string asmstr> : I { +class XFXForm_5 opcode, bits<10> xo, dag OL, string asmstr> + : I { 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 opcode, bits<10> xo, dag OL, string asmstr> + : I { + 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 opcode, bits<10> xo, dag OL, string asmstr> : XFXForm_1; diff --git a/lib/Target/PowerPC/PPCInstrInfo.td b/lib/Target/PowerPC/PPCInstrInfo.td index 1e7c7a57fb1..41e84ac5b58 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">;