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