decoder.isa revision 2027
11689SN/A//////////////////////////////////////////////////////////////////// 27944SGiacomo.Gabrielli@arm.com// 37944SGiacomo.Gabrielli@arm.com// The actual MIPS32 ISA decoder 47944SGiacomo.Gabrielli@arm.com// ----------------------------- 57944SGiacomo.Gabrielli@arm.com// The following instructions are specified in the MIPS32 ISA 67944SGiacomo.Gabrielli@arm.com// Specification. Decoding closely follows the style specified 77944SGiacomo.Gabrielli@arm.com// in the MIPS32 ISAthe specification document starting with Table 87944SGiacomo.Gabrielli@arm.com// A-2 (document available @ www.mips.com) 97944SGiacomo.Gabrielli@arm.com// 107944SGiacomo.Gabrielli@arm.com//@todo: Distinguish "unknown/future" use insts from "reserved" 117944SGiacomo.Gabrielli@arm.com// ones 127944SGiacomo.Gabrielli@arm.comdecode OPCODE_HI default FailUnimpl::unknown() { 137944SGiacomo.Gabrielli@arm.com 142326SN/A // Derived From ... Table A-2 MIPS32 ISA Manual 151689SN/A 0x0: decode OPCODE_LO default FailUnimpl::reserved(){ 161689SN/A 171689SN/A 0x0: decode FUNCTION_HI { 181689SN/A 0x0: decode FUNCTION_LO { 191689SN/A 0x1: decode MOVCI { 201689SN/A format Move { 211689SN/A 0: movc({{ }}); 221689SN/A 1: movt({{ }}); 231689SN/A } 241689SN/A } 251689SN/A 261689SN/A format ShiftRotate { 271689SN/A //Table A-3 Note: "1. Specific encodings of the rt, rd, and sa fields 281689SN/A //are used to distinguish among the SLL, NOP, SSNOP and EHB functions." 291689SN/A 0x0: sll({{ }}); 301689SN/A 311689SN/A 0x2: decode SRL { 321689SN/A 0: srl({{ }}); 331689SN/A 1: rotr({{ }}); 341689SN/A } 351689SN/A 361689SN/A 0x3: sar({{ }}); 371689SN/A 381689SN/A 0x4: sllv({{ }}); 392665Ssaidi@eecs.umich.edu 402665Ssaidi@eecs.umich.edu 0x6: decode SRLV { 412831Sksewell@umich.edu 0: srlv({{ }}); 421689SN/A 1: rotrv({{ }}); 431689SN/A } 442064SN/A 451060SN/A 0x7: srav({{ }}); 461060SN/A } 472292SN/A } 481717SN/A 498232Snate@binkert.org 0x1: decode FUNCTION_LO { 504762Snate@binkert.org 516221Snate@binkert.org //Table A-3 Note: "Specific encodings of the hint field are used 524762Snate@binkert.org //to distinguish JR from JR.HB and JALR from JALR.HB" 531060SN/A format Jump { 548737Skoansin.tan@gmail.com 0x0: jr({{ }}); 558737Skoansin.tan@gmail.com 0x1: jalr({{ }}); 568737Skoansin.tan@gmail.com } 575529Snate@binkert.org 581061SN/A format Move { 592292SN/A 0x2: movz({{ }}); 605606Snate@binkert.org 0x3: movn({{ }}); 618581Ssteve.reinhardt@amd.com } 628581Ssteve.reinhardt@amd.com 631060SN/A 0x4: Syscall::syscall({{ }}); 642292SN/A 0x5: Break::break({{ }}); 652292SN/A 0x7: Synchronize::synch({{ }}); 662292SN/A } 672292SN/A 682292SN/A 0x2: decode FUNCTION_LO { 692292SN/A format MultDiv { 702326SN/A 0x0: mfhi({{ }}); 712292SN/A 0x1: mthi({{ }}); 722292SN/A 0x2: mflo({{ }}); 732292SN/A 0x3: mtlo({{ }}); 742292SN/A } 752292SN/A }; 762292SN/A 775336Shines@cs.fsu.edu 0x3: decode FUNCTION_LO { 782292SN/A format MultDiv { 794873Sstever@eecs.umich.edu 0x0: mult({{ }}); 802292SN/A 0x1: multu({{ }}); 812292SN/A 0x2: div({{ }}); 822292SN/A 0x3: divu({{ }}); 834329Sktlim@umich.edu } 845529Snate@binkert.org }; 854329Sktlim@umich.edu 864329Sktlim@umich.edu 0x4: decode FUNCTION_LO { 874329Sktlim@umich.edu format Arithmetic { 882292SN/A 0x0: add({{ }}); 892292SN/A 0x1: addu({{ }}); 902292SN/A 0x2: sub({{ }}); 912292SN/A 0x3: subu({{ }}); 922292SN/A } 932292SN/A 942292SN/A format Logical { 952292SN/A 0x0: and({{ }}); 962307SN/A 0x1: or({{ }}); 972307SN/A 0x2: xor({{ }}); 985529Snate@binkert.org 0x3: nor({{ }}); 991060SN/A } 1001060SN/A } 1011060SN/A 1021060SN/A 0x5: decode FUNCTION_LO { 1031060SN/A format SetInstructions{ 1041060SN/A 0x2: slt({{ }}); 1052326SN/A 0x3: sltu({{ }}); 1061060SN/A } 1071060SN/A }; 1081060SN/A 1091060SN/A 0x6: decode FUNCTION_LO { 1102292SN/A format Trap { 1116221Snate@binkert.org 0x0: tge({{ }}); 1126221Snate@binkert.org 0x1: tgeu({{ }}); 1136221Snate@binkert.org 0x2: tlt({{ }}); 1141060SN/A 0x3: tltu({{ }}); 1151060SN/A 0x4: teq({{ }}); 1162307SN/A 0x6: tne({{ }}); 1172292SN/A } 1182980Sgblack@eecs.umich.edu } 1192292SN/A } 1202292SN/A 1212292SN/A 0x1: decode REGIMM_HI { 1222292SN/A 0x0: decode REGIMM_LO { 1232292SN/A format Branch { 1242292SN/A 0x0: bltz({{ }}); 1252292SN/A 0x1: bgez({{ }}); 1262292SN/A 1272292SN/A //MIPS obsolete instructions 1282292SN/A 0x2: bltzl({{ }}); 1296221Snate@binkert.org 0x3: bgezl({{ }}); 1306221Snate@binkert.org } 1312292SN/A } 1322292SN/A 1332292SN/A 0x1: decode REGIMM_LO { 1342292SN/A format Trap { 1352292SN/A 0x0: tgei({{ }}); 1362292SN/A 0x1: tgeiu({{ }}); 1372292SN/A 0x2: tlti({{ }}); 1382292SN/A 0x3: tltiu({{ }}); 1392292SN/A 0x4: teqi({{ }}); 1406221Snate@binkert.org 0x6: tnei({{ }}); 1416221Snate@binkert.org } 1422292SN/A } 1432292SN/A 1442831Sksewell@umich.edu 0x2: decode REGIMM_LO { 1452292SN/A format Branch { 1462292SN/A 0x0: bltzal({{ }}); 1472292SN/A 0x1: bgezal({{ }}); 1482292SN/A 1492292SN/A //MIPS obsolete instructions 1502292SN/A 0x2: bltzall({{ }}); 1512292SN/A 0x3: bgezall({{ }}); 1522292SN/A } 1532292SN/A } 1546221Snate@binkert.org 1556221Snate@binkert.org 0x3: decode REGIMM_LO { 1562292SN/A 0x7: synci({{ }}); 1572292SN/A } 1582831Sksewell@umich.edu } 1592292SN/A 1602292SN/A format Jump { 1612292SN/A 0x2: j({{ }}); 1622292SN/A 0x3: jal({{ }}); 1632292SN/A } 1642292SN/A 1652292SN/A format Branch { 1662292SN/A 0x4: beq({{ }}); 1672292SN/A 0x5: bne({{ }}); 1682292SN/A 0x6: blez({{ }}); 1692326SN/A 0x7: bgtz({{ }}); 1702348SN/A } 1712326SN/A }; 1722326SN/A 1732348SN/A 0x1: decode OPCODE_LO default FailUnimpl::reserved(){ 1742292SN/A format IntImmediate { 1752292SN/A 0x0: addi({{ }}); 1762292SN/A 0x1: addiu({{ }}); 1772292SN/A 0x2: slti({{ }}); 1782292SN/A 0x3: sltiu({{ }}); 1792292SN/A 0x4: andi({{ }}); 1802292SN/A 0x5: ori({{ }}); 1811060SN/A 0x6: xori({{ }}); 1821060SN/A 0x7: lui({{ }}); 1831061SN/A }; 1841060SN/A }; 1851062SN/A 1861062SN/A 0x2: decode OPCODE_LO default FailUnimpl::reserved(){ 1872301SN/A 1881062SN/A //Table A-11 MIPS32 COP0 Encoding of rs Field 1891062SN/A 0x0: decode RS_MSB { 1901062SN/A 0x0: decode RS { 1911062SN/A 0x0: mfc0({{ }}); 1921062SN/A 0xC: mtc0({{ }}); 1931062SN/A 0xA: rdpgpr({{ }}); 1941062SN/A 1951062SN/A 0xB: decode SC { 1961062SN/A 0x0: di({{ }}); 1971062SN/A 0x1: ei({{ }}); 1982301SN/A } 1992301SN/A 2002301SN/A 0xE: wrpgpr({{ }}); 2012301SN/A } 2021062SN/A 2031062SN/A //Table A-12 MIPS32 COP0 Encoding of Function Field When rs=CO 2041062SN/A 0x1: decode FUNCTION { 2051062SN/A 0x01: tlbr({{ }}); 2061062SN/A 0x02: tlbwi({{ }}); 2071062SN/A 0x06: tlbwr({{ }}); 2081062SN/A 0x08: tlbp({{ }}); 2091062SN/A 0x18: eret({{ }}); 2101062SN/A 0x1F: deret({{ }}); 2111062SN/A 0x20: wait({{ }}); 2121062SN/A } 2131062SN/A } 2141062SN/A 2151062SN/A //Table A-13 MIPS32 COP1 Encoding of rs Field 2161062SN/A 0x1: decode RS_MSB { 2171062SN/A 2181062SN/A 0x0: decode RS_HI { 2191062SN/A 0x0: decode RS_LO { 2201062SN/A 0x0: mfc1({{ }}); 2211062SN/A 0x2: cfc1({{ }}); 2221062SN/A 0x3: mfhc1({{ }}); 2231062SN/A 0x4: mtc1({{ }}); 2241062SN/A 0x6: ctc1({{ }}); 2251062SN/A 0x7: mftc1({{ }}); 2261062SN/A } 2271062SN/A 2281062SN/A 0x1: decode ND { 2291062SN/A 0x0: decode TF { 2301062SN/A 0x0: bc1f({{ }}); 2311062SN/A 0x1: bc1t({{ }}); 2321062SN/A } 2331062SN/A 2341062SN/A 0x1: decode TF { 2351062SN/A 0x0: bc1fl({{ }}); 2361062SN/A 0x1: bc1tl({{ }}); 2371062SN/A } 2381062SN/A } 2391062SN/A } 2401062SN/A 2411062SN/A 0x1: decode RS_HI { 2421062SN/A 0x2: decode RS_LO { 2431062SN/A 2441062SN/A //Table A-14 MIPS32 COP1 Encoding of Function Field When rs=S 2451062SN/A //(( single-word )) 2461062SN/A 0x0: decode RS_HI { 2471062SN/A 0x0: decode RS_LO { 2481062SN/A 0x0: add_fmt({{ }}); 2492361SN/A 0x1: sub_fmt({{ }}); 2502326SN/A 0x2: mul_fmt({{ }}); 2512301SN/A 0x3: div_fmt({{ }}); 2522301SN/A 0x4: sqrt_fmt({{ }}); 2532301SN/A 0x5: abs_fmt({{ }}); 2542301SN/A 0x6: mov_fmt({{ }}); 2552301SN/A 0x7: neg_fmt({{ }}); 2562301SN/A } 2572326SN/A 2582301SN/A 0x1: decode RS_LO { 2592361SN/A //only legal for 64 bit 2602326SN/A format mode64 { 2612307SN/A 0x0: round_l({{ }}); 2628240Snate@binkert.org 0x1: trunc_l({{ }}); 2632301SN/A 0x2: ceil_l({{ }}); 2642307SN/A 0x3: floor_l({{ }}); 2652301SN/A } 2662301SN/A 2672301SN/A 0x4: round_w({{ }}); 2682301SN/A 0x5: trunc_w({{ }}); 2698240Snate@binkert.org 0x6: ceil_w({{ }}); 2702301SN/A 0x7: floor_w({{ }}); 2712301SN/A } 2722301SN/A 2732301SN/A 0x2: decode RS_LO { 2742301SN/A 0x1: decode MOVCF { 2752301SN/A 0x0: movf_fmt({{ }}); 2762301SN/A 0x1: movt_fmt({{ }}); 2772326SN/A } 2784762Snate@binkert.org 2798240Snate@binkert.org 0x2: movz({{ }}); 2802301SN/A 0x3: movn({{ }}); 2812301SN/A 2822301SN/A format mode64 { 2834762Snate@binkert.org 0x2: recip({{ }}); 2842301SN/A 0x3: rsqrt{{ }}); 2852301SN/A } 2862301SN/A } 2872301SN/A 2882361SN/A 0x4: decode RS_LO { 2892326SN/A 0x1: cvt_d({{ }}); 2902301SN/A 0x4: cvt_w({{ }}); 2918240Snate@binkert.org 2922301SN/A //only legal for 64 bit 2932301SN/A format mode64 { 2942301SN/A 0x5: cvt_l({{ }}); 2952301SN/A 0x6: cvt_ps({{ }}); 2962301SN/A } 2972980Sgblack@eecs.umich.edu } 2982301SN/A } 2992326SN/A 3002301SN/A //Table A-15 MIPS32 COP1 Encoding of Function Field When rs=D 3012361SN/A 0x1: decode RS_HI { 3022326SN/A 0x0: decode RS_LO { 3038240Snate@binkert.org 0x0: add_fmt({{ }}); 3042301SN/A 0x1: sub_fmt({{ }}); 3052301SN/A 0x2: mul_fmt({{ }}); 3062301SN/A 0x3: div_fmt({{ }}); 3072326SN/A 0x4: sqrt_fmt({{ }}); 3082727Sktlim@umich.edu 0x5: abs_fmt({{ }}); 3092326SN/A 0x6: mov_fmt({{ }}); 3102301SN/A 0x7: neg_fmt({{ }}); 3118240Snate@binkert.org } 3122301SN/A 3132301SN/A 0x1: decode RS_LO { 3142301SN/A //only legal for 64 bit 3152301SN/A format mode64 { 3164762Snate@binkert.org 0x0: round_l({{ }}); 3172301SN/A 0x1: trunc_l({{ }}); 3182301SN/A 0x2: ceil_l({{ }}); 3192326SN/A 0x3: floor_l({{ }}); 3202301SN/A } 3218240Snate@binkert.org 3222301SN/A 0x4: round_w({{ }}); 3232301SN/A 0x5: trunc_w({{ }}); 3242301SN/A 0x6: ceil_w({{ }}); 3252301SN/A 0x7: floor_w({{ }}); 3262326SN/A } 3278240Snate@binkert.org 3282301SN/A 0x2: decode RS_LO { 3292301SN/A 0x1: decode MOVCF { 3302301SN/A 0x0: movf_fmt({{ }}); 3312326SN/A 0x1: movt_fmt({{ }}); 3322301SN/A } 3336221Snate@binkert.org 3342292SN/A 0x2: movz({{ }}); 3356221Snate@binkert.org 0x3: movn({{ }}); 3362292SN/A 3377897Shestness@cs.utexas.edu format mode64 { 3387897Shestness@cs.utexas.edu 0x5: recip({{ }}); 3397897Shestness@cs.utexas.edu 0x6: rsqrt{{ }}); 3407897Shestness@cs.utexas.edu } 3417897Shestness@cs.utexas.edu } 3427897Shestness@cs.utexas.edu 3437897Shestness@cs.utexas.edu 0x4: decode RS_LO { 3447897Shestness@cs.utexas.edu 0x0: cvt_s({{ }}); 3457897Shestness@cs.utexas.edu 0x4: cvt_w({{ }}); 3467897Shestness@cs.utexas.edu 3477897Shestness@cs.utexas.edu //only legal for 64 bit 3487897Shestness@cs.utexas.edu format mode64 { 3497897Shestness@cs.utexas.edu 0x5: cvt_l({{ }}); 3507897Shestness@cs.utexas.edu } 3517897Shestness@cs.utexas.edu } 3527897Shestness@cs.utexas.edu } 3537897Shestness@cs.utexas.edu 3547897Shestness@cs.utexas.edu //Table A-16 MIPS32 COP1 Encoding of Function Field When rs=W 3557897Shestness@cs.utexas.edu 0x4: decode FUNCTION { 3567897Shestness@cs.utexas.edu 0x10: cvt_s({{ }}); 3577897Shestness@cs.utexas.edu 0x10: cvt_d({{ }}); 3587897Shestness@cs.utexas.edu } 3597897Shestness@cs.utexas.edu 3607897Shestness@cs.utexas.edu //Table A-16 MIPS32 COP1 Encoding of Function Field When rs=L1 3617897Shestness@cs.utexas.edu //Note: "1. Format type L is legal only if 64-bit floating point operations 3627897Shestness@cs.utexas.edu //are enabled." 3637897Shestness@cs.utexas.edu 0x5: decode FUNCTION_HI { 3647897Shestness@cs.utexas.edu 0x10: cvt_s({{ }}); 3657897Shestness@cs.utexas.edu 0x11: cvt_d({{ }}); 3667897Shestness@cs.utexas.edu } 3677897Shestness@cs.utexas.edu 3687897Shestness@cs.utexas.edu //Table A-17 MIPS64 COP1 Encoding of Function Field When rs=PS1 3697897Shestness@cs.utexas.edu //Note: "1. Format type PS is legal only if 64-bit floating point operations 3707897Shestness@cs.utexas.edu //are enabled. " 3717897Shestness@cs.utexas.edu 0x6: decode RS_HI { 3727897Shestness@cs.utexas.edu 0x0: decode RS_LO { 3737897Shestness@cs.utexas.edu 0x0: add_fmt({{ }}); 3747897Shestness@cs.utexas.edu 0x1: sub_fmt({{ }}); 3757897Shestness@cs.utexas.edu 0x2: mul_fmt({{ }}); 3767897Shestness@cs.utexas.edu 0x5: abs_fmt({{ }}); 3777897Shestness@cs.utexas.edu 0x6: mov_fmt({{ }}); 3781062SN/A 0x7: neg_fmt({{ }}); 3791062SN/A } 3801062SN/A 3811062SN/A 0x2: decode RS_LO { 3822307SN/A 0x1: decode MOVCF { 3831060SN/A 0x0: movf_fmt({{ }}); 3842307SN/A 0x1: movt_fmt({{ }}); 3856221Snate@binkert.org } 3866221Snate@binkert.org 3876221Snate@binkert.org 0x2: movz({{ }}); 3882307SN/A 0x3: movn({{ }}); 3891060SN/A } 3902307SN/A 3912307SN/A 0x4: decode RS_LO { 3922307SN/A 0x0: cvt_s_pu({{ }}); 3932307SN/A } 3942307SN/A 3952307SN/A 0x5: decode RS_LO { 3962307SN/A 0x0: cvt_s_pl({{ }}); 3972307SN/A 0x4: pll_s_pl({{ }}); 3982307SN/A 0x5: plu_s_pl({{ }}); 3992307SN/A 0x6: pul_s_pl({{ }}); 4002307SN/A 0x7: puu_s_pl({{ }}); 4012307SN/A } 4026221Snate@binkert.org } 4036221Snate@binkert.org } 4042307SN/A 4052307SN/A //Table A-19 MIPS32 COP2 Encoding of rs Field 4062307SN/A 0x2: decode RS_MSB { 4072307SN/A 0x0: decode RS_HI { 4082307SN/A 0x0: decode RS_LO { 4092307SN/A 0x0: mfc2({{ }}); 4102307SN/A 0x2: cfc2({{ }}); 4112307SN/A 0x3: mfhc2({{ }}); 4122307SN/A 0x4: mtc2({{ }}); 4132307SN/A 0x6: ctc2({{ }}); 4147944SGiacomo.Gabrielli@arm.com 0x7: mftc2({{ }}); 4151060SN/A } 4161060SN/A 4171061SN/A 0x1: decode ND { 4181060SN/A 0x0: decode TF { 4196221Snate@binkert.org 0x0: bc2f({{ }}); 4201060SN/A 0x1: bc2t({{ }}); 4212292SN/A } 4222064SN/A 4232064SN/A 0x1: decode TF { 4242064SN/A 0x0: bc2fl({{ }}); 4252064SN/A 0x1: bc2tl({{ }}); 4262292SN/A } 4272064SN/A } 4284318Sktlim@umich.edu } 4291060SN/A } 4301060SN/A 4311061SN/A //Table A-20 MIPS64 COP1X Encoding of Function Field 1 4321060SN/A //Note: "COP1X instructions are legal only if 64-bit floating point 4331060SN/A //operations are enabled." 4341060SN/A 0x3: decode FUNCTION_HI { 4351060SN/A 0x0: decode FUNCTION_LO { 4361060SN/A 0x0: lwxc1({{ }}); 4371060SN/A 0x1: ldxc1({{ }}); 4381060SN/A 0x5: luxc1({{ }}); 4391060SN/A } 4401684SN/A 4412307SN/A 0x1: decode FUNCTION_LO { 4422307SN/A 0x0: swxc1({{ }}); 4432307SN/A 0x1: sdxc1({{ }}); 4442367SN/A 0x5: suxc1({{ }}); 4452367SN/A 0x7: prefx({{ }}); 4462367SN/A } 4472367SN/A 4482367SN/A 0x3: alnv_ps({{ }}); 4492367SN/A 4502367SN/A 0x4: decode FUNCTION_LO { 4512307SN/A 0x0: madd_s({{ }}); 4522326SN/A 0x1: madd_d({{ }}); 4532367SN/A 0x6: madd_ps({{ }}); 4542307SN/A } 4556221Snate@binkert.org 4566221Snate@binkert.org 0x5: decode FUNCTION_LO { 4572307SN/A 0x0: msub_s({{ }}); 4582307SN/A 0x1: msub_d({{ }}); 4592307SN/A 0x6: msub_ps({{ }}); 4602307SN/A } 4612307SN/A 4622307SN/A 0x6: decode FUNCTION_LO { 4632307SN/A 0x0: nmadd_s({{ }}); 4642307SN/A 0x1: nmadd_d({{ }}); 4652307SN/A 0x6: nmadd_ps({{ }}); 4662307SN/A } 4672307SN/A 4682292SN/A 0x7: decode FUNCTION_LO { 4696221Snate@binkert.org 0x0: nmsub_s({{ }}); 4702292SN/A 0x1: nmsub_d({{ }}); 4712292SN/A 0x6: nmsub_ps({{ }}); 4722292SN/A } 4732292SN/A } 4742292SN/A 4752292SN/A //MIPS obsolete instructions 4762292SN/A 0x4: beql({{ }}); 4772292SN/A 0x5: bnel({{ }}); 4782292SN/A 0x6: blezl({{ }}); 4792292SN/A 0x7: bgtzl({{ }}); 4802292SN/A }; 4812292SN/A 4822292SN/A 0x3: decode OPCODE_LO default FailUnimpl::reserved(){ 4832292SN/A 4843867Sbinkertn@umich.edu //Table A-5 MIPS32 SPECIAL2 Encoding of Function Field 4852292SN/A 0x4: decode FUNCTION_HI { 4866221Snate@binkert.org 4876221Snate@binkert.org 0x0: decode FUNCTION_LO { 4882292SN/A 0x0: madd({{ }}); 4893867Sbinkertn@umich.edu 0x1: maddu({{ }}); 4906221Snate@binkert.org 0x2: mult({{ }}); 4913867Sbinkertn@umich.edu 0x4: msub({{ }}); 4922292SN/A 0x5: msubu({{ }}); 4933867Sbinkertn@umich.edu } 4942292SN/A 4953867Sbinkertn@umich.edu 0x4: decode FUNCTION_LO { 4962292SN/A 0x0: clz({{ }}); 4972292SN/A 0x1: clo({{ }}); 4982292SN/A } 4992292SN/A 5002292SN/A 0x7: decode FUNCTION_LO { 5012292SN/A 0x7: sdbbp({{ }}); 5021684SN/A } 5031684SN/A } 5041684SN/A 5051684SN/A //Table A-6 MIPS32 SPECIAL3 Encoding of Function Field for Release 2 of the Architecture 5061684SN/A 0x7: decode FUNCTION_HI { 5071684SN/A 5082292SN/A 0x0: decode FUNCTION_LO { 5092292SN/A 0x1: ext({{ }}); 5106221Snate@binkert.org 0x4: ins({{ }}); 5112292SN/A } 5122292SN/A 5132292SN/A //Table A-10 MIPS32 BSHFL Encoding of sa Field 5142292SN/A 0x4: decode SA { 5151060SN/A 0x02: wsbh({{ }}); 5161060SN/A 0x10: seb({{ }}); 5171061SN/A 0x18: seh({{ }}); 5181060SN/A } 5191060SN/A 5201060SN/A 0x6: decode FUNCTION_LO { 5211060SN/A 0x7: rdhwr({{ }}); 5221060SN/A } 5231060SN/A } 5241060SN/A }; 5251060SN/A 5261060SN/A 0x4: decode OPCODE_LO default FailUnimpl::reserved(){ 5271060SN/A format LoadMemory{ 5281061SN/A 0x0: lb({{ }}); 5292292SN/A 0x1: lh({{ }}); 5306221Snate@binkert.org 0x2: lwl({{ }}); 5312292SN/A 0x3: lw({{ }}); 5322292SN/A 0x4: lbu({{ }}); 5332292SN/A 0x5: lhu({{ }}); 5342292SN/A 0x6: lhu({{ }}); 5352292SN/A }; 5362292SN/A 5372292SN/A 0x7: FailUnimpl::reserved({{ }}); 5382292SN/A }; 5392292SN/A 5402292SN/A 0x5: decode OPCODE_LO default FailUnimpl::reserved(){ 5412292SN/A format StoreMemory{ 5422292SN/A 0x0: sb({{ }}); 5432292SN/A 0x1: sh({{ }}); 5442292SN/A 0x2: swl({{ }}); 5452292SN/A 0x3: sw({{ }}); 5462292SN/A 0x6: swr({{ }}); 5472292SN/A }; 5482292SN/A 5492292SN/A format FailUnimpl{ 5502292SN/A 0x4: reserved({{ }}); 5512292SN/A 0x5: reserved({{ }}); 5522292SN/A 0x7: cache({{ }}); 5532292SN/A }; 5542292SN/A 5552292SN/A }; 5562292SN/A 5571060SN/A 0x6: decode OPCODE_LO default FailUnimpl::reserved(){ 5581061SN/A format LoadMemory{ 5591060SN/A 0x0: ll({{ }}); 5607897Shestness@cs.utexas.edu 0x1: lwc1({{ }}); 5611060SN/A 0x5: ldc1({{ }}); 5621060SN/A }; 5631060SN/A }; 5647720Sgblack@eecs.umich.edu 5657720Sgblack@eecs.umich.edu 0x7: decode OPCODE_LO default FailUnimpl::reserved(){ 5661060SN/A format StoreMemory{ 5671060SN/A 0x0: sc({{ }}); 5681060SN/A 0x1: swc1({{ }}); 5692292SN/A 0x5: sdc1({{ }}); 5701060SN/A }; 5712064SN/A 5721060SN/A } 5732292SN/A} 5741060SN/A 5751060SN/A 5761060SN/A