operands.isa revision 4661:44458219add1
1955SN/A// -*- mode:c++ -*- 2955SN/A 312230Sgiacomo.travaglini@arm.com// Copyright (c) 2006 The Regents of The University of Michigan 49812Sandreas.hansson@arm.com// All rights reserved. 59812Sandreas.hansson@arm.com// 69812Sandreas.hansson@arm.com// Redistribution and use in source and binary forms, with or without 79812Sandreas.hansson@arm.com// modification, are permitted provided that the following conditions are 89812Sandreas.hansson@arm.com// met: redistributions of source code must retain the above copyright 99812Sandreas.hansson@arm.com// notice, this list of conditions and the following disclaimer; 109812Sandreas.hansson@arm.com// redistributions in binary form must reproduce the above copyright 119812Sandreas.hansson@arm.com// notice, this list of conditions and the following disclaimer in the 129812Sandreas.hansson@arm.com// documentation and/or other materials provided with the distribution; 139812Sandreas.hansson@arm.com// neither the name of the copyright holders nor the names of its 149812Sandreas.hansson@arm.com// contributors may be used to endorse or promote products derived from 157816Ssteve.reinhardt@amd.com// this software without specific prior written permission. 165871Snate@binkert.org// 171762SN/A// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18955SN/A// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19955SN/A// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20955SN/A// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21955SN/A// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22955SN/A// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23955SN/A// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24955SN/A// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25955SN/A// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26955SN/A// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27955SN/A// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28955SN/A// 29955SN/A// Authors: Korey Sewell 30955SN/A 31955SN/Adef operand_types {{ 32955SN/A 'sb' : ('signed int', 8), 33955SN/A 'ub' : ('unsigned int', 8), 34955SN/A 'sh' : ('signed int', 16), 35955SN/A 'uh' : ('unsigned int', 16), 36955SN/A 'sw' : ('signed int', 32), 37955SN/A 'uw' : ('unsigned int', 32), 38955SN/A 'sd' : ('signed int', 64), 39955SN/A 'ud' : ('unsigned int', 64), 40955SN/A 'sf' : ('float', 32), 41955SN/A 'df' : ('float', 64), 422665Ssaidi@eecs.umich.edu 'qf' : ('float', 128) 432665Ssaidi@eecs.umich.edu}}; 445863Snate@binkert.org 45955SN/Adef operands {{ 46955SN/A #General Purpose Integer Reg Operands 47955SN/A 'Rd': ('IntReg', 'uw', 'RD', 'IsInteger', 1), 48955SN/A 'Rs': ('IntReg', 'uw', 'RS', 'IsInteger', 2), 49955SN/A 'Rt': ('IntReg', 'uw', 'RT', 'IsInteger', 3), 508878Ssteve.reinhardt@amd.com 512632Sstever@eecs.umich.edu #Immediate Value operand 528878Ssteve.reinhardt@amd.com 'IntImm': ('IntReg', 'uw', 'INTIMM', 'IsInteger', 3), 532632Sstever@eecs.umich.edu 54955SN/A #Operands used for Link or Syscall Insts 558878Ssteve.reinhardt@amd.com 'R31': ('IntReg', 'uw','31','IsInteger', 4), 562632Sstever@eecs.umich.edu 'R2': ('IntReg', 'uw','2', 'IsInteger', 5), 572761Sstever@eecs.umich.edu 582632Sstever@eecs.umich.edu #Special Integer Reg operands 592632Sstever@eecs.umich.edu 'LO0': ('IntReg', 'uw','MipsISA::LO', 'IsInteger', 6), 602632Sstever@eecs.umich.edu 'HI0': ('IntReg', 'uw','MipsISA::HI', 'IsInteger', 7), 612761Sstever@eecs.umich.edu 622761Sstever@eecs.umich.edu #Bitfield-dependent HI/LO Register Access 632761Sstever@eecs.umich.edu 'LO_RD_SEL': ('IntReg','uw','MipsISA::DSPLo0 + ACDST*3', None, 6), 648878Ssteve.reinhardt@amd.com 'HI_RD_SEL': ('IntReg','uw','MipsISA::DSPHi0 + ACDST*3', None, 7), 658878Ssteve.reinhardt@amd.com 'LO_RS_SEL': ('IntReg','uw','MipsISA::DSPLo0 + ACSRC*3', None, 6), 662761Sstever@eecs.umich.edu 'HI_RS_SEL': ('IntReg','uw','MipsISA::DSPHi0 + ACSRC*3', None, 7), 672761Sstever@eecs.umich.edu 682761Sstever@eecs.umich.edu #DSP Special Purpose Integer Operands 692761Sstever@eecs.umich.edu 'DSPControl': ('IntReg', 'uw', 'MipsISA::DSPControl', None, 8), 702761Sstever@eecs.umich.edu 'DSPLo0': ('IntReg', 'uw', 'MipsISA::LO', None, 1), 718878Ssteve.reinhardt@amd.com 'DSPHi0': ('IntReg', 'uw', 'MipsISA::HI', None, 1), 728878Ssteve.reinhardt@amd.com 'DSPACX0': ('IntReg', 'uw', 'MipsISA::DSPACX0', None, 1), 732632Sstever@eecs.umich.edu 'DSPLo1': ('IntReg', 'uw', 'MipsISA::DSPLo1', None, 1), 742632Sstever@eecs.umich.edu 'DSPHi1': ('IntReg', 'uw', 'MipsISA::DSPHi1', None, 1), 758878Ssteve.reinhardt@amd.com 'DSPACX1': ('IntReg', 'uw', 'MipsISA::DSPACX1', None, 1), 768878Ssteve.reinhardt@amd.com 'DSPLo2': ('IntReg', 'uw', 'MipsISA::DSPLo2', None, 1), 772632Sstever@eecs.umich.edu 'DSPHi2': ('IntReg', 'uw', 'MipsISA::DSPHi2', None, 1), 78955SN/A 'DSPACX2': ('IntReg', 'uw', 'MipsISA::DSPACX2', None, 1), 79955SN/A 'DSPLo3': ('IntReg', 'uw', 'MipsISA::DSPLo3', None, 1), 80955SN/A 'DSPHi3': ('IntReg', 'uw', 'MipsISA::DSPHi3', None, 1), 8112563Sgabeblack@google.com 'DSPACX3': ('IntReg', 'uw', 'MipsISA::DSPACX3', None, 1), 8212563Sgabeblack@google.com 836654Snate@binkert.org #Floating Point Reg Operands 8410196SCurtis.Dunham@arm.com 'Fd': ('FloatReg', 'sf', 'FD', 'IsFloating', 1), 85955SN/A 'Fs': ('FloatReg', 'sf', 'FS', 'IsFloating', 2), 865396Ssaidi@eecs.umich.edu 'Ft': ('FloatReg', 'sf', 'FT', 'IsFloating', 3), 8711401Sandreas.sandberg@arm.com 'Fr': ('FloatReg', 'sf', 'FR', 'IsFloating', 3), 885863Snate@binkert.org 895863Snate@binkert.org #Special Purpose Floating Point Control Reg Operands 904202Sbinkertn@umich.edu 'FIR': ('FloatReg', 'uw', 'MipsISA::FIR', 'IsFloating', 1), 915863Snate@binkert.org 'FCCR': ('FloatReg', 'uw', 'MipsISA::FCCR', 'IsFloating', 2), 925863Snate@binkert.org 'FEXR': ('FloatReg', 'uw', 'MipsISA::FEXR', 'IsFloating', 3), 935863Snate@binkert.org 'FENR': ('FloatReg', 'uw', 'MipsISA::FENR', 'IsFloating', 3), 945863Snate@binkert.org 'FCSR': ('FloatReg', 'uw', 'MipsISA::FCSR', 'IsFloating', 3), 95955SN/A 966654Snate@binkert.org #Operands For Paired Singles FP Operations 975273Sstever@gmail.com 'Fd1': ('FloatReg', 'sf', 'FD', 'IsFloating', 4), 985871Snate@binkert.org 'Fd2': ('FloatReg', 'sf', 'FD+1', 'IsFloating', 4), 995273Sstever@gmail.com 'Fs1': ('FloatReg', 'sf', 'FS', 'IsFloating', 5), 1006654Snate@binkert.org 'Fs2': ('FloatReg', 'sf', 'FS+1', 'IsFloating', 5), 1015396Ssaidi@eecs.umich.edu 'Ft1': ('FloatReg', 'sf', 'FT', 'IsFloating', 6), 1028120Sgblack@eecs.umich.edu 'Ft2': ('FloatReg', 'sf', 'FT+1', 'IsFloating', 6), 1038120Sgblack@eecs.umich.edu 'Fr1': ('FloatReg', 'sf', 'FR', 'IsFloating', 7), 1048120Sgblack@eecs.umich.edu 'Fr2': ('FloatReg', 'sf', 'FR+1', 'IsFloating', 7), 1058120Sgblack@eecs.umich.edu 1068120Sgblack@eecs.umich.edu #Status Control Reg 1078120Sgblack@eecs.umich.edu 'Status': ('ControlReg', 'uw', 'MipsISA::Status', None, 1), 1088120Sgblack@eecs.umich.edu 1098120Sgblack@eecs.umich.edu #Special cases for when a Control Register Access is dependent on 1108879Ssteve.reinhardt@amd.com #a combination of bitfield indices (handles MTCO & MFCO) 1118879Ssteve.reinhardt@amd.com 'CP0_RD_SEL': ('ControlReg', 'uw', 'RD << 3 | SEL', None, 1), 1128879Ssteve.reinhardt@amd.com 1138879Ssteve.reinhardt@amd.com #MT Control Regs 1148879Ssteve.reinhardt@amd.com 'MVPConf0': ('ControlReg', 'uw', 'MipsISA::MVPConf0', None, 1), 1158879Ssteve.reinhardt@amd.com 'MVPControl': ('ControlReg', 'uw', 'MipsISA::MVPControl', None, 1), 1168879Ssteve.reinhardt@amd.com 'TCBind': ('ControlReg', 'uw', 'MipsISA::TCBind', None, 1), 1178879Ssteve.reinhardt@amd.com 'TCStatus': ('ControlReg', 'uw', 'MipsISA::TCStatus', None, 1), 1188879Ssteve.reinhardt@amd.com 'TCRestart': ('ControlReg', 'uw', 'MipsISA::TCRestart', None, 1), 1198879Ssteve.reinhardt@amd.com 'VPEConf0': ('ControlReg', 'uw', 'MipsISA::VPEConf0', None, 1), 1208879Ssteve.reinhardt@amd.com 'VPEControl': ('ControlReg', 'uw', 'MipsISA::VPEControl', None, 1), 1218879Ssteve.reinhardt@amd.com 'YQMask': ('ControlReg', 'uw', 'MipsISA::YQMask', None, 1), 1228879Ssteve.reinhardt@amd.com 1238120Sgblack@eecs.umich.edu # named bitfields of Control Regs 1248120Sgblack@eecs.umich.edu 'Status_IE': ('ControlBitfield', 'uw', 'MipsISA::Status', None, 1), 1258120Sgblack@eecs.umich.edu 'Status_ERL': ('ControlBitfield', 'uw', 'MipsISA::Status', None, 1), 1268120Sgblack@eecs.umich.edu 'Status_EXL': ('ControlBitfield', 'uw', 'MipsISA::Status', None, 1), 1278120Sgblack@eecs.umich.edu 'Status_CU3': ('ControlBitfield', 'uw', 'MipsISA::Status', None, 1), 1288120Sgblack@eecs.umich.edu 'Status_CU2': ('ControlBitfield', 'uw', 'MipsISA::Status', None, 1), 1298120Sgblack@eecs.umich.edu 'Status_CU1': ('ControlBitfield', 'uw', 'MipsISA::Status', None, 1), 1308120Sgblack@eecs.umich.edu 'Status_CU0': ('ControlBitfield', 'uw', 'MipsISA::Status', None, 1), 1318120Sgblack@eecs.umich.edu 'SRSCtl_HSS': ('ControlBitfield', 'uw', 'MipsISA::SRSCtl', None, 4), 1328120Sgblack@eecs.umich.edu 'SRSCtl_PSS': ('ControlBitfield', 'uw', 'MipsISA::SRSCtl', None, 4), 1338120Sgblack@eecs.umich.edu 'SRSCtl_CSS': ('ControlBitfield', 'uw', 'MipsISA::SRSCtl', None, 4), 1348120Sgblack@eecs.umich.edu 'Config_AR': ('ControlBitfield', 'uw', 'MipsISA::Config', None, 3), 1358120Sgblack@eecs.umich.edu 1368120Sgblack@eecs.umich.edu # named bitfields of Debug Regs 1378879Ssteve.reinhardt@amd.com 'Debug_DM': ('ControlBitfield', 'uw', 'MipsISA::Debug', None, 1), 1388879Ssteve.reinhardt@amd.com 'Debug_IEXI': ('ControlBitfield', 'uw', 'MipsISA::Debug', None, 1), 1398879Ssteve.reinhardt@amd.com 1408879Ssteve.reinhardt@amd.com #Memory Operand 14110458Sandreas.hansson@arm.com 'Mem': ('Mem', 'uw', None, ('IsMemRef', 'IsLoad', 'IsStore'), 4), 14210458Sandreas.hansson@arm.com 14310458Sandreas.hansson@arm.com #Program Counter Operands 1448879Ssteve.reinhardt@amd.com 'NPC': ('NPC', 'uw', None, 'IsControl', 4), 1458879Ssteve.reinhardt@amd.com 'NNPC':('NNPC', 'uw', None, 'IsControl', 4) 1468879Ssteve.reinhardt@amd.com}}; 1478879Ssteve.reinhardt@amd.com