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