Conanap updated this revision to Diff 281042. Conanap added a comment. Recovered accidentally deleted test cases.
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D84197/new/ https://reviews.llvm.org/D84197 Files: llvm/lib/Target/PowerPC/PPCInstrPrefix.td llvm/test/MC/Disassembler/PowerPC/ppc64-encoding-ISA31.txt llvm/test/MC/PowerPC/ppc64-encoding-ISA31.s
Index: llvm/test/MC/PowerPC/ppc64-encoding-ISA31.s =================================================================== --- llvm/test/MC/PowerPC/ppc64-encoding-ISA31.s +++ llvm/test/MC/PowerPC/ppc64-encoding-ISA31.s @@ -585,3 +585,24 @@ # CHECK-BE: xscvsqqp 8, 28 # encoding: [0xfd,0x0b,0xe6,0x88] # CHECK-LE: xscvsqqp 8, 28 # encoding: [0x88,0xe6,0x0b,0xfd] xscvsqqp 8, 28 +# CHECK-BE: vstribr 2, 2 # encoding: [0x10,0x41,0x10,0x0d] +# CHECK-LE: vstribr 2, 2 # encoding: [0x0d,0x10,0x41,0x10] + vstribr 2, 2 +# CHECK-BE: vstribl 2, 2 # encoding: [0x10,0x40,0x10,0x0d] +# CHECK-LE: vstribl 2, 2 # encoding: [0x0d,0x10,0x40,0x10] + vstribl 2, 2 +# CHECK-BE: vstrihr 2, 2 # encoding: [0x10,0x43,0x10,0x0d] +# CHECK-LE: vstrihr 2, 2 # encoding: [0x0d,0x10,0x43,0x10] + vstrihr 2, 2 +# CHECK-BE: vstribr. 2, 2 # encoding: [0x10,0x41,0x14,0x0d] +# CHECK-LE: vstribr. 2, 2 # encoding: [0x0d,0x14,0x41,0x10] + vstribr. 2, 2 +# CHECK-BE: vstribl. 2, 2 # encoding: [0x10,0x40,0x14,0x0d] +# CHECK-LE: vstribl. 2, 2 # encoding: [0x0d,0x14,0x40,0x10] + vstribl. 2, 2 +# CHECK-BE: vstrihr. 2, 2 # encoding: [0x10,0x43,0x14,0x0d] +# CHECK-LE: vstrihr. 2, 2 # encoding: [0x0d,0x14,0x43,0x10] + vstrihr. 2, 2 +# CHECK-BE: vstrihl. 2, 2 # encoding: [0x10,0x42,0x14,0x0d] +# CHECK-LE: vstrihl. 2, 2 # encoding: [0x0d,0x14,0x42,0x10] + vstrihl. 2, 2 Index: llvm/test/MC/Disassembler/PowerPC/ppc64-encoding-ISA31.txt =================================================================== --- llvm/test/MC/Disassembler/PowerPC/ppc64-encoding-ISA31.txt +++ llvm/test/MC/Disassembler/PowerPC/ppc64-encoding-ISA31.txt @@ -459,3 +459,26 @@ # CHECK: xscvsqqp 8, 28 0xfd 0xb 0xe6 0x88 +# CHECK: vstribr 2, 2 +0x10 0x41 0x10 0x0d + +# CHECK: vstribl 2, 2 +0x10 0x40 0x10 0x0d + +# CHECK: vstrihr 2, 2 +0x10 0x43 0x10 0x0d + +# CHECK: vstrihl 2, 2 +0x10 0x42 0x10 0x0d + +# CHECK: vstribr. 2, 2 +0x10 0x41 0x14 0x0d + +# CHECK: vstribl. 2, 2 +0x10 0x40 0x14 0x0d + +# CHECK: vstrihr. 2, 2 +0x10 0x43 0x14 0x0d + +# CHECK: vstrihl. 2, 2 +0x10 0x42 0x14 0x0d Index: llvm/lib/Target/PowerPC/PPCInstrPrefix.td =================================================================== --- llvm/lib/Target/PowerPC/PPCInstrPrefix.td +++ llvm/lib/Target/PowerPC/PPCInstrPrefix.td @@ -59,6 +59,39 @@ string BaseName = ""; } +// VX-Form: [ PO VT R VB RC XO ] +class VXForm_VTB5_RC<bits<10> xo, bits<5> R, dag OOL, dag IOL, string asmstr, + InstrItinClass itin, list<dag> pattern> + : I<4, OOL, IOL, asmstr, itin> { + bits<5> VT; + bits<5> VB; + bit RC = 0; + + let Pattern = pattern; + + let Inst{6-10} = VT; + let Inst{11-15} = R; + let Inst{16-20} = VB; + let Inst{21} = RC; + let Inst{22-31} = xo; +} + +// Multiclass definition to account for record and non-record form +// instructions of VXRForm. +multiclass VXForm_VTB5_RCr<bits<10> xo, bits<5> R, dag OOL, dag IOL, + string asmbase, string asmstr, + InstrItinClass itin, list<dag> pattern> { + let BaseName = asmbase in { + def NAME : VXForm_VTB5_RC<xo, R, OOL, IOL, + !strconcat(asmbase, !strconcat(" ", asmstr)), + itin, pattern>, RecFormRel; + let Defs = [CR6] in + def _rec : VXForm_VTB5_RC<xo, R, OOL, IOL, + !strconcat(asmbase, !strconcat(". ", asmstr)), + itin, []>, isRecordForm, RecFormRel; + } +} + class MLS_DForm_R_SI34_RTA5_MEM<bits<6> opcode, dag OOL, dag IOL, string asmstr, InstrItinClass itin, list<dag> pattern> : PI<1, opcode, OOL, IOL, asmstr, itin> { @@ -821,6 +854,14 @@ (int_ppc_altivec_vsrdbi v16i8:$VRA, v16i8:$VRB, i32:$SH))]>; + defm VSTRIBR : VXForm_VTB5_RCr<13, 1, (outs vrrc:$vT), (ins vrrc:$vB), + "vstribr", "$vT, $vB", IIC_VecGeneral, []>; + defm VSTRIBL : VXForm_VTB5_RCr<13, 0, (outs vrrc:$vT), (ins vrrc:$vB), + "vstribl", "$vT, $vB", IIC_VecGeneral, []>; + defm VSTRIHR : VXForm_VTB5_RCr<13, 3, (outs vrrc:$vT), (ins vrrc:$vB), + "vstrihr", "$vT, $vB", IIC_VecGeneral, []>; + defm VSTRIHL : VXForm_VTB5_RCr<13, 2, (outs vrrc:$vT), (ins vrrc:$vB), + "vstrihl", "$vT, $vB", IIC_VecGeneral, []>; def VINSW : VXForm_1<207, (outs vrrc:$vD), (ins vrrc:$vDi, u4imm:$UIM, gprc:$rB), "vinsw $vD, $rB, $UIM", IIC_VecGeneral,
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits