misc.hh revision 12358:386d26feb00f
12623SN/A/*
210596Sgabeblack@google.com * Copyright (c) 2010, 2012-2013, 2017 ARM Limited
311147Smitch.hayenga@arm.com * All rights reserved
48926Sandreas.hansson@arm.com *
58926Sandreas.hansson@arm.com * The license below extends only to copyright in the software and shall
68926Sandreas.hansson@arm.com * not be construed as granting a license to any other intellectual
78926Sandreas.hansson@arm.com * property including but not limited to intellectual property relating
88926Sandreas.hansson@arm.com * to a hardware implementation of the functionality of the software
98926Sandreas.hansson@arm.com * licensed hereunder.  You may use the software subject to the license
108926Sandreas.hansson@arm.com * terms below provided that you ensure that this notice is replicated
118926Sandreas.hansson@arm.com * unmodified and in its entirety in all distributions of the software,
128926Sandreas.hansson@arm.com * modified or unmodified, in source code or in binary form.
138926Sandreas.hansson@arm.com *
148926Sandreas.hansson@arm.com * Redistribution and use in source and binary forms, with or without
152623SN/A * modification, are permitted provided that the following conditions are
162623SN/A * met: redistributions of source code must retain the above copyright
172623SN/A * notice, this list of conditions and the following disclaimer;
182623SN/A * redistributions in binary form must reproduce the above copyright
192623SN/A * notice, this list of conditions and the following disclaimer in the
202623SN/A * documentation and/or other materials provided with the distribution;
212623SN/A * neither the name of the copyright holders nor the names of its
222623SN/A * contributors may be used to endorse or promote products derived from
232623SN/A * this software without specific prior written permission.
242623SN/A *
252623SN/A * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
262623SN/A * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
272623SN/A * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
282623SN/A * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
292623SN/A * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
302623SN/A * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
312623SN/A * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
322623SN/A * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
332623SN/A * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
342623SN/A * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
352623SN/A * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
362623SN/A *
372623SN/A * Authors: Gabe Black
382623SN/A */
392623SN/A
402665Ssaidi@eecs.umich.edu#ifndef __ARCH_ARM_INSTS_MISC_HH__
412665Ssaidi@eecs.umich.edu#define __ARCH_ARM_INSTS_MISC_HH__
422623SN/A
432623SN/A#include "arch/arm/insts/pred_inst.hh"
443170Sstever@eecs.umich.edu
458105Sgblack@eecs.umich.educlass MrsOp : public PredOp
462623SN/A{
474040Ssaidi@eecs.umich.edu  protected:
489647Sdam.sunwoo@arm.com    IntRegIndex dest;
496658Snate@binkert.org
508229Snate@binkert.org    MrsOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
512623SN/A            IntRegIndex _dest) :
529443SAndreas.Sandberg@ARM.com        PredOp(mnem, _machInst, __opClass), dest(_dest)
538232Snate@binkert.org    {}
548232Snate@binkert.org
553348Sbinkertn@umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
563348Sbinkertn@umich.edu};
578926Sandreas.hansson@arm.com
584762Snate@binkert.orgclass MsrBase : public PredOp
597678Sgblack@eecs.umich.edu{
602901Ssaidi@eecs.umich.edu  protected:
618779Sgblack@eecs.umich.edu    uint8_t byteMask;
622623SN/A
632623SN/A    MsrBase(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
642623SN/A            uint8_t _byteMask) :
652623SN/A        PredOp(mnem, _machInst, __opClass), byteMask(_byteMask)
662623SN/A    {}
675606Snate@binkert.org
682623SN/A    void printMsrBase(std::ostream &os) const;
692623SN/A};
702623SN/A
712623SN/Aclass MsrImmOp : public MsrBase
722623SN/A{
732623SN/A  protected:
742623SN/A    uint32_t imm;
752623SN/A
762623SN/A    MsrImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
772623SN/A             uint32_t _imm, uint8_t _byteMask) :
782623SN/A        MsrBase(mnem, _machInst, __opClass, _byteMask), imm(_imm)
795336Shines@cs.fsu.edu    {}
802623SN/A
814873Sstever@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
822623SN/A};
832623SN/A
842623SN/Aclass MsrRegOp : public MsrBase
852623SN/A{
862623SN/A  protected:
8711147Smitch.hayenga@arm.com    IntRegIndex op1;
888921Sandreas.hansson@arm.com
8911147Smitch.hayenga@arm.com    MsrRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
9011147Smitch.hayenga@arm.com             IntRegIndex _op1, uint8_t _byteMask) :
9111147Smitch.hayenga@arm.com        MsrBase(mnem, _machInst, __opClass, _byteMask), op1(_op1)
922623SN/A    {}
932623SN/A
945529Snate@binkert.org    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
956078Sgblack@eecs.umich.edu};
965487Snate@binkert.org
975487Snate@binkert.orgclass MrrcOp : public PredOp
989095Sandreas.hansson@arm.com{
999095Sandreas.hansson@arm.com  protected:
10010537Sandreas.hansson@arm.com    MiscRegIndex op1;
10110537Sandreas.hansson@arm.com    IntRegIndex dest;
1022623SN/A    IntRegIndex dest2;
1032623SN/A    uint32_t    imm;
1042623SN/A
1052623SN/A    MrrcOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
1062623SN/A           MiscRegIndex _op1, IntRegIndex _dest, IntRegIndex _dest2,
1072623SN/A           uint32_t _imm) :
1082623SN/A        PredOp(mnem, _machInst, __opClass), op1(_op1), dest(_dest),
1096775SBrad.Beckmann@amd.com        dest2(_dest2), imm(_imm)
1106775SBrad.Beckmann@amd.com    {}
1116775SBrad.Beckmann@amd.com
1122623SN/A    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
1132623SN/A};
11410913Sandreas.sandberg@arm.com
11510913Sandreas.sandberg@arm.comclass McrrOp : public PredOp
1162623SN/A{
1179448SAndreas.Sandberg@ARM.com  protected:
11810913Sandreas.sandberg@arm.com    IntRegIndex op1;
1192623SN/A    IntRegIndex op2;
1209443SAndreas.Sandberg@ARM.com    MiscRegIndex dest;
12111147Smitch.hayenga@arm.com    uint32_t    imm;
12210913Sandreas.sandberg@arm.com
1239443SAndreas.Sandberg@ARM.com    McrrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
1249443SAndreas.Sandberg@ARM.com           IntRegIndex _op1, IntRegIndex _op2, MiscRegIndex _dest,
1259443SAndreas.Sandberg@ARM.com           uint32_t _imm) :
1262915Sktlim@umich.edu        PredOp(mnem, _machInst, __opClass), op1(_op1), op2(_op2),
12711147Smitch.hayenga@arm.com        dest(_dest), imm(_imm)
1289443SAndreas.Sandberg@ARM.com    {}
12910913Sandreas.sandberg@arm.com
1309443SAndreas.Sandberg@ARM.com    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
1319342SAndreas.Sandberg@arm.com};
1329342SAndreas.Sandberg@arm.com
1332915Sktlim@umich.educlass ImmOp : public PredOp
1349342SAndreas.Sandberg@arm.com{
1352915Sktlim@umich.edu  protected:
1369448SAndreas.Sandberg@ARM.com    uint64_t imm;
1379448SAndreas.Sandberg@ARM.com
1385220Ssaidi@eecs.umich.edu    ImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
1395220Ssaidi@eecs.umich.edu             uint64_t _imm) :
1404940Snate@binkert.org        PredOp(mnem, _machInst, __opClass), imm(_imm)
1419523SAndreas.Sandberg@ARM.com    {}
1423324Shsul@eecs.umich.edu
1439448SAndreas.Sandberg@ARM.com    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
1449448SAndreas.Sandberg@ARM.com};
14511147Smitch.hayenga@arm.com
14611147Smitch.hayenga@arm.comclass RegImmOp : public PredOp
14711147Smitch.hayenga@arm.com{
14811147Smitch.hayenga@arm.com  protected:
14911147Smitch.hayenga@arm.com    IntRegIndex dest;
15011147Smitch.hayenga@arm.com    uint64_t imm;
15111147Smitch.hayenga@arm.com
15211147Smitch.hayenga@arm.com    RegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
15311147Smitch.hayenga@arm.com             IntRegIndex _dest, uint64_t _imm) :
15411147Smitch.hayenga@arm.com        PredOp(mnem, _machInst, __opClass), dest(_dest), imm(_imm)
15511147Smitch.hayenga@arm.com    {}
15611147Smitch.hayenga@arm.com
15711147Smitch.hayenga@arm.com    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
15811147Smitch.hayenga@arm.com};
15911147Smitch.hayenga@arm.com
1609448SAndreas.Sandberg@ARM.comclass RegRegOp : public PredOp
1612623SN/A{
1622623SN/A  protected:
1639443SAndreas.Sandberg@ARM.com    IntRegIndex dest;
1649443SAndreas.Sandberg@ARM.com    IntRegIndex op1;
1659443SAndreas.Sandberg@ARM.com
16610913Sandreas.sandberg@arm.com    RegRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
1679443SAndreas.Sandberg@ARM.com             IntRegIndex _dest, IntRegIndex _op1) :
1689443SAndreas.Sandberg@ARM.com        PredOp(mnem, _machInst, __opClass), dest(_dest), op1(_op1)
16911147Smitch.hayenga@arm.com    {}
1709443SAndreas.Sandberg@ARM.com
1719443SAndreas.Sandberg@ARM.com    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
1729443SAndreas.Sandberg@ARM.com};
1739443SAndreas.Sandberg@ARM.com
17410913Sandreas.sandberg@arm.comclass RegImmRegOp : public PredOp
1759443SAndreas.Sandberg@ARM.com{
1769443SAndreas.Sandberg@ARM.com  protected:
1779443SAndreas.Sandberg@ARM.com    IntRegIndex dest;
1789443SAndreas.Sandberg@ARM.com    uint64_t imm;
1799443SAndreas.Sandberg@ARM.com    IntRegIndex op1;
1802623SN/A
1812798Sktlim@umich.edu    RegImmRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
1822623SN/A                IntRegIndex _dest, uint64_t _imm, IntRegIndex _op1) :
1839429SAndreas.Sandberg@ARM.com        PredOp(mnem, _machInst, __opClass),
1849429SAndreas.Sandberg@ARM.com        dest(_dest), imm(_imm), op1(_op1)
1859443SAndreas.Sandberg@ARM.com    {}
1869342SAndreas.Sandberg@arm.com
1879443SAndreas.Sandberg@ARM.com    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
1882623SN/A};
1892623SN/A
1902623SN/Aclass RegRegRegImmOp : public PredOp
1912623SN/A{
1922623SN/A  protected:
1932623SN/A    IntRegIndex dest;
1949429SAndreas.Sandberg@ARM.com    IntRegIndex op1;
1952623SN/A    IntRegIndex op2;
1969443SAndreas.Sandberg@ARM.com    uint64_t imm;
1972623SN/A
1982623SN/A    RegRegRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
1992623SN/A                   IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2,
2009523SAndreas.Sandberg@ARM.com                   uint64_t _imm) :
2019523SAndreas.Sandberg@ARM.com        PredOp(mnem, _machInst, __opClass),
2029523SAndreas.Sandberg@ARM.com        dest(_dest), op1(_op1), op2(_op2), imm(_imm)
2039524SAndreas.Sandberg@ARM.com    {}
2049523SAndreas.Sandberg@ARM.com
2059523SAndreas.Sandberg@ARM.com    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
2069523SAndreas.Sandberg@ARM.com};
2079523SAndreas.Sandberg@ARM.com
2082623SN/Aclass RegRegRegRegOp : public PredOp
2092623SN/A{
21010407Smitch.hayenga@arm.com  protected:
2112623SN/A    IntRegIndex dest;
21210407Smitch.hayenga@arm.com    IntRegIndex op1;
2134940Snate@binkert.org    IntRegIndex op2;
21411147Smitch.hayenga@arm.com    IntRegIndex op3;
2152623SN/A
21611147Smitch.hayenga@arm.com    RegRegRegRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
21711147Smitch.hayenga@arm.com                   IntRegIndex _dest, IntRegIndex _op1,
21811147Smitch.hayenga@arm.com                   IntRegIndex _op2, IntRegIndex _op3) :
21910464SAndreas.Sandberg@ARM.com        PredOp(mnem, _machInst, __opClass),
22010464SAndreas.Sandberg@ARM.com        dest(_dest), op1(_op1), op2(_op2), op3(_op3)
2213686Sktlim@umich.edu    {}
22211147Smitch.hayenga@arm.com
22311147Smitch.hayenga@arm.com    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
22411147Smitch.hayenga@arm.com};
22511147Smitch.hayenga@arm.com
2269342SAndreas.Sandberg@arm.comclass RegRegRegOp : public PredOp
22711147Smitch.hayenga@arm.com{
22811147Smitch.hayenga@arm.com  protected:
22911147Smitch.hayenga@arm.com    IntRegIndex dest;
23011147Smitch.hayenga@arm.com    IntRegIndex op1;
2312623SN/A    IntRegIndex op2;
2322623SN/A
2332623SN/A    RegRegRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
2342623SN/A                IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2) :
2358737Skoansin.tan@gmail.com        PredOp(mnem, _machInst, __opClass),
2362623SN/A        dest(_dest), op1(_op1), op2(_op2)
2374940Snate@binkert.org    {}
2384940Snate@binkert.org
23911147Smitch.hayenga@arm.com    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
24011147Smitch.hayenga@arm.com};
2412623SN/A
2426043Sgblack@eecs.umich.educlass RegRegImmOp : public PredOp
2436043Sgblack@eecs.umich.edu{
2446043Sgblack@eecs.umich.edu  protected:
2459342SAndreas.Sandberg@arm.com    IntRegIndex dest;
2462626SN/A    IntRegIndex op1;
24711147Smitch.hayenga@arm.com    uint64_t imm;
2482623SN/A
24911147Smitch.hayenga@arm.com    RegRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
25011147Smitch.hayenga@arm.com                IntRegIndex _dest, IntRegIndex _op1,
25111147Smitch.hayenga@arm.com                uint64_t _imm) :
25211147Smitch.hayenga@arm.com        PredOp(mnem, _machInst, __opClass),
25311147Smitch.hayenga@arm.com        dest(_dest), op1(_op1), imm(_imm)
25411147Smitch.hayenga@arm.com    {}
25511147Smitch.hayenga@arm.com
25611147Smitch.hayenga@arm.com    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
2572623SN/A};
2582623SN/A
2592623SN/Aclass MiscRegRegImmOp : public PredOp
26010030SAli.Saidi@ARM.com{
26110030SAli.Saidi@ARM.com  protected:
26210030SAli.Saidi@ARM.com    MiscRegIndex dest;
26310030SAli.Saidi@ARM.com    IntRegIndex op1;
26410030SAli.Saidi@ARM.com    uint64_t imm;
26510030SAli.Saidi@ARM.com
26610529Smorr@cs.wisc.edu    MiscRegRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
26710529Smorr@cs.wisc.edu                    MiscRegIndex _dest, IntRegIndex _op1,
26811147Smitch.hayenga@arm.com                    uint64_t _imm) :
26910529Smorr@cs.wisc.edu        PredOp(mnem, _machInst, __opClass),
27010529Smorr@cs.wisc.edu        dest(_dest), op1(_op1), imm(_imm)
27110529Smorr@cs.wisc.edu    {}
27210030SAli.Saidi@ARM.com
27310030SAli.Saidi@ARM.com    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
27410030SAli.Saidi@ARM.com};
27510030SAli.Saidi@ARM.com
27611147Smitch.hayenga@arm.comclass RegMiscRegImmOp : public PredOp
27711147Smitch.hayenga@arm.com{
27811147Smitch.hayenga@arm.com  protected:
27910030SAli.Saidi@ARM.com    IntRegIndex dest;
28010030SAli.Saidi@ARM.com    MiscRegIndex op1;
28110030SAli.Saidi@ARM.com    uint64_t imm;
28210030SAli.Saidi@ARM.com
28310030SAli.Saidi@ARM.com    RegMiscRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
28410030SAli.Saidi@ARM.com                    IntRegIndex _dest, MiscRegIndex _op1,
28510030SAli.Saidi@ARM.com                    uint64_t _imm) :
28610030SAli.Saidi@ARM.com        PredOp(mnem, _machInst, __opClass),
28710030SAli.Saidi@ARM.com        dest(_dest), op1(_op1), imm(_imm)
28810030SAli.Saidi@ARM.com    {}
28910030SAli.Saidi@ARM.com
29010529Smorr@cs.wisc.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
29110529Smorr@cs.wisc.edu};
29211147Smitch.hayenga@arm.com
29310529Smorr@cs.wisc.educlass RegImmImmOp : public PredOp
29410529Smorr@cs.wisc.edu{
29510529Smorr@cs.wisc.edu  protected:
29610030SAli.Saidi@ARM.com    IntRegIndex dest;
29710030SAli.Saidi@ARM.com    uint64_t imm1;
29810030SAli.Saidi@ARM.com    uint64_t imm2;
29910030SAli.Saidi@ARM.com
30011147Smitch.hayenga@arm.com    RegImmImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
30111147Smitch.hayenga@arm.com                IntRegIndex _dest, uint64_t _imm1, uint64_t _imm2) :
30211147Smitch.hayenga@arm.com        PredOp(mnem, _machInst, __opClass),
30310030SAli.Saidi@ARM.com        dest(_dest), imm1(_imm1), imm2(_imm2)
30410030SAli.Saidi@ARM.com    {}
30510030SAli.Saidi@ARM.com
3062623SN/A    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
3078444Sgblack@eecs.umich.edu};
3088444Sgblack@eecs.umich.edu
3092623SN/Aclass RegRegImmImmOp : public PredOp
31011147Smitch.hayenga@arm.com{
31111147Smitch.hayenga@arm.com  protected:
31211147Smitch.hayenga@arm.com    IntRegIndex dest;
3133169Sstever@eecs.umich.edu    IntRegIndex op1;
3144870Sstever@eecs.umich.edu    uint64_t imm1;
3152623SN/A    uint64_t imm2;
31610665SAli.Saidi@ARM.com
31710665SAli.Saidi@ARM.com    RegRegImmImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
3182623SN/A                   IntRegIndex _dest, IntRegIndex _op1,
3194999Sgblack@eecs.umich.edu                   uint64_t _imm1, uint64_t _imm2) :
3207520Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass),
3212623SN/A        dest(_dest), op1(_op1), imm1(_imm1), imm2(_imm2)
3224999Sgblack@eecs.umich.edu    {}
3234999Sgblack@eecs.umich.edu
3249814Sandreas.hansson@arm.com    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
3254999Sgblack@eecs.umich.edu};
3267520Sgblack@eecs.umich.edu
3277520Sgblack@eecs.umich.educlass RegImmRegShiftOp : public PredOp
3284999Sgblack@eecs.umich.edu{
3294999Sgblack@eecs.umich.edu  protected:
3304999Sgblack@eecs.umich.edu    IntRegIndex dest;
33110024Sdam.sunwoo@arm.com    uint64_t imm;
3327520Sgblack@eecs.umich.edu    IntRegIndex op1;
3338832SAli.Saidi@ARM.com    int32_t shiftAmt;
3344999Sgblack@eecs.umich.edu    ArmShiftType shiftType;
3354999Sgblack@eecs.umich.edu
33611147Smitch.hayenga@arm.com    RegImmRegShiftOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
33711147Smitch.hayenga@arm.com                     IntRegIndex _dest, uint64_t _imm, IntRegIndex _op1,
3384999Sgblack@eecs.umich.edu                     int32_t _shiftAmt, ArmShiftType _shiftType) :
3394999Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass),
3406623Sgblack@eecs.umich.edu        dest(_dest), imm(_imm), op1(_op1),
34110739Ssteve.reinhardt@amd.com        shiftAmt(_shiftAmt), shiftType(_shiftType)
3427520Sgblack@eecs.umich.edu    {}
3434999Sgblack@eecs.umich.edu
3448105Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
3454999Sgblack@eecs.umich.edu};
3464999Sgblack@eecs.umich.edu
3478931Sandreas.hansson@arm.comclass MiscRegRegImmMemOp : public PredOp
3488931Sandreas.hansson@arm.com{
3494999Sgblack@eecs.umich.edu  protected:
3504999Sgblack@eecs.umich.edu    MiscRegIndex dest;
3514999Sgblack@eecs.umich.edu    IntRegIndex op1;
3524999Sgblack@eecs.umich.edu    uint64_t imm;
3535012Sgblack@eecs.umich.edu
3544999Sgblack@eecs.umich.edu    MiscRegRegImmMemOp(const char *mnem, ExtMachInst _machInst,
3554999Sgblack@eecs.umich.edu                       OpClass __opClass, MiscRegIndex _dest, IntRegIndex _op1,
3566102Sgblack@eecs.umich.edu                       uint64_t _imm) :
3574999Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass),
3584999Sgblack@eecs.umich.edu        dest(_dest), op1(_op1), imm(_imm)
3594968Sacolyte@umich.edu    {}
3604986Ssaidi@eecs.umich.edu
3614999Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
3626739Sgblack@eecs.umich.edu};
3636739Sgblack@eecs.umich.edu
3646739Sgblack@eecs.umich.educlass UnknownOp : public PredOp
3656739Sgblack@eecs.umich.edu{
3666739Sgblack@eecs.umich.edu  protected:
3676739Sgblack@eecs.umich.edu
3686739Sgblack@eecs.umich.edu    UnknownOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass) :
3696739Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass)
3704999Sgblack@eecs.umich.edu    {}
3714999Sgblack@eecs.umich.edu
3724999Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
37310760Ssteve.reinhardt@amd.com};
3746078Sgblack@eecs.umich.edu
3756078Sgblack@eecs.umich.edu#endif
3766078Sgblack@eecs.umich.edu