gem5  [DEVELOP-FOR-23.0]
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
sve.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017-2019 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  * Redistribution and use in source and binary forms, with or without
15  * modification, are permitted provided that the following conditions are
16  * met: redistributions of source code must retain the above copyright
17  * notice, this list of conditions and the following disclaimer;
18  * redistributions in binary form must reproduce the above copyright
19  * notice, this list of conditions and the following disclaimer in the
20  * documentation and/or other materials provided with the distribution;
21  * neither the name of the copyright holders nor the names of its
22  * contributors may be used to endorse or promote products derived from
23  * this software without specific prior written permission.
24  *
25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36  */
37 
38 #ifndef __ARCH_ARM_INSTS_SVE_HH__
39 #define __ARCH_ARM_INSTS_SVE_HH__
40 
42 
43 namespace gem5
44 {
45 
46 namespace ArmISA {
47 
48 enum class SvePredType
49 {
50  NONE,
51  MERGE,
52  ZERO,
53  SELECT
54 };
55 
57 const char* svePredTypeToStr(SvePredType pt);
58 
61 {
62  protected:
64  int8_t imm1;
65  int8_t imm2;
66 
67  SveIndexIIOp(const char* mnem, ExtMachInst _machInst,
68  OpClass __opClass, RegIndex _dest,
69  int8_t _imm1, int8_t _imm2) :
70  ArmStaticInst(mnem, _machInst, __opClass),
71  dest(_dest), imm1(_imm1), imm2(_imm2)
72  {}
73  std::string generateDisassembly(
74  Addr pc, const loader::SymbolTable *symtab) const override;
75 };
76 
78 {
79  protected:
81  int8_t imm1;
83 
84  SveIndexIROp(const char* mnem, ExtMachInst _machInst,
85  OpClass __opClass, RegIndex _dest,
86  int8_t _imm1, RegIndex _op2) :
87  ArmStaticInst(mnem, _machInst, __opClass),
88  dest(_dest), imm1(_imm1), op2(_op2)
89  {}
90  std::string generateDisassembly(
91  Addr pc, const loader::SymbolTable *symtab) const override;
92 };
93 
95 {
96  protected:
99  int8_t imm2;
100 
101  SveIndexRIOp(const char* mnem, ExtMachInst _machInst,
102  OpClass __opClass, RegIndex _dest,
103  RegIndex _op1, int8_t _imm2) :
104  ArmStaticInst(mnem, _machInst, __opClass),
105  dest(_dest), op1(_op1), imm2(_imm2)
106  {}
107  std::string generateDisassembly(
108  Addr pc, const loader::SymbolTable *symtab) const override;
109 };
110 
112 {
113  protected:
117 
118  SveIndexRROp(const char* mnem, ExtMachInst _machInst,
119  OpClass __opClass, RegIndex _dest,
120  RegIndex _op1, RegIndex _op2) :
121  ArmStaticInst(mnem, _machInst, __opClass),
122  dest(_dest), op1(_op1), op2(_op2)
123  {}
124  std::string generateDisassembly(
125  Addr pc, const loader::SymbolTable *symtab) const override;
126 };
127 
128 // Predicate count SVE instruction.
130 {
131  protected:
134  bool srcIs32b;
135  bool destIsVec;
136 
137  SvePredCountOp(const char* mnem, ExtMachInst _machInst,
138  OpClass __opClass, RegIndex _dest, RegIndex _gp,
139  bool _srcIs32b = false, bool _destIsVec = false) :
140  ArmStaticInst(mnem, _machInst, __opClass),
141  dest(_dest), gp(_gp),
142  srcIs32b(_srcIs32b), destIsVec(_destIsVec)
143  {}
144  std::string generateDisassembly(
145  Addr pc, const loader::SymbolTable *symtab) const override;
146 };
147 
148 // Predicate count SVE instruction (predicated).
150 {
151  protected:
155 
156  SvePredCountPredOp(const char* mnem, ExtMachInst _machInst,
157  OpClass __opClass, RegIndex _dest, RegIndex _op1,
158  RegIndex _gp) :
159  ArmStaticInst(mnem, _machInst, __opClass),
160  dest(_dest), op1(_op1), gp(_gp)
161  {}
162  std::string generateDisassembly(
163  Addr pc, const loader::SymbolTable *symtab) const override;
164 };
165 
167 class SveWhileOp : public ArmStaticInst
168 {
169  protected:
171  bool srcIs32b;
172 
173  SveWhileOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
174  RegIndex _dest, RegIndex _op1, RegIndex _op2,
175  bool _srcIs32b) :
176  ArmStaticInst(mnem, _machInst, __opClass),
177  dest(_dest), op1(_op1), op2(_op2), srcIs32b(_srcIs32b)
178  {}
179  std::string generateDisassembly(
180  Addr pc, const loader::SymbolTable *symtab) const override;
181 };
182 
184 class SvePselOp : public ArmStaticInst
185 {
186  protected:
191  uint64_t imm;
192 
193  SvePselOp(const char *mnem, ExtMachInst _machInst,
194  OpClass __opClass, RegIndex _dest,
195  RegIndex _op1, RegIndex _gp,
196  RegIndex _op2, uint64_t _imm) :
197  ArmStaticInst(mnem, _machInst, __opClass),
198  dest(_dest), op1(_op1), gp(_gp), op2(_op2), imm(_imm)
199  {}
200 
201  std::string generateDisassembly(
202  Addr pc, const loader::SymbolTable *symtab) const override;
203 };
204 
207 {
208  protected:
210 
211  SveCompTermOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
212  RegIndex _op1, RegIndex _op2) :
213  ArmStaticInst(mnem, _machInst, __opClass),
214  op1(_op1), op2(_op2)
215  {}
216  std::string generateDisassembly(
217  Addr pc, const loader::SymbolTable *symtab) const override;
218 };
219 
222 {
223  protected:
225 
226  SveUnaryPredOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
227  RegIndex _dest, RegIndex _op1, RegIndex _gp) :
228  ArmStaticInst(mnem, _machInst, __opClass),
229  dest(_dest), op1(_op1), gp(_gp)
230  {}
231 
232  std::string generateDisassembly(
233  Addr pc, const loader::SymbolTable *symtab) const override;
234 };
235 
238 {
239  protected:
241 
242  SveUnaryUnpredOp(const char* mnem, ExtMachInst _machInst,
243  OpClass __opClass, RegIndex _dest, RegIndex _op1) :
244  ArmStaticInst(mnem, _machInst, __opClass),
245  dest(_dest), op1(_op1)
246  {}
247 
248  std::string generateDisassembly(
249  Addr pc, const loader::SymbolTable *symtab) const override;
250 };
251 
254 {
255  protected:
257  uint64_t imm;
258 
259  SveUnaryWideImmUnpredOp(const char* mnem, ExtMachInst _machInst,
260  OpClass __opClass, RegIndex _dest,
261  uint64_t _imm) :
262  ArmStaticInst(mnem, _machInst, __opClass),
263  dest(_dest), imm(_imm)
264  {}
265 
266  std::string generateDisassembly(
267  Addr pc, const loader::SymbolTable *symtab) const override;
268 };
269 
272 {
273  protected:
275  uint64_t imm;
277 
278  bool isMerging;
279 
280  SveUnaryWideImmPredOp(const char* mnem, ExtMachInst _machInst,
281  OpClass __opClass, RegIndex _dest,
282  uint64_t _imm, RegIndex _gp, bool _isMerging) :
283  ArmStaticInst(mnem, _machInst, __opClass),
284  dest(_dest), imm(_imm), gp(_gp), isMerging(_isMerging)
285  {}
286 
287  std::string generateDisassembly(
288  Addr pc, const loader::SymbolTable *symtab) const override;
289 };
290 
293 {
294  protected:
296  uint64_t imm;
297 
298  SveBinImmUnpredConstrOp(const char* mnem, ExtMachInst _machInst,
299  OpClass __opClass, RegIndex _dest, RegIndex _op1,
300  uint64_t _imm) :
301  ArmStaticInst(mnem, _machInst, __opClass),
302  dest(_dest), op1(_op1), imm(_imm)
303  {}
304 
305  std::string generateDisassembly(
306  Addr pc, const loader::SymbolTable *symtab) const override;
307 };
308 
311 {
312  protected:
314  uint64_t imm;
315 
316  SveBinImmPredOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
317  RegIndex _dest, uint64_t _imm, RegIndex _gp) :
318  ArmStaticInst(mnem, _machInst, __opClass),
319  dest(_dest), gp(_gp), imm(_imm)
320  {}
321 
322  std::string generateDisassembly(
323  Addr pc, const loader::SymbolTable *symtab) const override;
324 };
325 
328 {
329  protected:
331  uint64_t imm;
332 
333  SveBinWideImmUnpredOp(const char* mnem, ExtMachInst _machInst,
334  OpClass __opClass, RegIndex _dest,
335  uint64_t _imm) :
336  ArmStaticInst(mnem, _machInst, __opClass),
337  dest(_dest), imm(_imm)
338  {}
339 
340  std::string generateDisassembly(
341  Addr pc, const loader::SymbolTable *symtab) const override;
342 };
343 
346 {
347  protected:
349 
350  SveBinDestrPredOp(const char* mnem, ExtMachInst _machInst,
351  OpClass __opClass, RegIndex _dest, RegIndex _op2,
352  RegIndex _gp) :
353  ArmStaticInst(mnem, _machInst, __opClass),
354  dest(_dest), op2(_op2), gp(_gp)
355  {}
356 
357  std::string generateDisassembly(
358  Addr pc, const loader::SymbolTable *symtab) const override;
359 };
360 
363 {
364  protected:
367 
368  SveBinConstrPredOp(const char* mnem, ExtMachInst _machInst,
369  OpClass __opClass, RegIndex _dest, RegIndex _op1,
370  RegIndex _op2, RegIndex _gp,
371  SvePredType _predType) :
372  ArmStaticInst(mnem, _machInst, __opClass),
373  dest(_dest), op1(_op1), op2(_op2), gp(_gp), predType(_predType)
374  {}
375 
376  std::string generateDisassembly(
377  Addr pc, const loader::SymbolTable *symtab) const override;
378 };
379 
382 {
383  protected:
385 
386  SveBinUnpredOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
387  RegIndex _dest, RegIndex _op1, RegIndex _op2) :
388  ArmStaticInst(mnem, _machInst, __opClass),
389  dest(_dest), op1(_op1), op2(_op2)
390  {}
391 
392  std::string generateDisassembly(
393  Addr pc, const loader::SymbolTable *symtab) const override;
394 };
395 
398 {
399  protected:
401  uint8_t index;
402 
403  SveBinIdxUnpredOp(const char* mnem, ExtMachInst _machInst,
404  OpClass __opClass, RegIndex _dest, RegIndex _op1,
405  RegIndex _op2, uint8_t _index) :
406  ArmStaticInst(mnem, _machInst, __opClass),
407  dest(_dest), op1(_op1), op2(_op2), index(_index)
408  {}
409 
410  std::string generateDisassembly(
411  Addr pc, const loader::SymbolTable *symtab) const override;
412 };
413 
416 {
417  protected:
419  bool isSel;
420 
421  SvePredLogicalOp(const char* mnem, ExtMachInst _machInst,
422  OpClass __opClass, RegIndex _dest, RegIndex _op1,
423  RegIndex _op2, RegIndex _gp, bool _isSel = false) :
424  ArmStaticInst(mnem, _machInst, __opClass),
425  dest(_dest), op1(_op1), op2(_op2), gp(_gp), isSel(_isSel)
426  {}
427 
428  std::string generateDisassembly(
429  Addr pc, const loader::SymbolTable *symtab) const override;
430 };
431 
434 {
435  protected:
437 
438  SvePredBinPermOp(const char* mnem, ExtMachInst _machInst,
439  OpClass __opClass, RegIndex _dest, RegIndex _op1,
440  RegIndex _op2) :
441  ArmStaticInst(mnem, _machInst, __opClass),
442  dest(_dest), op1(_op1), op2(_op2)
443  {}
444 
445  std::string generateDisassembly(
446  Addr pc, const loader::SymbolTable *symtab) const override;
447 };
448 
450 class SveCmpOp : public ArmStaticInst
451 {
452  protected:
454 
455  SveCmpOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
456  RegIndex _dest, RegIndex _op1, RegIndex _op2,
457  RegIndex _gp) :
458  ArmStaticInst(mnem, _machInst, __opClass),
459  dest(_dest), gp(_gp), op1(_op1), op2(_op2)
460  {}
461 
462  std::string generateDisassembly(
463  Addr pc, const loader::SymbolTable *symtab) const override;
464 };
465 
468 {
469  protected:
471  uint64_t imm;
472 
473  SveCmpImmOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
474  RegIndex _dest, RegIndex _op1, uint64_t _imm,
475  RegIndex _gp) :
476  ArmStaticInst(mnem, _machInst, __opClass),
477  dest(_dest), gp(_gp), op1(_op1), imm(_imm)
478  {}
479 
480  std::string generateDisassembly(
481  Addr pc, const loader::SymbolTable *symtab) const override;
482 };
483 
486 {
487  protected:
489 
490  SveTerPredOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
491  RegIndex _dest, RegIndex _op1, RegIndex _op2,
492  RegIndex _gp) :
493  ArmStaticInst(mnem, _machInst, __opClass),
494  dest(_dest), op1(_op1), op2(_op2), gp(_gp)
495  {}
496 
497  std::string generateDisassembly(
498  Addr pc, const loader::SymbolTable *symtab) const override;
499 };
500 
503 {
504  protected:
506 
507  SveTerUnpredOp(const char* mnem, ExtMachInst _machInst,
508  OpClass __opClass, RegIndex _dest,
509  RegIndex _op1, RegIndex _op2) :
510  ArmStaticInst(mnem, _machInst, __opClass),
511  dest(_dest), op1(_op1), op2(_op2)
512  {}
513 
514  std::string generateDisassembly(
515  Addr pc, const loader::SymbolTable *symtab) const override;
516 };
517 
520 {
521  protected:
523  uint64_t imm;
524 
525  SveTerImmUnpredOp(const char* mnem, ExtMachInst _machInst,
526  OpClass __opClass, RegIndex _dest, RegIndex _op2,
527  uint64_t _imm) :
528  ArmStaticInst(mnem, _machInst, __opClass),
529  dest(_dest), op2(_op2), imm(_imm)
530  {}
531 
532  std::string generateDisassembly(
533  Addr pc, const loader::SymbolTable *symtab) const override;
534 };
535 
537 class SveReducOp : public ArmStaticInst
538 {
539  protected:
541 
542  SveReducOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
543  RegIndex _dest, RegIndex _op1, RegIndex _gp) :
544  ArmStaticInst(mnem, _machInst, __opClass),
545  dest(_dest), op1(_op1), gp(_gp)
546  {}
547 
548  std::string generateDisassembly(
549  Addr pc, const loader::SymbolTable *symtab) const override;
550 };
551 
554 {
555  protected:
557 
558  SveOrdReducOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
559  RegIndex _dest, RegIndex _op1, RegIndex _gp) :
560  ArmStaticInst(mnem, _machInst, __opClass),
561  dest(_dest), op1(_op1), gp(_gp)
562  {}
563 
564  std::string generateDisassembly(
565  Addr pc, const loader::SymbolTable *symtab) const override;
566 };
567 
569 class SvePtrueOp : public ArmStaticInst
570 {
571  protected:
573  uint8_t imm;
574 
575  SvePtrueOp(const char* mnem, ExtMachInst _machInst,
576  OpClass __opClass, RegIndex _dest, uint8_t _imm) :
577  ArmStaticInst(mnem, _machInst, __opClass),
578  dest(_dest), imm(_imm)
579  {}
580 
581  std::string generateDisassembly(
582  Addr pc, const loader::SymbolTable *symtab) const override;
583 };
584 
587 {
588  protected:
592  bool op2IsWide;
593 
594  SveIntCmpOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
595  RegIndex _dest, RegIndex _op1, RegIndex _op2,
596  RegIndex _gp, bool _op2IsWide = false) :
597  ArmStaticInst(mnem, _machInst, __opClass),
598  dest(_dest), op1(_op1), op2(_op2), gp(_gp), op2IsWide(_op2IsWide)
599  {}
600  std::string generateDisassembly(
601  Addr pc, const loader::SymbolTable *symtab) const override;
602 };
603 
606 {
607  protected:
610  int64_t imm;
612 
613  SveIntCmpImmOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
614  RegIndex _dest, RegIndex _op1, int64_t _imm,
615  RegIndex _gp) :
616  ArmStaticInst(mnem, _machInst, __opClass),
617  dest(_dest), op1(_op1), imm(_imm), gp(_gp)
618  {}
619  std::string generateDisassembly(
620  Addr pc, const loader::SymbolTable *symtab) const override;
621 };
622 
624 class SveAdrOp : public ArmStaticInst
625 {
626  public:
628  {
632  };
633 
634  protected:
636  uint8_t mult;
638 
639  SveAdrOp(const char* mnem, ExtMachInst _machInst,
640  OpClass __opClass, RegIndex _dest, RegIndex _op1,
641  RegIndex _op2, uint8_t _mult,
642  SveAdrOffsetFormat _offsetFormat) :
643  ArmStaticInst(mnem, _machInst, __opClass),
644  dest(_dest), op1(_op1), op2(_op2), mult(_mult),
645  offsetFormat(_offsetFormat)
646  {}
647  std::string generateDisassembly(
648  Addr pc, const loader::SymbolTable *symtab) const override;
649 };
650 
653 {
654  protected:
656  uint8_t pattern;
657  uint8_t imm;
658  bool dstIsVec;
659  bool dstIs32b;
660  uint8_t esize;
661 
662  SveElemCountOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
663  RegIndex _dest, uint8_t _pattern, uint8_t _imm,
664  bool _dstIsVec, bool _dstIs32b) :
665  ArmStaticInst(mnem, _machInst, __opClass),
666  dest(_dest), pattern(_pattern), imm(_imm), dstIsVec(_dstIsVec),
667  dstIs32b(_dstIs32b)
668  {}
669  std::string generateDisassembly(
670  Addr pc, const loader::SymbolTable *symtab) const override;
671 };
672 
675 {
676  protected:
680  bool isMerging;
681 
682  SvePartBrkOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
683  RegIndex _dest, RegIndex _gp, RegIndex _op1,
684  bool _isMerging) :
685  ArmStaticInst(mnem, _machInst, __opClass),
686  dest(_dest), gp(_gp), op1(_op1), isMerging(_isMerging)
687  {}
688  std::string generateDisassembly(
689  Addr pc, const loader::SymbolTable *symtab) const override;
690 };
691 
694 {
695  protected:
700 
701  SvePartBrkPropOp(const char* mnem, ExtMachInst _machInst,
702  OpClass __opClass, RegIndex _dest,
703  RegIndex _op1, RegIndex _op2, RegIndex _gp) :
704  ArmStaticInst(mnem, _machInst, __opClass),
705  dest(_dest), op1(_op1), op2(_op2), gp(_gp)
706  {}
707  std::string generateDisassembly(
708  Addr pc, const loader::SymbolTable *symtab) const override;
709 };
710 
713 {
714  protected:
719  bool scalar;
720  bool simdFp;
721  size_t scalar_width;
722 
723  SveSelectOp(const char* mnem, ExtMachInst _machInst,
724  OpClass __opClass, RegIndex _dest,
725  RegIndex _op1, RegIndex _gp,
726  bool _conditional, bool _scalar,
727  bool _simdFp) :
728  ArmStaticInst(mnem, _machInst, __opClass),
729  dest(_dest), op1(_op1), gp(_gp), conditional(_conditional),
730  scalar(_scalar), simdFp(_simdFp)
731  {}
732  std::string generateDisassembly(
733  Addr pc, const loader::SymbolTable *symtab) const override;
734 };
735 
738 {
739  protected:
743 
744  SveUnaryPredPredOp(const char* mnem, ExtMachInst _machInst,
745  OpClass __opClass, RegIndex _dest,
746  RegIndex _op1, RegIndex _gp) :
747  ArmStaticInst(mnem, _machInst, __opClass),
748  dest(_dest), op1(_op1), gp(_gp)
749  {}
750  std::string generateDisassembly(
751  Addr pc, const loader::SymbolTable *symtab) const override;
752 };
753 
755 class SveTblOp : public ArmStaticInst
756 {
757  protected:
761 
762  SveTblOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
763  RegIndex _dest, RegIndex _op1, RegIndex _op2) :
764  ArmStaticInst(mnem, _machInst, __opClass),
765  dest(_dest), op1(_op1), op2(_op2)
766  {}
767  std::string generateDisassembly(
768  Addr pc, const loader::SymbolTable *symtab) const override;
769 };
770 
773 {
774  protected:
777 
778  SveUnpackOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
779  RegIndex _dest, RegIndex _op1) :
780  ArmStaticInst(mnem, _machInst, __opClass),
781  dest(_dest), op1(_op1)
782  {}
783  std::string generateDisassembly(
784  Addr pc, const loader::SymbolTable *symtab) const override;
785 };
786 
789 {
790  protected:
793 
794  SvePredTestOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
795  RegIndex _op1, RegIndex _gp) :
796  ArmStaticInst(mnem, _machInst, __opClass),
797  op1(_op1), gp(_gp)
798  {}
799  std::string generateDisassembly(
800  Addr pc, const loader::SymbolTable *symtab) const override;
801 };
802 
805 {
806  protected:
808 
809  SvePredUnaryWImplicitSrcOp(const char* mnem, ExtMachInst _machInst,
810  OpClass __opClass, RegIndex _dest) :
811  ArmStaticInst(mnem, _machInst, __opClass),
812  dest(_dest)
813  {}
814  std::string generateDisassembly(
815  Addr pc, const loader::SymbolTable *symtab) const override;
816 };
817 
820 {
821  protected:
824 
825  SvePredUnaryWImplicitSrcPredOp(const char* mnem, ExtMachInst _machInst,
826  OpClass __opClass, RegIndex _dest,
827  RegIndex _gp) :
828  ArmStaticInst(mnem, _machInst, __opClass),
829  dest(_dest), gp(_gp)
830  {}
831  std::string generateDisassembly(
832  Addr pc, const loader::SymbolTable *symtab) const override;
833 };
834 
837 {
838  protected:
840 
841  SvePredUnaryWImplicitDstOp(const char* mnem, ExtMachInst _machInst,
842  OpClass __opClass, RegIndex _op1) :
843  ArmStaticInst(mnem, _machInst, __opClass),
844  op1(_op1)
845  {}
846  std::string generateDisassembly(
847  Addr pc, const loader::SymbolTable *symtab) const override;
848 };
849 
852 {
853  protected:
854  SveWImplicitSrcDstOp(const char* mnem, ExtMachInst _machInst,
855  OpClass __opClass) :
856  ArmStaticInst(mnem, _machInst, __opClass)
857  {}
858  std::string generateDisassembly(
859  Addr pc, const loader::SymbolTable *symtab) const override;
860 };
861 
864 {
865  protected:
868  uint64_t imm;
869 
870  SveBinImmUnpredDestrOp(const char* mnem, ExtMachInst _machInst,
871  OpClass __opClass, RegIndex _dest, RegIndex _op1,
872  uint64_t _imm) :
873  ArmStaticInst(mnem, _machInst, __opClass),
874  dest(_dest), op1(_op1), imm(_imm)
875  {}
876  std::string generateDisassembly(
877  Addr pc, const loader::SymbolTable *symtab) const override;
878 };
879 
882 {
883  protected:
885  uint64_t imm;
886 
887  SveBinImmIdxUnpredOp(const char* mnem, ExtMachInst _machInst,
888  OpClass __opClass, RegIndex _dest, RegIndex _op1,
889  uint64_t _imm) :
890  ArmStaticInst(mnem, _machInst, __opClass),
891  dest(_dest), op1(_op1), imm(_imm)
892  {}
893 
894  std::string generateDisassembly(
895  Addr pc, const loader::SymbolTable *symtab) const override;
896 };
897 
900 {
901  protected:
903  bool simdFp;
904 
905  SveUnarySca2VecUnpredOp(const char* mnem, ExtMachInst _machInst,
906  OpClass __opClass, RegIndex _dest, RegIndex _op1,
907  bool _simdFp) :
908  ArmStaticInst(mnem, _machInst, __opClass),
909  dest(_dest), op1(_op1), simdFp(_simdFp)
910  {}
911 
912  std::string generateDisassembly(
913  Addr pc, const loader::SymbolTable *symtab) const override;
914 };
915 
918 {
919  protected:
921  uint64_t imm;
922  uint8_t esize;
923 
924  public:
925  SveDotProdIdxOp(const char* mnem, ExtMachInst _machInst,
926  OpClass __opClass, RegIndex _dest, RegIndex _op1,
927  RegIndex _op2, uint64_t _imm) :
928  ArmStaticInst(mnem, _machInst, __opClass),
929  dest(_dest), op1(_op1), op2(_op2), imm(_imm)
930  {}
931 
932  std::string generateDisassembly(
933  Addr pc, const loader::SymbolTable *symtab) const override;
934 };
935 
938 {
939  protected:
941  uint8_t esize;
942 
943  public:
944  SveDotProdOp(const char* mnem, ExtMachInst _machInst,
945  OpClass __opClass, RegIndex _dest, RegIndex _op1,
946  RegIndex _op2) :
947  ArmStaticInst(mnem, _machInst, __opClass),
948  dest(_dest), op1(_op1), op2(_op2)
949  {}
950 
951  std::string generateDisassembly(
952  Addr pc, const loader::SymbolTable *symtab) const override;
953 };
954 
957 {
958  protected:
960  uint8_t rot;
961 
962  public:
963  SveComplexOp(const char* mnem, ExtMachInst _machInst,
964  OpClass __opClass, RegIndex _dest, RegIndex _op1,
965  RegIndex _op2, RegIndex _gp, uint8_t _rot) :
966  ArmStaticInst(mnem, _machInst, __opClass),
967  dest(_dest), op1(_op1), op2(_op2), gp(_gp), rot(_rot)
968  {}
969 
970  std::string generateDisassembly(
971  Addr pc, const loader::SymbolTable *symtab) const override;
972 };
973 
976 {
977  protected:
979  uint8_t rot, imm;
980 
981  public:
982  SveComplexIdxOp(const char* mnem, ExtMachInst _machInst,
983  OpClass __opClass, RegIndex _dest, RegIndex _op1,
984  RegIndex _op2, uint8_t _rot, uint8_t _imm) :
985  ArmStaticInst(mnem, _machInst, __opClass),
986  dest(_dest), op1(_op1), op2(_op2), rot(_rot), imm(_imm)
987  {}
988 
989  std::string generateDisassembly(
990  Addr pc, const loader::SymbolTable *symtab) const override;
991 };
992 
993 // SVE2 SCLAMP/UCLAMP instructions
994 class SveClampOp : public ArmStaticInst
995 {
996  protected:
1000 
1001  SveClampOp(const char *mnem, ExtMachInst _machInst,
1002  OpClass __opClass, RegIndex _dest,
1003  RegIndex _op1, RegIndex _op2) :
1004  ArmStaticInst(mnem, _machInst, __opClass),
1005  dest(_dest), op1(_op1), op2(_op2)
1006  {}
1007 
1008  std::string generateDisassembly(
1009  Addr pc, const loader::SymbolTable *symtab) const override;
1010 };
1011 
1012 
1015 std::string sveDisasmPredCountImm(uint8_t imm);
1016 
1021 unsigned int sveDecodePredCount(uint8_t imm, unsigned int num_elems);
1022 
1027 uint64_t sveExpandFpImmAddSub(uint8_t imm, uint8_t size);
1028 
1034 uint64_t sveExpandFpImmMaxMin(uint8_t imm, uint8_t size);
1035 
1040 uint64_t sveExpandFpImmMul(uint8_t imm, uint8_t size);
1041 
1042 } // namespace ArmISA
1043 } // namespace gem5
1044 
1045 #endif // __ARCH_ARM_INSTS_SVE_HH__
gem5::ArmISA::SveIntCmpImmOp::op1
RegIndex op1
Definition: sve.hh:609
gem5::ArmISA::SveComplexIdxOp::SveComplexIdxOp
SveComplexIdxOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, uint8_t _rot, uint8_t _imm)
Definition: sve.hh:982
gem5::ArmISA::SveBinImmUnpredConstrOp::dest
RegIndex dest
Definition: sve.hh:295
gem5::ArmISA::SveUnaryPredPredOp::gp
RegIndex gp
Definition: sve.hh:742
gem5::ArmISA::SveTblOp
SVE table lookup/permute using vector of element indices (TBL)
Definition: sve.hh:755
gem5::ArmISA::SveBinImmPredOp::imm
uint64_t imm
Definition: sve.hh:314
gem5::ArmISA::SveIndexIIOp
Index generation instruction, immediate operands.
Definition: sve.hh:60
gem5::ArmISA::SveUnaryWideImmUnpredOp::imm
uint64_t imm
Definition: sve.hh:257
gem5::ArmISA::SveBinWideImmUnpredOp::SveBinWideImmUnpredOp
SveBinWideImmUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint64_t _imm)
Definition: sve.hh:333
gem5::ArmISA::SveReducOp
SVE reductions.
Definition: sve.hh:537
gem5::ArmISA::SveUnaryPredOp
Unary, constructive, predicated (merging) SVE instruction.
Definition: sve.hh:221
gem5::ArmISA::SvePselOp::op1
RegIndex op1
Definition: sve.hh:188
gem5::ArmISA::SveTerImmUnpredOp
Ternary with immediate, destructive, unpredicated SVE instruction.
Definition: sve.hh:519
gem5::ArmISA::SveTblOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:671
gem5::ArmISA::SveComplexOp::gp
RegIndex gp
Definition: sve.hh:959
gem5::ArmISA::SvePredUnaryWImplicitSrcPredOp::dest
RegIndex dest
Definition: sve.hh:822
gem5::ArmISA::sveExpandFpImmMaxMin
uint64_t sveExpandFpImmMaxMin(uint8_t imm, uint8_t size)
Expand 1-bit floating-point immediate to 0.0 or 1.0 (FMAX, FMAXNM, FMIN, FMINNM).
Definition: sve.cc:978
gem5::ArmISA::SvePtrueOp::imm
uint8_t imm
Definition: sve.hh:573
gem5::ArmISA::sveDisasmPredCountImm
std::string sveDisasmPredCountImm(uint8_t imm)
Returns the symbolic name associated with pattern imm for PTRUE(S) instructions.
Definition: sve.cc:881
gem5::ArmISA::SvePselOp::imm
uint64_t imm
Definition: sve.hh:191
gem5::ArmISA::SveBinConstrPredOp::dest
RegIndex dest
Definition: sve.hh:365
gem5::ArmISA::SveTerUnpredOp::SveTerUnpredOp
SveTerUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2)
Definition: sve.hh:507
gem5::ArmISA::SveBinWideImmUnpredOp::dest
RegIndex dest
Definition: sve.hh:330
gem5::ArmISA::SvePtrueOp::SvePtrueOp
SvePtrueOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint8_t _imm)
Definition: sve.hh:575
gem5::ArmISA::SvePredBinPermOp::dest
RegIndex dest
Definition: sve.hh:436
gem5::ArmISA::SvePredUnaryWImplicitSrcOp::SvePredUnaryWImplicitSrcOp
SvePredUnaryWImplicitSrcOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest)
Definition: sve.hh:809
gem5::ArmISA::SveUnaryUnpredOp::dest
RegIndex dest
Definition: sve.hh:240
gem5::ArmISA::SveDotProdIdxOp::imm
uint64_t imm
Definition: sve.hh:921
gem5::ArmISA::SveBinIdxUnpredOp::index
uint8_t index
Definition: sve.hh:401
gem5::ArmISA::SveClampOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:867
gem5::ArmISA::SveWImplicitSrcDstOp
SVE unary predicate instructions with implicit destination operand.
Definition: sve.hh:851
gem5::ArmISA::SveAdrOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:549
gem5::ArmISA::SveIntCmpImmOp::SveIntCmpImmOp
SveIntCmpImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, int64_t _imm, RegIndex _gp)
Definition: sve.hh:613
gem5::ArmISA::SveBinImmUnpredConstrOp::imm
uint64_t imm
Definition: sve.hh:296
gem5::ArmISA::SveUnarySca2VecUnpredOp::dest
RegIndex dest
Definition: sve.hh:902
gem5::ArmISA::SveUnarySca2VecUnpredOp::op1
RegIndex op1
Definition: sve.hh:902
gem5::ArmISA::ArmStaticInst
Definition: static_inst.hh:65
gem5::ArmISA::SveBinUnpredOp::op2
RegIndex op2
Definition: sve.hh:384
gem5::ArmISA::SvePartBrkOp::SvePartBrkOp
SvePartBrkOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _gp, RegIndex _op1, bool _isMerging)
Definition: sve.hh:682
gem5::ArmISA::SveIndexIROp::dest
RegIndex dest
Definition: sve.hh:80
gem5::ArmISA::SveUnaryWideImmPredOp::SveUnaryWideImmPredOp
SveUnaryWideImmPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint64_t _imm, RegIndex _gp, bool _isMerging)
Definition: sve.hh:280
gem5::ArmISA::SveBinImmIdxUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:766
gem5::ArmISA::SveWhileOp
While predicate generation SVE instruction.
Definition: sve.hh:167
gem5::ArmISA::SveBinUnpredOp
Binary, unpredicated SVE instruction with indexed operand.
Definition: sve.hh:381
gem5::ArmISA::SveIndexIIOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:96
gem5::ArmISA::SveUnpackOp::op1
RegIndex op1
Definition: sve.hh:776
gem5::ArmISA::SveAdrOp::offsetFormat
SveAdrOffsetFormat offsetFormat
Definition: sve.hh:637
gem5::ArmISA::SvePredLogicalOp::gp
RegIndex gp
Definition: sve.hh:418
gem5::ArmISA::SveIntCmpOp
Integer compare SVE instruction.
Definition: sve.hh:586
gem5::ArmISA::SveReducOp::gp
RegIndex gp
Definition: sve.hh:540
gem5::ArmISA::SveWhileOp::op2
RegIndex op2
Definition: sve.hh:170
gem5::ArmISA::SveDotProdIdxOp::op2
RegIndex op2
Definition: sve.hh:920
gem5::ArmISA::SveComplexOp::SveComplexOp
SveComplexOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, RegIndex _gp, uint8_t _rot)
Definition: sve.hh:963
gem5::ArmISA::SvePredCountPredOp::SvePredCountPredOp
SvePredCountPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _gp)
Definition: sve.hh:156
gem5::ArmISA::sveDecodePredCount
unsigned int sveDecodePredCount(uint8_t imm, unsigned int num_elems)
Returns the actual number of elements active for PTRUE(S) instructions.
Definition: sve.cc:913
gem5::ArmISA::SvePredTestOp::SvePredTestOp
SvePredTestOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _op1, RegIndex _gp)
Definition: sve.hh:794
gem5::ArmISA::SveSelectOp::scalar
bool scalar
Definition: sve.hh:719
gem5::ArmISA::SveIndexRIOp::op1
RegIndex op1
Definition: sve.hh:98
gem5::ArmISA::SveTerPredOp::SveTerPredOp
SveTerPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, RegIndex _gp)
Definition: sve.hh:490
gem5::ArmISA::SveBinWideImmUnpredOp::imm
uint64_t imm
Definition: sve.hh:331
gem5::ArmISA::SveBinDestrPredOp::gp
RegIndex gp
Definition: sve.hh:348
gem5::ArmISA::SveComplexOp::dest
RegIndex dest
Definition: sve.hh:959
gem5::ArmISA::SveIndexRROp::SveIndexRROp
SveIndexRROp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2)
Definition: sve.hh:118
gem5::ArmISA::SvePredLogicalOp::SvePredLogicalOp
SvePredLogicalOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, RegIndex _gp, bool _isSel=false)
Definition: sve.hh:421
gem5::ArmISA::SveIndexRIOp::SveIndexRIOp
SveIndexRIOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, int8_t _imm2)
Definition: sve.hh:101
gem5::ArmISA::SveWhileOp::srcIs32b
bool srcIs32b
Definition: sve.hh:171
gem5::ArmISA::SvePartBrkOp
Partition break SVE instruction.
Definition: sve.hh:674
gem5::ArmISA::SveBinImmUnpredConstrOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:248
gem5::ArmISA::SvePredType::NONE
@ NONE
gem5::ArmISA::SveWhileOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:146
gem5::ArmISA::SveDotProdOp::SveDotProdOp
SveDotProdOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2)
Definition: sve.hh:944
gem5::ArmISA::SvePredCountOp::srcIs32b
bool srcIs32b
Definition: sve.hh:134
gem5::ArmISA::svePredTypeToStr
const char * svePredTypeToStr(SvePredType pt)
Returns the specifier for the predication type pt as a string.
Definition: sve.cc:48
gem5::ArmISA::SvePredType::SELECT
@ SELECT
gem5::ArmISA::SveWhileOp::SveWhileOp
SveWhileOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, bool _srcIs32b)
Definition: sve.hh:173
gem5::ArmISA::SveElemCountOp::SveElemCountOp
SveElemCountOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint8_t _pattern, uint8_t _imm, bool _dstIsVec, bool _dstIs32b)
Definition: sve.hh:662
gem5::ArmISA::SveTblOp::dest
RegIndex dest
Definition: sve.hh:758
gem5::ArmISA::SveUnaryWideImmPredOp::gp
RegIndex gp
Definition: sve.hh:276
gem5::ArmISA::SveBinImmIdxUnpredOp::imm
uint64_t imm
Definition: sve.hh:885
gem5::ArmISA::SveBinWideImmUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:278
gem5::ArmISA::SveTerImmUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:453
gem5::ArmISA::SvePredCountPredOp
Definition: sve.hh:149
gem5::ArmISA::SveBinUnpredOp::dest
RegIndex dest
Definition: sve.hh:384
gem5::loader::SymbolTable
Definition: symtab.hh:64
gem5::ArmISA::SveBinImmUnpredDestrOp::imm
uint64_t imm
Definition: sve.hh:868
gem5::ArmISA::SveUnaryWideImmUnpredOp::dest
RegIndex dest
Definition: sve.hh:256
gem5::ArmISA::SvePredType
SvePredType
Definition: sve.hh:48
gem5::ArmISA::SveTerImmUnpredOp::dest
RegIndex dest
Definition: sve.hh:522
gem5::ArmISA::SveUnaryPredOp::op1
RegIndex op1
Definition: sve.hh:224
gem5::ArmISA::SveIntCmpOp::op2
RegIndex op2
Definition: sve.hh:590
gem5::ArmISA::SveIntCmpImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:533
gem5::ArmISA::SveComplexIdxOp::op2
RegIndex op2
Definition: sve.hh:978
gem5::ArmISA::SveCompTermOp::SveCompTermOp
SveCompTermOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _op1, RegIndex _op2)
Definition: sve.hh:211
gem5::ArmISA::SveUnaryPredPredOp
SVE unary operation on predicate (predicated)
Definition: sve.hh:737
gem5::ArmISA::SveSelectOp::dest
RegIndex dest
Definition: sve.hh:715
gem5::ArmISA::SveBinImmIdxUnpredOp::dest
RegIndex dest
Definition: sve.hh:884
gem5::ArmISA::SveCompTermOp
Compare and terminate loop SVE instruction.
Definition: sve.hh:206
gem5::ArmISA::SveDotProdOp::op1
RegIndex op1
Definition: sve.hh:940
gem5::ArmISA::SveTerImmUnpredOp::imm
uint64_t imm
Definition: sve.hh:523
gem5::ArmISA::SveElemCountOp::imm
uint8_t imm
Definition: sve.hh:657
gem5::ArmISA::SveTerPredOp::gp
RegIndex gp
Definition: sve.hh:488
gem5::ArmISA::SveBinIdxUnpredOp::op2
RegIndex op2
Definition: sve.hh:400
gem5::ArmISA::SveElemCountOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:573
gem5::ArmISA::SveBinImmUnpredDestrOp::dest
RegIndex dest
Definition: sve.hh:866
gem5::ArmISA::SvePredCountOp::SvePredCountOp
SvePredCountOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _gp, bool _srcIs32b=false, bool _destIsVec=false)
Definition: sve.hh:137
gem5::ArmISA::SvePartBrkPropOp
Partition break with propagation SVE instruction.
Definition: sve.hh:693
gem5::ArmISA::SveElemCountOp::esize
uint8_t esize
Definition: sve.hh:660
gem5::ArmISA::SveBinImmPredOp
Binary with immediate, destructive, predicated (merging) SVE instruction.
Definition: sve.hh:310
gem5::ArmISA::SveCmpOp::dest
RegIndex dest
Definition: sve.hh:453
gem5::ArmISA::SveDotProdOp
SVE dot product instruction (vectors)
Definition: sve.hh:937
gem5::ArmISA::SvePredBinPermOp::op2
RegIndex op2
Definition: sve.hh:436
gem5::ArmISA::SveClampOp::op2
RegIndex op2
Definition: sve.hh:999
gem5::ArmISA::SveComplexOp::op2
RegIndex op2
Definition: sve.hh:959
gem5::ArmISA::SveComplexIdxOp::rot
uint8_t rot
Definition: sve.hh:979
gem5::ArmISA::SveTerImmUnpredOp::SveTerImmUnpredOp
SveTerImmUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op2, uint64_t _imm)
Definition: sve.hh:525
gem5::ArmISA::SveSelectOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:631
gem5::ArmISA::SveOrdReducOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:483
gem5::ArmISA::SveCmpOp
SVE compare instructions, predicated (zeroing).
Definition: sve.hh:450
gem5::ArmISA::SveComplexIdxOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:848
gem5::ArmISA::SveCmpImmOp::op1
RegIndex op1
Definition: sve.hh:470
gem5::ArmISA::SvePredUnaryWImplicitSrcPredOp::gp
RegIndex gp
Definition: sve.hh:823
gem5::ArmISA::SveIndexRIOp::imm2
int8_t imm2
Definition: sve.hh:99
gem5::ArmISA::SveTerUnpredOp
Ternary, destructive, unpredicated SVE instruction.
Definition: sve.hh:502
gem5::ArmISA::SveAdrOp::SveAdrOffsetPacked
@ SveAdrOffsetPacked
Definition: sve.hh:629
gem5::ArmISA::SvePartBrkPropOp::dest
RegIndex dest
Definition: sve.hh:696
gem5::ArmISA::SvePselOp::op2
RegIndex op2
Definition: sve.hh:190
gem5::ArmISA::SvePredTestOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:696
gem5::ArmISA::SveIntCmpImmOp
Integer compare with immediate SVE instruction.
Definition: sve.hh:605
gem5::ArmISA::SvePartBrkPropOp::gp
RegIndex gp
Definition: sve.hh:699
gem5::ArmISA::SvePredTestOp
SVE predicate test.
Definition: sve.hh:788
gem5::ArmISA::SveBinDestrPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:292
gem5::ArmISA::SveComplexIdxOp
SVE Complex Instructions (indexed)
Definition: sve.hh:975
gem5::ArmISA::SvePartBrkPropOp::op1
RegIndex op1
Definition: sve.hh:697
gem5::ArmISA::SveCmpOp::gp
RegIndex gp
Definition: sve.hh:453
gem5::ArmISA::SvePredLogicalOp::op2
RegIndex op2
Definition: sve.hh:418
gem5::ArmISA::SvePredUnaryWImplicitSrcPredOp::SvePredUnaryWImplicitSrcPredOp
SvePredUnaryWImplicitSrcPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _gp)
Definition: sve.hh:825
gem5::ArmISA::SveTblOp::op1
RegIndex op1
Definition: sve.hh:759
gem5::ArmISA::SveComplexIdxOp::op1
RegIndex op1
Definition: sve.hh:978
gem5::ArmISA::SveCompTermOp::op1
RegIndex op1
Definition: sve.hh:209
gem5::ArmISA::SveBinConstrPredOp::gp
RegIndex gp
Definition: sve.hh:365
gem5::ArmISA::SveBinImmUnpredConstrOp
Binary with immediate, destructive, unpredicated SVE instruction.
Definition: sve.hh:292
gem5::ArmISA::SveAdrOp::SveAdrOffsetFormat
SveAdrOffsetFormat
Definition: sve.hh:627
gem5::ArmISA::SveSelectOp::SveSelectOp
SveSelectOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _gp, bool _conditional, bool _scalar, bool _simdFp)
Definition: sve.hh:723
gem5::ArmISA::SveAdrOp::op2
RegIndex op2
Definition: sve.hh:635
gem5::ArmISA::SveBinIdxUnpredOp::SveBinIdxUnpredOp
SveBinIdxUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, uint8_t _index)
Definition: sve.hh:403
gem5::ArmISA::SveBinDestrPredOp
Binary, destructive, predicated (merging) SVE instruction.
Definition: sve.hh:345
gem5::ArmISA::SvePredType::MERGE
@ MERGE
gem5::ArmISA::SvePredTestOp::gp
RegIndex gp
Definition: sve.hh:792
gem5::ArmISA::SvePredCountOp::dest
RegIndex dest
Definition: sve.hh:132
gem5::ArmISA::SveTblOp::SveTblOp
SveTblOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2)
Definition: sve.hh:762
gem5::ArmISA::SvePredBinPermOp
Predicate binary permute instruction.
Definition: sve.hh:433
gem5::ArmISA::SveUnaryPredOp::dest
RegIndex dest
Definition: sve.hh:224
gem5::ArmISA::SveBinImmUnpredDestrOp
SVE vector - immediate binary operation.
Definition: sve.hh:863
gem5::ArmISA::SveDotProdOp::dest
RegIndex dest
Definition: sve.hh:940
gem5::ArmISA::SveSelectOp::op1
RegIndex op1
Definition: sve.hh:716
gem5::ArmISA::SveTerPredOp::dest
RegIndex dest
Definition: sve.hh:488
gem5::ArmISA::SveTerUnpredOp::dest
RegIndex dest
Definition: sve.hh:505
gem5::ArmISA::SveIndexRIOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:119
gem5::ArmISA::SveClampOp::op1
RegIndex op1
Definition: sve.hh:998
gem5::ArmISA::SvePredType::ZERO
@ ZERO
gem5::ArmISA::SveUnarySca2VecUnpredOp::simdFp
bool simdFp
Definition: sve.hh:903
gem5::ArmISA::SveBinUnpredOp::op1
RegIndex op1
Definition: sve.hh:384
gem5::ArmISA::SveIntCmpOp::op1
RegIndex op1
Definition: sve.hh:590
gem5::ArmISA::SveBinIdxUnpredOp::dest
RegIndex dest
Definition: sve.hh:400
gem5::ArmISA::SveOrdReducOp::SveOrdReducOp
SveOrdReducOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _gp)
Definition: sve.hh:558
gem5::ArmISA::SveUnaryPredPredOp::SveUnaryPredPredOp
SveUnaryPredPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _gp)
Definition: sve.hh:744
gem5::ArmISA::SveIndexIIOp::imm1
int8_t imm1
Definition: sve.hh:64
gem5::ArmISA::SveBinIdxUnpredOp
Binary, unpredicated SVE instruction.
Definition: sve.hh:397
gem5::ArmISA::SvePartBrkOp::dest
RegIndex dest
Definition: sve.hh:677
gem5::ArmISA::SveUnpackOp
SVE unpack and widen predicate.
Definition: sve.hh:772
gem5::ArmISA::SvePredBinPermOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:378
gem5::ArmISA::sveExpandFpImmAddSub
uint64_t sveExpandFpImmAddSub(uint8_t imm, uint8_t size)
Expand 1-bit floating-point immediate to 0.5 or 1.0 (FADD, FSUB, FSUBR).
Definition: sve.cc:956
gem5::ArmISA::SvePartBrkPropOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:615
gem5::ArmISA::SveIndexIROp::SveIndexIROp
SveIndexIROp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, int8_t _imm1, RegIndex _op2)
Definition: sve.hh:84
gem5::ArmISA::SveIntCmpOp::gp
RegIndex gp
Definition: sve.hh:591
gem5::ArmISA::SveBinImmPredOp::dest
RegIndex dest
Definition: sve.hh:313
gem5::ArmISA::SveTerPredOp::op2
RegIndex op2
Definition: sve.hh:488
gem5::ArmISA::SveIndexRROp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:132
gem5::ArmISA::SveOrdReducOp::gp
RegIndex gp
Definition: sve.hh:556
gem5::ArmISA::SveReducOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:469
gem5::ArmISA::SveCmpImmOp::gp
RegIndex gp
Definition: sve.hh:470
gem5::ArmISA::SveUnaryWideImmUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:221
gem5::ArmISA::SveTerPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:423
gem5::ArmISA::SveDotProdOp::esize
uint8_t esize
Definition: sve.hh:941
gem5::ArmISA::SveTerUnpredOp::op2
RegIndex op2
Definition: sve.hh:505
gem5::ArmISA::SveTerPredOp::op1
RegIndex op1
Definition: sve.hh:488
gem5::ArmISA::SveWhileOp::dest
RegIndex dest
Definition: sve.hh:170
gem5::ArmISA::SveUnaryUnpredOp::op1
RegIndex op1
Definition: sve.hh:240
gem5::ArmISA::SvePtrueOp
PTRUE, PTRUES.
Definition: sve.hh:569
gem5::ArmISA::SveIndexIIOp::imm2
int8_t imm2
Definition: sve.hh:65
gem5::ArmISA::SveBinUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:327
gem5::ArmISA::SveReducOp::dest
RegIndex dest
Definition: sve.hh:540
gem5::ArmISA::SveBinDestrPredOp::dest
RegIndex dest
Definition: sve.hh:348
gem5::ArmISA::SveUnaryPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:195
gem5::ArmISA::SveAdrOp::mult
uint8_t mult
Definition: sve.hh:636
gem5::ArmISA::SvePselOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:165
gem5::ArmISA::SveTerImmUnpredOp::op2
RegIndex op2
Definition: sve.hh:522
gem5::ArmISA::SveCmpImmOp::dest
RegIndex dest
Definition: sve.hh:470
gem5::ArmISA::SveIntCmpImmOp::gp
RegIndex gp
Definition: sve.hh:611
gem5::ArmISA::SveSelectOp::gp
RegIndex gp
Definition: sve.hh:717
gem5::ArmISA::SveUnaryPredPredOp::op1
RegIndex op1
Definition: sve.hh:741
gem5::ArmISA::SveBinConstrPredOp::predType
SvePredType predType
Definition: sve.hh:366
gem5::ArmISA::SvePredLogicalOp
Predicate logical instruction.
Definition: sve.hh:415
gem5::ArmISA::SveElemCountOp::dstIsVec
bool dstIsVec
Definition: sve.hh:658
gem5::ArmISA::SveIndexIIOp::SveIndexIIOp
SveIndexIIOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, int8_t _imm1, int8_t _imm2)
Definition: sve.hh:67
gem5::ArmISA::SveElemCountOp::dstIs32b
bool dstIs32b
Definition: sve.hh:659
gem5::ArmISA::SveCmpOp::op2
RegIndex op2
Definition: sve.hh:453
gem5::ArmISA::SvePredCountPredOp::gp
RegIndex gp
Definition: sve.hh:154
gem5::ArmISA::SveClampOp::SveClampOp
SveClampOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2)
Definition: sve.hh:1001
gem5::ArmISA::SveBinIdxUnpredOp::op1
RegIndex op1
Definition: sve.hh:400
gem5::ArmISA::SveBinImmIdxUnpredOp
Binary with immediate index, destructive, unpredicated SVE instruction.
Definition: sve.hh:881
gem5::Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:147
gem5::ArmISA::SveDotProdIdxOp::op1
RegIndex op1
Definition: sve.hh:920
gem5::ArmISA::SveOrdReducOp::dest
RegIndex dest
Definition: sve.hh:556
gem5::ArmISA::SveBinConstrPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:308
gem5::ArmISA::SveBinConstrPredOp
Binary, constructive, predicated SVE instruction.
Definition: sve.hh:362
gem5::ArmISA::SveBinImmIdxUnpredOp::op1
RegIndex op1
Definition: sve.hh:884
gem5::ArmISA::SveUnaryPredPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:657
gem5::ArmISA::SveUnaryUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:209
gem5::ArmISA::SveIndexRROp::dest
RegIndex dest
Definition: sve.hh:114
gem5::ArmISA::SveBinImmPredOp::gp
RegIndex gp
Definition: sve.hh:313
gem5::ArmISA::SveReducOp::op1
RegIndex op1
Definition: sve.hh:540
gem5::ArmISA::SveUnaryWideImmUnpredOp
Unary with wide immediate, constructive, unpredicated SVE instruction.
Definition: sve.hh:253
gem5::ArmISA::SveAdrOp::SveAdrOp
SveAdrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, uint8_t _mult, SveAdrOffsetFormat _offsetFormat)
Definition: sve.hh:639
gem5::ArmISA::SveTerUnpredOp::op1
RegIndex op1
Definition: sve.hh:505
gem5::ArmISA::SvePredLogicalOp::dest
RegIndex dest
Definition: sve.hh:418
gem5::ArmISA::SveIntCmpImmOp::dest
RegIndex dest
Definition: sve.hh:608
gem5::ArmISA::SveWImplicitSrcDstOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:741
gem5::ArmISA::SveComplexOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:828
gem5::ArmISA::SvePtrueOp::dest
RegIndex dest
Definition: sve.hh:572
gem5::ArmISA::SveUnaryWideImmPredOp
Unary with wide immediate, constructive, predicated SVE instruction.
Definition: sve.hh:271
gem5::ArmISA::SveCmpImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:407
gem5::ArmISA::SveSelectOp
Scalar element select SVE instruction.
Definition: sve.hh:712
gem5::ArmISA::SveDotProdIdxOp::esize
uint8_t esize
Definition: sve.hh:922
gem5::ArmISA::SvePredCountPredOp::dest
RegIndex dest
Definition: sve.hh:152
gem5::ArmISA::SveCmpOp::op1
RegIndex op1
Definition: sve.hh:453
gem5::ArmISA::sveExpandFpImmMul
uint64_t sveExpandFpImmMul(uint8_t imm, uint8_t size)
Expand 1-bit floating-point immediate to 0.5 or 2.0 (FMUL).
Definition: sve.cc:997
gem5::X86ISA::ExtMachInst
Definition: types.hh:212
gem5::ArmISA::SveUnaryPredPredOp::dest
RegIndex dest
Definition: sve.hh:740
gem5::ArmISA::SveBinImmPredOp::SveBinImmPredOp
SveBinImmPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint64_t _imm, RegIndex _gp)
Definition: sve.hh:316
gem5::ArmISA::SvePselOp::gp
RegIndex gp
Definition: sve.hh:189
gem5::ArmISA::SvePredUnaryWImplicitSrcPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:718
gem5::ArmISA::SveTerUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:439
gem5::ArmISA::SveOrdReducOp::op1
RegIndex op1
Definition: sve.hh:556
gem5::ArmISA::SvePredCountOp::destIsVec
bool destIsVec
Definition: sve.hh:135
gem5::ArmISA::SveDotProdOp::op2
RegIndex op2
Definition: sve.hh:940
gem5::ArmISA::SvePselOp::SvePselOp
SvePselOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _gp, RegIndex _op2, uint64_t _imm)
Definition: sve.hh:193
gem5::ArmISA::imm
Bitfield< 7, 0 > imm
Definition: types.hh:132
gem5::ArmISA::SveBinImmUnpredConstrOp::op1
RegIndex op1
Definition: sve.hh:295
gem5::ArmISA::SvePredLogicalOp::op1
RegIndex op1
Definition: sve.hh:418
gem5::ArmISA::SveUnaryUnpredOp::SveUnaryUnpredOp
SveUnaryUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1)
Definition: sve.hh:242
gem5::ArmISA::SveSelectOp::simdFp
bool simdFp
Definition: sve.hh:720
gem5::ArmISA::SveAdrOp::dest
RegIndex dest
Definition: sve.hh:635
gem5::ArmISA::SvePartBrkOp::op1
RegIndex op1
Definition: sve.hh:679
gem5::ArmISA::SveIntCmpImmOp::imm
int64_t imm
Definition: sve.hh:610
gem5::ArmISA::SvePredCountOp::gp
RegIndex gp
Definition: sve.hh:133
gem5::ArmISA::SveUnpackOp::dest
RegIndex dest
Definition: sve.hh:775
gem5::ArmISA::SvePredUnaryWImplicitSrcPredOp
SVE unary predicate instructions, predicated, with implicit source operand.
Definition: sve.hh:819
gem5::ArmISA::SvePtrueOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:499
gem5::ArmISA::SvePartBrkOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:601
gem5::ArmISA::SveBinDestrPredOp::op2
RegIndex op2
Definition: sve.hh:348
gem5::ArmISA::SveIndexIROp::op2
RegIndex op2
Definition: sve.hh:82
gem5::ArmISA::SvePredCountOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:75
gem5::ArmISA::SveIndexIROp::imm1
int8_t imm1
Definition: sve.hh:81
gem5::ArmISA::SveIndexRROp
Definition: sve.hh:111
gem5::ArmISA::SvePredCountOp
Definition: sve.hh:129
gem5::ArmISA::SvePredUnaryWImplicitDstOp::SvePredUnaryWImplicitDstOp
SvePredUnaryWImplicitDstOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _op1)
Definition: sve.hh:841
gem5::ArmISA::SveCompTermOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:183
gem5::ArmISA::SveAdrOp::SveAdrOffsetUnpackedSigned
@ SveAdrOffsetUnpackedSigned
Definition: sve.hh:630
gem5::ArmISA::SveClampOp::dest
RegIndex dest
Definition: sve.hh:997
gem5::ArmISA::SveAdrOp
ADR.
Definition: sve.hh:624
static_inst.hh
gem5::ArmISA::SveBinImmPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:262
gem5::ArmISA::SveCmpImmOp
SVE compare-with-immediate instructions, predicated (zeroing).
Definition: sve.hh:467
gem5::ArmISA::SveIntCmpOp::dest
RegIndex dest
Definition: sve.hh:589
gem5::ArmISA::SveIndexRIOp
Definition: sve.hh:94
gem5::MipsISA::pc
Bitfield< 4 > pc
Definition: pra_constants.hh:243
gem5::ArmISA::SvePredLogicalOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:358
gem5::ArmISA::SvePredCountPredOp::op1
RegIndex op1
Definition: sve.hh:153
gem5::ArmISA::SveDotProdIdxOp::dest
RegIndex dest
Definition: sve.hh:920
gem5::ArmISA::SveCmpOp::SveCmpOp
SveCmpOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, RegIndex _gp)
Definition: sve.hh:455
gem5::ArmISA::SveBinImmIdxUnpredOp::SveBinImmIdxUnpredOp
SveBinImmIdxUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint64_t _imm)
Definition: sve.hh:887
gem5::ArmISA::SveCmpOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:392
gem5::ArmISA::SveUnaryWideImmPredOp::isMerging
bool isMerging
Definition: sve.hh:278
gem5::ArmISA::SvePredUnaryWImplicitDstOp
SVE unary predicate instructions with implicit destination operand.
Definition: sve.hh:836
gem5::ArmISA::SveWImplicitSrcDstOp::SveWImplicitSrcDstOp
SveWImplicitSrcDstOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
Definition: sve.hh:854
gem5::ArmISA::SveComplexIdxOp::imm
uint8_t imm
Definition: sve.hh:979
gem5::ArmISA::SveReducOp::SveReducOp
SveReducOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _gp)
Definition: sve.hh:542
gem5::ArmISA::SveBinConstrPredOp::op1
RegIndex op1
Definition: sve.hh:365
gem5::ArmISA::SveUnaryWideImmUnpredOp::SveUnaryWideImmUnpredOp
SveUnaryWideImmUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint64_t _imm)
Definition: sve.hh:259
gem5::ArmISA::SvePredBinPermOp::op1
RegIndex op1
Definition: sve.hh:436
gem5::ArmISA::SveBinDestrPredOp::SveBinDestrPredOp
SveBinDestrPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op2, RegIndex _gp)
Definition: sve.hh:350
gem5::ArmISA::SveIndexIROp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:107
gem5::ArmISA::SveSelectOp::conditional
bool conditional
Definition: sve.hh:718
gem5::ArmISA::SveUnaryWideImmPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:233
gem5::ArmISA::SveBinIdxUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:341
gem5::ArmISA::SveUnpackOp::SveUnpackOp
SveUnpackOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1)
Definition: sve.hh:778
gem5::ArmISA::SveBinImmUnpredDestrOp::SveBinImmUnpredDestrOp
SveBinImmUnpredDestrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint64_t _imm)
Definition: sve.hh:870
gem5::ArmISA::SveUnaryWideImmPredOp::dest
RegIndex dest
Definition: sve.hh:274
gem5::ArmISA::SveBinImmUnpredConstrOp::SveBinImmUnpredConstrOp
SveBinImmUnpredConstrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint64_t _imm)
Definition: sve.hh:298
gem5::ArmISA::SveIndexRROp::op2
RegIndex op2
Definition: sve.hh:116
gem5::ArmISA::SvePredCountPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:61
gem5::ArmISA::SveSelectOp::scalar_width
size_t scalar_width
Definition: sve.hh:721
gem5::ArmISA::SvePartBrkPropOp::op2
RegIndex op2
Definition: sve.hh:698
gem5::ArmISA::SveComplexOp::rot
uint8_t rot
Definition: sve.hh:960
gem5::ArmISA::SveBinConstrPredOp::op2
RegIndex op2
Definition: sve.hh:365
gem5::ArmISA::SveCmpImmOp::SveCmpImmOp
SveCmpImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint64_t _imm, RegIndex _gp)
Definition: sve.hh:473
gem5::ArmISA::SveTblOp::op2
RegIndex op2
Definition: sve.hh:760
gem5::RegIndex
uint16_t RegIndex
Definition: types.hh:176
gem5::ArmISA::SveUnaryPredOp::gp
RegIndex gp
Definition: sve.hh:224
gem5::ArmISA::SveUnaryWideImmPredOp::imm
uint64_t imm
Definition: sve.hh:275
gem5::ArmISA::SveElemCountOp::pattern
uint8_t pattern
Definition: sve.hh:656
gem5::ArmISA::SvePredTestOp::op1
RegIndex op1
Definition: sve.hh:791
gem5::ArmISA::SveWhileOp::op1
RegIndex op1
Definition: sve.hh:170
gem5::ArmISA::SvePredUnaryWImplicitSrcOp::dest
RegIndex dest
Definition: sve.hh:807
gem5::ArmISA::SvePredUnaryWImplicitSrcOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:708
gem5::ArmISA::SvePartBrkPropOp::SvePartBrkPropOp
SvePartBrkPropOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, RegIndex _gp)
Definition: sve.hh:701
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: gpu_translation_state.hh:37
gem5::ArmISA::SveBinConstrPredOp::SveBinConstrPredOp
SveBinConstrPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, RegIndex _gp, SvePredType _predType)
Definition: sve.hh:368
gem5::ArmISA::SveUnpackOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:684
gem5::ArmISA::SveUnarySca2VecUnpredOp
Unary unpredicated scalar to vector instruction.
Definition: sve.hh:899
gem5::ArmISA::SvePredUnaryWImplicitDstOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:731
gem5::ArmISA::SveBinWideImmUnpredOp
Binary with wide immediate, destructive, unpredicated SVE instruction.
Definition: sve.hh:327
gem5::ArmISA::SveClampOp
Definition: sve.hh:994
gem5::ArmISA::SvePselOp::dest
RegIndex dest
Definition: sve.hh:187
gem5::ArmISA::SveDotProdIdxOp::SveDotProdIdxOp
SveDotProdIdxOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, uint64_t _imm)
Definition: sve.hh:925
gem5::ArmISA::SveBinImmUnpredDestrOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:750
gem5::ArmISA::SvePredUnaryWImplicitDstOp::op1
RegIndex op1
Definition: sve.hh:839
gem5::ArmISA::SvePredUnaryWImplicitSrcOp
SVE unary predicate instructions with implicit source operand.
Definition: sve.hh:804
gem5::ArmISA::SveBinUnpredOp::SveBinUnpredOp
SveBinUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2)
Definition: sve.hh:386
gem5::ArmISA::SvePredLogicalOp::isSel
bool isSel
Definition: sve.hh:419
gem5::ArmISA::SveUnarySca2VecUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:781
gem5::ArmISA::SvePartBrkOp::isMerging
bool isMerging
Definition: sve.hh:680
gem5::ArmISA::SveUnaryPredOp::SveUnaryPredOp
SveUnaryPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _gp)
Definition: sve.hh:226
gem5::ArmISA::SveBinImmUnpredDestrOp::op1
RegIndex op1
Definition: sve.hh:867
gem5::ArmISA::SveDotProdOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:814
gem5::ArmISA::SveAdrOp::SveAdrOffsetUnpackedUnsigned
@ SveAdrOffsetUnpackedUnsigned
Definition: sve.hh:631
gem5::ArmISA::SveIndexRROp::op1
RegIndex op1
Definition: sve.hh:115
gem5::ArmISA::SvePselOp
Psel predicate selection SVE instruction.
Definition: sve.hh:184
gem5::ArmISA::SvePartBrkOp::gp
RegIndex gp
Definition: sve.hh:678
gem5::ArmISA::SveIntCmpOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:513
gem5::ArmISA::SveAdrOp::op1
RegIndex op1
Definition: sve.hh:635
gem5::ArmISA::SveIndexRIOp::dest
RegIndex dest
Definition: sve.hh:97
gem5::ArmISA::SvePredBinPermOp::SvePredBinPermOp
SvePredBinPermOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2)
Definition: sve.hh:438
gem5::ArmISA::SveElemCountOp::dest
RegIndex dest
Definition: sve.hh:655
gem5::ArmISA::SveDotProdIdxOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:797
gem5::ArmISA::SveDotProdIdxOp
SVE dot product instruction (indexed)
Definition: sve.hh:917
gem5::ArmISA::SveIndexIIOp::dest
RegIndex dest
Definition: sve.hh:63
gem5::ArmISA::SveTerPredOp
Ternary, destructive, predicated (merging) SVE instruction.
Definition: sve.hh:485
gem5::ArmISA::SveIntCmpOp::SveIntCmpOp
SveIntCmpOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, RegIndex _gp, bool _op2IsWide=false)
Definition: sve.hh:594
gem5::ArmISA::SveUnaryUnpredOp
Unary, constructive, unpredicated SVE instruction.
Definition: sve.hh:237
gem5::ArmISA::SveComplexOp
SVE Complex Instructions (vectors)
Definition: sve.hh:956
gem5::ArmISA::SveOrdReducOp
SVE ordered reductions.
Definition: sve.hh:553
gem5::ArmISA::SveUnarySca2VecUnpredOp::SveUnarySca2VecUnpredOp
SveUnarySca2VecUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, bool _simdFp)
Definition: sve.hh:905
gem5::ArmISA::SveComplexIdxOp::dest
RegIndex dest
Definition: sve.hh:978
gem5::ArmISA::SveIndexIROp
Definition: sve.hh:77
gem5::ArmISA::SveCompTermOp::op2
RegIndex op2
Definition: sve.hh:209
gem5::ArmISA::SveElemCountOp
Element count SVE instruction.
Definition: sve.hh:652
gem5::ArmISA::SveCmpImmOp::imm
uint64_t imm
Definition: sve.hh:471
gem5::ArmISA::SveComplexOp::op1
RegIndex op1
Definition: sve.hh:959
gem5::ArmISA::SveIntCmpOp::op2IsWide
bool op2IsWide
Definition: sve.hh:592

Generated on Sun Jul 30 2023 01:56:49 for gem5 by doxygen 1.8.17