12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- //===-- PPCInstrFuture.td - Future Instruction Set --------*- tablegen -*-===//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is distributed under the University of Illinois Open Source
- // License. See LICENSE.TXT for details.
- //
- //===----------------------------------------------------------------------===//
- //
- // This file describes the instructions introduced for the Future CPU.
- //
- //===----------------------------------------------------------------------===//
- class XOForm_RTAB5_L1<bits<6> opcode, bits<9> xo, dag OOL, dag IOL,
- string asmstr, list<dag> pattern>
- : I<opcode, OOL, IOL, asmstr, NoItinerary> {
- bits<5> RT;
- bits<5> RA;
- bits<5> RB;
- bit L;
- let Pattern = pattern;
- bit RC = 0; // set by isRecordForm
- let Inst{6-10} = RT;
- let Inst{11-15} = RA;
- let Inst{16-20} = RB;
- let Inst{21} = L;
- let Inst{22-30} = xo;
- let Inst{31} = RC;
- }
- multiclass XOForm_RTAB5_L1r<bits<6> opcode, bits<9> xo, dag OOL, dag IOL,
- string asmbase, string asmstr,
- list<dag> pattern> {
- let BaseName = asmbase in {
- def NAME : XOForm_RTAB5_L1<opcode, xo, OOL, IOL,
- !strconcat(asmbase, !strconcat(" ", asmstr)),
- pattern>, RecFormRel;
- let Defs = [CR0] in
- def _rec : XOForm_RTAB5_L1<opcode, xo, OOL, IOL,
- !strconcat(asmbase, !strconcat(". ", asmstr)),
- []>, isRecordForm, RecFormRel;
- }
- }
- let Predicates = [IsISAFuture] in {
- defm SUBFUS : XOForm_RTAB5_L1r<31, 72, (outs g8rc:$RT),
- (ins g8rc:$RA, g8rc:$RB, u1imm:$L),
- "subfus", "$RT, $L, $RA, $RB", []>;
- }
- let Predicates = [HasVSX, IsISAFuture] in {
- let mayLoad = 1 in {
- def LXVRL : XX1Form_memOp<31, 525, (outs vsrc:$XT), (ins memr:$src, g8rc:$rB),
- "lxvrl $XT, $src, $rB", IIC_LdStLoad, []>;
- def LXVRLL : XX1Form_memOp<31, 557, (outs vsrc:$XT), (ins memr:$src, g8rc:$rB),
- "lxvrll $XT, $src, $rB", IIC_LdStLoad, []>;
- def LXVPRL : XForm_XTp5_XAB5<31, 589, (outs vsrprc:$XTp),
- (ins memr:$src, g8rc:$rB),
- "lxvprl $XTp, $src, $rB", IIC_LdStLFD, []>;
- def LXVPRLL : XForm_XTp5_XAB5<31, 621, (outs vsrprc:$XTp),
- (ins memr:$src, g8rc:$rB),
- "lxvprll $XTp, $src, $rB", IIC_LdStLFD, []>;
- }
- let mayStore = 1 in {
- def STXVRL : XX1Form_memOp<31, 653, (outs),
- (ins vsrc:$XT, memr:$dst, g8rc:$rB),
- "stxvrl $XT, $dst, $rB", IIC_LdStLoad, []>;
- def STXVRLL : XX1Form_memOp<31, 685, (outs),
- (ins vsrc:$XT, memr:$dst, g8rc:$rB),
- "stxvrll $XT, $dst, $rB", IIC_LdStLoad, []>;
- def STXVPRL : XForm_XTp5_XAB5<31, 717, (outs),
- (ins vsrprc:$XTp, memr:$src, g8rc:$rB),
- "stxvprl $XTp, $src, $rB", IIC_LdStLFD, []>;
- def STXVPRLL : XForm_XTp5_XAB5<31, 749, (outs),
- (ins vsrprc:$XTp, memr:$src, g8rc:$rB),
- "stxvprll $XTp, $src, $rB", IIC_LdStLFD, []>;
- }
- }
|