17158Sgblack@eecs.umich.edu/* 27158Sgblack@eecs.umich.edu * Copyright (c) 2010 ARM Limited 37158Sgblack@eecs.umich.edu * All rights reserved 47158Sgblack@eecs.umich.edu * 57158Sgblack@eecs.umich.edu * The license below extends only to copyright in the software and shall 67158Sgblack@eecs.umich.edu * not be construed as granting a license to any other intellectual 77158Sgblack@eecs.umich.edu * property including but not limited to intellectual property relating 87158Sgblack@eecs.umich.edu * to a hardware implementation of the functionality of the software 97158Sgblack@eecs.umich.edu * licensed hereunder. You may use the software subject to the license 107158Sgblack@eecs.umich.edu * terms below provided that you ensure that this notice is replicated 117158Sgblack@eecs.umich.edu * unmodified and in its entirety in all distributions of the software, 127158Sgblack@eecs.umich.edu * modified or unmodified, in source code or in binary form. 137158Sgblack@eecs.umich.edu * 147158Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without 157158Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are 167158Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright 177158Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer; 187158Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright 197158Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the 207158Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution; 217158Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its 227158Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from 237158Sgblack@eecs.umich.edu * this software without specific prior written permission. 247158Sgblack@eecs.umich.edu * 257158Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 267158Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 277158Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 287158Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 297158Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 307158Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 317158Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 327158Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 337158Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 347158Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 357158Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 367158Sgblack@eecs.umich.edu * 377158Sgblack@eecs.umich.edu * Authors: Gabe Black 387158Sgblack@eecs.umich.edu */ 397158Sgblack@eecs.umich.edu#ifndef __ARCH_ARM_INSTS_MULT_HH__ 407158Sgblack@eecs.umich.edu#define __ARCH_ARM_INSTS_MULT_HH__ 417158Sgblack@eecs.umich.edu 427158Sgblack@eecs.umich.edu#include "arch/arm/insts/static_inst.hh" 437158Sgblack@eecs.umich.edu#include "base/trace.hh" 447158Sgblack@eecs.umich.edu 457158Sgblack@eecs.umich.edunamespace ArmISA 467158Sgblack@eecs.umich.edu{ 477158Sgblack@eecs.umich.edu 487158Sgblack@eecs.umich.edu/** 497158Sgblack@eecs.umich.edu * Base class for multipy instructions using three registers. 507158Sgblack@eecs.umich.edu */ 517158Sgblack@eecs.umich.educlass Mult3 : public PredOp 527158Sgblack@eecs.umich.edu{ 537158Sgblack@eecs.umich.edu protected: 547158Sgblack@eecs.umich.edu IntRegIndex reg0, reg1, reg2; 557158Sgblack@eecs.umich.edu 567158Sgblack@eecs.umich.edu Mult3(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 577158Sgblack@eecs.umich.edu IntRegIndex _reg0, IntRegIndex _reg1, IntRegIndex _reg2) : 587158Sgblack@eecs.umich.edu PredOp(mnem, _machInst, __opClass), 597158Sgblack@eecs.umich.edu reg0(_reg0), reg1(_reg1), reg2(_reg2) 607158Sgblack@eecs.umich.edu {} 617158Sgblack@eecs.umich.edu}; 627158Sgblack@eecs.umich.edu 637158Sgblack@eecs.umich.edu/** 647158Sgblack@eecs.umich.edu * Base class for multipy instructions using four registers. 657158Sgblack@eecs.umich.edu */ 667158Sgblack@eecs.umich.educlass Mult4 : public Mult3 677158Sgblack@eecs.umich.edu{ 687158Sgblack@eecs.umich.edu protected: 697158Sgblack@eecs.umich.edu IntRegIndex reg3; 707158Sgblack@eecs.umich.edu 717158Sgblack@eecs.umich.edu Mult4(const char *mnem, ExtMachInst _machInst, OpClass __opClass, 727158Sgblack@eecs.umich.edu IntRegIndex _reg0, IntRegIndex _reg1, 737158Sgblack@eecs.umich.edu IntRegIndex _reg2, IntRegIndex _reg3) : 747158Sgblack@eecs.umich.edu Mult3(mnem, _machInst, __opClass, _reg0, _reg1, _reg2), reg3(_reg3) 757158Sgblack@eecs.umich.edu {} 767158Sgblack@eecs.umich.edu}; 777158Sgblack@eecs.umich.edu} 787158Sgblack@eecs.umich.edu 797158Sgblack@eecs.umich.edu#endif //__ARCH_ARM_INSTS_MULT_HH__ 80