misc.hh revision 10418
17202Sgblack@eecs.umich.edu/*
210037SARM gem5 Developers * Copyright (c) 2010, 2012-2013 ARM Limited
37202Sgblack@eecs.umich.edu * All rights reserved
47202Sgblack@eecs.umich.edu *
57202Sgblack@eecs.umich.edu * The license below extends only to copyright in the software and shall
67202Sgblack@eecs.umich.edu * not be construed as granting a license to any other intellectual
77202Sgblack@eecs.umich.edu * property including but not limited to intellectual property relating
87202Sgblack@eecs.umich.edu * to a hardware implementation of the functionality of the software
97202Sgblack@eecs.umich.edu * licensed hereunder.  You may use the software subject to the license
107202Sgblack@eecs.umich.edu * terms below provided that you ensure that this notice is replicated
117202Sgblack@eecs.umich.edu * unmodified and in its entirety in all distributions of the software,
127202Sgblack@eecs.umich.edu * modified or unmodified, in source code or in binary form.
137202Sgblack@eecs.umich.edu *
147202Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without
157202Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are
167202Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright
177202Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer;
187202Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright
197202Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the
207202Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution;
217202Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its
227202Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from
237202Sgblack@eecs.umich.edu * this software without specific prior written permission.
247202Sgblack@eecs.umich.edu *
257202Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
267202Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
277202Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
287202Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
297202Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
307202Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
317202Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
327202Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
337202Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
347202Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
357202Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
367202Sgblack@eecs.umich.edu *
377202Sgblack@eecs.umich.edu * Authors: Gabe Black
387202Sgblack@eecs.umich.edu */
397202Sgblack@eecs.umich.edu
407202Sgblack@eecs.umich.edu#ifndef __ARCH_ARM_INSTS_MISC_HH__
417202Sgblack@eecs.umich.edu#define __ARCH_ARM_INSTS_MISC_HH__
427202Sgblack@eecs.umich.edu
437202Sgblack@eecs.umich.edu#include "arch/arm/insts/pred_inst.hh"
447202Sgblack@eecs.umich.edu
457202Sgblack@eecs.umich.educlass MrsOp : public PredOp
467202Sgblack@eecs.umich.edu{
477202Sgblack@eecs.umich.edu  protected:
487202Sgblack@eecs.umich.edu    IntRegIndex dest;
497202Sgblack@eecs.umich.edu
507202Sgblack@eecs.umich.edu    MrsOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
517202Sgblack@eecs.umich.edu            IntRegIndex _dest) :
527202Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass), dest(_dest)
537202Sgblack@eecs.umich.edu    {}
547202Sgblack@eecs.umich.edu
557202Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
567202Sgblack@eecs.umich.edu};
577202Sgblack@eecs.umich.edu
587202Sgblack@eecs.umich.educlass MsrBase : public PredOp
597202Sgblack@eecs.umich.edu{
607202Sgblack@eecs.umich.edu  protected:
617202Sgblack@eecs.umich.edu    uint8_t byteMask;
627202Sgblack@eecs.umich.edu
637202Sgblack@eecs.umich.edu    MsrBase(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
647202Sgblack@eecs.umich.edu            uint8_t _byteMask) :
657202Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass), byteMask(_byteMask)
667202Sgblack@eecs.umich.edu    {}
677202Sgblack@eecs.umich.edu
687202Sgblack@eecs.umich.edu    void printMsrBase(std::ostream &os) const;
697202Sgblack@eecs.umich.edu};
707202Sgblack@eecs.umich.edu
717202Sgblack@eecs.umich.educlass MsrImmOp : public MsrBase
727202Sgblack@eecs.umich.edu{
737202Sgblack@eecs.umich.edu  protected:
747202Sgblack@eecs.umich.edu    uint32_t imm;
757202Sgblack@eecs.umich.edu
767202Sgblack@eecs.umich.edu    MsrImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
777202Sgblack@eecs.umich.edu             uint32_t _imm, uint8_t _byteMask) :
787202Sgblack@eecs.umich.edu        MsrBase(mnem, _machInst, __opClass, _byteMask), imm(_imm)
797202Sgblack@eecs.umich.edu    {}
807202Sgblack@eecs.umich.edu
817202Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
827202Sgblack@eecs.umich.edu};
837202Sgblack@eecs.umich.edu
847202Sgblack@eecs.umich.educlass MsrRegOp : public MsrBase
857202Sgblack@eecs.umich.edu{
867202Sgblack@eecs.umich.edu  protected:
877202Sgblack@eecs.umich.edu    IntRegIndex op1;
887202Sgblack@eecs.umich.edu
897202Sgblack@eecs.umich.edu    MsrRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
907202Sgblack@eecs.umich.edu             IntRegIndex _op1, uint8_t _byteMask) :
917202Sgblack@eecs.umich.edu        MsrBase(mnem, _machInst, __opClass, _byteMask), op1(_op1)
927202Sgblack@eecs.umich.edu    {}
937202Sgblack@eecs.umich.edu
947202Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
957202Sgblack@eecs.umich.edu};
967202Sgblack@eecs.umich.edu
9710037SARM gem5 Developersclass MrrcOp : public PredOp
9810037SARM gem5 Developers{
9910037SARM gem5 Developers  protected:
10010037SARM gem5 Developers    IntRegIndex op1;
10110037SARM gem5 Developers    IntRegIndex dest;
10210037SARM gem5 Developers    IntRegIndex dest2;
10310037SARM gem5 Developers    uint32_t    imm;
10410037SARM gem5 Developers
10510037SARM gem5 Developers    MrrcOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
10610037SARM gem5 Developers           IntRegIndex _op1, IntRegIndex _dest, IntRegIndex _dest2,
10710037SARM gem5 Developers           uint32_t _imm) :
10810037SARM gem5 Developers        PredOp(mnem, _machInst, __opClass), op1(_op1), dest(_dest),
10910037SARM gem5 Developers        dest2(_dest2), imm(_imm)
11010037SARM gem5 Developers    {}
11110037SARM gem5 Developers
11210037SARM gem5 Developers    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
11310037SARM gem5 Developers};
11410037SARM gem5 Developers
11510037SARM gem5 Developersclass McrrOp : public PredOp
11610037SARM gem5 Developers{
11710037SARM gem5 Developers  protected:
11810037SARM gem5 Developers    IntRegIndex op1;
11910037SARM gem5 Developers    IntRegIndex op2;
12010037SARM gem5 Developers    IntRegIndex dest;
12110037SARM gem5 Developers    uint32_t    imm;
12210037SARM gem5 Developers
12310037SARM gem5 Developers    McrrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
12410037SARM gem5 Developers           IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _dest,
12510037SARM gem5 Developers           uint32_t _imm) :
12610037SARM gem5 Developers        PredOp(mnem, _machInst, __opClass), op1(_op1), op2(_op2),
12710037SARM gem5 Developers        dest(_dest), imm(_imm)
12810037SARM gem5 Developers    {}
12910037SARM gem5 Developers
13010037SARM gem5 Developers    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
13110037SARM gem5 Developers};
13210037SARM gem5 Developers
1337306Sgblack@eecs.umich.educlass ImmOp : public PredOp
1347306Sgblack@eecs.umich.edu{
1357306Sgblack@eecs.umich.edu  protected:
1367330Sgblack@eecs.umich.edu    uint64_t imm;
1377306Sgblack@eecs.umich.edu
1387306Sgblack@eecs.umich.edu    ImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
1397330Sgblack@eecs.umich.edu             uint64_t _imm) :
1407306Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass), imm(_imm)
1417306Sgblack@eecs.umich.edu    {}
1427306Sgblack@eecs.umich.edu
1437306Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
1447306Sgblack@eecs.umich.edu};
1457306Sgblack@eecs.umich.edu
1467332Sgblack@eecs.umich.educlass RegImmOp : public PredOp
1477332Sgblack@eecs.umich.edu{
1487332Sgblack@eecs.umich.edu  protected:
1497332Sgblack@eecs.umich.edu    IntRegIndex dest;
1507332Sgblack@eecs.umich.edu    uint64_t imm;
1517332Sgblack@eecs.umich.edu
1527332Sgblack@eecs.umich.edu    RegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
1537332Sgblack@eecs.umich.edu             IntRegIndex _dest, uint64_t _imm) :
1547332Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass), dest(_dest), imm(_imm)
1557332Sgblack@eecs.umich.edu    {}
1567332Sgblack@eecs.umich.edu
1577332Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
1587332Sgblack@eecs.umich.edu};
1597332Sgblack@eecs.umich.edu
1607261Sgblack@eecs.umich.educlass RegRegOp : public PredOp
1617208Sgblack@eecs.umich.edu{
1627208Sgblack@eecs.umich.edu  protected:
1637208Sgblack@eecs.umich.edu    IntRegIndex dest;
1647208Sgblack@eecs.umich.edu    IntRegIndex op1;
1657208Sgblack@eecs.umich.edu
1667261Sgblack@eecs.umich.edu    RegRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
1677261Sgblack@eecs.umich.edu             IntRegIndex _dest, IntRegIndex _op1) :
1687208Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass), dest(_dest), op1(_op1)
1697208Sgblack@eecs.umich.edu    {}
1707208Sgblack@eecs.umich.edu
1717208Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
1727208Sgblack@eecs.umich.edu};
1737208Sgblack@eecs.umich.edu
1747232Sgblack@eecs.umich.educlass RegImmRegOp : public PredOp
1757225Sgblack@eecs.umich.edu{
1767225Sgblack@eecs.umich.edu  protected:
1777225Sgblack@eecs.umich.edu    IntRegIndex dest;
1787330Sgblack@eecs.umich.edu    uint64_t imm;
1797225Sgblack@eecs.umich.edu    IntRegIndex op1;
1807225Sgblack@eecs.umich.edu
1817232Sgblack@eecs.umich.edu    RegImmRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
1827330Sgblack@eecs.umich.edu                IntRegIndex _dest, uint64_t _imm, IntRegIndex _op1) :
1837225Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass),
1847232Sgblack@eecs.umich.edu        dest(_dest), imm(_imm), op1(_op1)
1857225Sgblack@eecs.umich.edu    {}
1867225Sgblack@eecs.umich.edu
1877225Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
1887225Sgblack@eecs.umich.edu};
1897225Sgblack@eecs.umich.edu
1907233Sgblack@eecs.umich.educlass RegRegRegImmOp : public PredOp
1917233Sgblack@eecs.umich.edu{
1927233Sgblack@eecs.umich.edu  protected:
1937233Sgblack@eecs.umich.edu    IntRegIndex dest;
1947233Sgblack@eecs.umich.edu    IntRegIndex op1;
1957233Sgblack@eecs.umich.edu    IntRegIndex op2;
1967330Sgblack@eecs.umich.edu    uint64_t imm;
1977233Sgblack@eecs.umich.edu
1987233Sgblack@eecs.umich.edu    RegRegRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
1997233Sgblack@eecs.umich.edu                   IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2,
2007330Sgblack@eecs.umich.edu                   uint64_t _imm) :
2017233Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass),
2027233Sgblack@eecs.umich.edu        dest(_dest), op1(_op1), op2(_op2), imm(_imm)
2037233Sgblack@eecs.umich.edu    {}
2047233Sgblack@eecs.umich.edu
2057233Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
2067233Sgblack@eecs.umich.edu};
2077233Sgblack@eecs.umich.edu
2087241Sgblack@eecs.umich.educlass RegRegRegRegOp : public PredOp
2097241Sgblack@eecs.umich.edu{
2107241Sgblack@eecs.umich.edu  protected:
2117241Sgblack@eecs.umich.edu    IntRegIndex dest;
2127241Sgblack@eecs.umich.edu    IntRegIndex op1;
2137241Sgblack@eecs.umich.edu    IntRegIndex op2;
2147241Sgblack@eecs.umich.edu    IntRegIndex op3;
2157241Sgblack@eecs.umich.edu
2167241Sgblack@eecs.umich.edu    RegRegRegRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
2177241Sgblack@eecs.umich.edu                   IntRegIndex _dest, IntRegIndex _op1,
2187241Sgblack@eecs.umich.edu                   IntRegIndex _op2, IntRegIndex _op3) :
2197241Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass),
2207241Sgblack@eecs.umich.edu        dest(_dest), op1(_op1), op2(_op2), op3(_op3)
2217241Sgblack@eecs.umich.edu    {}
2227241Sgblack@eecs.umich.edu
2237241Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
2247241Sgblack@eecs.umich.edu};
2257241Sgblack@eecs.umich.edu
2267238Sgblack@eecs.umich.educlass RegRegRegOp : public PredOp
2277238Sgblack@eecs.umich.edu{
2287238Sgblack@eecs.umich.edu  protected:
2297238Sgblack@eecs.umich.edu    IntRegIndex dest;
2307238Sgblack@eecs.umich.edu    IntRegIndex op1;
2317238Sgblack@eecs.umich.edu    IntRegIndex op2;
2327238Sgblack@eecs.umich.edu
2337238Sgblack@eecs.umich.edu    RegRegRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
2347238Sgblack@eecs.umich.edu                IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2) :
2357238Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass),
2367238Sgblack@eecs.umich.edu        dest(_dest), op1(_op1), op2(_op2)
2377238Sgblack@eecs.umich.edu    {}
2387238Sgblack@eecs.umich.edu
2397238Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
2407238Sgblack@eecs.umich.edu};
2417238Sgblack@eecs.umich.edu
2427331Sgblack@eecs.umich.educlass RegRegImmOp : public PredOp
2437331Sgblack@eecs.umich.edu{
2447331Sgblack@eecs.umich.edu  protected:
2457331Sgblack@eecs.umich.edu    IntRegIndex dest;
2467331Sgblack@eecs.umich.edu    IntRegIndex op1;
2477331Sgblack@eecs.umich.edu    uint64_t imm;
2487331Sgblack@eecs.umich.edu
2497331Sgblack@eecs.umich.edu    RegRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
2507331Sgblack@eecs.umich.edu                IntRegIndex _dest, IntRegIndex _op1,
2517331Sgblack@eecs.umich.edu                uint64_t _imm) :
2527331Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass),
2537331Sgblack@eecs.umich.edu        dest(_dest), op1(_op1), imm(_imm)
2547331Sgblack@eecs.umich.edu    {}
2557331Sgblack@eecs.umich.edu
2567331Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
2577331Sgblack@eecs.umich.edu};
2587331Sgblack@eecs.umich.edu
25910418Sandreas.hansson@arm.comclass MiscRegRegImmOp : public PredOp
26010418Sandreas.hansson@arm.com{
26110418Sandreas.hansson@arm.com  protected:
26210418Sandreas.hansson@arm.com    MiscRegIndex dest;
26310418Sandreas.hansson@arm.com    IntRegIndex op1;
26410418Sandreas.hansson@arm.com    uint64_t imm;
26510418Sandreas.hansson@arm.com
26610418Sandreas.hansson@arm.com    MiscRegRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
26710418Sandreas.hansson@arm.com                    MiscRegIndex _dest, IntRegIndex _op1,
26810418Sandreas.hansson@arm.com                    uint64_t _imm) :
26910418Sandreas.hansson@arm.com        PredOp(mnem, _machInst, __opClass),
27010418Sandreas.hansson@arm.com        dest(_dest), op1(_op1), imm(_imm)
27110418Sandreas.hansson@arm.com    {}
27210418Sandreas.hansson@arm.com
27310418Sandreas.hansson@arm.com    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
27410418Sandreas.hansson@arm.com};
27510418Sandreas.hansson@arm.com
27610418Sandreas.hansson@arm.comclass RegMiscRegImmOp : public PredOp
27710418Sandreas.hansson@arm.com{
27810418Sandreas.hansson@arm.com  protected:
27910418Sandreas.hansson@arm.com    IntRegIndex dest;
28010418Sandreas.hansson@arm.com    MiscRegIndex op1;
28110418Sandreas.hansson@arm.com    uint64_t imm;
28210418Sandreas.hansson@arm.com
28310418Sandreas.hansson@arm.com    RegMiscRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
28410418Sandreas.hansson@arm.com                    IntRegIndex _dest, MiscRegIndex _op1,
28510418Sandreas.hansson@arm.com                    uint64_t _imm) :
28610418Sandreas.hansson@arm.com        PredOp(mnem, _machInst, __opClass),
28710418Sandreas.hansson@arm.com        dest(_dest), op1(_op1), imm(_imm)
28810418Sandreas.hansson@arm.com    {}
28910418Sandreas.hansson@arm.com
29010418Sandreas.hansson@arm.com    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
29110418Sandreas.hansson@arm.com};
29210418Sandreas.hansson@arm.com
29310037SARM gem5 Developersclass RegImmImmOp : public PredOp
29410037SARM gem5 Developers{
29510037SARM gem5 Developers  protected:
29610037SARM gem5 Developers    IntRegIndex dest;
29710037SARM gem5 Developers    IntRegIndex op1;
29810037SARM gem5 Developers    uint64_t imm1;
29910037SARM gem5 Developers    uint64_t imm2;
30010037SARM gem5 Developers
30110037SARM gem5 Developers    RegImmImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
30210037SARM gem5 Developers                IntRegIndex _dest, uint64_t _imm1, uint64_t _imm2) :
30310037SARM gem5 Developers        PredOp(mnem, _machInst, __opClass),
30410037SARM gem5 Developers        dest(_dest), imm1(_imm1), imm2(_imm2)
30510037SARM gem5 Developers    {}
30610037SARM gem5 Developers
30710037SARM gem5 Developers    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
30810037SARM gem5 Developers};
30910037SARM gem5 Developers
3107253Sgblack@eecs.umich.educlass RegRegImmImmOp : public PredOp
3117253Sgblack@eecs.umich.edu{
3127253Sgblack@eecs.umich.edu  protected:
3137253Sgblack@eecs.umich.edu    IntRegIndex dest;
3147253Sgblack@eecs.umich.edu    IntRegIndex op1;
3157330Sgblack@eecs.umich.edu    uint64_t imm1;
3167330Sgblack@eecs.umich.edu    uint64_t imm2;
3177253Sgblack@eecs.umich.edu
3187253Sgblack@eecs.umich.edu    RegRegImmImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
3197253Sgblack@eecs.umich.edu                   IntRegIndex _dest, IntRegIndex _op1,
3207330Sgblack@eecs.umich.edu                   uint64_t _imm1, uint64_t _imm2) :
3217253Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass),
3227253Sgblack@eecs.umich.edu        dest(_dest), op1(_op1), imm1(_imm1), imm2(_imm2)
3237253Sgblack@eecs.umich.edu    {}
3247253Sgblack@eecs.umich.edu
3257253Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
3267253Sgblack@eecs.umich.edu};
3277253Sgblack@eecs.umich.edu
3287232Sgblack@eecs.umich.educlass RegImmRegShiftOp : public PredOp
3297225Sgblack@eecs.umich.edu{
3307225Sgblack@eecs.umich.edu  protected:
3317225Sgblack@eecs.umich.edu    IntRegIndex dest;
3327330Sgblack@eecs.umich.edu    uint64_t imm;
3337225Sgblack@eecs.umich.edu    IntRegIndex op1;
3347225Sgblack@eecs.umich.edu    int32_t shiftAmt;
3357225Sgblack@eecs.umich.edu    ArmShiftType shiftType;
3367225Sgblack@eecs.umich.edu
3377232Sgblack@eecs.umich.edu    RegImmRegShiftOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
3387330Sgblack@eecs.umich.edu                     IntRegIndex _dest, uint64_t _imm, IntRegIndex _op1,
3397232Sgblack@eecs.umich.edu                     int32_t _shiftAmt, ArmShiftType _shiftType) :
3407225Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass),
3417232Sgblack@eecs.umich.edu        dest(_dest), imm(_imm), op1(_op1),
3427225Sgblack@eecs.umich.edu        shiftAmt(_shiftAmt), shiftType(_shiftType)
3437225Sgblack@eecs.umich.edu    {}
3447225Sgblack@eecs.umich.edu
3457225Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
3467225Sgblack@eecs.umich.edu};
3477225Sgblack@eecs.umich.edu
3487409Sgblack@eecs.umich.educlass UnknownOp : public PredOp
3497409Sgblack@eecs.umich.edu{
3507409Sgblack@eecs.umich.edu  protected:
3517409Sgblack@eecs.umich.edu
3527409Sgblack@eecs.umich.edu    UnknownOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass) :
3537409Sgblack@eecs.umich.edu        PredOp(mnem, _machInst, __opClass)
3547409Sgblack@eecs.umich.edu    {}
3557409Sgblack@eecs.umich.edu
3567409Sgblack@eecs.umich.edu    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
3577409Sgblack@eecs.umich.edu};
3587409Sgblack@eecs.umich.edu
3597202Sgblack@eecs.umich.edu#endif
360