|  | //===- 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 | 
|  | )>; | 
|  |  |