microfpop.hh revision 12106
15083Sgblack@eecs.umich.edu/* 25083Sgblack@eecs.umich.edu * Copyright (c) 2007 The Hewlett-Packard Development Company 35083Sgblack@eecs.umich.edu * All rights reserved. 45083Sgblack@eecs.umich.edu * 57087Snate@binkert.org * The license below extends only to copyright in the software and shall 67087Snate@binkert.org * not be construed as granting a license to any other intellectual 77087Snate@binkert.org * property including but not limited to intellectual property relating 87087Snate@binkert.org * to a hardware implementation of the functionality of the software 97087Snate@binkert.org * licensed hereunder. You may use the software subject to the license 107087Snate@binkert.org * terms below provided that you ensure that this notice is replicated 117087Snate@binkert.org * unmodified and in its entirety in all distributions of the software, 127087Snate@binkert.org * modified or unmodified, in source code or in binary form. 135083Sgblack@eecs.umich.edu * 147087Snate@binkert.org * Redistribution and use in source and binary forms, with or without 157087Snate@binkert.org * modification, are permitted provided that the following conditions are 167087Snate@binkert.org * met: redistributions of source code must retain the above copyright 177087Snate@binkert.org * notice, this list of conditions and the following disclaimer; 187087Snate@binkert.org * redistributions in binary form must reproduce the above copyright 197087Snate@binkert.org * notice, this list of conditions and the following disclaimer in the 207087Snate@binkert.org * documentation and/or other materials provided with the distribution; 217087Snate@binkert.org * neither the name of the copyright holders nor the names of its 225083Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from 237087Snate@binkert.org * this software without specific prior written permission. 245083Sgblack@eecs.umich.edu * 255083Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 265083Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 275083Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 285083Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 295083Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 305083Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 315083Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 325083Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 335083Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 345083Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 355083Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 365083Sgblack@eecs.umich.edu * 375083Sgblack@eecs.umich.edu * Authors: Gabe Black 385083Sgblack@eecs.umich.edu */ 395083Sgblack@eecs.umich.edu 405083Sgblack@eecs.umich.edu#ifndef __ARCH_X86_INSTS_MICROFPOP_HH__ 415083Sgblack@eecs.umich.edu#define __ARCH_X86_INSTS_MICROFPOP_HH__ 425083Sgblack@eecs.umich.edu 435083Sgblack@eecs.umich.edu#include "arch/x86/insts/microop.hh" 445083Sgblack@eecs.umich.edu 455083Sgblack@eecs.umich.edunamespace X86ISA 465083Sgblack@eecs.umich.edu{ 475083Sgblack@eecs.umich.edu 485083Sgblack@eecs.umich.edu /** 495083Sgblack@eecs.umich.edu * Base classes for FpOps which provides a generateDisassembly method. 505083Sgblack@eecs.umich.edu */ 515083Sgblack@eecs.umich.edu class FpOp : public X86MicroopBase 525083Sgblack@eecs.umich.edu { 535083Sgblack@eecs.umich.edu protected: 545083Sgblack@eecs.umich.edu const RegIndex src1; 555083Sgblack@eecs.umich.edu const RegIndex src2; 565083Sgblack@eecs.umich.edu const RegIndex dest; 575083Sgblack@eecs.umich.edu const uint8_t dataSize; 585083Sgblack@eecs.umich.edu const int8_t spm; 595083Sgblack@eecs.umich.edu 605083Sgblack@eecs.umich.edu // Constructor 615083Sgblack@eecs.umich.edu FpOp(ExtMachInst _machInst, 625083Sgblack@eecs.umich.edu const char *mnem, const char *_instMnem, 637620Sgblack@eecs.umich.edu uint64_t setFlags, 646345Sgblack@eecs.umich.edu InstRegIndex _src1, InstRegIndex _src2, InstRegIndex _dest, 655083Sgblack@eecs.umich.edu uint8_t _dataSize, int8_t _spm, 665083Sgblack@eecs.umich.edu OpClass __opClass) : 677620Sgblack@eecs.umich.edu X86MicroopBase(_machInst, mnem, _instMnem, setFlags, 685083Sgblack@eecs.umich.edu __opClass), 6912106SRekai.GonzalezAlberquilla@arm.com src1(_src1.index()), src2(_src2.index()), dest(_dest.index()), 705083Sgblack@eecs.umich.edu dataSize(_dataSize), spm(_spm) 715083Sgblack@eecs.umich.edu {} 725083Sgblack@eecs.umich.edu/* 735083Sgblack@eecs.umich.edu //Figure out what the condition code flags should be. 745083Sgblack@eecs.umich.edu uint64_t genFlags(uint64_t oldFlags, uint64_t flagMask, 755083Sgblack@eecs.umich.edu uint64_t _dest, uint64_t _src1, uint64_t _src2, 765083Sgblack@eecs.umich.edu bool subtract = false) const; 775083Sgblack@eecs.umich.edu bool checkCondition(uint64_t flags) const;*/ 785083Sgblack@eecs.umich.edu 795083Sgblack@eecs.umich.edu std::string generateDisassembly(Addr pc, 805083Sgblack@eecs.umich.edu const SymbolTable *symtab) const; 815083Sgblack@eecs.umich.edu }; 825083Sgblack@eecs.umich.edu} 835083Sgblack@eecs.umich.edu 845083Sgblack@eecs.umich.edu#endif //__ARCH_X86_INSTS_MICROFPOP_HH__ 85