gem5 v24.0.0.0
Loading...
Searching...
No Matches
macromem.hh
Go to the documentation of this file.
1/*
2 * Copyright (c) 2010-2014 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 *
14 * Copyright (c) 2007-2008 The Florida State University
15 * All rights reserved.
16 *
17 * Redistribution and use in source and binary forms, with or without
18 * modification, are permitted provided that the following conditions are
19 * met: redistributions of source code must retain the above copyright
20 * notice, this list of conditions and the following disclaimer;
21 * redistributions in binary form must reproduce the above copyright
22 * notice, this list of conditions and the following disclaimer in the
23 * documentation and/or other materials provided with the distribution;
24 * neither the name of the copyright holders nor the names of its
25 * contributors may be used to endorse or promote products derived from
26 * this software without specific prior written permission.
27 *
28 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 */
40
41#ifndef __ARCH_ARM_MACROMEM_HH__
42#define __ARCH_ARM_MACROMEM_HH__
43
45#include "arch/arm/pcstate.hh"
46#include "arch/arm/tlb.hh"
47#include "cpu/thread_context.hh"
48
49namespace gem5
50{
51
52namespace ArmISA
53{
54
55static inline unsigned int
57{
58 uint32_t ones = 0;
59 for (int i = 0; i < 32; i++ )
60 {
61 if ( val & (1<<i) )
62 ones++;
63 }
64 return ones;
65}
66
70class MicroOp : public PredOp
71{
72 protected:
73 MicroOp(const char *mnem, ExtMachInst machInst, OpClass __opClass)
74 : PredOp(mnem, machInst, __opClass)
75 {
76 }
77
78 public:
79 void
80 advancePC(PCStateBase &pcState) const override
81 {
82 auto &apc = pcState.as<PCState>();
83 if (flags[IsLastMicroop]) {
84 apc.uEnd();
85 } else if (flags[IsMicroop]) {
86 apc.uAdvance();
87 } else {
88 apc.advance();
89 }
90 }
91
92 void
93 advancePC(ThreadContext *tc) const override
94 {
95 PCState pc = tc->pcState().as<PCState>();
96 if (flags[IsLastMicroop]) {
97 pc.uEnd();
98 } else if (flags[IsMicroop]) {
99 pc.uAdvance();
100 } else {
101 pc.advance();
102 }
103 tc->pcState(pc);
104 }
105};
106
108{
109 protected:
110 MicroOpX(const char *mnem, ExtMachInst machInst, OpClass __opClass)
111 : ArmStaticInst(mnem, machInst, __opClass)
112 {}
113
114 public:
115 void
116 advancePC(PCStateBase &pcState) const override
117 {
118 auto &apc = pcState.as<PCState>();
119 if (flags[IsLastMicroop]) {
120 apc.uEnd();
121 } else if (flags[IsMicroop]) {
122 apc.uAdvance();
123 } else {
124 apc.advance();
125 }
126 }
127
128 void
129 advancePC(ThreadContext *tc) const override
130 {
131 PCState pc = tc->pcState().as<PCState>();
132 if (flags[IsLastMicroop]) {
133 pc.uEnd();
134 } else if (flags[IsMicroop]) {
135 pc.uAdvance();
136 } else {
137 pc.advance();
138 }
139 tc->pcState(pc);
140 }
141};
142
147{
148 protected:
150 uint32_t imm;
152
153 MicroNeonMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
154 RegIndex _dest, RegIndex _ura, uint32_t _imm)
155 : MicroOp(mnem, machInst, __opClass),
156 dest(_dest), ura(_ura), imm(_imm), memAccessFlags()
157 {
158 }
159};
160
165{
166 protected:
168 uint32_t step;
169
170 MicroNeonMixOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
171 RegIndex _dest, RegIndex _op1, uint32_t _step)
172 : MicroOp(mnem, machInst, __opClass),
173 dest(_dest), op1(_op1), step(_step)
174 {
175 }
176};
177
179{
180 protected:
181 unsigned lane;
182
184 OpClass __opClass, RegIndex _dest, RegIndex _op1,
185 uint32_t _step, unsigned _lane)
186 : MicroNeonMixOp(mnem, machInst, __opClass, _dest, _op1, _step),
187 lane(_lane)
188 {
189 }
190};
191
196{
197 protected:
200
201 MicroNeonMixOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass,
202 RegIndex _dest, RegIndex _op1, uint8_t _eSize,
203 uint8_t _dataSize, uint8_t _numStructElems,
204 uint8_t _numRegs, uint8_t _step)
205 : MicroOp(mnem, machInst, __opClass), dest(_dest), op1(_op1),
206 eSize(_eSize), dataSize(_dataSize), numStructElems(_numStructElems),
207 numRegs(_numRegs), step(_step)
208 {
209 }
210};
211
213{
214 protected:
218
220 OpClass __opClass, RegIndex _dest, RegIndex _op1,
221 uint8_t _eSize, uint8_t _dataSize,
222 uint8_t _numStructElems, uint8_t _lane, uint8_t _step,
223 bool _replicate = false)
224 : MicroOp(mnem, machInst, __opClass), dest(_dest), op1(_op1),
225 eSize(_eSize), dataSize(_dataSize), numStructElems(_numStructElems),
226 lane(_lane), step(_step), replicate(_replicate)
227 {
228 }
229};
230
235{
236 protected:
238 bool wb;
239
240 VldMultOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass,
242 uint8_t dataSize, uint8_t numStructElems, uint8_t numRegs,
243 bool wb);
244};
245
247{
248 protected:
250 bool wb;
251
252 VstMultOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass,
254 uint8_t dataSize, uint8_t numStructElems, uint8_t numRegs,
255 bool wb);
256};
257
259{
260 protected:
263
264 VldSingleOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass,
266 uint8_t dataSize, uint8_t numStructElems, uint8_t index,
267 bool wb, bool replicate = false);
268};
269
271{
272 protected:
275
276 VstSingleOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass,
278 uint8_t dataSize, uint8_t numStructElems, uint8_t index,
279 bool wb, bool replicate = false);
280};
281
288{
289 protected:
291
292 MicroSetPCCPSR(const char *mnem, ExtMachInst machInst, OpClass __opClass,
293 RegIndex _ura, RegIndex _urb, RegIndex _urc)
294 : MicroOp(mnem, machInst, __opClass),
295 ura(_ura), urb(_urb), urc(_urc)
296 {
297 }
298
299 std::string generateDisassembly(
300 Addr pc, const loader::SymbolTable *symtab) const override;
301};
302
306class MicroIntMov : public MicroOp
307{
308 protected:
310
311 MicroIntMov(const char *mnem, ExtMachInst machInst, OpClass __opClass,
312 RegIndex _ura, RegIndex _urb)
313 : MicroOp(mnem, machInst, __opClass),
314 ura(_ura), urb(_urb)
315 {
316 }
317
318 std::string generateDisassembly(
319 Addr pc, const loader::SymbolTable *symtab) const override;
320};
321
325class MicroIntImmOp : public MicroOp
326{
327 protected:
329 int32_t imm;
330
331 MicroIntImmOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
332 RegIndex _ura, RegIndex _urb, int32_t _imm)
333 : MicroOp(mnem, machInst, __opClass),
334 ura(_ura), urb(_urb), imm(_imm)
335 {
336 }
337
338 std::string generateDisassembly(
339 Addr pc, const loader::SymbolTable *symtab) const override;
340};
341
343{
344 protected:
346 int64_t imm;
347
348 MicroIntImmXOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
349 RegIndex _ura, RegIndex _urb, int64_t _imm)
350 : MicroOpX(mnem, machInst, __opClass),
351 ura(_ura), urb(_urb), imm(_imm)
352 {
353 }
354
355 std::string generateDisassembly(
356 Addr pc, const loader::SymbolTable *symtab) const override;
357};
358
362class MicroIntOp : public MicroOp
363{
364 protected:
366
367 MicroIntOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
368 RegIndex _ura, RegIndex _urb, RegIndex _urc)
369 : MicroOp(mnem, machInst, __opClass),
370 ura(_ura), urb(_urb), urc(_urc)
371 {
372 }
373
374 std::string generateDisassembly(
375 Addr pc, const loader::SymbolTable *symtab) const override;
376};
377
379{
380 protected:
383 uint32_t shiftAmt;
384
385 MicroIntRegXOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
386 RegIndex _ura, RegIndex _urb, RegIndex _urc,
387 ArmExtendType _type, uint32_t _shiftAmt)
388 : MicroOp(mnem, machInst, __opClass),
389 ura(_ura), urb(_urb), urc(_urc),
390 type(_type), shiftAmt(_shiftAmt)
391 {
392 }
393
394 std::string generateDisassembly(
395 Addr pc, const loader::SymbolTable *symtab) const override;
396};
397
401class MicroIntRegOp : public MicroOp
402{
403 protected:
405 int32_t shiftAmt;
406 ArmShiftType shiftType;
407
408 MicroIntRegOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
409 RegIndex _ura, RegIndex _urb, RegIndex _urc,
410 int32_t _shiftAmt, ArmShiftType _shiftType)
411 : MicroOp(mnem, machInst, __opClass),
412 ura(_ura), urb(_urb), urc(_urc),
413 shiftAmt(_shiftAmt), shiftType(_shiftType)
414 {
415 }
416};
417
422{
423 protected:
424 bool up;
426
427 MicroMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
428 RegIndex _ura, RegIndex _urb, bool _up, uint8_t _imm)
429 : MicroIntImmOp(mnem, machInst, __opClass, _ura, _urb, _imm),
430 up(_up), memAccessFlags(MMU::AlignWord)
431 {
432 }
433
434 std::string generateDisassembly(
435 Addr pc, const loader::SymbolTable *symtab) const override;
436};
437
439{
440 protected:
442 bool up;
443 int32_t imm;
445
446 MicroMemPairOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
447 RegIndex _dreg1, RegIndex _dreg2, RegIndex _base,
448 bool _up, uint8_t _imm)
449 : MicroOp(mnem, machInst, __opClass),
450 dest(_dreg1), dest2(_dreg2), urb(_base), up(_up), imm(_imm),
451 memAccessFlags(MMU::AlignWord)
452 {
453 }
454
455 std::string generateDisassembly(
456 Addr pc, const loader::SymbolTable *symtab) const override;
457};
458
463{
464 protected:
465 MacroMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
466 RegIndex rn, bool index, bool up, bool user,
467 bool writeback, bool load, uint32_t reglist);
468};
469
473class PairMemOp : public PredMacroOp
474{
475 public:
482
483 protected:
484 PairMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
485 uint32_t size, bool fp, bool load, bool noAlloc, bool signExt,
486 bool exclusive, bool acrel, int64_t imm, AddrMode mode,
488};
489
491{
492 protected:
493 BigFpMemImmOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
494 bool load, RegIndex dest, RegIndex base, int64_t imm);
495};
496
498{
499 protected:
500 BigFpMemPostOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
501 bool load, RegIndex dest, RegIndex base, int64_t imm);
502};
503
505{
506 protected:
507 BigFpMemPreOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
508 bool load, RegIndex dest, RegIndex base, int64_t imm);
509};
510
512{
513 protected:
514 BigFpMemRegOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
515 bool load, RegIndex dest, RegIndex base,
517};
518
520{
521 protected:
522 BigFpMemLitOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
523 RegIndex dest, int64_t imm);
524};
525
529class VldMultOp : public PredMacroOp
530{
531 protected:
532 VldMultOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
533 unsigned elems, RegIndex rn, RegIndex vd, unsigned regs,
534 unsigned inc, uint32_t size, uint32_t align, RegIndex rm);
535};
536
538{
539 protected:
540 VldSingleOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
541 bool all, unsigned elems, RegIndex rn, RegIndex vd,
542 unsigned regs, unsigned inc, uint32_t size,
543 uint32_t align, RegIndex rm, unsigned lane);
544};
545
549class VstMultOp : public PredMacroOp
550{
551 protected:
552 VstMultOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
553 unsigned width, RegIndex rn, RegIndex vd, unsigned regs,
554 unsigned inc, uint32_t size, uint32_t align, RegIndex rm);
555};
556
558{
559 protected:
560 VstSingleOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
561 bool all, unsigned elems, RegIndex rn, RegIndex vd,
562 unsigned regs, unsigned inc, uint32_t size,
563 uint32_t align, RegIndex rm, unsigned lane);
564};
565
570{
571 protected:
572 MacroVFPMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
573 RegIndex rn, RegIndex vd, bool single, bool up,
574 bool writeback, bool load, uint32_t offset);
575};
576
577} // namespace ArmISA
578} // namespace gem5
579
580#endif //__ARCH_ARM_INSTS_MACROMEM_HH__
BigFpMemImmOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, bool load, RegIndex dest, RegIndex base, int64_t imm)
Definition macromem.cc:366
BigFpMemLitOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex dest, int64_t imm)
Definition macromem.cc:465
BigFpMemPostOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, bool load, RegIndex dest, RegIndex base, int64_t imm)
Definition macromem.cc:387
BigFpMemPreOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, bool load, RegIndex dest, RegIndex base, int64_t imm)
Definition macromem.cc:413
BigFpMemRegOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, bool load, RegIndex dest, RegIndex base, RegIndex offset, ArmExtendType type, int64_t imm)
Definition macromem.cc:439
Base class for microcoded integer memory instructions.
Definition macromem.hh:463
MacroMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex rn, bool index, bool up, bool user, bool writeback, bool load, uint32_t reglist)
Definition macromem.cc:57
Base class for microcoded floating point memory instructions.
Definition macromem.hh:570
MacroVFPMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex rn, RegIndex vd, bool single, bool up, bool writeback, bool load, uint32_t offset)
Definition macromem.cc:1456
Microops of the form IntRegA = IntRegB op Imm.
Definition macromem.hh:326
MicroIntImmOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _ura, RegIndex _urb, int32_t _imm)
Definition macromem.hh:331
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition macromem.cc:1535
MicroIntImmXOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _ura, RegIndex _urb, int64_t _imm)
Definition macromem.hh:348
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition macromem.cc:1549
Microops of the form IntRegA = IntRegB.
Definition macromem.hh:307
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition macromem.cc:1586
MicroIntMov(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _ura, RegIndex _urb)
Definition macromem.hh:311
Microops of the form IntRegA = IntRegB op IntRegC.
Definition macromem.hh:363
MicroIntOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _ura, RegIndex _urb, RegIndex _urc)
Definition macromem.hh:367
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition macromem.cc:1598
Microops of the form IntRegA = IntRegB op shifted IntRegC.
Definition macromem.hh:402
MicroIntRegOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _ura, RegIndex _urb, RegIndex _urc, int32_t _shiftAmt, ArmShiftType _shiftType)
Definition macromem.hh:408
MicroIntRegXOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _ura, RegIndex _urb, RegIndex _urc, ArmExtendType _type, uint32_t _shiftAmt)
Definition macromem.hh:385
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition macromem.cc:1573
Memory microops which use IntReg + Imm addressing.
Definition macromem.hh:422
MicroMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _ura, RegIndex _urb, bool _up, uint8_t _imm)
Definition macromem.hh:427
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition macromem.cc:1612
MicroMemPairOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _dreg1, RegIndex _dreg2, RegIndex _base, bool _up, uint8_t _imm)
Definition macromem.hh:446
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition macromem.cc:1630
Microops for Neon loads/stores.
Definition macromem.hh:147
MicroNeonMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _dest, RegIndex _ura, uint32_t _imm)
Definition macromem.hh:153
MicroNeonMixLaneOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint8_t _eSize, uint8_t _dataSize, uint8_t _numStructElems, uint8_t _lane, uint8_t _step, bool _replicate=false)
Definition macromem.hh:219
MicroNeonMixLaneOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint32_t _step, unsigned _lane)
Definition macromem.hh:183
Microops for AArch64 NEON load/store (de)interleaving.
Definition macromem.hh:196
MicroNeonMixOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint8_t _eSize, uint8_t _dataSize, uint8_t _numStructElems, uint8_t _numRegs, uint8_t _step)
Definition macromem.hh:201
Microops for Neon load/store (de)interleaving.
Definition macromem.hh:165
MicroNeonMixOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint32_t _step)
Definition macromem.hh:170
void advancePC(PCStateBase &pcState) const override
Definition macromem.hh:116
MicroOpX(const char *mnem, ExtMachInst machInst, OpClass __opClass)
Definition macromem.hh:110
void advancePC(ThreadContext *tc) const override
Definition macromem.hh:129
Base class for Memory microops.
Definition macromem.hh:71
MicroOp(const char *mnem, ExtMachInst machInst, OpClass __opClass)
Definition macromem.hh:73
void advancePC(ThreadContext *tc) const override
Definition macromem.hh:93
void advancePC(PCStateBase &pcState) const override
Definition macromem.hh:80
Microops of the form PC = IntRegA CPSR = IntRegB.
Definition macromem.hh:288
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition macromem.cc:1563
MicroSetPCCPSR(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _ura, RegIndex _urb, RegIndex _urc)
Definition macromem.hh:292
Base class for pair load/store instructions.
Definition macromem.hh:474
PairMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, uint32_t size, bool fp, bool load, bool noAlloc, bool signExt, bool exclusive, bool acrel, int64_t imm, AddrMode mode, RegIndex rn, RegIndex rt, RegIndex rt2)
Definition macromem.cc:244
Base class for predicated macro-operations.
Definition pred_inst.hh:343
Base class for predicated integer operations.
Definition pred_inst.hh:217
Base classes for microcoded AArch64 NEON memory instructions.
Definition macromem.hh:235
VldMultOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex rn, RegIndex vd, RegIndex rm, uint8_t eSize, uint8_t dataSize, uint8_t numStructElems, uint8_t numRegs, bool wb)
Definition macromem.cc:1139
Base classes for microcoded integer memory instructions.
Definition macromem.hh:530
VldMultOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, unsigned elems, RegIndex rn, RegIndex vd, unsigned regs, unsigned inc, uint32_t size, uint32_t align, RegIndex rm)
Definition macromem.cc:478
VldSingleOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex rn, RegIndex vd, RegIndex rm, uint8_t eSize, uint8_t dataSize, uint8_t numStructElems, uint8_t index, bool wb, bool replicate=false)
Definition macromem.cc:1309
VldSingleOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, bool all, unsigned elems, RegIndex rn, RegIndex vd, unsigned regs, unsigned inc, uint32_t size, uint32_t align, RegIndex rm, unsigned lane)
Definition macromem.cc:573
VstMultOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex rn, RegIndex vd, RegIndex rm, uint8_t eSize, uint8_t dataSize, uint8_t numStructElems, uint8_t numRegs, bool wb)
Definition macromem.cc:1224
Base class for microcoded integer memory instructions.
Definition macromem.hh:550
VstMultOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, unsigned width, RegIndex rn, RegIndex vd, unsigned regs, unsigned inc, uint32_t size, uint32_t align, RegIndex rm)
Definition macromem.cc:841
VstSingleOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex rn, RegIndex vd, RegIndex rm, uint8_t eSize, uint8_t dataSize, uint8_t numStructElems, uint8_t index, bool wb, bool replicate=false)
Definition macromem.cc:1383
VstSingleOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, bool all, unsigned elems, RegIndex rn, RegIndex vd, unsigned regs, unsigned inc, uint32_t size, uint32_t align, RegIndex rm, unsigned lane)
Definition macromem.cc:936
Target & as()
Definition pcstate.hh:73
size_t size() const
std::bitset< Num_Flags > flags
Flag values for this instruction.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
virtual const PCStateBase & pcState() const =0
static unsigned int number_of_ones(int32_t val)
Definition macromem.hh:56
Bitfield< 15, 12 > rt
Definition types.hh:115
Bitfield< 4, 0 > mode
Definition misc_types.hh:74
Bitfield< 4 > width
Definition misc_types.hh:72
Bitfield< 3, 0 > rm
Definition types.hh:118
Bitfield< 7, 0 > imm
Definition types.hh:132
Bitfield< 21 > writeback
Definition types.hh:126
Bitfield< 7 > i
Definition misc_types.hh:67
Bitfield< 23, 0 > offset
Definition types.hh:144
Bitfield< 23 > up
Definition types.hh:124
Bitfield< 19, 16 > rn
Definition types.hh:113
Bitfield< 19, 16 > fp
Bitfield< 4 > pc
Bitfield< 30, 0 > index
Bitfield< 31, 0 > all
Definition types.hh:76
Bitfield< 11, 7 > vd
Definition types.hh:163
Bitfield< 51, 12 > base
Definition pagetable.hh:141
Bitfield< 63 > val
Definition misc.hh:804
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition binary32.hh:36
uint16_t RegIndex
Definition types.hh:176
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition types.hh:147

Generated on Tue Jun 18 2024 16:23:56 for gem5 by doxygen 1.11.0