19df924a6SStefan Pintilie//===-- PPCInstrFuture.td - Future Instruction Set --------*- tablegen -*-===// 29df924a6SStefan Pintilie// 39df924a6SStefan Pintilie// The LLVM Compiler Infrastructure 49df924a6SStefan Pintilie// 59df924a6SStefan Pintilie// This file is distributed under the University of Illinois Open Source 69df924a6SStefan Pintilie// License. See LICENSE.TXT for details. 79df924a6SStefan Pintilie// 89df924a6SStefan Pintilie//===----------------------------------------------------------------------===// 99df924a6SStefan Pintilie// 109df924a6SStefan Pintilie// This file describes the instructions introduced for the Future CPU. 119df924a6SStefan Pintilie// 129df924a6SStefan Pintilie//===----------------------------------------------------------------------===// 139df924a6SStefan Pintilie 141ef2a92dSStefan Pintilieclass XOForm_RTAB5_L1<bits<6> opcode, bits<9> xo, dag OOL, dag IOL, 151ef2a92dSStefan Pintilie string asmstr, list<dag> pattern> 161ef2a92dSStefan Pintilie : I<opcode, OOL, IOL, asmstr, NoItinerary> { 171ef2a92dSStefan Pintilie bits<5> RT; 181ef2a92dSStefan Pintilie bits<5> RA; 191ef2a92dSStefan Pintilie bits<5> RB; 201ef2a92dSStefan Pintilie bit L; 211ef2a92dSStefan Pintilie 221ef2a92dSStefan Pintilie let Pattern = pattern; 231ef2a92dSStefan Pintilie 241ef2a92dSStefan Pintilie bit RC = 0; // set by isRecordForm 251ef2a92dSStefan Pintilie 261ef2a92dSStefan Pintilie let Inst{6-10} = RT; 271ef2a92dSStefan Pintilie let Inst{11-15} = RA; 281ef2a92dSStefan Pintilie let Inst{16-20} = RB; 291ef2a92dSStefan Pintilie let Inst{21} = L; 301ef2a92dSStefan Pintilie let Inst{22-30} = xo; 311ef2a92dSStefan Pintilie let Inst{31} = RC; 321ef2a92dSStefan Pintilie} 331ef2a92dSStefan Pintilie 341ef2a92dSStefan Pintiliemulticlass XOForm_RTAB5_L1r<bits<6> opcode, bits<9> xo, dag OOL, dag IOL, 351ef2a92dSStefan Pintilie string asmbase, string asmstr, 361ef2a92dSStefan Pintilie list<dag> pattern> { 371ef2a92dSStefan Pintilie let BaseName = asmbase in { 381ef2a92dSStefan Pintilie def NAME : XOForm_RTAB5_L1<opcode, xo, OOL, IOL, 391ef2a92dSStefan Pintilie !strconcat(asmbase, !strconcat(" ", asmstr)), 401ef2a92dSStefan Pintilie pattern>, RecFormRel; 411ef2a92dSStefan Pintilie let Defs = [CR0] in 421ef2a92dSStefan Pintilie def _rec : XOForm_RTAB5_L1<opcode, xo, OOL, IOL, 431ef2a92dSStefan Pintilie !strconcat(asmbase, !strconcat(". ", asmstr)), 441ef2a92dSStefan Pintilie []>, isRecordForm, RecFormRel; 451ef2a92dSStefan Pintilie } 461ef2a92dSStefan Pintilie} 471ef2a92dSStefan Pintilie 481ef2a92dSStefan Pintilielet Predicates = [IsISAFuture] in { 491ef2a92dSStefan Pintilie defm SUBFUS : XOForm_RTAB5_L1r<31, 72, (outs g8rc:$RT), 501ef2a92dSStefan Pintilie (ins g8rc:$RA, g8rc:$RB, u1imm:$L), 511ef2a92dSStefan Pintilie "subfus", "$RT, $L, $RA, $RB", []>; 521ef2a92dSStefan Pintilie} 539df924a6SStefan Pintilie 54bd680704SMaryam Moghadaslet Predicates = [HasVSX, IsISAFuture] in { 55bd680704SMaryam Moghadas let mayLoad = 1 in { 56*4b43ef3eSJames Y Knight def LXVRL : XX1Form_memOp<31, 525, (outs vsrc:$XT), (ins memr:$RA, g8rc:$RB), 57*4b43ef3eSJames Y Knight "lxvrl $XT, $RA, $RB", IIC_LdStLoad, []>; 58bd680704SMaryam Moghadas 59*4b43ef3eSJames Y Knight def LXVRLL : XX1Form_memOp<31, 557, (outs vsrc:$XT), (ins memr:$RA, g8rc:$RB), 60*4b43ef3eSJames Y Knight "lxvrll $XT, $RA, $RB", IIC_LdStLoad, []>; 61bd680704SMaryam Moghadas 62bd680704SMaryam Moghadas def LXVPRL : XForm_XTp5_XAB5<31, 589, (outs vsrprc:$XTp), 63*4b43ef3eSJames Y Knight (ins memr:$RA, g8rc:$RB), 64*4b43ef3eSJames Y Knight "lxvprl $XTp, $RA, $RB", IIC_LdStLFD, []>; 65bd680704SMaryam Moghadas 66bd680704SMaryam Moghadas def LXVPRLL : XForm_XTp5_XAB5<31, 621, (outs vsrprc:$XTp), 67*4b43ef3eSJames Y Knight (ins memr:$RA, g8rc:$RB), 68*4b43ef3eSJames Y Knight "lxvprll $XTp, $RA, $RB", IIC_LdStLFD, []>; 69bd680704SMaryam Moghadas } 70bd680704SMaryam Moghadas 71bd680704SMaryam Moghadas let mayStore = 1 in { 72bd680704SMaryam Moghadas def STXVRL : XX1Form_memOp<31, 653, (outs), 73*4b43ef3eSJames Y Knight (ins vsrc:$XT, memr:$RA, g8rc:$RB), 74*4b43ef3eSJames Y Knight "stxvrl $XT, $RA, $RB", IIC_LdStLoad, []>; 75bd680704SMaryam Moghadas 76bd680704SMaryam Moghadas def STXVRLL : XX1Form_memOp<31, 685, (outs), 77*4b43ef3eSJames Y Knight (ins vsrc:$XT, memr:$RA, g8rc:$RB), 78*4b43ef3eSJames Y Knight "stxvrll $XT, $RA, $RB", IIC_LdStLoad, []>; 79bd680704SMaryam Moghadas 80bd680704SMaryam Moghadas def STXVPRL : XForm_XTp5_XAB5<31, 717, (outs), 81*4b43ef3eSJames Y Knight (ins vsrprc:$XTp, memr:$RA, g8rc:$RB), 82*4b43ef3eSJames Y Knight "stxvprl $XTp, $RA, $RB", IIC_LdStLFD, []>; 83bd680704SMaryam Moghadas 84bd680704SMaryam Moghadas def STXVPRLL : XForm_XTp5_XAB5<31, 749, (outs), 85*4b43ef3eSJames Y Knight (ins vsrprc:$XTp, memr:$RA, g8rc:$RB), 86*4b43ef3eSJames Y Knight "stxvprll $XTp, $RA, $RB", IIC_LdStLFD, []>; 87bd680704SMaryam Moghadas } 88bd680704SMaryam Moghadas} 89