static_inst.hh (12857:6fc1b2a47d76) static_inst.hh (13610:5d5404ac6288)
1/*
1/*
2 * Copyright (c) 2017 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated
11 * unmodified and in its entirety in all distributions of the software,
12 * modified or unmodified, in source code or in binary form.
13 *
2 * Copyright (c) 2003-2005 The Regents of The University of Michigan
3 * Copyright (c) 2013 Advanced Micro Devices, Inc.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met: redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer;

--- 90 unchanged lines hidden (view full) ---

100 int8_t _numIntDestRegs;
101 int8_t _numCCDestRegs;
102 //@}
103
104 /** To use in architectures with vector register file. */
105 /** @{ */
106 int8_t _numVecDestRegs;
107 int8_t _numVecElemDestRegs;
14 * Copyright (c) 2003-2005 The Regents of The University of Michigan
15 * Copyright (c) 2013 Advanced Micro Devices, Inc.
16 * All rights reserved.
17 *
18 * Redistribution and use in source and binary forms, with or without
19 * modification, are permitted provided that the following conditions are
20 * met: redistributions of source code must retain the above copyright
21 * notice, this list of conditions and the following disclaimer;

--- 90 unchanged lines hidden (view full) ---

112 int8_t _numIntDestRegs;
113 int8_t _numCCDestRegs;
114 //@}
115
116 /** To use in architectures with vector register file. */
117 /** @{ */
118 int8_t _numVecDestRegs;
119 int8_t _numVecElemDestRegs;
120 int8_t _numVecPredDestRegs;
108 /** @} */
109
110 public:
111
112 /// @name Register information.
121 /** @} */
122
123 public:
124
125 /// @name Register information.
113 /// The sum of numFPDestRegs(), numIntDestRegs(), numVecDestRegs() and
114 /// numVecelemDestRegs() equals numDestRegs(). The former two functions
115 /// are used to track physical register usage for machines with separate
116 /// int & FP reg files, the next two is for machines with vector register
117 /// file.
126 /// The sum of numFPDestRegs(), numIntDestRegs(), numVecDestRegs(),
127 /// numVecElemDestRegs() and numVecPredDestRegs() equals numDestRegs().
128 /// The former two functions are used to track physical register usage for
129 /// machines with separate int & FP reg files, the next three are for
130 /// machines with vector and predicate register files.
118 //@{
119 /// Number of source registers.
120 int8_t numSrcRegs() const { return _numSrcRegs; }
121 /// Number of destination registers.
122 int8_t numDestRegs() const { return _numDestRegs; }
123 /// Number of floating-point destination regs.
124 int8_t numFPDestRegs() const { return _numFPDestRegs; }
125 /// Number of integer destination regs.
126 int8_t numIntDestRegs() const { return _numIntDestRegs; }
127 /// Number of vector destination regs.
128 int8_t numVecDestRegs() const { return _numVecDestRegs; }
129 /// Number of vector element destination regs.
130 int8_t numVecElemDestRegs() const { return _numVecElemDestRegs; }
131 //@{
132 /// Number of source registers.
133 int8_t numSrcRegs() const { return _numSrcRegs; }
134 /// Number of destination registers.
135 int8_t numDestRegs() const { return _numDestRegs; }
136 /// Number of floating-point destination regs.
137 int8_t numFPDestRegs() const { return _numFPDestRegs; }
138 /// Number of integer destination regs.
139 int8_t numIntDestRegs() const { return _numIntDestRegs; }
140 /// Number of vector destination regs.
141 int8_t numVecDestRegs() const { return _numVecDestRegs; }
142 /// Number of vector element destination regs.
143 int8_t numVecElemDestRegs() const { return _numVecElemDestRegs; }
144 /// Number of predicate destination regs.
145 int8_t numVecPredDestRegs() const { return _numVecPredDestRegs; }
131 /// Number of coprocesor destination regs.
132 int8_t numCCDestRegs() const { return _numCCDestRegs; }
133 //@}
134
135 /// @name Flag accessors.
136 /// These functions are used to access the values of the various
137 /// instruction property flags. See StaticInst::Flags for descriptions
138 /// of the individual flags.

--- 104 unchanged lines hidden (view full) ---

243 /// Constructor.
244 /// It's important to initialize everything here to a sane
245 /// default, since the decoder generally only overrides
246 /// the fields that are meaningful for the particular
247 /// instruction.
248 StaticInst(const char *_mnemonic, ExtMachInst _machInst, OpClass __opClass)
249 : _opClass(__opClass), _numSrcRegs(0), _numDestRegs(0),
250 _numFPDestRegs(0), _numIntDestRegs(0), _numCCDestRegs(0),
146 /// Number of coprocesor destination regs.
147 int8_t numCCDestRegs() const { return _numCCDestRegs; }
148 //@}
149
150 /// @name Flag accessors.
151 /// These functions are used to access the values of the various
152 /// instruction property flags. See StaticInst::Flags for descriptions
153 /// of the individual flags.

--- 104 unchanged lines hidden (view full) ---

258 /// Constructor.
259 /// It's important to initialize everything here to a sane
260 /// default, since the decoder generally only overrides
261 /// the fields that are meaningful for the particular
262 /// instruction.
263 StaticInst(const char *_mnemonic, ExtMachInst _machInst, OpClass __opClass)
264 : _opClass(__opClass), _numSrcRegs(0), _numDestRegs(0),
265 _numFPDestRegs(0), _numIntDestRegs(0), _numCCDestRegs(0),
251 _numVecDestRegs(0), _numVecElemDestRegs(0), machInst(_machInst),
252 mnemonic(_mnemonic), cachedDisassembly(0)
266 _numVecDestRegs(0), _numVecElemDestRegs(0), _numVecPredDestRegs(0),
267 machInst(_machInst), mnemonic(_mnemonic), cachedDisassembly(0)
253 { }
254
255 public:
256 virtual ~StaticInst();
257
258 virtual Fault execute(ExecContext *xc,
259 Trace::InstRecord *traceData) const = 0;
260

--- 89 unchanged lines hidden ---
268 { }
269
270 public:
271 virtual ~StaticInst();
272
273 virtual Fault execute(ExecContext *xc,
274 Trace::InstRecord *traceData) const = 0;
275

--- 89 unchanged lines hidden ---