misc.hh revision 12616
17202Sgblack@eecs.umich.edu/* 212504Snikos.nikoleris@arm.com * Copyright (c) 2010, 2012-2013, 2017-2018 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 5512616Sgabeblack@google.com std::string generateDisassembly( 5612616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 577202Sgblack@eecs.umich.edu}; 587202Sgblack@eecs.umich.edu 597202Sgblack@eecs.umich.educlass MsrBase : public PredOp 607202Sgblack@eecs.umich.edu{ 617202Sgblack@eecs.umich.edu protected: 627202Sgblack@eecs.umich.edu uint8_t byteMask; 637202Sgblack@eecs.umich.edu 647202Sgblack@eecs.umich.edu MsrBase(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 657202Sgblack@eecs.umich.edu uint8_t _byteMask) : 667202Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), byteMask(_byteMask) 677202Sgblack@eecs.umich.edu {} 687202Sgblack@eecs.umich.edu 697202Sgblack@eecs.umich.edu void printMsrBase(std::ostream &os) const; 707202Sgblack@eecs.umich.edu}; 717202Sgblack@eecs.umich.edu 727202Sgblack@eecs.umich.educlass MsrImmOp : public MsrBase 737202Sgblack@eecs.umich.edu{ 747202Sgblack@eecs.umich.edu protected: 757202Sgblack@eecs.umich.edu uint32_t imm; 767202Sgblack@eecs.umich.edu 777202Sgblack@eecs.umich.edu MsrImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 787202Sgblack@eecs.umich.edu uint32_t _imm, uint8_t _byteMask) : 797202Sgblack@eecs.umich.edu MsrBase(mnem, _machInst, __opClass, _byteMask), imm(_imm) 807202Sgblack@eecs.umich.edu {} 817202Sgblack@eecs.umich.edu 8212616Sgabeblack@google.com std::string generateDisassembly( 8312616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 847202Sgblack@eecs.umich.edu}; 857202Sgblack@eecs.umich.edu 867202Sgblack@eecs.umich.educlass MsrRegOp : public MsrBase 877202Sgblack@eecs.umich.edu{ 887202Sgblack@eecs.umich.edu protected: 897202Sgblack@eecs.umich.edu IntRegIndex op1; 907202Sgblack@eecs.umich.edu 917202Sgblack@eecs.umich.edu MsrRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 927202Sgblack@eecs.umich.edu IntRegIndex _op1, uint8_t _byteMask) : 937202Sgblack@eecs.umich.edu MsrBase(mnem, _machInst, __opClass, _byteMask), op1(_op1) 947202Sgblack@eecs.umich.edu {} 957202Sgblack@eecs.umich.edu 9612616Sgabeblack@google.com std::string generateDisassembly( 9712616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 987202Sgblack@eecs.umich.edu}; 997202Sgblack@eecs.umich.edu 10010037SARM gem5 Developersclass MrrcOp : public PredOp 10110037SARM gem5 Developers{ 10210037SARM gem5 Developers protected: 10310420Sandreas.hansson@arm.com MiscRegIndex op1; 10410037SARM gem5 Developers IntRegIndex dest; 10510037SARM gem5 Developers IntRegIndex dest2; 10610037SARM gem5 Developers uint32_t imm; 10710037SARM gem5 Developers 10810037SARM gem5 Developers MrrcOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 10910420Sandreas.hansson@arm.com MiscRegIndex _op1, IntRegIndex _dest, IntRegIndex _dest2, 11010037SARM gem5 Developers uint32_t _imm) : 11110037SARM gem5 Developers PredOp(mnem, _machInst, __opClass), op1(_op1), dest(_dest), 11210037SARM gem5 Developers dest2(_dest2), imm(_imm) 11310037SARM gem5 Developers {} 11410037SARM gem5 Developers 11512616Sgabeblack@google.com std::string generateDisassembly( 11612616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 11710037SARM gem5 Developers}; 11810037SARM gem5 Developers 11910037SARM gem5 Developersclass McrrOp : public PredOp 12010037SARM gem5 Developers{ 12110037SARM gem5 Developers protected: 12210037SARM gem5 Developers IntRegIndex op1; 12310037SARM gem5 Developers IntRegIndex op2; 12410420Sandreas.hansson@arm.com MiscRegIndex dest; 12510037SARM gem5 Developers uint32_t imm; 12610037SARM gem5 Developers 12710037SARM gem5 Developers McrrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 12810420Sandreas.hansson@arm.com IntRegIndex _op1, IntRegIndex _op2, MiscRegIndex _dest, 12910037SARM gem5 Developers uint32_t _imm) : 13010037SARM gem5 Developers PredOp(mnem, _machInst, __opClass), op1(_op1), op2(_op2), 13110037SARM gem5 Developers dest(_dest), imm(_imm) 13210037SARM gem5 Developers {} 13310037SARM gem5 Developers 13412616Sgabeblack@google.com std::string generateDisassembly( 13512616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 13610037SARM gem5 Developers}; 13710037SARM gem5 Developers 1387306Sgblack@eecs.umich.educlass ImmOp : public PredOp 1397306Sgblack@eecs.umich.edu{ 1407306Sgblack@eecs.umich.edu protected: 1417330Sgblack@eecs.umich.edu uint64_t imm; 1427306Sgblack@eecs.umich.edu 1437306Sgblack@eecs.umich.edu ImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 1447330Sgblack@eecs.umich.edu uint64_t _imm) : 1457306Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), imm(_imm) 1467306Sgblack@eecs.umich.edu {} 1477306Sgblack@eecs.umich.edu 14812616Sgabeblack@google.com std::string generateDisassembly( 14912616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 1507306Sgblack@eecs.umich.edu}; 1517306Sgblack@eecs.umich.edu 1527332Sgblack@eecs.umich.educlass RegImmOp : public PredOp 1537332Sgblack@eecs.umich.edu{ 1547332Sgblack@eecs.umich.edu protected: 1557332Sgblack@eecs.umich.edu IntRegIndex dest; 1567332Sgblack@eecs.umich.edu uint64_t imm; 1577332Sgblack@eecs.umich.edu 1587332Sgblack@eecs.umich.edu RegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 1597332Sgblack@eecs.umich.edu IntRegIndex _dest, uint64_t _imm) : 1607332Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), dest(_dest), imm(_imm) 1617332Sgblack@eecs.umich.edu {} 1627332Sgblack@eecs.umich.edu 16312616Sgabeblack@google.com std::string generateDisassembly( 16412616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 1657332Sgblack@eecs.umich.edu}; 1667332Sgblack@eecs.umich.edu 1677261Sgblack@eecs.umich.educlass RegRegOp : public PredOp 1687208Sgblack@eecs.umich.edu{ 1697208Sgblack@eecs.umich.edu protected: 1707208Sgblack@eecs.umich.edu IntRegIndex dest; 1717208Sgblack@eecs.umich.edu IntRegIndex op1; 1727208Sgblack@eecs.umich.edu 1737261Sgblack@eecs.umich.edu RegRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 1747261Sgblack@eecs.umich.edu IntRegIndex _dest, IntRegIndex _op1) : 1757208Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), dest(_dest), op1(_op1) 1767208Sgblack@eecs.umich.edu {} 1777208Sgblack@eecs.umich.edu 17812616Sgabeblack@google.com std::string generateDisassembly( 17912616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 1807208Sgblack@eecs.umich.edu}; 1817208Sgblack@eecs.umich.edu 1827232Sgblack@eecs.umich.educlass RegImmRegOp : public PredOp 1837225Sgblack@eecs.umich.edu{ 1847225Sgblack@eecs.umich.edu protected: 1857225Sgblack@eecs.umich.edu IntRegIndex dest; 1867330Sgblack@eecs.umich.edu uint64_t imm; 1877225Sgblack@eecs.umich.edu IntRegIndex op1; 1887225Sgblack@eecs.umich.edu 1897232Sgblack@eecs.umich.edu RegImmRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 1907330Sgblack@eecs.umich.edu IntRegIndex _dest, uint64_t _imm, IntRegIndex _op1) : 1917225Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 1927232Sgblack@eecs.umich.edu dest(_dest), imm(_imm), op1(_op1) 1937225Sgblack@eecs.umich.edu {} 1947225Sgblack@eecs.umich.edu 19512616Sgabeblack@google.com std::string generateDisassembly( 19612616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 1977225Sgblack@eecs.umich.edu}; 1987225Sgblack@eecs.umich.edu 1997233Sgblack@eecs.umich.educlass RegRegRegImmOp : public PredOp 2007233Sgblack@eecs.umich.edu{ 2017233Sgblack@eecs.umich.edu protected: 2027233Sgblack@eecs.umich.edu IntRegIndex dest; 2037233Sgblack@eecs.umich.edu IntRegIndex op1; 2047233Sgblack@eecs.umich.edu IntRegIndex op2; 2057330Sgblack@eecs.umich.edu uint64_t imm; 2067233Sgblack@eecs.umich.edu 2077233Sgblack@eecs.umich.edu RegRegRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 2087233Sgblack@eecs.umich.edu IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, 2097330Sgblack@eecs.umich.edu uint64_t _imm) : 2107233Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 2117233Sgblack@eecs.umich.edu dest(_dest), op1(_op1), op2(_op2), imm(_imm) 2127233Sgblack@eecs.umich.edu {} 2137233Sgblack@eecs.umich.edu 21412616Sgabeblack@google.com std::string generateDisassembly( 21512616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 2167233Sgblack@eecs.umich.edu}; 2177233Sgblack@eecs.umich.edu 2187241Sgblack@eecs.umich.educlass RegRegRegRegOp : public PredOp 2197241Sgblack@eecs.umich.edu{ 2207241Sgblack@eecs.umich.edu protected: 2217241Sgblack@eecs.umich.edu IntRegIndex dest; 2227241Sgblack@eecs.umich.edu IntRegIndex op1; 2237241Sgblack@eecs.umich.edu IntRegIndex op2; 2247241Sgblack@eecs.umich.edu IntRegIndex op3; 2257241Sgblack@eecs.umich.edu 2267241Sgblack@eecs.umich.edu RegRegRegRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 2277241Sgblack@eecs.umich.edu IntRegIndex _dest, IntRegIndex _op1, 2287241Sgblack@eecs.umich.edu IntRegIndex _op2, IntRegIndex _op3) : 2297241Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 2307241Sgblack@eecs.umich.edu dest(_dest), op1(_op1), op2(_op2), op3(_op3) 2317241Sgblack@eecs.umich.edu {} 2327241Sgblack@eecs.umich.edu 23312616Sgabeblack@google.com std::string generateDisassembly( 23412616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 2357241Sgblack@eecs.umich.edu}; 2367241Sgblack@eecs.umich.edu 2377238Sgblack@eecs.umich.educlass RegRegRegOp : public PredOp 2387238Sgblack@eecs.umich.edu{ 2397238Sgblack@eecs.umich.edu protected: 2407238Sgblack@eecs.umich.edu IntRegIndex dest; 2417238Sgblack@eecs.umich.edu IntRegIndex op1; 2427238Sgblack@eecs.umich.edu IntRegIndex op2; 2437238Sgblack@eecs.umich.edu 2447238Sgblack@eecs.umich.edu RegRegRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 2457238Sgblack@eecs.umich.edu IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2) : 2467238Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 2477238Sgblack@eecs.umich.edu dest(_dest), op1(_op1), op2(_op2) 2487238Sgblack@eecs.umich.edu {} 2497238Sgblack@eecs.umich.edu 25012616Sgabeblack@google.com std::string generateDisassembly( 25112616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 2527238Sgblack@eecs.umich.edu}; 2537238Sgblack@eecs.umich.edu 2547331Sgblack@eecs.umich.educlass RegRegImmOp : public PredOp 2557331Sgblack@eecs.umich.edu{ 2567331Sgblack@eecs.umich.edu protected: 2577331Sgblack@eecs.umich.edu IntRegIndex dest; 2587331Sgblack@eecs.umich.edu IntRegIndex op1; 2597331Sgblack@eecs.umich.edu uint64_t imm; 2607331Sgblack@eecs.umich.edu 2617331Sgblack@eecs.umich.edu RegRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 2627331Sgblack@eecs.umich.edu IntRegIndex _dest, IntRegIndex _op1, 2637331Sgblack@eecs.umich.edu uint64_t _imm) : 2647331Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 2657331Sgblack@eecs.umich.edu dest(_dest), op1(_op1), imm(_imm) 2667331Sgblack@eecs.umich.edu {} 2677331Sgblack@eecs.umich.edu 26812616Sgabeblack@google.com std::string generateDisassembly( 26912616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 2707331Sgblack@eecs.umich.edu}; 2717331Sgblack@eecs.umich.edu 27210418Sandreas.hansson@arm.comclass MiscRegRegImmOp : public PredOp 27310418Sandreas.hansson@arm.com{ 27410418Sandreas.hansson@arm.com protected: 27510418Sandreas.hansson@arm.com MiscRegIndex dest; 27610418Sandreas.hansson@arm.com IntRegIndex op1; 27710418Sandreas.hansson@arm.com uint64_t imm; 27810418Sandreas.hansson@arm.com 27910418Sandreas.hansson@arm.com MiscRegRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 28010418Sandreas.hansson@arm.com MiscRegIndex _dest, IntRegIndex _op1, 28110418Sandreas.hansson@arm.com uint64_t _imm) : 28210418Sandreas.hansson@arm.com PredOp(mnem, _machInst, __opClass), 28310418Sandreas.hansson@arm.com dest(_dest), op1(_op1), imm(_imm) 28410418Sandreas.hansson@arm.com {} 28510418Sandreas.hansson@arm.com 28612616Sgabeblack@google.com std::string generateDisassembly( 28712616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 28810418Sandreas.hansson@arm.com}; 28910418Sandreas.hansson@arm.com 29010418Sandreas.hansson@arm.comclass RegMiscRegImmOp : public PredOp 29110418Sandreas.hansson@arm.com{ 29210418Sandreas.hansson@arm.com protected: 29310418Sandreas.hansson@arm.com IntRegIndex dest; 29410418Sandreas.hansson@arm.com MiscRegIndex op1; 29510418Sandreas.hansson@arm.com uint64_t imm; 29610418Sandreas.hansson@arm.com 29710418Sandreas.hansson@arm.com RegMiscRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 29810418Sandreas.hansson@arm.com IntRegIndex _dest, MiscRegIndex _op1, 29910418Sandreas.hansson@arm.com uint64_t _imm) : 30010418Sandreas.hansson@arm.com PredOp(mnem, _machInst, __opClass), 30110418Sandreas.hansson@arm.com dest(_dest), op1(_op1), imm(_imm) 30210418Sandreas.hansson@arm.com {} 30310418Sandreas.hansson@arm.com 30412616Sgabeblack@google.com std::string generateDisassembly( 30512616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 30610418Sandreas.hansson@arm.com}; 30710418Sandreas.hansson@arm.com 30810037SARM gem5 Developersclass RegImmImmOp : public PredOp 30910037SARM gem5 Developers{ 31010037SARM gem5 Developers protected: 31110037SARM gem5 Developers IntRegIndex dest; 31210037SARM gem5 Developers uint64_t imm1; 31310037SARM gem5 Developers uint64_t imm2; 31410037SARM gem5 Developers 31510037SARM gem5 Developers RegImmImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 31610037SARM gem5 Developers IntRegIndex _dest, uint64_t _imm1, uint64_t _imm2) : 31710037SARM gem5 Developers PredOp(mnem, _machInst, __opClass), 31810037SARM gem5 Developers dest(_dest), imm1(_imm1), imm2(_imm2) 31910037SARM gem5 Developers {} 32010037SARM gem5 Developers 32112616Sgabeblack@google.com std::string generateDisassembly( 32212616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 32310037SARM gem5 Developers}; 32410037SARM gem5 Developers 3257253Sgblack@eecs.umich.educlass RegRegImmImmOp : public PredOp 3267253Sgblack@eecs.umich.edu{ 3277253Sgblack@eecs.umich.edu protected: 3287253Sgblack@eecs.umich.edu IntRegIndex dest; 3297253Sgblack@eecs.umich.edu IntRegIndex op1; 3307330Sgblack@eecs.umich.edu uint64_t imm1; 3317330Sgblack@eecs.umich.edu uint64_t imm2; 3327253Sgblack@eecs.umich.edu 3337253Sgblack@eecs.umich.edu RegRegImmImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 3347253Sgblack@eecs.umich.edu IntRegIndex _dest, IntRegIndex _op1, 3357330Sgblack@eecs.umich.edu uint64_t _imm1, uint64_t _imm2) : 3367253Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 3377253Sgblack@eecs.umich.edu dest(_dest), op1(_op1), imm1(_imm1), imm2(_imm2) 3387253Sgblack@eecs.umich.edu {} 3397253Sgblack@eecs.umich.edu 34012616Sgabeblack@google.com std::string generateDisassembly( 34112616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 3427253Sgblack@eecs.umich.edu}; 3437253Sgblack@eecs.umich.edu 3447232Sgblack@eecs.umich.educlass RegImmRegShiftOp : public PredOp 3457225Sgblack@eecs.umich.edu{ 3467225Sgblack@eecs.umich.edu protected: 3477225Sgblack@eecs.umich.edu IntRegIndex dest; 3487330Sgblack@eecs.umich.edu uint64_t imm; 3497225Sgblack@eecs.umich.edu IntRegIndex op1; 3507225Sgblack@eecs.umich.edu int32_t shiftAmt; 3517225Sgblack@eecs.umich.edu ArmShiftType shiftType; 3527225Sgblack@eecs.umich.edu 3537232Sgblack@eecs.umich.edu RegImmRegShiftOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 3547330Sgblack@eecs.umich.edu IntRegIndex _dest, uint64_t _imm, IntRegIndex _op1, 3557232Sgblack@eecs.umich.edu int32_t _shiftAmt, ArmShiftType _shiftType) : 3567225Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 3577232Sgblack@eecs.umich.edu dest(_dest), imm(_imm), op1(_op1), 3587225Sgblack@eecs.umich.edu shiftAmt(_shiftAmt), shiftType(_shiftType) 3597225Sgblack@eecs.umich.edu {} 3607225Sgblack@eecs.umich.edu 36112616Sgabeblack@google.com std::string generateDisassembly( 36212616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 3637225Sgblack@eecs.umich.edu}; 3647225Sgblack@eecs.umich.edu 3657409Sgblack@eecs.umich.educlass UnknownOp : public PredOp 3667409Sgblack@eecs.umich.edu{ 3677409Sgblack@eecs.umich.edu protected: 3687409Sgblack@eecs.umich.edu 3697409Sgblack@eecs.umich.edu UnknownOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass) : 3707409Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass) 3717409Sgblack@eecs.umich.edu {} 3727409Sgblack@eecs.umich.edu 37312616Sgabeblack@google.com std::string generateDisassembly( 37412616Sgabeblack@google.com Addr pc, const SymbolTable *symtab) const override; 3757409Sgblack@eecs.umich.edu}; 3767409Sgblack@eecs.umich.edu 3777202Sgblack@eecs.umich.edu#endif 378