forked from OSchip/llvm-project
809 lines
13 KiB
TableGen
809 lines
13 KiB
TableGen
|
//===- P9InstrResources.td - P9 Instruction Resource Defs -*- tablegen -*-===//
|
||
|
//
|
||
|
// The LLVM Compiler Infrastructure
|
||
|
//
|
||
|
// This file is distributed under the University of Illinois Open Source
|
||
|
// License. See LICENSE.TXT for details.
|
||
|
//
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
//
|
||
|
// This file defines resources required by some of P9 instruction. This is part
|
||
|
// P9 processor model used for instruction scheduling. Not every instruction
|
||
|
// is listed here. Instructions in this file belong to itinerary classes that
|
||
|
// have instructions with different resource requirements.
|
||
|
//
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
|
||
|
|
||
|
def : InstRW<[P9_ALUE_2C, P9_ALUO_2C, IP_EXECE_1C, IP_EXECO_1C,
|
||
|
DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
VADDCUW,
|
||
|
VADDUBM,
|
||
|
VADDUDM,
|
||
|
VADDUHM,
|
||
|
VADDUWM,
|
||
|
VAND,
|
||
|
VANDC,
|
||
|
VCMPEQUB,
|
||
|
VCMPEQUBo,
|
||
|
VCMPEQUD,
|
||
|
VCMPEQUDo,
|
||
|
VCMPEQUH,
|
||
|
VCMPEQUHo,
|
||
|
VCMPEQUW,
|
||
|
VCMPEQUWo,
|
||
|
VCMPGTSB,
|
||
|
VCMPGTSBo,
|
||
|
VCMPGTSD,
|
||
|
VCMPGTSDo,
|
||
|
VCMPGTSH,
|
||
|
VCMPGTSHo,
|
||
|
VCMPGTSW,
|
||
|
VCMPGTSWo,
|
||
|
VCMPGTUB,
|
||
|
VCMPGTUBo,
|
||
|
VCMPGTUD,
|
||
|
VCMPGTUDo,
|
||
|
VCMPGTUH,
|
||
|
VCMPGTUHo,
|
||
|
VCMPGTUW,
|
||
|
VCMPGTUWo,
|
||
|
VCMPNEB,
|
||
|
VCMPNEBo,
|
||
|
VCMPNEH,
|
||
|
VCMPNEHo,
|
||
|
VCMPNEW,
|
||
|
VCMPNEWo,
|
||
|
VCMPNEZB,
|
||
|
VCMPNEZBo,
|
||
|
VCMPNEZH,
|
||
|
VCMPNEZHo,
|
||
|
VCMPNEZW,
|
||
|
VCMPNEZWo,
|
||
|
VEQV,
|
||
|
VEXTSB2D,
|
||
|
VEXTSB2W,
|
||
|
VEXTSH2D,
|
||
|
VEXTSH2W,
|
||
|
VEXTSW2D,
|
||
|
VMRGEW,
|
||
|
VMRGOW,
|
||
|
VNAND,
|
||
|
VNEGD,
|
||
|
VNEGW,
|
||
|
VNOR,
|
||
|
VOR,
|
||
|
VORC,
|
||
|
VPOPCNTB,
|
||
|
VPOPCNTH,
|
||
|
VPOPCNTW,
|
||
|
VSEL,
|
||
|
VSUBCUW,
|
||
|
VSUBUBM,
|
||
|
VSUBUDM,
|
||
|
VSUBUHM,
|
||
|
VSUBUWM,
|
||
|
VXOR,
|
||
|
V_SET0B,
|
||
|
V_SET0H,
|
||
|
V_SET0,
|
||
|
XVABSDP,
|
||
|
XVABSSP,
|
||
|
XVCPSGNDP,
|
||
|
XVCPSGNSP,
|
||
|
XVIEXPDP,
|
||
|
XVNABSDP,
|
||
|
XVNABSSP,
|
||
|
XVNEGDP,
|
||
|
XVNEGSP,
|
||
|
XVXEXPDP,
|
||
|
XXLAND,
|
||
|
XXLANDC,
|
||
|
XXLEQV,
|
||
|
XXLNAND,
|
||
|
XXLNOR,
|
||
|
XXLOR,
|
||
|
XXLORf,
|
||
|
XXLORC,
|
||
|
XXLXOR,
|
||
|
XXSEL
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_ALU_2C, IP_EXEC_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
XSABSQP,
|
||
|
XSCPSGNQP,
|
||
|
XSIEXPQP,
|
||
|
XSNABSQP,
|
||
|
XSNEGQP,
|
||
|
XSXEXPQP,
|
||
|
XSABSDP,
|
||
|
XSCPSGNDP,
|
||
|
XSIEXPDP,
|
||
|
XSNABSDP,
|
||
|
XSNEGDP,
|
||
|
XSXEXPDP
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_ALUE_3C, P9_ALUO_3C, IP_EXECE_1C, IP_EXECO_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
|
||
|
VMINSB,
|
||
|
VMINSD,
|
||
|
VMINSH,
|
||
|
VMINSW,
|
||
|
VMINUB,
|
||
|
VMINUD,
|
||
|
VMINUH,
|
||
|
VMINUW,
|
||
|
VPOPCNTD,
|
||
|
VPRTYBD,
|
||
|
VPRTYBW,
|
||
|
VRLB,
|
||
|
VRLD,
|
||
|
VRLDMI,
|
||
|
VRLDNM,
|
||
|
VRLH,
|
||
|
VRLW,
|
||
|
VRLWMI,
|
||
|
VRLWNM,
|
||
|
VSHASIGMAD,
|
||
|
VSHASIGMAW,
|
||
|
VSLB,
|
||
|
VSLD,
|
||
|
VSLH,
|
||
|
VSLW,
|
||
|
VSRAB,
|
||
|
VSRAD,
|
||
|
VSRAH,
|
||
|
VSRAW,
|
||
|
VSRB,
|
||
|
VSRD,
|
||
|
VSRH,
|
||
|
VSRW,
|
||
|
VSUBSBS,
|
||
|
VSUBSHS,
|
||
|
VSUBSWS,
|
||
|
VSUBUBS,
|
||
|
VSUBUHS,
|
||
|
VSUBUWS,
|
||
|
XSCMPEQDP,
|
||
|
XSCMPEXPDP,
|
||
|
XSCMPGEDP,
|
||
|
XSCMPGTDP,
|
||
|
XSCMPODP,
|
||
|
XSCMPUDP,
|
||
|
XSCVSPDPN,
|
||
|
XSMAXCDP,
|
||
|
XSMAXDP,
|
||
|
XSMAXJDP,
|
||
|
XSMINCDP,
|
||
|
XSMINDP,
|
||
|
XSMINJDP,
|
||
|
XSTDIVDP,
|
||
|
XSTSQRTDP,
|
||
|
XSTSTDCDP,
|
||
|
XSTSTDCSP,
|
||
|
XSXSIGDP,
|
||
|
XVCMPEQDP,
|
||
|
XVCMPEQDPo,
|
||
|
XVCMPEQSP,
|
||
|
XVCMPEQSPo,
|
||
|
XVCMPGEDP,
|
||
|
XVCMPGEDPo,
|
||
|
XVCMPGESP,
|
||
|
XVCMPGESPo,
|
||
|
XVCMPGTDP,
|
||
|
XVCMPGTDPo,
|
||
|
XVCMPGTSP,
|
||
|
XVCMPGTSPo,
|
||
|
XVIEXPSP,
|
||
|
XVMAXDP,
|
||
|
XVMAXSP,
|
||
|
XVMINDP,
|
||
|
XVMINSP,
|
||
|
XVTDIVDP,
|
||
|
XVTDIVSP,
|
||
|
XVTSQRTDP,
|
||
|
XVTSQRTSP,
|
||
|
XVTSTDCDP,
|
||
|
XVTSTDCSP,
|
||
|
XVXEXPSP,
|
||
|
XVXSIGDP,
|
||
|
XVXSIGSP
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_ALUE_4C, P9_ALUO_4C, IP_EXECE_1C, IP_EXECO_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
VABSDUB,
|
||
|
VABSDUH,
|
||
|
VABSDUW,
|
||
|
VADDSBS,
|
||
|
VADDSHS,
|
||
|
VADDSWS,
|
||
|
VADDUBS,
|
||
|
VADDUHS,
|
||
|
VADDUWS,
|
||
|
VAVGSB,
|
||
|
VAVGSH,
|
||
|
VAVGSW,
|
||
|
VAVGUB,
|
||
|
VAVGUH,
|
||
|
VAVGUW,
|
||
|
VBPERMD,
|
||
|
VCLZB,
|
||
|
VCLZD,
|
||
|
VCLZH,
|
||
|
VCLZW,
|
||
|
VCMPBFP,
|
||
|
VCMPBFPo,
|
||
|
VCMPGTFP,
|
||
|
VCMPGTFPo,
|
||
|
VCTZB,
|
||
|
VCTZD,
|
||
|
VCTZH,
|
||
|
VCTZW,
|
||
|
VMAXFP,
|
||
|
VMAXSB,
|
||
|
VMAXSD,
|
||
|
VMAXSH,
|
||
|
VMAXSW,
|
||
|
VMAXUB,
|
||
|
VMAXUD,
|
||
|
VMAXUH,
|
||
|
VMAXUW,
|
||
|
VMINFP,
|
||
|
VCMPEQFP,
|
||
|
VCMPEQFPo,
|
||
|
VCMPGEFP,
|
||
|
VCMPGEFPo
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_DPE_7C, P9_DPO_7C, IP_EXECE_1C, IP_EXECO_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
VADDFP,
|
||
|
VCTSXS,
|
||
|
VCTSXS_0,
|
||
|
VCTUXS,
|
||
|
VCTUXS_0,
|
||
|
VEXPTEFP,
|
||
|
VLOGEFP,
|
||
|
VMADDFP,
|
||
|
VMHADDSHS,
|
||
|
VNMSUBFP,
|
||
|
VREFP,
|
||
|
VRFIM,
|
||
|
VRFIN,
|
||
|
VRFIP,
|
||
|
VRFIZ,
|
||
|
VRSQRTEFP,
|
||
|
VSUBFP,
|
||
|
XVADDDP,
|
||
|
XVADDSP,
|
||
|
XVCVDPSP,
|
||
|
XVCVDPSXDS,
|
||
|
XVCVDPSXWS,
|
||
|
XVCVDPUXDS,
|
||
|
XVCVDPUXWS,
|
||
|
XVCVHPSP,
|
||
|
XVCVSPDP,
|
||
|
XVCVSPHP,
|
||
|
XVCVSPSXDS,
|
||
|
XVCVSPSXWS,
|
||
|
XVCVSPUXDS,
|
||
|
XVCVSPUXWS,
|
||
|
XVCVSXDDP,
|
||
|
XVCVSXDSP,
|
||
|
XVCVSXWDP,
|
||
|
XVCVSXWSP,
|
||
|
XVCVUXDDP,
|
||
|
XVCVUXDSP,
|
||
|
XVCVUXWDP,
|
||
|
XVCVUXWSP,
|
||
|
XVMADDADP,
|
||
|
XVMADDASP,
|
||
|
XVMADDMDP,
|
||
|
XVMADDMSP,
|
||
|
XVMSUBADP,
|
||
|
XVMSUBASP,
|
||
|
XVMSUBMDP,
|
||
|
XVMSUBMSP,
|
||
|
XVMULDP,
|
||
|
XVMULSP,
|
||
|
XVNMADDADP,
|
||
|
XVNMADDASP,
|
||
|
XVNMADDMDP,
|
||
|
XVNMADDMSP,
|
||
|
XVNMSUBADP,
|
||
|
XVNMSUBASP,
|
||
|
XVNMSUBMDP,
|
||
|
XVNMSUBMSP,
|
||
|
XVRDPI,
|
||
|
XVRDPIC,
|
||
|
XVRDPIM,
|
||
|
XVRDPIP,
|
||
|
XVRDPIZ,
|
||
|
XVREDP,
|
||
|
XVRESP,
|
||
|
XVRSPI,
|
||
|
XVRSPIC,
|
||
|
XVRSPIM,
|
||
|
XVRSPIP,
|
||
|
XVRSPIZ,
|
||
|
XVRSQRTEDP,
|
||
|
XVRSQRTESP,
|
||
|
XVSUBDP,
|
||
|
XVSUBSP,
|
||
|
VCFSX,
|
||
|
VCFSX_0,
|
||
|
VCFUX,
|
||
|
VCFUX_0,
|
||
|
VMHRADDSHS,
|
||
|
VMLADDUHM,
|
||
|
VMSUMMBM,
|
||
|
VMSUMSHM,
|
||
|
VMSUMSHS,
|
||
|
VMSUMUBM,
|
||
|
VMSUMUHM,
|
||
|
VMSUMUHS,
|
||
|
VMULESB,
|
||
|
VMULESH,
|
||
|
VMULESW,
|
||
|
VMULEUB,
|
||
|
VMULEUH,
|
||
|
VMULEUW,
|
||
|
VMULOSB,
|
||
|
VMULOSH,
|
||
|
VMULOSW,
|
||
|
VMULOUB,
|
||
|
VMULOUH,
|
||
|
VMULOUW,
|
||
|
VMULUWM,
|
||
|
VSUM2SWS,
|
||
|
VSUM4SBS,
|
||
|
VSUM4SHS,
|
||
|
VSUM4UBS,
|
||
|
VSUMSWS
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_DP_7C, IP_EXEC_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
XSMADDADP,
|
||
|
XSMADDASP,
|
||
|
XSMADDMDP,
|
||
|
XSMADDMSP,
|
||
|
XSMSUBADP,
|
||
|
XSMSUBASP,
|
||
|
XSMSUBMDP,
|
||
|
XSMSUBMSP,
|
||
|
XSMULDP,
|
||
|
XSMULSP,
|
||
|
XSNMADDADP,
|
||
|
XSNMADDASP,
|
||
|
XSNMADDMDP,
|
||
|
XSNMADDMSP,
|
||
|
XSNMSUBADP,
|
||
|
XSNMSUBASP,
|
||
|
XSNMSUBMDP,
|
||
|
XSNMSUBMSP
|
||
|
)>;
|
||
|
|
||
|
|
||
|
def : InstRW<[P9_DP_7C, IP_EXEC_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
XSADDDP,
|
||
|
XSADDSP,
|
||
|
XSCVDPHP,
|
||
|
XSCVDPSP,
|
||
|
XSCVDPSXDS,
|
||
|
XSCVDPSXWS,
|
||
|
XSCVDPUXDS,
|
||
|
XSCVDPUXWS,
|
||
|
XSCVHPDP,
|
||
|
XSCVSPDP,
|
||
|
XSCVSXDDP,
|
||
|
XSCVSXDSP,
|
||
|
XSCVUXDDP,
|
||
|
XSCVUXDSP,
|
||
|
XSRDPI,
|
||
|
XSRDPIC,
|
||
|
XSRDPIM,
|
||
|
XSRDPIP,
|
||
|
XSRDPIZ,
|
||
|
XSREDP,
|
||
|
XSRESP,
|
||
|
//XSRSP,
|
||
|
XSRSQRTEDP,
|
||
|
XSRSQRTESP,
|
||
|
XSSUBDP,
|
||
|
XSSUBSP,
|
||
|
XSCVDPSPN
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_PM_3C, IP_EXECO_1C, IP_EXECE_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
VBPERMQ,
|
||
|
VCLZLSBB,
|
||
|
VCTZLSBB,
|
||
|
VEXTRACTD,
|
||
|
VEXTRACTUB,
|
||
|
VEXTRACTUH,
|
||
|
VEXTRACTUW,
|
||
|
VEXTUBLX,
|
||
|
VEXTUBRX,
|
||
|
VEXTUHLX,
|
||
|
VEXTUHRX,
|
||
|
VEXTUWLX,
|
||
|
VEXTUWRX,
|
||
|
VGBBD,
|
||
|
VINSERTB,
|
||
|
VINSERTD,
|
||
|
VINSERTH,
|
||
|
VINSERTW,
|
||
|
VMRGHB,
|
||
|
VMRGHH,
|
||
|
VMRGHW,
|
||
|
VMRGLB,
|
||
|
VMRGLH,
|
||
|
VMRGLW,
|
||
|
VPERM,
|
||
|
VPERMR,
|
||
|
VPERMXOR,
|
||
|
VPKPX,
|
||
|
VPKSDSS,
|
||
|
VPKSDUS,
|
||
|
VPKSHSS,
|
||
|
VPKSHUS,
|
||
|
VPKSWSS,
|
||
|
VPKSWUS,
|
||
|
VPKUDUM,
|
||
|
VPKUDUS,
|
||
|
VPKUHUM,
|
||
|
VPKUHUS,
|
||
|
VPKUWUM,
|
||
|
VPKUWUS,
|
||
|
VPRTYBQ,
|
||
|
VSL,
|
||
|
VSLDOI,
|
||
|
VSLO,
|
||
|
VSLV,
|
||
|
VSPLTB,
|
||
|
VSPLTH,
|
||
|
VSPLTISB,
|
||
|
VSPLTISH,
|
||
|
VSPLTISW,
|
||
|
VSPLTW,
|
||
|
VSR,
|
||
|
VSRO,
|
||
|
VSRV,
|
||
|
VUPKHPX,
|
||
|
VUPKHSB,
|
||
|
VUPKHSH,
|
||
|
VUPKHSW,
|
||
|
VUPKLPX,
|
||
|
VUPKLSB,
|
||
|
VUPKLSH,
|
||
|
VUPKLSW,
|
||
|
XXBRD,
|
||
|
XXBRH,
|
||
|
XXBRQ,
|
||
|
XXBRW,
|
||
|
XXEXTRACTUW,
|
||
|
XXINSERTW,
|
||
|
XXMRGHW,
|
||
|
XXMRGLW,
|
||
|
XXPERM,
|
||
|
XXPERMR,
|
||
|
XXSLDWI,
|
||
|
XXSPLTIB,
|
||
|
XXSPLTW,
|
||
|
VADDCUQ,
|
||
|
VADDECUQ,
|
||
|
VADDEUQM,
|
||
|
VADDUQM,
|
||
|
VMUL10CUQ,
|
||
|
VMUL10ECUQ,
|
||
|
VMUL10EUQ,
|
||
|
VMUL10UQ,
|
||
|
VSUBCUQ,
|
||
|
VSUBECUQ,
|
||
|
VSUBEUQM,
|
||
|
VSUBUQM,
|
||
|
XSCMPEXPQP,
|
||
|
XSCMPOQP,
|
||
|
XSCMPUQP,
|
||
|
XSTSTDCQP,
|
||
|
XSXSIGQP
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_DFU_12C, IP_EXECE_1C, IP_EXECO_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
XSADDQP,
|
||
|
XSADDQPO,
|
||
|
XSCVDPQP,
|
||
|
XSCVQPDP,
|
||
|
XSCVQPDPO,
|
||
|
XSCVQPSDZ,
|
||
|
XSCVQPSWZ,
|
||
|
XSCVQPUDZ,
|
||
|
XSCVQPUWZ,
|
||
|
XSCVSDQP,
|
||
|
XSCVUDQP,
|
||
|
XSRQPI,
|
||
|
XSRQPXP,
|
||
|
XSSUBQP,
|
||
|
XSSUBQPO
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_DFU_24C, IP_EXECE_1C, IP_EXECO_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
XSMADDQP,
|
||
|
XSMADDQPO,
|
||
|
XSMSUBQP,
|
||
|
XSMSUBQPO,
|
||
|
XSMULQP,
|
||
|
XSMULQPO,
|
||
|
XSNMADDQP,
|
||
|
XSNMADDQPO,
|
||
|
XSNMSUBQP,
|
||
|
XSNMSUBQPO
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_DFU_58C, IP_EXECE_1C, IP_EXECO_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
XSDIVQP,
|
||
|
XSDIVQPO
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_DFU_76C, IP_EXECE_1C, IP_EXECO_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
XSSQRTQP,
|
||
|
XSSQRTQPO
|
||
|
)>;
|
||
|
|
||
|
// Load Operation in IIC_LdStLFD
|
||
|
|
||
|
def : InstRW<[P9_LS_5C, IP_AGEN_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
LXSDX,
|
||
|
LXVD2X,
|
||
|
LXSIWZX,
|
||
|
LXV,
|
||
|
LXSD
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_LS_5C, IP_AGEN_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
LFIWZX,
|
||
|
LFDX,
|
||
|
LFD
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_LoadAndALUOp_7C, IP_AGEN_1C, IP_EXEC_1C,
|
||
|
DISP_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
LXSSPX,
|
||
|
LXSIWAX,
|
||
|
LXSSP
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_LoadAndALUOp_7C, IP_AGEN_1C, IP_EXEC_1C,
|
||
|
DISP_1C, DISP_1C, DISP_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
LFIWAX,
|
||
|
LFSX,
|
||
|
LFS
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_LoadAndPMOp_8C, IP_AGEN_1C, IP_EXEC_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
LXVDSX,
|
||
|
LXVW4X
|
||
|
)>;
|
||
|
|
||
|
// Store Operations in IIC_LdStSTFD.
|
||
|
|
||
|
def : InstRW<[P9_LS_1C, IP_EXEC_1C, IP_AGEN_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
STFS,
|
||
|
STFD,
|
||
|
STFIWX,
|
||
|
STFSX,
|
||
|
STFDX,
|
||
|
STXSDX,
|
||
|
STXSSPX,
|
||
|
STXSIWX
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_LS_1C, IP_EXEC_1C, IP_EXEC_1C, IP_AGEN_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
STXVD2X,
|
||
|
STXVW4X
|
||
|
)>;
|
||
|
|
||
|
|
||
|
// Divide Operations in IIC_IntDivW, IIC_IntDivD.
|
||
|
|
||
|
def : InstRW<[P9_DIV_16C_8, IP_EXECE_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
DIVW,
|
||
|
DIVWU
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_DIV_24C_8, IP_EXECE_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
DIVWE,
|
||
|
DIVD,
|
||
|
DIVWEU,
|
||
|
DIVDU
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_DIV_40C_8, IP_EXECE_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
DIVDE,
|
||
|
DIVDEU
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_IntDivAndALUOp_26C_8, IP_EXECE_1C, IP_EXEC_1C,
|
||
|
DISP_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
DIVWEo,
|
||
|
DIVWEUo
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_IntDivAndALUOp_42C_8, IP_EXECE_1C, IP_EXEC_1C,
|
||
|
DISP_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
DIVDEo,
|
||
|
DIVDEUo
|
||
|
)>;
|
||
|
|
||
|
// Rotate Operations in IIC_IntRotateD, IIC_IntRotateDI
|
||
|
def : InstRW<[P9_ALU_2C, IP_EXEC_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
SLD,
|
||
|
SRD,
|
||
|
SRAD,
|
||
|
SRADI,
|
||
|
RLDIC
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_ALU_2C, IP_EXEC_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
RLDCL,
|
||
|
RLDCR,
|
||
|
RLDIMI,
|
||
|
RLDICL,
|
||
|
RLDICR,
|
||
|
RLDICL_32_64
|
||
|
)>;
|
||
|
|
||
|
// CR access instructions in _BrMCR, IIC_BrMCRX.
|
||
|
|
||
|
def : InstRW<[P9_ALU_2C, P9_ALU_2C, IP_EXEC_1C, IP_EXEC_1C,
|
||
|
DISP_1C, DISP_1C, DISP_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
MTOCRF,
|
||
|
MTOCRF8,
|
||
|
MTCRF,
|
||
|
MTCRF8
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_ALU_5C, IP_EXEC_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
MCRF,
|
||
|
MCRXRX
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_ALU_5C, P9_ALU_5C, IP_EXEC_1C, IP_EXEC_1C,
|
||
|
DISP_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
MCRFS
|
||
|
)>;
|
||
|
|
||
|
// FP Div instructions in IIC_FPDivD and IIC_FPDivS.
|
||
|
|
||
|
def : InstRW<[P9_DP_33C_8, IP_EXEC_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
FDIV,
|
||
|
XSDIVDP
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_DP_22C_5, IP_EXEC_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
FDIVS,
|
||
|
XSDIVSP
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_DP_24C_8, IP_EXECE_1C, IP_EXECO_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
XVDIVSP
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_DP_33C_8, IP_EXECE_1C, IP_EXECO_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
XVDIVDP
|
||
|
)>;
|
||
|
|
||
|
// FP Instructions in IIC_FPGeneral, IIC_FPFused
|
||
|
|
||
|
def : InstRW<[P9_DP_7C, IP_EXEC_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
FRSP,
|
||
|
FRIND,
|
||
|
FRINS,
|
||
|
FRIPD,
|
||
|
FRIPS,
|
||
|
FRIZD,
|
||
|
FRIZS,
|
||
|
FRIMD,
|
||
|
FRIMS,
|
||
|
FRE,
|
||
|
FRES,
|
||
|
FRSQRTE,
|
||
|
FRSQRTES,
|
||
|
FMADDS,
|
||
|
FMADD,
|
||
|
FMSUBS,
|
||
|
FMSUB,
|
||
|
FNMADDS,
|
||
|
FNMADD,
|
||
|
FNMSUBS,
|
||
|
FNMSUB,
|
||
|
FSELD,
|
||
|
FSELS,
|
||
|
FADDS,
|
||
|
FMULS,
|
||
|
FMUL,
|
||
|
FSUBS,
|
||
|
FCFID,
|
||
|
FCTID,
|
||
|
FCTIDZ,
|
||
|
FCFIDU,
|
||
|
FCFIDS,
|
||
|
FCFIDUS,
|
||
|
FCTIDUZ,
|
||
|
FCTIWUZ,
|
||
|
FCTIW,
|
||
|
FCTIWZ
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_DP_7C, IP_EXEC_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
FMR,
|
||
|
FABSD,
|
||
|
FABSS,
|
||
|
FNABSD,
|
||
|
FNABSS,
|
||
|
FNEGD,
|
||
|
FNEGS,
|
||
|
FCPSGND,
|
||
|
FCPSGNS
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_ALU_3C, IP_EXEC_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
FCMPUS,
|
||
|
FCMPUD
|
||
|
)>;
|
||
|
|
||
|
// Load instructions in IIC_LdStLFDU and IIC_LdStLFDUX.
|
||
|
|
||
|
def : InstRW<[P9_LoadAndALUOp_7C, P9_ALU_2C,
|
||
|
IP_AGEN_1C, IP_EXEC_1C, IP_EXEC_1C,
|
||
|
DISP_1C, DISP_1C, DISP_1C, DISP_1C,
|
||
|
DISP_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
LFSU,
|
||
|
LFSUX
|
||
|
)>;
|
||
|
|
||
|
def : InstRW<[P9_LS_5C, P9_ALU_2C, IP_AGEN_1C, IP_EXEC_1C,
|
||
|
DISP_1C, DISP_1C, DISP_1C, DISP_1C, DISP_1C],
|
||
|
(instrs
|
||
|
LFDU,
|
||
|
LFDUX
|
||
|
)>;
|
||
|
|