diff --git a/llvm/lib/Target/PowerPC/PPCInstrFormats.td b/llvm/lib/Target/PowerPC/PPCInstrFormats.td index fc03653c24d5..6a4a59b593c2 100644 --- a/llvm/lib/Target/PowerPC/PPCInstrFormats.td +++ b/llvm/lib/Target/PowerPC/PPCInstrFormats.td @@ -349,21 +349,31 @@ class DSS_Form xo, dag OL, string asmstr, // 1.7.7 XL-Form class XLForm_1 opcode, bits<10> xo, dag OL, string asmstr, - InstrItinClass itin> + InstrItinClass itin, list pattern> : I { - bits<3> CRD; - bits<2> CRDb; - bits<3> CRA; - bits<2> CRAb; - bits<3> CRB; - bits<2> CRBb; + bits<5> CRD; + bits<5> CRA; + bits<5> CRB; - let Inst{6-8} = CRD; - let Inst{9-10} = CRDb; - let Inst{11-13} = CRA; - let Inst{14-15} = CRAb; - let Inst{16-18} = CRB; - let Inst{19-20} = CRBb; + let Pattern = pattern; + + let Inst{6-10} = CRD; + let Inst{11-15} = CRA; + let Inst{16-20} = CRB; + let Inst{21-30} = xo; + let Inst{31} = 0; +} + +class XLForm_1_ext opcode, bits<10> xo, dag OL, string asmstr, + InstrItinClass itin, list pattern> + : I { + bits<5> CRD; + + let Pattern = pattern; + + let Inst{6-10} = CRD; + let Inst{11-15} = CRD; + let Inst{16-20} = CRD; let Inst{21-30} = xo; let Inst{31} = 0; }