summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorNate Begeman <natebegeman@mac.com>2005-08-08 20:04:52 +0000
committerNate Begeman <natebegeman@mac.com>2005-08-08 20:04:52 +0000
commit9a838678b0f5640b069e867f059ea8054c1fd509 (patch)
tree9f136b1e02b4e7f1f11d00db5a8c119b351ae422 /llvm/lib/Target
parent9f269e40c9b5d9a08890d0545fce60de99989138 (diff)
downloadbcm5719-llvm-9a838678b0f5640b069e867f059ea8054c1fd509.tar.gz
bcm5719-llvm-9a838678b0f5640b069e867f059ea8054c1fd509.zip
Fix JIT encoding of ppc mfocrf instruction; the operands were reversed
llvm-svn: 22707
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/PowerPC/PowerPCInstrFormats.td20
-rw-r--r--llvm/lib/Target/PowerPC/PowerPCInstrInfo.td6
2 files changed, 20 insertions, 6 deletions
diff --git a/llvm/lib/Target/PowerPC/PowerPCInstrFormats.td b/llvm/lib/Target/PowerPC/PowerPCInstrFormats.td
index ca4f612be5f..a52bda249ad 100644
--- a/llvm/lib/Target/PowerPC/PowerPCInstrFormats.td
+++ b/llvm/lib/Target/PowerPC/PowerPCInstrFormats.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/llvm/lib/Target/PowerPC/PowerPCInstrInfo.td b/llvm/lib/Target/PowerPC/PowerPCInstrInfo.td
index 1e7c7a57fb1..41e84ac5b58 100644
--- a/llvm/lib/Target/PowerPC/PowerPCInstrInfo.td
+++ b/llvm/lib/Target/PowerPC/PowerPCInstrInfo.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">;
OpenPOWER on IntegriCloud