misc.hh revision 12504
15409Sgblack@eecs.umich.edu/* 24519Sgblack@eecs.umich.edu * Copyright (c) 2010, 2012-2013, 2017-2018 ARM Limited 34519Sgblack@eecs.umich.edu * All rights reserved 44519Sgblack@eecs.umich.edu * 54519Sgblack@eecs.umich.edu * The license below extends only to copyright in the software and shall 64519Sgblack@eecs.umich.edu * not be construed as granting a license to any other intellectual 74519Sgblack@eecs.umich.edu * property including but not limited to intellectual property relating 84519Sgblack@eecs.umich.edu * to a hardware implementation of the functionality of the software 94519Sgblack@eecs.umich.edu * licensed hereunder. You may use the software subject to the license 104519Sgblack@eecs.umich.edu * terms below provided that you ensure that this notice is replicated 114519Sgblack@eecs.umich.edu * unmodified and in its entirety in all distributions of the software, 124519Sgblack@eecs.umich.edu * modified or unmodified, in source code or in binary form. 134519Sgblack@eecs.umich.edu * 144519Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without 154519Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are 164519Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright 174519Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer; 184519Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright 194519Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the 204519Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution; 214519Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its 224519Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from 234519Sgblack@eecs.umich.edu * this software without specific prior written permission. 244519Sgblack@eecs.umich.edu * 254519Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 264519Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 274519Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 284519Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 294519Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 304519Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 314519Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 324519Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 334519Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 344519Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 354519Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 364519Sgblack@eecs.umich.edu * 374519Sgblack@eecs.umich.edu * Authors: Gabe Black 384519Sgblack@eecs.umich.edu */ 394519Sgblack@eecs.umich.edu 404519Sgblack@eecs.umich.edu#ifndef __ARCH_ARM_INSTS_MISC_HH__ 414519Sgblack@eecs.umich.edu#define __ARCH_ARM_INSTS_MISC_HH__ 424519Sgblack@eecs.umich.edu 434519Sgblack@eecs.umich.edu#include "arch/arm/insts/pred_inst.hh" 444519Sgblack@eecs.umich.edu 454519Sgblack@eecs.umich.educlass MrsOp : public PredOp 464519Sgblack@eecs.umich.edu{ 474519Sgblack@eecs.umich.edu protected: 484519Sgblack@eecs.umich.edu IntRegIndex dest; 494519Sgblack@eecs.umich.edu 504519Sgblack@eecs.umich.edu MrsOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 514519Sgblack@eecs.umich.edu IntRegIndex _dest) : 524519Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), dest(_dest) 534519Sgblack@eecs.umich.edu {} 544519Sgblack@eecs.umich.edu 554519Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 564519Sgblack@eecs.umich.edu}; 574519Sgblack@eecs.umich.edu 584519Sgblack@eecs.umich.educlass MsrBase : public PredOp 594519Sgblack@eecs.umich.edu{ 604519Sgblack@eecs.umich.edu protected: 614519Sgblack@eecs.umich.edu uint8_t byteMask; 624519Sgblack@eecs.umich.edu 634519Sgblack@eecs.umich.edu MsrBase(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 644519Sgblack@eecs.umich.edu uint8_t _byteMask) : 654519Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), byteMask(_byteMask) 664519Sgblack@eecs.umich.edu {} 674519Sgblack@eecs.umich.edu 684809Sgblack@eecs.umich.edu void printMsrBase(std::ostream &os) const; 694519Sgblack@eecs.umich.edu}; 704519Sgblack@eecs.umich.edu 714688Sgblack@eecs.umich.educlass MsrImmOp : public MsrBase 724688Sgblack@eecs.umich.edu{ 734688Sgblack@eecs.umich.edu protected: 744688Sgblack@eecs.umich.edu uint32_t imm; 754688Sgblack@eecs.umich.edu 764688Sgblack@eecs.umich.edu MsrImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 774708Sgblack@eecs.umich.edu uint32_t _imm, uint8_t _byteMask) : 784708Sgblack@eecs.umich.edu MsrBase(mnem, _machInst, __opClass, _byteMask), imm(_imm) 794708Sgblack@eecs.umich.edu {} 804708Sgblack@eecs.umich.edu 814519Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 824519Sgblack@eecs.umich.edu}; 834519Sgblack@eecs.umich.edu 844519Sgblack@eecs.umich.educlass MsrRegOp : public MsrBase 854519Sgblack@eecs.umich.edu{ 864519Sgblack@eecs.umich.edu protected: 874519Sgblack@eecs.umich.edu IntRegIndex op1; 884519Sgblack@eecs.umich.edu 894519Sgblack@eecs.umich.edu MsrRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 904519Sgblack@eecs.umich.edu IntRegIndex _op1, uint8_t _byteMask) : 914519Sgblack@eecs.umich.edu MsrBase(mnem, _machInst, __opClass, _byteMask), op1(_op1) 924951Sgblack@eecs.umich.edu {} 934519Sgblack@eecs.umich.edu 944519Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 954519Sgblack@eecs.umich.edu}; 964519Sgblack@eecs.umich.edu 974519Sgblack@eecs.umich.educlass MrrcOp : public PredOp 984519Sgblack@eecs.umich.edu{ 994688Sgblack@eecs.umich.edu protected: 1004688Sgblack@eecs.umich.edu MiscRegIndex op1; 1014688Sgblack@eecs.umich.edu IntRegIndex dest; 1024688Sgblack@eecs.umich.edu IntRegIndex dest2; 1034688Sgblack@eecs.umich.edu uint32_t imm; 1044688Sgblack@eecs.umich.edu 1054708Sgblack@eecs.umich.edu MrrcOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 1064708Sgblack@eecs.umich.edu MiscRegIndex _op1, IntRegIndex _dest, IntRegIndex _dest2, 1074708Sgblack@eecs.umich.edu uint32_t _imm) : 1084708Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), op1(_op1), dest(_dest), 1094519Sgblack@eecs.umich.edu dest2(_dest2), imm(_imm) 1104519Sgblack@eecs.umich.edu {} 1114519Sgblack@eecs.umich.edu 1124519Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 1134519Sgblack@eecs.umich.edu}; 1144519Sgblack@eecs.umich.edu 1154519Sgblack@eecs.umich.educlass McrrOp : public PredOp 1164519Sgblack@eecs.umich.edu{ 1174519Sgblack@eecs.umich.edu protected: 1184519Sgblack@eecs.umich.edu IntRegIndex op1; 1194519Sgblack@eecs.umich.edu IntRegIndex op2; 1204519Sgblack@eecs.umich.edu MiscRegIndex dest; 1214519Sgblack@eecs.umich.edu uint32_t imm; 1224519Sgblack@eecs.umich.edu 1234519Sgblack@eecs.umich.edu McrrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 1244519Sgblack@eecs.umich.edu IntRegIndex _op1, IntRegIndex _op2, MiscRegIndex _dest, 1254519Sgblack@eecs.umich.edu uint32_t _imm) : 1264519Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), op1(_op1), op2(_op2), 1274519Sgblack@eecs.umich.edu dest(_dest), imm(_imm) 1284519Sgblack@eecs.umich.edu {} 1294519Sgblack@eecs.umich.edu 1304712Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 1314519Sgblack@eecs.umich.edu}; 1324519Sgblack@eecs.umich.edu 1334519Sgblack@eecs.umich.educlass ImmOp : public PredOp 1344519Sgblack@eecs.umich.edu{ 1354712Sgblack@eecs.umich.edu protected: 1364519Sgblack@eecs.umich.edu uint64_t imm; 1374519Sgblack@eecs.umich.edu 1384519Sgblack@eecs.umich.edu ImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 1394519Sgblack@eecs.umich.edu uint64_t _imm) : 1404519Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), imm(_imm) 1414519Sgblack@eecs.umich.edu {} 1424519Sgblack@eecs.umich.edu 1434951Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 1444519Sgblack@eecs.umich.edu}; 1454519Sgblack@eecs.umich.edu 1464519Sgblack@eecs.umich.educlass RegImmOp : public PredOp 1474519Sgblack@eecs.umich.edu{ 1484519Sgblack@eecs.umich.edu protected: 1494951Sgblack@eecs.umich.edu IntRegIndex dest; 1504519Sgblack@eecs.umich.edu uint64_t imm; 1514519Sgblack@eecs.umich.edu 1524951Sgblack@eecs.umich.edu RegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 1534712Sgblack@eecs.umich.edu IntRegIndex _dest, uint64_t _imm) : 1544519Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), dest(_dest), imm(_imm) 1554951Sgblack@eecs.umich.edu {} 1564519Sgblack@eecs.umich.edu 1574951Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 1584712Sgblack@eecs.umich.edu}; 1594519Sgblack@eecs.umich.edu 1604519Sgblack@eecs.umich.educlass RegRegOp : public PredOp 1614519Sgblack@eecs.umich.edu{ 1624519Sgblack@eecs.umich.edu protected: 1634519Sgblack@eecs.umich.edu IntRegIndex dest; 1644519Sgblack@eecs.umich.edu IntRegIndex op1; 1654519Sgblack@eecs.umich.edu 1664519Sgblack@eecs.umich.edu RegRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 1674519Sgblack@eecs.umich.edu IntRegIndex _dest, IntRegIndex _op1) : 1684519Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), dest(_dest), op1(_op1) 1694519Sgblack@eecs.umich.edu {} 1704519Sgblack@eecs.umich.edu 1714519Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 1724519Sgblack@eecs.umich.edu}; 1734519Sgblack@eecs.umich.edu 1744712Sgblack@eecs.umich.educlass RegImmRegOp : public PredOp 1754519Sgblack@eecs.umich.edu{ 1764581Sgblack@eecs.umich.edu protected: 1774688Sgblack@eecs.umich.edu IntRegIndex dest; 1784581Sgblack@eecs.umich.edu uint64_t imm; 1794519Sgblack@eecs.umich.edu IntRegIndex op1; 1804519Sgblack@eecs.umich.edu 1814519Sgblack@eecs.umich.edu RegImmRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 1824519Sgblack@eecs.umich.edu IntRegIndex _dest, uint64_t _imm, IntRegIndex _op1) : 1834519Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 1844519Sgblack@eecs.umich.edu dest(_dest), imm(_imm), op1(_op1) 1854519Sgblack@eecs.umich.edu {} 1864519Sgblack@eecs.umich.edu 1874712Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 1884519Sgblack@eecs.umich.edu}; 1894581Sgblack@eecs.umich.edu 1904688Sgblack@eecs.umich.educlass RegRegRegImmOp : public PredOp 1914581Sgblack@eecs.umich.edu{ 1924519Sgblack@eecs.umich.edu protected: 1934519Sgblack@eecs.umich.edu IntRegIndex dest; 1944519Sgblack@eecs.umich.edu IntRegIndex op1; 1954519Sgblack@eecs.umich.edu IntRegIndex op2; 1964519Sgblack@eecs.umich.edu uint64_t imm; 1974519Sgblack@eecs.umich.edu 1984519Sgblack@eecs.umich.edu RegRegRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 1994951Sgblack@eecs.umich.edu IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, 2004519Sgblack@eecs.umich.edu uint64_t _imm) : 2014519Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 2024519Sgblack@eecs.umich.edu dest(_dest), op1(_op1), op2(_op2), imm(_imm) 2034519Sgblack@eecs.umich.edu {} 2044951Sgblack@eecs.umich.edu 2054519Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 2064951Sgblack@eecs.umich.edu}; 2074712Sgblack@eecs.umich.edu 2084519Sgblack@eecs.umich.educlass RegRegRegRegOp : public PredOp 2094581Sgblack@eecs.umich.edu{ 2104688Sgblack@eecs.umich.edu protected: 2114581Sgblack@eecs.umich.edu IntRegIndex dest; 2124519Sgblack@eecs.umich.edu IntRegIndex op1; 2134519Sgblack@eecs.umich.edu IntRegIndex op2; 2144519Sgblack@eecs.umich.edu IntRegIndex op3; 2154519Sgblack@eecs.umich.edu 2164951Sgblack@eecs.umich.edu RegRegRegRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 2174519Sgblack@eecs.umich.edu IntRegIndex _dest, IntRegIndex _op1, 2184519Sgblack@eecs.umich.edu IntRegIndex _op2, IntRegIndex _op3) : 2194951Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 2204712Sgblack@eecs.umich.edu dest(_dest), op1(_op1), op2(_op2), op3(_op3) 2214519Sgblack@eecs.umich.edu {} 2224581Sgblack@eecs.umich.edu 2234688Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 2244581Sgblack@eecs.umich.edu}; 2254519Sgblack@eecs.umich.edu 2264519Sgblack@eecs.umich.educlass RegRegRegOp : public PredOp 2274519Sgblack@eecs.umich.edu{ 2284519Sgblack@eecs.umich.edu protected: 2294519Sgblack@eecs.umich.edu IntRegIndex dest; 2305075Sgblack@eecs.umich.edu IntRegIndex op1; 2315075Sgblack@eecs.umich.edu IntRegIndex op2; 2325075Sgblack@eecs.umich.edu 2335075Sgblack@eecs.umich.edu RegRegRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 2345428Sgblack@eecs.umich.edu IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2) : 2355428Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 2365674Sgblack@eecs.umich.edu dest(_dest), op1(_op1), op2(_op2) 2375899Sgblack@eecs.umich.edu {} 2385936Sgblack@eecs.umich.edu 2395428Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 2405678Sgblack@eecs.umich.edu}; 2415678Sgblack@eecs.umich.edu 2425678Sgblack@eecs.umich.educlass RegRegImmOp : public PredOp 2435678Sgblack@eecs.umich.edu{ 2445678Sgblack@eecs.umich.edu protected: 2455678Sgblack@eecs.umich.edu IntRegIndex dest; 2465678Sgblack@eecs.umich.edu IntRegIndex op1; 2475678Sgblack@eecs.umich.edu uint64_t imm; 2485678Sgblack@eecs.umich.edu 2495075Sgblack@eecs.umich.edu RegRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 2505075Sgblack@eecs.umich.edu IntRegIndex _dest, IntRegIndex _op1, 2515075Sgblack@eecs.umich.edu uint64_t _imm) : 2525075Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 2535075Sgblack@eecs.umich.edu dest(_dest), op1(_op1), imm(_imm) 2545075Sgblack@eecs.umich.edu {} 2555075Sgblack@eecs.umich.edu 2565075Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 2575075Sgblack@eecs.umich.edu}; 2585075Sgblack@eecs.umich.edu 2595075Sgblack@eecs.umich.educlass MiscRegRegImmOp : public PredOp 2605075Sgblack@eecs.umich.edu{ 2615075Sgblack@eecs.umich.edu protected: 2625075Sgblack@eecs.umich.edu MiscRegIndex dest; 2635075Sgblack@eecs.umich.edu IntRegIndex op1; 2645075Sgblack@eecs.umich.edu uint64_t imm; 2655075Sgblack@eecs.umich.edu 2665075Sgblack@eecs.umich.edu MiscRegRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 2675075Sgblack@eecs.umich.edu MiscRegIndex _dest, IntRegIndex _op1, 2685075Sgblack@eecs.umich.edu uint64_t _imm) : 2695075Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 2705075Sgblack@eecs.umich.edu dest(_dest), op1(_op1), imm(_imm) 2715075Sgblack@eecs.umich.edu {} 2725075Sgblack@eecs.umich.edu 2735075Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 2745075Sgblack@eecs.umich.edu}; 2755075Sgblack@eecs.umich.edu 2765075Sgblack@eecs.umich.educlass RegMiscRegImmOp : public PredOp 2775075Sgblack@eecs.umich.edu{ 2785075Sgblack@eecs.umich.edu protected: 2795075Sgblack@eecs.umich.edu IntRegIndex dest; 2805075Sgblack@eecs.umich.edu MiscRegIndex op1; 2815075Sgblack@eecs.umich.edu uint64_t imm; 2825075Sgblack@eecs.umich.edu 2835075Sgblack@eecs.umich.edu RegMiscRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 2844519Sgblack@eecs.umich.edu IntRegIndex _dest, MiscRegIndex _op1, 2855040Sgblack@eecs.umich.edu uint64_t _imm) : 2865040Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 2875040Sgblack@eecs.umich.edu dest(_dest), op1(_op1), imm(_imm) 2885040Sgblack@eecs.umich.edu {} 2895040Sgblack@eecs.umich.edu 2905040Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 2915040Sgblack@eecs.umich.edu}; 2925040Sgblack@eecs.umich.edu 2935040Sgblack@eecs.umich.educlass RegImmImmOp : public PredOp 2945040Sgblack@eecs.umich.edu{ 2955040Sgblack@eecs.umich.edu protected: 2965040Sgblack@eecs.umich.edu IntRegIndex dest; 2975040Sgblack@eecs.umich.edu uint64_t imm1; 2985040Sgblack@eecs.umich.edu uint64_t imm2; 2995040Sgblack@eecs.umich.edu 3005040Sgblack@eecs.umich.edu RegImmImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 3015040Sgblack@eecs.umich.edu IntRegIndex _dest, uint64_t _imm1, uint64_t _imm2) : 3025040Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 3035040Sgblack@eecs.umich.edu dest(_dest), imm1(_imm1), imm2(_imm2) 3045040Sgblack@eecs.umich.edu {} 3055040Sgblack@eecs.umich.edu 3065040Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 3075040Sgblack@eecs.umich.edu}; 3085040Sgblack@eecs.umich.edu 3095040Sgblack@eecs.umich.educlass RegRegImmImmOp : public PredOp 3105040Sgblack@eecs.umich.edu{ 3115040Sgblack@eecs.umich.edu protected: 3125040Sgblack@eecs.umich.edu IntRegIndex dest; 3135040Sgblack@eecs.umich.edu IntRegIndex op1; 3145040Sgblack@eecs.umich.edu uint64_t imm1; 3155062Sgblack@eecs.umich.edu uint64_t imm2; 3165062Sgblack@eecs.umich.edu 3175062Sgblack@eecs.umich.edu RegRegImmImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 3185062Sgblack@eecs.umich.edu IntRegIndex _dest, IntRegIndex _op1, 3195062Sgblack@eecs.umich.edu uint64_t _imm1, uint64_t _imm2) : 3205062Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 3215062Sgblack@eecs.umich.edu dest(_dest), op1(_op1), imm1(_imm1), imm2(_imm2) 3225040Sgblack@eecs.umich.edu {} 3235062Sgblack@eecs.umich.edu 3245062Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 3255062Sgblack@eecs.umich.edu}; 3265062Sgblack@eecs.umich.edu 3275040Sgblack@eecs.umich.educlass RegImmRegShiftOp : public PredOp 3285040Sgblack@eecs.umich.edu{ 3295040Sgblack@eecs.umich.edu protected: 3305040Sgblack@eecs.umich.edu IntRegIndex dest; 3315040Sgblack@eecs.umich.edu uint64_t imm; 3325040Sgblack@eecs.umich.edu IntRegIndex op1; 3335040Sgblack@eecs.umich.edu int32_t shiftAmt; 3345040Sgblack@eecs.umich.edu ArmShiftType shiftType; 3355040Sgblack@eecs.umich.edu 3365239Sgblack@eecs.umich.edu RegImmRegShiftOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 3375040Sgblack@eecs.umich.edu IntRegIndex _dest, uint64_t _imm, IntRegIndex _op1, 3385040Sgblack@eecs.umich.edu int32_t _shiftAmt, ArmShiftType _shiftType) : 3395040Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 3405040Sgblack@eecs.umich.edu dest(_dest), imm(_imm), op1(_op1), 3415040Sgblack@eecs.umich.edu shiftAmt(_shiftAmt), shiftType(_shiftType) 3425040Sgblack@eecs.umich.edu {} 3435040Sgblack@eecs.umich.edu 3445040Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 3455061Sgblack@eecs.umich.edu}; 3465040Sgblack@eecs.umich.edu 3475040Sgblack@eecs.umich.educlass UnknownOp : public PredOp 3485061Sgblack@eecs.umich.edu{ 3495061Sgblack@eecs.umich.edu protected: 3505061Sgblack@eecs.umich.edu 3515061Sgblack@eecs.umich.edu UnknownOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass) : 3525061Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass) 3535061Sgblack@eecs.umich.edu {} 3545061Sgblack@eecs.umich.edu 3555061Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 3565040Sgblack@eecs.umich.edu}; 3575040Sgblack@eecs.umich.edu 3585040Sgblack@eecs.umich.edu#endif 3595040Sgblack@eecs.umich.edu