vfp.cc revision 7396
17396Sgblack@eecs.umich.edu/* 27396Sgblack@eecs.umich.edu * Copyright (c) 2010 ARM Limited 37396Sgblack@eecs.umich.edu * All rights reserved 47396Sgblack@eecs.umich.edu * 57396Sgblack@eecs.umich.edu * The license below extends only to copyright in the software and shall 67396Sgblack@eecs.umich.edu * not be construed as granting a license to any other intellectual 77396Sgblack@eecs.umich.edu * property including but not limited to intellectual property relating 87396Sgblack@eecs.umich.edu * to a hardware implementation of the functionality of the software 97396Sgblack@eecs.umich.edu * licensed hereunder. You may use the software subject to the license 107396Sgblack@eecs.umich.edu * terms below provided that you ensure that this notice is replicated 117396Sgblack@eecs.umich.edu * unmodified and in its entirety in all distributions of the software, 127396Sgblack@eecs.umich.edu * modified or unmodified, in source code or in binary form. 137396Sgblack@eecs.umich.edu * 147396Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without 157396Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are 167396Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright 177396Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer; 187396Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright 197396Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the 207396Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution; 217396Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its 227396Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from 237396Sgblack@eecs.umich.edu * this software without specific prior written permission. 247396Sgblack@eecs.umich.edu * 257396Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 267396Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 277396Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 287396Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 297396Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 307396Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 317396Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 327396Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 337396Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 347396Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 357396Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 367396Sgblack@eecs.umich.edu * 377396Sgblack@eecs.umich.edu * Authors: Gabe Black 387396Sgblack@eecs.umich.edu */ 397396Sgblack@eecs.umich.edu 407396Sgblack@eecs.umich.edu#include "arch/arm/insts/vfp.hh" 417396Sgblack@eecs.umich.edu 427396Sgblack@eecs.umich.edustd::string 437396Sgblack@eecs.umich.eduFpRegRegOp::generateDisassembly(Addr pc, const SymbolTable *symtab) const 447396Sgblack@eecs.umich.edu{ 457396Sgblack@eecs.umich.edu std::stringstream ss; 467396Sgblack@eecs.umich.edu printMnemonic(ss); 477396Sgblack@eecs.umich.edu printReg(ss, dest + FP_Base_DepTag); 487396Sgblack@eecs.umich.edu ss << ", "; 497396Sgblack@eecs.umich.edu printReg(ss, op1 + FP_Base_DepTag); 507396Sgblack@eecs.umich.edu return ss.str(); 517396Sgblack@eecs.umich.edu} 527396Sgblack@eecs.umich.edu 537396Sgblack@eecs.umich.edustd::string 547396Sgblack@eecs.umich.eduFpRegImmOp::generateDisassembly(Addr pc, const SymbolTable *symtab) const 557396Sgblack@eecs.umich.edu{ 567396Sgblack@eecs.umich.edu std::stringstream ss; 577396Sgblack@eecs.umich.edu printMnemonic(ss); 587396Sgblack@eecs.umich.edu printReg(ss, dest + FP_Base_DepTag); 597396Sgblack@eecs.umich.edu ccprintf(ss, ", #%d", imm); 607396Sgblack@eecs.umich.edu return ss.str(); 617396Sgblack@eecs.umich.edu} 627396Sgblack@eecs.umich.edu 637396Sgblack@eecs.umich.edustd::string 647396Sgblack@eecs.umich.eduFpRegRegImmOp::generateDisassembly(Addr pc, const SymbolTable *symtab) const 657396Sgblack@eecs.umich.edu{ 667396Sgblack@eecs.umich.edu std::stringstream ss; 677396Sgblack@eecs.umich.edu printMnemonic(ss); 687396Sgblack@eecs.umich.edu printReg(ss, dest + FP_Base_DepTag); 697396Sgblack@eecs.umich.edu ss << ", "; 707396Sgblack@eecs.umich.edu printReg(ss, op1 + FP_Base_DepTag); 717396Sgblack@eecs.umich.edu ccprintf(ss, ", #%d", imm); 727396Sgblack@eecs.umich.edu return ss.str(); 737396Sgblack@eecs.umich.edu} 747396Sgblack@eecs.umich.edu 757396Sgblack@eecs.umich.edustd::string 767396Sgblack@eecs.umich.eduFpRegRegRegOp::generateDisassembly(Addr pc, const SymbolTable *symtab) const 777396Sgblack@eecs.umich.edu{ 787396Sgblack@eecs.umich.edu std::stringstream ss; 797396Sgblack@eecs.umich.edu printMnemonic(ss); 807396Sgblack@eecs.umich.edu printReg(ss, dest + FP_Base_DepTag); 817396Sgblack@eecs.umich.edu ss << ", "; 827396Sgblack@eecs.umich.edu printReg(ss, op1 + FP_Base_DepTag); 837396Sgblack@eecs.umich.edu ss << ", "; 847396Sgblack@eecs.umich.edu printReg(ss, op2 + FP_Base_DepTag); 857396Sgblack@eecs.umich.edu return ss.str(); 867396Sgblack@eecs.umich.edu} 87