macromem.isa (12234:78ece221f9f5) macromem.isa (12236:126ac9da6050)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010-2014 ARM Limited
4// All rights reserved
5//
6// The license below extends only to copyright in the software and shall
7// not be construed as granting a license to any other intellectual
8// property including but not limited to intellectual property relating

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

48
49def template MicroMemDeclare {{
50 class %(class_name)s : public %(base_class)s
51 {
52 public:
53 %(class_name)s(ExtMachInst machInst,
54 RegIndex _ura, RegIndex _urb, bool _up,
55 uint8_t _imm);
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010-2014 ARM Limited
4// All rights reserved
5//
6// The license below extends only to copyright in the software and shall
7// not be construed as granting a license to any other intellectual
8// property including but not limited to intellectual property relating

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

48
49def template MicroMemDeclare {{
50 class %(class_name)s : public %(base_class)s
51 {
52 public:
53 %(class_name)s(ExtMachInst machInst,
54 RegIndex _ura, RegIndex _urb, bool _up,
55 uint8_t _imm);
56 %(BasicExecDeclare)s
57 %(InitiateAccDeclare)s
58 %(CompleteAccDeclare)s
56 Fault execute(ExecContext *, Trace::InstRecord *) const;
57 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
58 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
59 };
60}};
61
62def template MicroMemConstructor {{
63 %(class_name)s::%(class_name)s(ExtMachInst machInst,
64 RegIndex _ura,
65 RegIndex _urb,
66 bool _up,

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

80
81def template MicroMemPairDeclare {{
82 class %(class_name)s : public %(base_class)s
83 {
84 public:
85 %(class_name)s(ExtMachInst machInst,
86 RegIndex _dreg1, RegIndex _dreg2, RegIndex _base,
87 bool _up, uint8_t _imm);
59 };
60}};
61
62def template MicroMemConstructor {{
63 %(class_name)s::%(class_name)s(ExtMachInst machInst,
64 RegIndex _ura,
65 RegIndex _urb,
66 bool _up,

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

80
81def template MicroMemPairDeclare {{
82 class %(class_name)s : public %(base_class)s
83 {
84 public:
85 %(class_name)s(ExtMachInst machInst,
86 RegIndex _dreg1, RegIndex _dreg2, RegIndex _base,
87 bool _up, uint8_t _imm);
88 %(BasicExecDeclare)s
89 %(InitiateAccDeclare)s
90 %(CompleteAccDeclare)s
88 Fault execute(ExecContext *, Trace::InstRecord *) const;
89 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
90 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
91 };
92}};
93
94def template MicroMemPairConstructor {{
95 %(class_name)s::%(class_name)s(ExtMachInst machInst,
96 RegIndex _dreg1,
97 RegIndex _dreg2,
98 RegIndex _base,

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

129 %(constructor)s;
130 if (!(condCode == COND_AL || condCode == COND_UC)) {
131 for (int x = 0; x < _numDestRegs; x++) {
132 _srcRegIdx[_numSrcRegs++] = _destRegIdx[x];
133 }
134 }
135 }
136
91 };
92}};
93
94def template MicroMemPairConstructor {{
95 %(class_name)s::%(class_name)s(ExtMachInst machInst,
96 RegIndex _dreg1,
97 RegIndex _dreg2,
98 RegIndex _base,

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

129 %(constructor)s;
130 if (!(condCode == COND_AL || condCode == COND_UC)) {
131 for (int x = 0; x < _numDestRegs; x++) {
132 _srcRegIdx[_numSrcRegs++] = _destRegIdx[x];
133 }
134 }
135 }
136
137 %(BasicExecDeclare)s
138 %(InitiateAccDeclare)s
139 %(CompleteAccDeclare)s
137 Fault execute(ExecContext *, Trace::InstRecord *) const;
138 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
139 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
140 };
141}};
142
143////////////////////////////////////////////////////////////////////
144//
145// PC = Integer(ura)
146// CPSR = Integer(urb)
147//
148
149def template MicroSetPCCPSRDeclare {{
150 class %(class_name)s : public %(base_class)s
151 {
152 public:
153 %(class_name)s(ExtMachInst machInst,
154 IntRegIndex _ura,
155 IntRegIndex _urb,
156 IntRegIndex _urc);
140 };
141}};
142
143////////////////////////////////////////////////////////////////////
144//
145// PC = Integer(ura)
146// CPSR = Integer(urb)
147//
148
149def template MicroSetPCCPSRDeclare {{
150 class %(class_name)s : public %(base_class)s
151 {
152 public:
153 %(class_name)s(ExtMachInst machInst,
154 IntRegIndex _ura,
155 IntRegIndex _urb,
156 IntRegIndex _urc);
157 %(BasicExecDeclare)s
157 Fault execute(ExecContext *, Trace::InstRecord *) const;
158 };
159}};
160
161def template MicroSetPCCPSRConstructor {{
162 %(class_name)s::%(class_name)s(ExtMachInst machInst,
163 IntRegIndex _ura,
164 IntRegIndex _urb,
165 IntRegIndex _urc)

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

184//
185
186def template MicroIntDeclare {{
187 class %(class_name)s : public %(base_class)s
188 {
189 public:
190 %(class_name)s(ExtMachInst machInst,
191 RegIndex _ura, RegIndex _urb, RegIndex _urc);
158 };
159}};
160
161def template MicroSetPCCPSRConstructor {{
162 %(class_name)s::%(class_name)s(ExtMachInst machInst,
163 IntRegIndex _ura,
164 IntRegIndex _urb,
165 IntRegIndex _urc)

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

184//
185
186def template MicroIntDeclare {{
187 class %(class_name)s : public %(base_class)s
188 {
189 public:
190 %(class_name)s(ExtMachInst machInst,
191 RegIndex _ura, RegIndex _urb, RegIndex _urc);
192 %(BasicExecDeclare)s
192 Fault execute(ExecContext *, Trace::InstRecord *) const;
193 };
194}};
195
196def template MicroIntConstructor {{
197 %(class_name)s::%(class_name)s(ExtMachInst machInst,
198 RegIndex _ura,
199 RegIndex _urb,
200 RegIndex _urc)

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

246 %(constructor)s;
247 if (!(condCode == COND_AL || condCode == COND_UC)) {
248 for (int x = 0; x < _numDestRegs; x++) {
249 _srcRegIdx[_numSrcRegs++] = _destRegIdx[x];
250 }
251 }
252 }
253
193 };
194}};
195
196def template MicroIntConstructor {{
197 %(class_name)s::%(class_name)s(ExtMachInst machInst,
198 RegIndex _ura,
199 RegIndex _urb,
200 RegIndex _urc)

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

246 %(constructor)s;
247 if (!(condCode == COND_AL || condCode == COND_UC)) {
248 for (int x = 0; x < _numDestRegs; x++) {
249 _srcRegIdx[_numSrcRegs++] = _destRegIdx[x];
250 }
251 }
252 }
253
254 %(BasicExecDeclare)s
254 Fault execute(ExecContext *, Trace::InstRecord *) const;
255 };
256}};
257
258def template MicroNeonMixExecute {{
259 template <class Element>
260 Fault %(class_name)s<Element>::execute(ExecContext *xc,
261 Trace::InstRecord *traceData) const
262 {

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

299 %(constructor)s;
300 if (!(condCode == COND_AL || condCode == COND_UC)) {
301 for (int x = 0; x < _numDestRegs; x++) {
302 _srcRegIdx[_numSrcRegs++] = _destRegIdx[x];
303 }
304 }
305 }
306
255 };
256}};
257
258def template MicroNeonMixExecute {{
259 template <class Element>
260 Fault %(class_name)s<Element>::execute(ExecContext *xc,
261 Trace::InstRecord *traceData) const
262 {

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

299 %(constructor)s;
300 if (!(condCode == COND_AL || condCode == COND_UC)) {
301 for (int x = 0; x < _numDestRegs; x++) {
302 _srcRegIdx[_numSrcRegs++] = _destRegIdx[x];
303 }
304 }
305 }
306
307 %(BasicExecDeclare)s
307 Fault execute(ExecContext *, Trace::InstRecord *) const;
308 };
309}};
310
311////////////////////////////////////////////////////////////////////
312//
313// Integer = Integer
314//
315
316def template MicroIntMovDeclare {{
317 class %(class_name)s : public %(base_class)s
318 {
319 public:
320 %(class_name)s(ExtMachInst machInst,
321 RegIndex _ura, RegIndex _urb);
308 };
309}};
310
311////////////////////////////////////////////////////////////////////
312//
313// Integer = Integer
314//
315
316def template MicroIntMovDeclare {{
317 class %(class_name)s : public %(base_class)s
318 {
319 public:
320 %(class_name)s(ExtMachInst machInst,
321 RegIndex _ura, RegIndex _urb);
322 %(BasicExecDeclare)s
322 Fault execute(ExecContext *, Trace::InstRecord *) const;
323 };
324}};
325def template MicroIntMovConstructor {{
326 %(class_name)s::%(class_name)s(ExtMachInst machInst,
327 RegIndex _ura,
328 RegIndex _urb)
329 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s,
330 _ura, _urb)

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

345
346def template MicroIntImmDeclare {{
347 class %(class_name)s : public %(base_class)s
348 {
349 public:
350 %(class_name)s(ExtMachInst machInst,
351 RegIndex _ura, RegIndex _urb,
352 int32_t _imm);
323 };
324}};
325def template MicroIntMovConstructor {{
326 %(class_name)s::%(class_name)s(ExtMachInst machInst,
327 RegIndex _ura,
328 RegIndex _urb)
329 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s,
330 _ura, _urb)

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

345
346def template MicroIntImmDeclare {{
347 class %(class_name)s : public %(base_class)s
348 {
349 public:
350 %(class_name)s(ExtMachInst machInst,
351 RegIndex _ura, RegIndex _urb,
352 int32_t _imm);
353 %(BasicExecDeclare)s
353 Fault execute(ExecContext *, Trace::InstRecord *) const;
354 };
355}};
356
357def template MicroIntImmConstructor {{
358 %(class_name)s::%(class_name)s(ExtMachInst machInst,
359 RegIndex _ura,
360 RegIndex _urb,
361 int32_t _imm)

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

385
386def template MicroIntRegDeclare {{
387 class %(class_name)s : public %(base_class)s
388 {
389 public:
390 %(class_name)s(ExtMachInst machInst,
391 RegIndex _ura, RegIndex _urb, RegIndex _urc,
392 int32_t _shiftAmt, ArmShiftType _shiftType);
354 };
355}};
356
357def template MicroIntImmConstructor {{
358 %(class_name)s::%(class_name)s(ExtMachInst machInst,
359 RegIndex _ura,
360 RegIndex _urb,
361 int32_t _imm)

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

385
386def template MicroIntRegDeclare {{
387 class %(class_name)s : public %(base_class)s
388 {
389 public:
390 %(class_name)s(ExtMachInst machInst,
391 RegIndex _ura, RegIndex _urb, RegIndex _urc,
392 int32_t _shiftAmt, ArmShiftType _shiftType);
393 %(BasicExecDeclare)s
393 Fault execute(ExecContext *, Trace::InstRecord *) const;
394 };
395}};
396
397def template MicroIntXERegConstructor {{
398 %(class_name)s::%(class_name)s(ExtMachInst machInst,
399 RegIndex _ura, RegIndex _urb, RegIndex _urc,
400 ArmExtendType _type, uint32_t _shiftAmt)
401 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s,

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

407
408def template MicroIntXERegDeclare {{
409 class %(class_name)s : public %(base_class)s
410 {
411 public:
412 %(class_name)s(ExtMachInst machInst,
413 RegIndex _ura, RegIndex _urb, RegIndex _urc,
414 ArmExtendType _type, uint32_t _shiftAmt);
394 };
395}};
396
397def template MicroIntXERegConstructor {{
398 %(class_name)s::%(class_name)s(ExtMachInst machInst,
399 RegIndex _ura, RegIndex _urb, RegIndex _urc,
400 ArmExtendType _type, uint32_t _shiftAmt)
401 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s,

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

407
408def template MicroIntXERegDeclare {{
409 class %(class_name)s : public %(base_class)s
410 {
411 public:
412 %(class_name)s(ExtMachInst machInst,
413 RegIndex _ura, RegIndex _urb, RegIndex _urc,
414 ArmExtendType _type, uint32_t _shiftAmt);
415 %(BasicExecDeclare)s
415 Fault execute(ExecContext *, Trace::InstRecord *) const;
416 };
417}};
418
419def template MicroIntRegConstructor {{
420 %(class_name)s::%(class_name)s(ExtMachInst machInst,
421 RegIndex _ura, RegIndex _urb, RegIndex _urc,
422 int32_t _shiftAmt, ArmShiftType _shiftType)
423 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s,

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

443 */
444class %(class_name)s : public %(base_class)s
445{
446 public:
447 // Constructor
448 %(class_name)s(ExtMachInst machInst, IntRegIndex rn,
449 bool index, bool up, bool user, bool writeback, bool load,
450 uint32_t reglist);
416 };
417}};
418
419def template MicroIntRegConstructor {{
420 %(class_name)s::%(class_name)s(ExtMachInst machInst,
421 RegIndex _ura, RegIndex _urb, RegIndex _urc,
422 int32_t _shiftAmt, ArmShiftType _shiftType)
423 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s,

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

443 */
444class %(class_name)s : public %(base_class)s
445{
446 public:
447 // Constructor
448 %(class_name)s(ExtMachInst machInst, IntRegIndex rn,
449 bool index, bool up, bool user, bool writeback, bool load,
450 uint32_t reglist);
451 %(BasicExecPanic)s
452};
453}};
454
455def template MacroMemConstructor {{
456%(class_name)s::%(class_name)s(ExtMachInst machInst, IntRegIndex rn,
457 bool index, bool up, bool user, bool writeback, bool load,
458 uint32_t reglist)
459 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, rn,

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

471
472def template BigFpMemImmDeclare {{
473class %(class_name)s : public %(base_class)s
474{
475 public:
476 // Constructor
477 %(class_name)s(const char *mnemonic, ExtMachInst machInst,
478 bool load, IntRegIndex dest, IntRegIndex base, int64_t imm);
451};
452}};
453
454def template MacroMemConstructor {{
455%(class_name)s::%(class_name)s(ExtMachInst machInst, IntRegIndex rn,
456 bool index, bool up, bool user, bool writeback, bool load,
457 uint32_t reglist)
458 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, rn,

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

470
471def template BigFpMemImmDeclare {{
472class %(class_name)s : public %(base_class)s
473{
474 public:
475 // Constructor
476 %(class_name)s(const char *mnemonic, ExtMachInst machInst,
477 bool load, IntRegIndex dest, IntRegIndex base, int64_t imm);
479 %(BasicExecPanic)s
480};
481}};
482
483def template BigFpMemImmConstructor {{
484%(class_name)s::%(class_name)s(const char *mnemonic, ExtMachInst machInst,
485 bool load, IntRegIndex dest, IntRegIndex base, int64_t imm)
486 : %(base_class)s(mnemonic, machInst, %(op_class)s, load, dest, base, imm)
487{

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

492def template BigFpMemRegDeclare {{
493class %(class_name)s : public %(base_class)s
494{
495 public:
496 // Constructor
497 %(class_name)s(const char *mnemonic, ExtMachInst machInst,
498 bool load, IntRegIndex dest, IntRegIndex base,
499 IntRegIndex offset, ArmExtendType type, int64_t imm);
478};
479}};
480
481def template BigFpMemImmConstructor {{
482%(class_name)s::%(class_name)s(const char *mnemonic, ExtMachInst machInst,
483 bool load, IntRegIndex dest, IntRegIndex base, int64_t imm)
484 : %(base_class)s(mnemonic, machInst, %(op_class)s, load, dest, base, imm)
485{

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

490def template BigFpMemRegDeclare {{
491class %(class_name)s : public %(base_class)s
492{
493 public:
494 // Constructor
495 %(class_name)s(const char *mnemonic, ExtMachInst machInst,
496 bool load, IntRegIndex dest, IntRegIndex base,
497 IntRegIndex offset, ArmExtendType type, int64_t imm);
500 %(BasicExecPanic)s
501};
502}};
503
504def template BigFpMemRegConstructor {{
505%(class_name)s::%(class_name)s(const char *mnemonic, ExtMachInst machInst,
506 bool load, IntRegIndex dest, IntRegIndex base,
507 IntRegIndex offset, ArmExtendType type, int64_t imm)
508 : %(base_class)s(mnemonic, machInst, %(op_class)s, load, dest, base,

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

514
515def template BigFpMemLitDeclare {{
516class %(class_name)s : public %(base_class)s
517{
518 public:
519 // Constructor
520 %(class_name)s(const char *mnemonic, ExtMachInst machInst,
521 IntRegIndex dest, int64_t imm);
498};
499}};
500
501def template BigFpMemRegConstructor {{
502%(class_name)s::%(class_name)s(const char *mnemonic, ExtMachInst machInst,
503 bool load, IntRegIndex dest, IntRegIndex base,
504 IntRegIndex offset, ArmExtendType type, int64_t imm)
505 : %(base_class)s(mnemonic, machInst, %(op_class)s, load, dest, base,

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

511
512def template BigFpMemLitDeclare {{
513class %(class_name)s : public %(base_class)s
514{
515 public:
516 // Constructor
517 %(class_name)s(const char *mnemonic, ExtMachInst machInst,
518 IntRegIndex dest, int64_t imm);
522 %(BasicExecPanic)s
523};
524}};
525
526def template BigFpMemLitConstructor {{
527%(class_name)s::%(class_name)s(const char *mnemonic, ExtMachInst machInst,
528 IntRegIndex dest, int64_t imm)
529 : %(base_class)s(mnemonic, machInst, %(op_class)s, dest, imm)
530{

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

537{
538 public:
539 // Constructor
540 %(class_name)s(const char *mnemonic, ExtMachInst machInst,
541 uint32_t size, bool fp, bool load, bool noAlloc, bool signExt,
542 bool exclusive, bool acrel, uint32_t imm,
543 AddrMode mode, IntRegIndex rn, IntRegIndex rt,
544 IntRegIndex rt2);
519};
520}};
521
522def template BigFpMemLitConstructor {{
523%(class_name)s::%(class_name)s(const char *mnemonic, ExtMachInst machInst,
524 IntRegIndex dest, int64_t imm)
525 : %(base_class)s(mnemonic, machInst, %(op_class)s, dest, imm)
526{

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

533{
534 public:
535 // Constructor
536 %(class_name)s(const char *mnemonic, ExtMachInst machInst,
537 uint32_t size, bool fp, bool load, bool noAlloc, bool signExt,
538 bool exclusive, bool acrel, uint32_t imm,
539 AddrMode mode, IntRegIndex rn, IntRegIndex rt,
540 IntRegIndex rt2);
545 %(BasicExecPanic)s
546};
547}};
548
549def template PairMemConstructor {{
550%(class_name)s::%(class_name)s(const char *mnemonic, ExtMachInst machInst,
551 uint32_t size, bool fp, bool load, bool noAlloc, bool signExt,
552 bool exclusive, bool acrel, uint32_t imm, AddrMode mode,
553 IntRegIndex rn, IntRegIndex rt, IntRegIndex rt2)

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

562def template VMemMultDeclare {{
563class %(class_name)s : public %(base_class)s
564{
565 public:
566 // Constructor
567 %(class_name)s(ExtMachInst machInst, unsigned width,
568 RegIndex rn, RegIndex vd, unsigned regs, unsigned inc,
569 uint32_t size, uint32_t align, RegIndex rm);
541};
542}};
543
544def template PairMemConstructor {{
545%(class_name)s::%(class_name)s(const char *mnemonic, ExtMachInst machInst,
546 uint32_t size, bool fp, bool load, bool noAlloc, bool signExt,
547 bool exclusive, bool acrel, uint32_t imm, AddrMode mode,
548 IntRegIndex rn, IntRegIndex rt, IntRegIndex rt2)

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

557def template VMemMultDeclare {{
558class %(class_name)s : public %(base_class)s
559{
560 public:
561 // Constructor
562 %(class_name)s(ExtMachInst machInst, unsigned width,
563 RegIndex rn, RegIndex vd, unsigned regs, unsigned inc,
564 uint32_t size, uint32_t align, RegIndex rm);
570 %(BasicExecPanic)s
571};
572}};
573
574def template VMemMultConstructor {{
575%(class_name)s::%(class_name)s(ExtMachInst machInst, unsigned width,
576 RegIndex rn, RegIndex vd, unsigned regs, unsigned inc,
577 uint32_t size, uint32_t align, RegIndex rm)
578 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, width,

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

590def template VMemSingleDeclare {{
591class %(class_name)s : public %(base_class)s
592{
593 public:
594 // Constructor
595 %(class_name)s(ExtMachInst machInst, bool all, unsigned width,
596 RegIndex rn, RegIndex vd, unsigned regs, unsigned inc,
597 uint32_t size, uint32_t align, RegIndex rm, unsigned lane = 0);
565};
566}};
567
568def template VMemMultConstructor {{
569%(class_name)s::%(class_name)s(ExtMachInst machInst, unsigned width,
570 RegIndex rn, RegIndex vd, unsigned regs, unsigned inc,
571 uint32_t size, uint32_t align, RegIndex rm)
572 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, width,

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

584def template VMemSingleDeclare {{
585class %(class_name)s : public %(base_class)s
586{
587 public:
588 // Constructor
589 %(class_name)s(ExtMachInst machInst, bool all, unsigned width,
590 RegIndex rn, RegIndex vd, unsigned regs, unsigned inc,
591 uint32_t size, uint32_t align, RegIndex rm, unsigned lane = 0);
598 %(BasicExecPanic)s
599};
600}};
601
602def template VMemSingleConstructor {{
603%(class_name)s::%(class_name)s(ExtMachInst machInst, bool all, unsigned width,
604 RegIndex rn, RegIndex vd, unsigned regs, unsigned inc,
605 uint32_t size, uint32_t align, RegIndex rm, unsigned lane)
606 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, all, width,

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

621 */
622class %(class_name)s : public %(base_class)s
623{
624 public:
625 // Constructor
626 %(class_name)s(ExtMachInst machInst, IntRegIndex rn,
627 RegIndex vd, bool single, bool up, bool writeback,
628 bool load, uint32_t offset);
592};
593}};
594
595def template VMemSingleConstructor {{
596%(class_name)s::%(class_name)s(ExtMachInst machInst, bool all, unsigned width,
597 RegIndex rn, RegIndex vd, unsigned regs, unsigned inc,
598 uint32_t size, uint32_t align, RegIndex rm, unsigned lane)
599 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, all, width,

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

614 */
615class %(class_name)s : public %(base_class)s
616{
617 public:
618 // Constructor
619 %(class_name)s(ExtMachInst machInst, IntRegIndex rn,
620 RegIndex vd, bool single, bool up, bool writeback,
621 bool load, uint32_t offset);
629 %(BasicExecPanic)s
630};
631}};
632
633def template MacroVFPMemConstructor {{
634%(class_name)s::%(class_name)s(ExtMachInst machInst, IntRegIndex rn,
635 RegIndex vd, bool single, bool up, bool writeback, bool load,
636 uint32_t offset)
637 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, rn,
638 vd, single, up, writeback, load, offset)
639{
640 %(constructor)s;
641 if (!(condCode == COND_AL || condCode == COND_UC)) {
642 for (int x = 0; x < _numDestRegs; x++) {
643 _srcRegIdx[_numSrcRegs++] = _destRegIdx[x];
644 }
645 }
646}
647
648}};
622};
623}};
624
625def template MacroVFPMemConstructor {{
626%(class_name)s::%(class_name)s(ExtMachInst machInst, IntRegIndex rn,
627 RegIndex vd, bool single, bool up, bool writeback, bool load,
628 uint32_t offset)
629 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, rn,
630 vd, single, up, writeback, load, offset)
631{
632 %(constructor)s;
633 if (!(condCode == COND_AL || condCode == COND_UC)) {
634 for (int x = 0; x < _numDestRegs; x++) {
635 _srcRegIdx[_numSrcRegs++] = _destRegIdx[x];
636 }
637 }
638}
639
640}};