gem5  v20.1.0.0
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 ArmISA {
44 
45 enum class SvePredType {
46  NONE,
47  MERGE,
48  ZERO,
49  SELECT
50 };
51 
53 const char* svePredTypeToStr(SvePredType pt);
54 
56 class SveIndexIIOp : public ArmStaticInst {
57  protected:
59  int8_t imm1;
60  int8_t imm2;
61 
62  SveIndexIIOp(const char* mnem, ExtMachInst _machInst,
63  OpClass __opClass, IntRegIndex _dest,
64  int8_t _imm1, int8_t _imm2) :
65  ArmStaticInst(mnem, _machInst, __opClass),
66  dest(_dest), imm1(_imm1), imm2(_imm2)
67  {}
68  std::string generateDisassembly(
69  Addr pc, const Loader::SymbolTable *symtab) const override;
70 };
71 
72 class SveIndexIROp : public ArmStaticInst {
73  protected:
75  int8_t imm1;
77 
78  SveIndexIROp(const char* mnem, ExtMachInst _machInst,
79  OpClass __opClass, IntRegIndex _dest,
80  int8_t _imm1, IntRegIndex _op2) :
81  ArmStaticInst(mnem, _machInst, __opClass),
82  dest(_dest), imm1(_imm1), op2(_op2)
83  {}
84  std::string generateDisassembly(
85  Addr pc, const Loader::SymbolTable *symtab) const override;
86 };
87 
88 class SveIndexRIOp : public ArmStaticInst {
89  protected:
92  int8_t imm2;
93 
94  SveIndexRIOp(const char* mnem, ExtMachInst _machInst,
95  OpClass __opClass, IntRegIndex _dest,
96  IntRegIndex _op1, int8_t _imm2) :
97  ArmStaticInst(mnem, _machInst, __opClass),
98  dest(_dest), op1(_op1), imm2(_imm2)
99  {}
100  std::string generateDisassembly(
101  Addr pc, const Loader::SymbolTable *symtab) const override;
102 };
103 
104 class SveIndexRROp : public ArmStaticInst {
105  protected:
109 
110  SveIndexRROp(const char* mnem, ExtMachInst _machInst,
111  OpClass __opClass, IntRegIndex _dest,
112  IntRegIndex _op1, IntRegIndex _op2) :
113  ArmStaticInst(mnem, _machInst, __opClass),
114  dest(_dest), op1(_op1), op2(_op2)
115  {}
116  std::string generateDisassembly(
117  Addr pc, const Loader::SymbolTable *symtab) const override;
118 };
119 
120 // Predicate count SVE instruction.
122  protected:
125  bool srcIs32b;
126  bool destIsVec;
127 
128  SvePredCountOp(const char* mnem, ExtMachInst _machInst,
129  OpClass __opClass, IntRegIndex _dest, IntRegIndex _gp,
130  bool _srcIs32b = false, bool _destIsVec = false) :
131  ArmStaticInst(mnem, _machInst, __opClass),
132  dest(_dest), gp(_gp),
133  srcIs32b(_srcIs32b), destIsVec(_destIsVec)
134  {}
135  std::string generateDisassembly(
136  Addr pc, const Loader::SymbolTable *symtab) const override;
137 };
138 
139 // Predicate count SVE instruction (predicated).
141  protected:
145 
146  SvePredCountPredOp(const char* mnem, ExtMachInst _machInst,
147  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1,
148  IntRegIndex _gp) :
149  ArmStaticInst(mnem, _machInst, __opClass),
150  dest(_dest), op1(_op1), gp(_gp)
151  {}
152  std::string generateDisassembly(
153  Addr pc, const Loader::SymbolTable *symtab) const override;
154 };
155 
157 class SveWhileOp : public ArmStaticInst {
158  protected:
160  bool srcIs32b;
161 
162  SveWhileOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
163  IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2,
164  bool _srcIs32b) :
165  ArmStaticInst(mnem, _machInst, __opClass),
166  dest(_dest), op1(_op1), op2(_op2), srcIs32b(_srcIs32b)
167  {}
168  std::string generateDisassembly(
169  Addr pc, const Loader::SymbolTable *symtab) const override;
170 };
171 
173 class SveCompTermOp : public ArmStaticInst {
174  protected:
176 
177  SveCompTermOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
178  IntRegIndex _op1, IntRegIndex _op2) :
179  ArmStaticInst(mnem, _machInst, __opClass),
180  op1(_op1), op2(_op2)
181  {}
182  std::string generateDisassembly(
183  Addr pc, const Loader::SymbolTable *symtab) const override;
184 };
185 
188  protected:
190 
191  SveUnaryPredOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
192  IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _gp) :
193  ArmStaticInst(mnem, _machInst, __opClass),
194  dest(_dest), op1(_op1), gp(_gp)
195  {}
196 
197  std::string generateDisassembly(
198  Addr pc, const Loader::SymbolTable *symtab) const override;
199 };
200 
203  protected:
205 
206  SveUnaryUnpredOp(const char* mnem, ExtMachInst _machInst,
207  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1) :
208  ArmStaticInst(mnem, _machInst, __opClass),
209  dest(_dest), op1(_op1)
210  {}
211 
212  std::string generateDisassembly(
213  Addr pc, const Loader::SymbolTable *symtab) const override;
214 };
215 
218  protected:
220  uint64_t imm;
221 
222  SveUnaryWideImmUnpredOp(const char* mnem, ExtMachInst _machInst,
223  OpClass __opClass, IntRegIndex _dest,
224  uint64_t _imm) :
225  ArmStaticInst(mnem, _machInst, __opClass),
226  dest(_dest), imm(_imm)
227  {}
228 
229  std::string generateDisassembly(
230  Addr pc, const Loader::SymbolTable *symtab) const override;
231 };
232 
235  protected:
237  uint64_t imm;
239 
240  bool isMerging;
241 
242  SveUnaryWideImmPredOp(const char* mnem, ExtMachInst _machInst,
243  OpClass __opClass, IntRegIndex _dest,
244  uint64_t _imm, IntRegIndex _gp, bool _isMerging) :
245  ArmStaticInst(mnem, _machInst, __opClass),
246  dest(_dest), imm(_imm), gp(_gp), isMerging(_isMerging)
247  {}
248 
249  std::string generateDisassembly(
250  Addr pc, const Loader::SymbolTable *symtab) const override;
251 };
252 
255  protected:
257  uint64_t imm;
258 
259  SveBinImmUnpredConstrOp(const char* mnem, ExtMachInst _machInst,
260  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1,
261  uint64_t _imm) :
262  ArmStaticInst(mnem, _machInst, __opClass),
263  dest(_dest), op1(_op1), imm(_imm)
264  {}
265 
266  std::string generateDisassembly(
267  Addr pc, const Loader::SymbolTable *symtab) const override;
268 };
269 
272  protected:
274  uint64_t imm;
275 
276  SveBinImmPredOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
277  IntRegIndex _dest, uint64_t _imm, IntRegIndex _gp) :
278  ArmStaticInst(mnem, _machInst, __opClass),
279  dest(_dest), gp(_gp), imm(_imm)
280  {}
281 
282  std::string generateDisassembly(
283  Addr pc, const Loader::SymbolTable *symtab) const override;
284 };
285 
288  protected:
290  uint64_t imm;
291 
292  SveBinWideImmUnpredOp(const char* mnem, ExtMachInst _machInst,
293  OpClass __opClass, IntRegIndex _dest,
294  uint64_t _imm) :
295  ArmStaticInst(mnem, _machInst, __opClass),
296  dest(_dest), imm(_imm)
297  {}
298 
299  std::string generateDisassembly(
300  Addr pc, const Loader::SymbolTable *symtab) const override;
301 };
302 
305  protected:
307 
308  SveBinDestrPredOp(const char* mnem, ExtMachInst _machInst,
309  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op2,
310  IntRegIndex _gp) :
311  ArmStaticInst(mnem, _machInst, __opClass),
312  dest(_dest), op2(_op2), gp(_gp)
313  {}
314 
315  std::string generateDisassembly(
316  Addr pc, const Loader::SymbolTable *symtab) const override;
317 };
318 
321  protected:
324 
325  SveBinConstrPredOp(const char* mnem, ExtMachInst _machInst,
326  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1,
327  IntRegIndex _op2, IntRegIndex _gp,
328  SvePredType _predType) :
329  ArmStaticInst(mnem, _machInst, __opClass),
330  dest(_dest), op1(_op1), op2(_op2), gp(_gp), predType(_predType)
331  {}
332 
333  std::string generateDisassembly(
334  Addr pc, const Loader::SymbolTable *symtab) const override;
335 };
336 
339  protected:
341 
342  SveBinUnpredOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
343  IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2) :
344  ArmStaticInst(mnem, _machInst, __opClass),
345  dest(_dest), op1(_op1), op2(_op2)
346  {}
347 
348  std::string generateDisassembly(
349  Addr pc, const Loader::SymbolTable *symtab) const override;
350 };
351 
354  protected:
356  uint8_t index;
357 
358  SveBinIdxUnpredOp(const char* mnem, ExtMachInst _machInst,
359  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1,
360  IntRegIndex _op2, uint8_t _index) :
361  ArmStaticInst(mnem, _machInst, __opClass),
362  dest(_dest), op1(_op1), op2(_op2), index(_index)
363  {}
364 
365  std::string generateDisassembly(
366  Addr pc, const Loader::SymbolTable *symtab) const override;
367 };
368 
371  protected:
373  bool isSel;
374 
375  SvePredLogicalOp(const char* mnem, ExtMachInst _machInst,
376  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1,
377  IntRegIndex _op2, IntRegIndex _gp, bool _isSel = false) :
378  ArmStaticInst(mnem, _machInst, __opClass),
379  dest(_dest), op1(_op1), op2(_op2), gp(_gp), isSel(_isSel)
380  {}
381 
382  std::string generateDisassembly(
383  Addr pc, const Loader::SymbolTable *symtab) const override;
384 };
385 
388  protected:
390 
391  SvePredBinPermOp(const char* mnem, ExtMachInst _machInst,
392  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1,
393  IntRegIndex _op2) :
394  ArmStaticInst(mnem, _machInst, __opClass),
395  dest(_dest), op1(_op1), op2(_op2)
396  {}
397 
398  std::string generateDisassembly(
399  Addr pc, const Loader::SymbolTable *symtab) const override;
400 };
401 
403 class SveCmpOp : public ArmStaticInst {
404  protected:
406 
407  SveCmpOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
408  IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2,
409  IntRegIndex _gp) :
410  ArmStaticInst(mnem, _machInst, __opClass),
411  dest(_dest), gp(_gp), op1(_op1), op2(_op2)
412  {}
413 
414  std::string generateDisassembly(
415  Addr pc, const Loader::SymbolTable *symtab) const override;
416 };
417 
419 class SveCmpImmOp : public ArmStaticInst {
420  protected:
422  uint64_t imm;
423 
424  SveCmpImmOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
425  IntRegIndex _dest, IntRegIndex _op1, uint64_t _imm,
426  IntRegIndex _gp) :
427  ArmStaticInst(mnem, _machInst, __opClass),
428  dest(_dest), gp(_gp), op1(_op1), imm(_imm)
429  {}
430 
431  std::string generateDisassembly(
432  Addr pc, const Loader::SymbolTable *symtab) const override;
433 };
434 
436 class SveTerPredOp : public ArmStaticInst {
437  protected:
439 
440  SveTerPredOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
441  IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2,
442  IntRegIndex _gp) :
443  ArmStaticInst(mnem, _machInst, __opClass),
444  dest(_dest), op1(_op1), op2(_op2), gp(_gp)
445  {}
446 
447  std::string generateDisassembly(
448  Addr pc, const Loader::SymbolTable *symtab) const override;
449 };
450 
453  protected:
455  uint64_t imm;
456 
457  SveTerImmUnpredOp(const char* mnem, ExtMachInst _machInst,
458  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op2,
459  uint64_t _imm) :
460  ArmStaticInst(mnem, _machInst, __opClass),
461  dest(_dest), op2(_op2), imm(_imm)
462  {}
463 
464  std::string generateDisassembly(
465  Addr pc, const Loader::SymbolTable *symtab) const override;
466 };
467 
469 class SveReducOp : public ArmStaticInst {
470  protected:
472 
473  SveReducOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
474  IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _gp) :
475  ArmStaticInst(mnem, _machInst, __opClass),
476  dest(_dest), op1(_op1), gp(_gp)
477  {}
478 
479  std::string generateDisassembly(
480  Addr pc, const Loader::SymbolTable *symtab) const override;
481 };
482 
484 class SveOrdReducOp : public ArmStaticInst {
485  protected:
487 
488  SveOrdReducOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
489  IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _gp) :
490  ArmStaticInst(mnem, _machInst, __opClass),
491  dest(_dest), op1(_op1), gp(_gp)
492  {}
493 
494  std::string generateDisassembly(
495  Addr pc, const Loader::SymbolTable *symtab) const override;
496 };
497 
499 class SvePtrueOp : public ArmStaticInst {
500  protected:
502  uint8_t imm;
503 
504  SvePtrueOp(const char* mnem, ExtMachInst _machInst,
505  OpClass __opClass, IntRegIndex _dest, uint8_t _imm) :
506  ArmStaticInst(mnem, _machInst, __opClass),
507  dest(_dest), imm(_imm)
508  {}
509 
510  std::string generateDisassembly(
511  Addr pc, const Loader::SymbolTable *symtab) const override;
512 };
513 
515 class SveIntCmpOp : public ArmStaticInst {
516  protected:
520  bool op2IsWide;
521 
522  SveIntCmpOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
523  IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2,
524  IntRegIndex _gp, bool _op2IsWide = false) :
525  ArmStaticInst(mnem, _machInst, __opClass),
526  dest(_dest), op1(_op1), op2(_op2), gp(_gp), op2IsWide(_op2IsWide)
527  {}
528  std::string generateDisassembly(
529  Addr pc, const Loader::SymbolTable *symtab) const override;
530 };
531 
534  protected:
537  int64_t imm;
539 
540  SveIntCmpImmOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
541  IntRegIndex _dest, IntRegIndex _op1, int64_t _imm,
542  IntRegIndex _gp) :
543  ArmStaticInst(mnem, _machInst, __opClass),
544  dest(_dest), op1(_op1), imm(_imm), gp(_gp)
545  {}
546  std::string generateDisassembly(
547  Addr pc, const Loader::SymbolTable *symtab) const override;
548 };
549 
551 class SveAdrOp : public ArmStaticInst {
552  public:
557  };
558 
559  protected:
561  uint8_t mult;
563 
564  SveAdrOp(const char* mnem, ExtMachInst _machInst,
565  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1,
566  IntRegIndex _op2, uint8_t _mult,
567  SveAdrOffsetFormat _offsetFormat) :
568  ArmStaticInst(mnem, _machInst, __opClass),
569  dest(_dest), op1(_op1), op2(_op2), mult(_mult),
570  offsetFormat(_offsetFormat)
571  {}
572  std::string generateDisassembly(
573  Addr pc, const Loader::SymbolTable *symtab) const override;
574 };
575 
578  protected:
580  uint8_t pattern;
581  uint8_t imm;
582  bool dstIsVec;
583  bool dstIs32b;
584  uint8_t esize;
585 
586  SveElemCountOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
587  IntRegIndex _dest, uint8_t _pattern, uint8_t _imm,
588  bool _dstIsVec, bool _dstIs32b) :
589  ArmStaticInst(mnem, _machInst, __opClass),
590  dest(_dest), pattern(_pattern), imm(_imm), dstIsVec(_dstIsVec),
591  dstIs32b(_dstIs32b)
592  {}
593  std::string generateDisassembly(
594  Addr pc, const Loader::SymbolTable *symtab) const override;
595 };
596 
598 class SvePartBrkOp : public ArmStaticInst {
599  protected:
603  bool isMerging;
604 
605  SvePartBrkOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
606  IntRegIndex _dest, IntRegIndex _gp, IntRegIndex _op1,
607  bool _isMerging) :
608  ArmStaticInst(mnem, _machInst, __opClass),
609  dest(_dest), gp(_gp), op1(_op1), isMerging(_isMerging)
610  {}
611  std::string generateDisassembly(
612  Addr pc, const Loader::SymbolTable *symtab) const override;
613 };
614 
617  protected:
622 
623  SvePartBrkPropOp(const char* mnem, ExtMachInst _machInst,
624  OpClass __opClass, IntRegIndex _dest,
625  IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _gp) :
626  ArmStaticInst(mnem, _machInst, __opClass),
627  dest(_dest), op1(_op1), op2(_op2), gp(_gp)
628  {}
629  std::string generateDisassembly(
630  Addr pc, const Loader::SymbolTable *symtab) const override;
631 };
632 
634 class SveSelectOp : public ArmStaticInst {
635  protected:
640  bool scalar;
641  bool simdFp;
642  size_t scalar_width;
643 
644  SveSelectOp(const char* mnem, ExtMachInst _machInst,
645  OpClass __opClass, IntRegIndex _dest,
646  IntRegIndex _op1, IntRegIndex _gp,
647  bool _conditional, bool _scalar,
648  bool _simdFp) :
649  ArmStaticInst(mnem, _machInst, __opClass),
650  dest(_dest), op1(_op1), gp(_gp), conditional(_conditional),
651  scalar(_scalar), simdFp(_simdFp)
652  {}
653  std::string generateDisassembly(
654  Addr pc, const Loader::SymbolTable *symtab) const override;
655 };
656 
659  protected:
663 
664  SveUnaryPredPredOp(const char* mnem, ExtMachInst _machInst,
665  OpClass __opClass, IntRegIndex _dest,
666  IntRegIndex _op1, IntRegIndex _gp) :
667  ArmStaticInst(mnem, _machInst, __opClass),
668  dest(_dest), op1(_op1), gp(_gp)
669  {}
670  std::string generateDisassembly(
671  Addr pc, const Loader::SymbolTable *symtab) const override;
672 };
673 
675 class SveTblOp : public ArmStaticInst {
676  protected:
680 
681  SveTblOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
682  IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2) :
683  ArmStaticInst(mnem, _machInst, __opClass),
684  dest(_dest), op1(_op1), op2(_op2)
685  {}
686  std::string generateDisassembly(
687  Addr pc, const Loader::SymbolTable *symtab) const override;
688 };
689 
691 class SveUnpackOp : public ArmStaticInst {
692  protected:
695 
696  SveUnpackOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
697  IntRegIndex _dest, IntRegIndex _op1) :
698  ArmStaticInst(mnem, _machInst, __opClass),
699  dest(_dest), op1(_op1)
700  {}
701  std::string generateDisassembly(
702  Addr pc, const Loader::SymbolTable *symtab) const override;
703 };
704 
706 class SvePredTestOp : public ArmStaticInst {
707  protected:
710 
711  SvePredTestOp(const char* mnem, ExtMachInst _machInst, OpClass __opClass,
712  IntRegIndex _op1, IntRegIndex _gp) :
713  ArmStaticInst(mnem, _machInst, __opClass),
714  op1(_op1), gp(_gp)
715  {}
716  std::string generateDisassembly(
717  Addr pc, const Loader::SymbolTable *symtab) const override;
718 };
719 
722  protected:
724 
725  SvePredUnaryWImplicitSrcOp(const char* mnem, ExtMachInst _machInst,
726  OpClass __opClass, IntRegIndex _dest) :
727  ArmStaticInst(mnem, _machInst, __opClass),
728  dest(_dest)
729  {}
730  std::string generateDisassembly(
731  Addr pc, const Loader::SymbolTable *symtab) const override;
732 };
733 
736  protected:
739 
740  SvePredUnaryWImplicitSrcPredOp(const char* mnem, ExtMachInst _machInst,
741  OpClass __opClass, IntRegIndex _dest,
742  IntRegIndex _gp) :
743  ArmStaticInst(mnem, _machInst, __opClass),
744  dest(_dest), gp(_gp)
745  {}
746  std::string generateDisassembly(
747  Addr pc, const Loader::SymbolTable *symtab) const override;
748 };
749 
752  protected:
754 
755  SvePredUnaryWImplicitDstOp(const char* mnem, ExtMachInst _machInst,
756  OpClass __opClass, IntRegIndex _op1) :
757  ArmStaticInst(mnem, _machInst, __opClass),
758  op1(_op1)
759  {}
760  std::string generateDisassembly(
761  Addr pc, const Loader::SymbolTable *symtab) const override;
762 };
763 
766  protected:
767  SveWImplicitSrcDstOp(const char* mnem, ExtMachInst _machInst,
768  OpClass __opClass) :
769  ArmStaticInst(mnem, _machInst, __opClass)
770  {}
771  std::string generateDisassembly(
772  Addr pc, const Loader::SymbolTable *symtab) const override;
773 };
774 
777  protected:
780  uint64_t imm;
781 
782  SveBinImmUnpredDestrOp(const char* mnem, ExtMachInst _machInst,
783  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1,
784  uint64_t _imm) :
785  ArmStaticInst(mnem, _machInst, __opClass),
786  dest(_dest), op1(_op1), imm(_imm)
787  {}
788  std::string generateDisassembly(
789  Addr pc, const Loader::SymbolTable *symtab) const override;
790 };
791 
794  protected:
796  uint64_t imm;
797 
798  SveBinImmIdxUnpredOp(const char* mnem, ExtMachInst _machInst,
799  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1,
800  uint64_t _imm) :
801  ArmStaticInst(mnem, _machInst, __opClass),
802  dest(_dest), op1(_op1), imm(_imm)
803  {}
804 
805  std::string generateDisassembly(
806  Addr pc, const Loader::SymbolTable *symtab) const override;
807 };
808 
811  protected:
813  bool simdFp;
814 
815  SveUnarySca2VecUnpredOp(const char* mnem, ExtMachInst _machInst,
816  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1,
817  bool _simdFp) :
818  ArmStaticInst(mnem, _machInst, __opClass),
819  dest(_dest), op1(_op1), simdFp(_simdFp)
820  {}
821 
822  std::string generateDisassembly(
823  Addr pc, const Loader::SymbolTable *symtab) const override;
824 };
825 
828  protected:
830  uint64_t imm;
831  uint8_t esize;
832 
833  public:
834  SveDotProdIdxOp(const char* mnem, ExtMachInst _machInst,
835  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1,
836  IntRegIndex _op2, uint64_t _imm) :
837  ArmStaticInst(mnem, _machInst, __opClass),
838  dest(_dest), op1(_op1), op2(_op2), imm(_imm)
839  {}
840 
841  std::string generateDisassembly(
842  Addr pc, const Loader::SymbolTable *symtab) const override;
843 };
844 
846 class SveDotProdOp : public ArmStaticInst {
847  protected:
849  uint8_t esize;
850 
851  public:
852  SveDotProdOp(const char* mnem, ExtMachInst _machInst,
853  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1,
854  IntRegIndex _op2) :
855  ArmStaticInst(mnem, _machInst, __opClass),
856  dest(_dest), op1(_op1), op2(_op2)
857  {}
858 
859  std::string generateDisassembly(
860  Addr pc, const Loader::SymbolTable *symtab) const override;
861 };
862 
864 class SveComplexOp : public ArmStaticInst {
865  protected:
867  uint8_t rot;
868 
869  public:
870  SveComplexOp(const char* mnem, ExtMachInst _machInst,
871  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1,
872  IntRegIndex _op2, IntRegIndex _gp, uint8_t _rot) :
873  ArmStaticInst(mnem, _machInst, __opClass),
874  dest(_dest), op1(_op1), op2(_op2), gp(_gp), rot(_rot)
875  {}
876 
877  std::string generateDisassembly(
878  Addr pc, const Loader::SymbolTable *symtab) const override;
879 };
880 
883  protected:
885  uint8_t rot, imm;
886 
887  public:
888  SveComplexIdxOp(const char* mnem, ExtMachInst _machInst,
889  OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1,
890  IntRegIndex _op2, uint8_t _rot, uint8_t _imm) :
891  ArmStaticInst(mnem, _machInst, __opClass),
892  dest(_dest), op1(_op1), op2(_op2), rot(_rot), imm(_imm)
893  {}
894 
895  std::string generateDisassembly(
896  Addr pc, const Loader::SymbolTable *symtab) const override;
897 };
898 
899 
902 std::string sveDisasmPredCountImm(uint8_t imm);
903 
908 unsigned int sveDecodePredCount(uint8_t imm, unsigned int num_elems);
909 
914 uint64_t sveExpandFpImmAddSub(uint8_t imm, uint8_t size);
915 
921 uint64_t sveExpandFpImmMaxMin(uint8_t imm, uint8_t size);
922 
927 uint64_t sveExpandFpImmMul(uint8_t imm, uint8_t size);
928 
929 } // namespace ArmISA
930 
931 #endif // __ARCH_ARM_INSTS_SVE_HH__
ArmISA::SvePtrueOp::imm
uint8_t imm
Definition: sve.hh:502
ArmISA::SveComplexOp::op1
IntRegIndex op1
Definition: sve.hh:866
ArmISA::SvePredUnaryWImplicitSrcPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:683
ArmISA::SveComplexIdxOp::op2
IntRegIndex op2
Definition: sve.hh:884
ArmISA::SvePredCountOp::gp
IntRegIndex gp
Definition: sve.hh:124
ArmISA::SveComplexOp::op2
IntRegIndex op2
Definition: sve.hh:866
ArmISA::SveBinImmUnpredConstrOp
Binary with immediate, destructive, unpredicated SVE instruction.
Definition: sve.hh:254
ArmISA::SveReducOp
SVE reductions.
Definition: sve.hh:469
ArmISA::SvePredUnaryWImplicitSrcOp
SVE unary predicate instructions with implicit source operand.
Definition: sve.hh:721
ArmISA::SveCmpImmOp::SveCmpImmOp
SveCmpImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, uint64_t _imm, IntRegIndex _gp)
Definition: sve.hh:424
ArmISA::SveUnaryWideImmUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:200
ArmISA::SvePartBrkOp::isMerging
bool isMerging
Definition: sve.hh:603
ArmISA::SveBinImmUnpredDestrOp::dest
IntRegIndex dest
Definition: sve.hh:778
ArmISA::SveIntCmpImmOp::gp
IntRegIndex gp
Definition: sve.hh:538
ArmISA::SvePredBinPermOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:357
ArmISA::SveIndexIROp::op2
IntRegIndex op2
Definition: sve.hh:76
ArmISA::SvePredUnaryWImplicitDstOp::SvePredUnaryWImplicitDstOp
SvePredUnaryWImplicitDstOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _op1)
Definition: sve.hh:755
ArmISA::SvePredLogicalOp::dest
IntRegIndex dest
Definition: sve.hh:372
ArmISA::SveUnaryWideImmPredOp::dest
IntRegIndex dest
Definition: sve.hh:236
ArmISA::SveIntCmpOp::op2
IntRegIndex op2
Definition: sve.hh:518
ArmISA::SveBinIdxUnpredOp::op1
IntRegIndex op1
Definition: sve.hh:355
ArmISA::SveCompTermOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:162
ArmISA::SveDotProdIdxOp::imm
uint64_t imm
Definition: sve.hh:830
ArmISA::SveTerPredOp::SveTerPredOp
SveTerPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _gp)
Definition: sve.hh:440
ArmISA::SveTerImmUnpredOp::op2
IntRegIndex op2
Definition: sve.hh:454
ArmISA::SvePredTestOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:661
ArmISA::SveDotProdIdxOp
SVE dot product instruction (indexed)
Definition: sve.hh:827
ArmISA::SvePtrueOp::SvePtrueOp
SvePtrueOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, uint8_t _imm)
Definition: sve.hh:504
ArmISA::SvePredBinPermOp::op2
IntRegIndex op2
Definition: sve.hh:389
ArmISA::SveBinConstrPredOp::gp
IntRegIndex gp
Definition: sve.hh:322
ArmISA::SveBinIdxUnpredOp
Binary, unpredicated SVE instruction.
Definition: sve.hh:353
ArmISA::SveUnaryWideImmPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:212
ArmISA::SveAdrOp::op1
IntRegIndex op1
Definition: sve.hh:560
ArmISA::SveBinWideImmUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:257
ArmISA::SveIntCmpOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:478
ArmISA::SveBinConstrPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:287
ArmISA::SveBinIdxUnpredOp::SveBinIdxUnpredOp
SveBinIdxUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, uint8_t _index)
Definition: sve.hh:358
ArmISA::SveTerPredOp::dest
IntRegIndex dest
Definition: sve.hh:438
ArmISA::SveWhileOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:143
ArmISA::SveUnaryWideImmUnpredOp::dest
IntRegIndex dest
Definition: sve.hh:219
ArmISA::SveElemCountOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:538
ArmISA::SveTblOp::SveTblOp
SveTblOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2)
Definition: sve.hh:681
ArmISA::SveDotProdIdxOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:762
ArmISA::SveAdrOp::offsetFormat
SveAdrOffsetFormat offsetFormat
Definition: sve.hh:562
ArmISA::SveBinConstrPredOp
Binary, constructive, predicated SVE instruction.
Definition: sve.hh:320
ArmISA::SvePredUnaryWImplicitDstOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:696
ArmISA::SveAdrOp::dest
IntRegIndex dest
Definition: sve.hh:560
ArmISA::SveComplexOp::dest
IntRegIndex dest
Definition: sve.hh:866
ArmISA::SveTblOp::op1
IntRegIndex op1
Definition: sve.hh:678
ArmISA::SveBinImmPredOp::dest
IntRegIndex dest
Definition: sve.hh:273
ArmISA::SvePtrueOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:464
ArmISA::SveBinDestrPredOp::gp
IntRegIndex gp
Definition: sve.hh:306
ArmISA::SveCmpOp::gp
IntRegIndex gp
Definition: sve.hh:405
ArmISA::SveUnaryWideImmPredOp::gp
IntRegIndex gp
Definition: sve.hh:238
ArmISA::SveUnaryWideImmPredOp::SveUnaryWideImmPredOp
SveUnaryWideImmPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, uint64_t _imm, IntRegIndex _gp, bool _isMerging)
Definition: sve.hh:242
ArmISA::SveBinImmPredOp::SveBinImmPredOp
SveBinImmPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, uint64_t _imm, IntRegIndex _gp)
Definition: sve.hh:276
ArmISA::SveIndexRROp::op1
IntRegIndex op1
Definition: sve.hh:107
ArmISA::SvePredLogicalOp::op2
IntRegIndex op2
Definition: sve.hh:372
ArmISA::SveIntCmpImmOp
Integer compare with immediate SVE instruction.
Definition: sve.hh:533
ArmISA::SveAdrOp::SveAdrOffsetUnpackedSigned
@ SveAdrOffsetUnpackedSigned
Definition: sve.hh:555
ArmISA::SveIntCmpOp::op1
IntRegIndex op1
Definition: sve.hh:518
ArmISA::SveCmpImmOp
SVE compare-with-immediate instructions, predicated (zeroing).
Definition: sve.hh:419
ArmISA::SveComplexIdxOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:813
ArmISA::SveSelectOp::conditional
bool conditional
Definition: sve.hh:639
ArmISA::SveAdrOp::op2
IntRegIndex op2
Definition: sve.hh:560
ArmISA::SveCmpOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:371
ArmISA::SveIndexIIOp::imm2
int8_t imm2
Definition: sve.hh:60
ArmISA::SveAdrOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:514
ArmISA::SveComplexIdxOp::imm
uint8_t imm
Definition: sve.hh:885
ArmISA::SveOrdReducOp::op1
IntRegIndex op1
Definition: sve.hh:486
ArmISA::SveUnaryWideImmPredOp::isMerging
bool isMerging
Definition: sve.hh:240
ArmISA::SveUnaryUnpredOp
Unary, constructive, unpredicated SVE instruction.
Definition: sve.hh:202
ArmISA::SveBinImmUnpredConstrOp::dest
IntRegIndex dest
Definition: sve.hh:256
ArmISA::SvePredUnaryWImplicitDstOp
SVE unary predicate instructions with implicit destination operand.
Definition: sve.hh:751
ArmISA::SvePartBrkPropOp::dest
IntRegIndex dest
Definition: sve.hh:618
ArmISA::SveAdrOp::SveAdrOffsetPacked
@ SveAdrOffsetPacked
Definition: sve.hh:554
ArmISA::SveElemCountOp::imm
uint8_t imm
Definition: sve.hh:581
ArmISA::SveBinIdxUnpredOp::index
uint8_t index
Definition: sve.hh:356
ArmISA::SveCompTermOp::op2
IntRegIndex op2
Definition: sve.hh:175
ArmISA::SveBinDestrPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:271
Loader::SymbolTable
Definition: symtab.hh:59
ArmISA::IntRegIndex
IntRegIndex
Definition: intregs.hh:51
ArmISA::SveElemCountOp::dstIsVec
bool dstIsVec
Definition: sve.hh:582
ArmISA::SveBinWideImmUnpredOp::SveBinWideImmUnpredOp
SveBinWideImmUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, uint64_t _imm)
Definition: sve.hh:292
ArmISA::SveReducOp::dest
IntRegIndex dest
Definition: sve.hh:471
ArmISA::SveUnaryPredOp::SveUnaryPredOp
SveUnaryPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _gp)
Definition: sve.hh:191
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:864
ArmISA::SveBinUnpredOp::op1
IntRegIndex op1
Definition: sve.hh:340
ArmISA::SveBinUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:306
ArmISA::SveCmpOp::op2
IntRegIndex op2
Definition: sve.hh:405
ArmISA::SveBinImmPredOp::gp
IntRegIndex gp
Definition: sve.hh:273
ArmISA::SveDotProdOp::op1
IntRegIndex op1
Definition: sve.hh:848
ArmISA::SveUnarySca2VecUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:746
ArmISA::SveBinImmPredOp::imm
uint64_t imm
Definition: sve.hh:274
ArmISA::SveOrdReducOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:448
ArmISA::SveBinUnpredOp::dest
IntRegIndex dest
Definition: sve.hh:340
ArmISA::SveTerImmUnpredOp::SveTerImmUnpredOp
SveTerImmUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op2, uint64_t _imm)
Definition: sve.hh:457
ArmISA::SveBinDestrPredOp::op2
IntRegIndex op2
Definition: sve.hh:306
ArmISA::SvePredCountPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:58
ArmISA::SvePredTestOp
SVE predicate test.
Definition: sve.hh:706
ArmISA::SvePredLogicalOp::op1
IntRegIndex op1
Definition: sve.hh:372
ArmISA::SveBinImmIdxUnpredOp
Binary with immediate index, destructive, unpredicated SVE instruction.
Definition: sve.hh:793
ArmISA::SvePredLogicalOp::gp
IntRegIndex gp
Definition: sve.hh:372
ArmISA::SvePredTestOp::op1
IntRegIndex op1
Definition: sve.hh:708
ArmISA::SveIndexRROp::dest
IntRegIndex dest
Definition: sve.hh:106
ArmISA::SveDotProdOp::op2
IntRegIndex op2
Definition: sve.hh:848
ArmISA::SveReducOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:434
ArmISA::SvePtrueOp::dest
IntRegIndex dest
Definition: sve.hh:501
ArmISA::SveSelectOp::op1
IntRegIndex op1
Definition: sve.hh:637
ArmISA::SveElemCountOp
Element count SVE instruction.
Definition: sve.hh:577
ArmISA::SveUnaryWideImmUnpredOp::imm
uint64_t imm
Definition: sve.hh:220
ArmISA::SveIndexIROp::imm1
int8_t imm1
Definition: sve.hh:75
ArmISA::SveUnaryPredPredOp
SVE unary operation on predicate (predicated)
Definition: sve.hh:658
ArmISA::SveBinConstrPredOp::predType
SvePredType predType
Definition: sve.hh:323
ArmISA::SveComplexIdxOp::dest
IntRegIndex dest
Definition: sve.hh:884
ArmISA::SveCmpImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:386
ArmISA::SveComplexIdxOp::rot
uint8_t rot
Definition: sve.hh:885
ArmISA
Definition: ccregs.hh:41
ArmISA::SveComplexIdxOp::SveComplexIdxOp
SveComplexIdxOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, uint8_t _rot, uint8_t _imm)
Definition: sve.hh:888
ArmISA::SvePredType::NONE
@ NONE
ArmISA::SveBinImmUnpredConstrOp::op1
IntRegIndex op1
Definition: sve.hh:256
ArmISA::SvePredCountPredOp::gp
IntRegIndex gp
Definition: sve.hh:144
ArmISA::SveUnaryUnpredOp::dest
IntRegIndex dest
Definition: sve.hh:204
ArmISA::SveBinUnpredOp
Binary, unpredicated SVE instruction with indexed operand.
Definition: sve.hh:338
ArmISA::SveIndexRIOp::op1
IntRegIndex op1
Definition: sve.hh:91
ArmISA::SveUnaryUnpredOp::SveUnaryUnpredOp
SveUnaryUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1)
Definition: sve.hh:206
ArmISA::SvePredCountOp::srcIs32b
bool srcIs32b
Definition: sve.hh:125
ArmISA::SveSelectOp::simdFp
bool simdFp
Definition: sve.hh:641
ArmISA::ArmStaticInst
Definition: static_inst.hh:60
ArmISA::SveComplexIdxOp
SVE Complex Instructions (indexed)
Definition: sve.hh:882
ArmISA::SveUnarySca2VecUnpredOp::dest
IntRegIndex dest
Definition: sve.hh:812
ArmISA::SvePredBinPermOp
Predicate binary permute instruction.
Definition: sve.hh:387
ArmISA::SvePtrueOp
PTRUE, PTRUES.
Definition: sve.hh:499
ArmISA::SveComplexOp::rot
uint8_t rot
Definition: sve.hh:867
ArmISA::SvePredCountOp
Definition: sve.hh:121
ArmISA::SveAdrOp::SveAdrOffsetFormat
SveAdrOffsetFormat
Definition: sve.hh:553
ArmISA::SveUnaryPredPredOp::SveUnaryPredPredOp
SveUnaryPredPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _gp)
Definition: sve.hh:664
ArmISA::SvePredUnaryWImplicitSrcPredOp::SvePredUnaryWImplicitSrcPredOp
SvePredUnaryWImplicitSrcPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _gp)
Definition: sve.hh:740
ArmISA::SveBinConstrPredOp::op2
IntRegIndex op2
Definition: sve.hh:322
ArmISA::SveBinWideImmUnpredOp::imm
uint64_t imm
Definition: sve.hh:290
ArmISA::SveBinImmIdxUnpredOp::imm
uint64_t imm
Definition: sve.hh:796
ArmISA::SveUnaryPredPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:622
ArmISA::SvePredCountOp::destIsVec
bool destIsVec
Definition: sve.hh:126
ArmISA::SveBinDestrPredOp::dest
IntRegIndex dest
Definition: sve.hh:306
ArmISA::SvePredType::SELECT
@ SELECT
ArmISA::SvePredType::MERGE
@ MERGE
ArmISA::SveWhileOp::srcIs32b
bool srcIs32b
Definition: sve.hh:160
ArmISA::SveWImplicitSrcDstOp
SVE unary predicate instructions with implicit destination operand.
Definition: sve.hh:765
ArmISA::SveCmpImmOp::imm
uint64_t imm
Definition: sve.hh:422
ArmISA::SveBinImmUnpredConstrOp::imm
uint64_t imm
Definition: sve.hh:257
ArmISA::SveAdrOp
ADR.
Definition: sve.hh:551
ArmISA::SveDotProdOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:779
ArmISA::SveSelectOp::scalar
bool scalar
Definition: sve.hh:640
ArmISA::SveBinImmUnpredDestrOp::op1
IntRegIndex op1
Definition: sve.hh:779
ArmISA::SveBinDestrPredOp::SveBinDestrPredOp
SveBinDestrPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op2, IntRegIndex _gp)
Definition: sve.hh:308
ArmISA::SvePredCountPredOp::dest
IntRegIndex dest
Definition: sve.hh:142
ArmISA::SveIndexRIOp::imm2
int8_t imm2
Definition: sve.hh:92
ArmISA::SvePartBrkPropOp::gp
IntRegIndex gp
Definition: sve.hh:621
ArmISA::SveReducOp::SveReducOp
SveReducOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _gp)
Definition: sve.hh:473
ArmISA::SvePredLogicalOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:337
ArmISA::SvePartBrkPropOp
Partition break with propagation SVE instruction.
Definition: sve.hh:616
ArmISA::SveTblOp
SVE table lookup/permute using vector of element indices (TBL)
Definition: sve.hh:675
ArmISA::imm
Bitfield< 7, 0 > imm
Definition: types.hh:141
ArmISA::SveUnpackOp::op1
IntRegIndex op1
Definition: sve.hh:694
ArmISA::SveUnpackOp::dest
IntRegIndex dest
Definition: sve.hh:693
MipsISA::pc
Bitfield< 4 > pc
Definition: pra_constants.hh:240
ArmISA::SveIndexRROp::SveIndexRROp
SveIndexRROp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2)
Definition: sve.hh:110
ArmISA::SvePredLogicalOp::isSel
bool isSel
Definition: sve.hh:373
ArmISA::SveUnpackOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:649
ArmISA::SveDotProdIdxOp::dest
IntRegIndex dest
Definition: sve.hh:829
ArmISA::SveIntCmpOp::gp
IntRegIndex gp
Definition: sve.hh:519
ArmISA::SveBinImmUnpredDestrOp::imm
uint64_t imm
Definition: sve.hh:780
ArmISA::SveUnaryPredOp
Unary, constructive, predicated (merging) SVE instruction.
Definition: sve.hh:187
ArmISA::SveIntCmpImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:498
ArmISA::SvePredLogicalOp::SvePredLogicalOp
SvePredLogicalOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _gp, bool _isSel=false)
Definition: sve.hh:375
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:907
ArmISA::SveUnaryWideImmPredOp
Unary with wide immediate, constructive, predicated SVE instruction.
Definition: sve.hh:234
ArmISA::SveTerImmUnpredOp::imm
uint64_t imm
Definition: sve.hh:455
ArmISA::SvePredType::ZERO
@ ZERO
ArmISA::svePredTypeToStr
const char * svePredTypeToStr(SvePredType pt)
Returns the specifier for the predication type pt as a string.
Definition: sve.cc:45
ArmISA::SvePredBinPermOp::SvePredBinPermOp
SvePredBinPermOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2)
Definition: sve.hh:391
ArmISA::SveTerPredOp
Ternary, destructive, predicated (merging) SVE instruction.
Definition: sve.hh:436
ArmISA::SvePartBrkPropOp::op1
IntRegIndex op1
Definition: sve.hh:619
ArmISA::SveElemCountOp::esize
uint8_t esize
Definition: sve.hh:584
ArmISA::SveElemCountOp::pattern
uint8_t pattern
Definition: sve.hh:580
ArmISA::SvePredUnaryWImplicitSrcPredOp::dest
IntRegIndex dest
Definition: sve.hh:737
ArmISA::SveIntCmpImmOp::SveIntCmpImmOp
SveIntCmpImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, int64_t _imm, IntRegIndex _gp)
Definition: sve.hh:540
ArmISA::SveReducOp::op1
IntRegIndex op1
Definition: sve.hh:471
ArmISA::SveUnaryPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:174
ArmISA::SvePredCountPredOp::SvePredCountPredOp
SvePredCountPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _gp)
Definition: sve.hh:146
ArmISA::SveCmpOp::SveCmpOp
SveCmpOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _gp)
Definition: sve.hh:407
ArmISA::SveBinImmUnpredConstrOp::SveBinImmUnpredConstrOp
SveBinImmUnpredConstrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, uint64_t _imm)
Definition: sve.hh:259
ArmISA::SveIntCmpImmOp::imm
int64_t imm
Definition: sve.hh:537
ArmISA::SveBinImmIdxUnpredOp::dest
IntRegIndex dest
Definition: sve.hh:795
ArmISA::SveBinImmIdxUnpredOp::SveBinImmIdxUnpredOp
SveBinImmIdxUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, uint64_t _imm)
Definition: sve.hh:798
ArmISA::SveIntCmpOp
Integer compare SVE instruction.
Definition: sve.hh:515
ArmISA::SveElemCountOp::dest
IntRegIndex dest
Definition: sve.hh:579
ArmISA::SveIndexIIOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:93
StaticInst::ExtMachInst
TheISA::ExtMachInst ExtMachInst
Binary extended machine instruction type.
Definition: static_inst.hh:89
ArmISA::SveUnarySca2VecUnpredOp::SveUnarySca2VecUnpredOp
SveUnarySca2VecUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, bool _simdFp)
Definition: sve.hh:815
ArmISA::SveSelectOp::scalar_width
size_t scalar_width
Definition: sve.hh:642
ArmISA::SveIndexRIOp
Definition: sve.hh:88
ArmISA::SveIndexIIOp::imm1
int8_t imm1
Definition: sve.hh:59
ArmISA::SveIntCmpOp::SveIntCmpOp
SveIntCmpOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _gp, bool _op2IsWide=false)
Definition: sve.hh:522
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:948
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:929
ArmISA::SvePredType
SvePredType
Definition: sve.hh:45
ArmISA::SvePartBrkOp
Partition break SVE instruction.
Definition: sve.hh:598
ArmISA::SveIndexIROp::SveIndexIROp
SveIndexIROp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, int8_t _imm1, IntRegIndex _op2)
Definition: sve.hh:78
ArmISA::SveTerPredOp::op2
IntRegIndex op2
Definition: sve.hh:438
ArmISA::SvePredCountPredOp
Definition: sve.hh:140
ArmISA::SveIndexRROp
Definition: sve.hh:104
ArmISA::SvePartBrkPropOp::op2
IntRegIndex op2
Definition: sve.hh:620
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:142
ArmISA::SveDotProdOp
SVE dot product instruction (vectors)
Definition: sve.hh:846
ArmISA::SveBinImmIdxUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:731
ArmISA::SveUnaryWideImmPredOp::imm
uint64_t imm
Definition: sve.hh:237
ArmISA::SvePartBrkOp::SvePartBrkOp
SvePartBrkOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _gp, IntRegIndex _op1, bool _isMerging)
Definition: sve.hh:605
ArmISA::SveDotProdOp::esize
uint8_t esize
Definition: sve.hh:849
ArmISA::SveBinConstrPredOp::SveBinConstrPredOp
SveBinConstrPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _gp, SvePredType _predType)
Definition: sve.hh:325
ArmISA::SveIndexIIOp::SveIndexIIOp
SveIndexIIOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, int8_t _imm1, int8_t _imm2)
Definition: sve.hh:62
ArmISA::SveCmpImmOp::op1
IntRegIndex op1
Definition: sve.hh:421
ArmISA::SvePartBrkPropOp::SvePartBrkPropOp
SvePartBrkPropOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _gp)
Definition: sve.hh:623
ArmISA::SveTblOp::op2
IntRegIndex op2
Definition: sve.hh:679
ArmISA::SveUnaryPredPredOp::dest
IntRegIndex dest
Definition: sve.hh:660
ArmISA::SvePartBrkOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:566
ArmISA::SveDotProdIdxOp::op2
IntRegIndex op2
Definition: sve.hh:829
ArmISA::SveIndexRIOp::dest
IntRegIndex dest
Definition: sve.hh:90
ArmISA::SveAdrOp::SveAdrOffsetUnpackedUnsigned
@ SveAdrOffsetUnpackedUnsigned
Definition: sve.hh:556
ArmISA::SveBinImmUnpredConstrOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:227
ArmISA::SveCmpOp
SVE compare instructions, predicated (zeroing).
Definition: sve.hh:403
ArmISA::SveUnaryWideImmUnpredOp
Unary with wide immediate, constructive, unpredicated SVE instruction.
Definition: sve.hh:217
ArmISA::SveBinIdxUnpredOp::dest
IntRegIndex dest
Definition: sve.hh:355
ArmISA::SveDotProdIdxOp::SveDotProdIdxOp
SveDotProdIdxOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, uint64_t _imm)
Definition: sve.hh:834
ArmISA::SveBinWideImmUnpredOp::dest
IntRegIndex dest
Definition: sve.hh:289
ArmISA::SvePredTestOp::SvePredTestOp
SvePredTestOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _op1, IntRegIndex _gp)
Definition: sve.hh:711
ArmISA::SveUnaryPredOp::dest
IntRegIndex dest
Definition: sve.hh:189
ArmISA::sveDisasmPredCountImm
std::string sveDisasmPredCountImm(uint8_t imm)
Returns the symbolic name associated with pattern imm for PTRUE(S) instructions.
Definition: sve.cc:832
ArmISA::SveWhileOp
While predicate generation SVE instruction.
Definition: sve.hh:157
ArmISA::SveReducOp::gp
IntRegIndex gp
Definition: sve.hh:471
ArmISA::SveOrdReducOp::gp
IntRegIndex gp
Definition: sve.hh:486
ArmISA::SveCompTermOp::SveCompTermOp
SveCompTermOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _op1, IntRegIndex _op2)
Definition: sve.hh:177
ArmISA::SveComplexIdxOp::op1
IntRegIndex op1
Definition: sve.hh:884
ArmISA::SvePartBrkPropOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:580
ArmISA::SveWhileOp::dest
IntRegIndex dest
Definition: sve.hh:159
ArmISA::SveBinImmPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:241
ArmISA::SveUnaryUnpredOp::op1
IntRegIndex op1
Definition: sve.hh:204
ArmISA::SveIntCmpOp::op2IsWide
bool op2IsWide
Definition: sve.hh:520
ArmISA::SveUnarySca2VecUnpredOp::op1
IntRegIndex op1
Definition: sve.hh:812
ArmISA::SvePredCountOp::dest
IntRegIndex dest
Definition: sve.hh:123
ArmISA::SveDotProdIdxOp::esize
uint8_t esize
Definition: sve.hh:831
ArmISA::SveUnaryPredOp::op1
IntRegIndex op1
Definition: sve.hh:189
ArmISA::SveBinConstrPredOp::op1
IntRegIndex op1
Definition: sve.hh:322
ArmISA::SveCompTermOp::op1
IntRegIndex op1
Definition: sve.hh:175
ArmISA::SveBinImmUnpredDestrOp::SveBinImmUnpredDestrOp
SveBinImmUnpredDestrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, uint64_t _imm)
Definition: sve.hh:782
ArmISA::SveSelectOp::dest
IntRegIndex dest
Definition: sve.hh:636
ArmISA::SveTerPredOp::gp
IntRegIndex gp
Definition: sve.hh:438
ArmISA::SveUnarySca2VecUnpredOp::simdFp
bool simdFp
Definition: sve.hh:813
ArmISA::SveBinImmPredOp
Binary with immediate, destructive, predicated (merging) SVE instruction.
Definition: sve.hh:271
static_inst.hh
ArmISA::SveTerPredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:402
ArmISA::SveSelectOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:596
ArmISA::SveIndexIROp
Definition: sve.hh:72
ArmISA::SveTblOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:636
ArmISA::SvePredTestOp::gp
IntRegIndex gp
Definition: sve.hh:709
ArmISA::SveAdrOp::SveAdrOp
SveAdrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, uint8_t _mult, SveAdrOffsetFormat _offsetFormat)
Definition: sve.hh:564
ArmISA::SveCmpOp::op1
IntRegIndex op1
Definition: sve.hh:405
ArmISA::SveIndexRROp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:129
ArmISA::SveIndexRROp::op2
IntRegIndex op2
Definition: sve.hh:108
ArmISA::SveUnpackOp::SveUnpackOp
SveUnpackOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1)
Definition: sve.hh:696
ArmISA::SveIndexIIOp::dest
IntRegIndex dest
Definition: sve.hh:58
ArmISA::SveOrdReducOp
SVE ordered reductions.
Definition: sve.hh:484
ArmISA::SveUnarySca2VecUnpredOp
Unary unpredicated scalar to vector instruction.
Definition: sve.hh:810
ArmISA::SveIndexRIOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:116
ArmISA::SveBinWideImmUnpredOp
Binary with wide immediate, destructive, unpredicated SVE instruction.
Definition: sve.hh:287
ArmISA::SvePredCountOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:72
ArmISA::SveCmpOp::dest
IntRegIndex dest
Definition: sve.hh:405
ArmISA::SveWImplicitSrcDstOp::SveWImplicitSrcDstOp
SveWImplicitSrcDstOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
Definition: sve.hh:767
ArmISA::SveSelectOp::SveSelectOp
SveSelectOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _gp, bool _conditional, bool _scalar, bool _simdFp)
Definition: sve.hh:644
ArmISA::SveIndexIROp::dest
IntRegIndex dest
Definition: sve.hh:74
ArmISA::SveBinIdxUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:320
ArmISA::SveBinUnpredOp::SveBinUnpredOp
SveBinUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2)
Definition: sve.hh:342
ArmISA::SveDotProdOp::dest
IntRegIndex dest
Definition: sve.hh:848
ArmISA::SveTblOp::dest
IntRegIndex dest
Definition: sve.hh:677
ArmISA::SvePredUnaryWImplicitSrcPredOp::gp
IntRegIndex gp
Definition: sve.hh:738
ArmISA::SveCmpImmOp::gp
IntRegIndex gp
Definition: sve.hh:421
ArmISA::SvePredUnaryWImplicitSrcOp::dest
IntRegIndex dest
Definition: sve.hh:723
ArmISA::SveTerImmUnpredOp
Ternary with immediate, destructive, unpredicated SVE instruction.
Definition: sve.hh:452
ArmISA::SveWImplicitSrcDstOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:706
ArmISA::SvePredUnaryWImplicitSrcOp::SvePredUnaryWImplicitSrcOp
SvePredUnaryWImplicitSrcOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest)
Definition: sve.hh:725
ArmISA::SvePredBinPermOp::op1
IntRegIndex op1
Definition: sve.hh:389
ArmISA::SveIndexIIOp
Index generation instruction, immediate operands.
Definition: sve.hh:56
ArmISA::SveComplexOp
SVE Complex Instructions (vectors)
Definition: sve.hh:864
ArmISA::SveBinImmIdxUnpredOp::op1
IntRegIndex op1
Definition: sve.hh:795
ArmISA::SveIntCmpImmOp::dest
IntRegIndex dest
Definition: sve.hh:535
ArmISA::SvePredLogicalOp
Predicate logical instruction.
Definition: sve.hh:370
ArmISA::SveBinIdxUnpredOp::op2
IntRegIndex op2
Definition: sve.hh:355
ArmISA::SveElemCountOp::SveElemCountOp
SveElemCountOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, uint8_t _pattern, uint8_t _imm, bool _dstIsVec, bool _dstIs32b)
Definition: sve.hh:586
ArmISA::SveOrdReducOp::dest
IntRegIndex dest
Definition: sve.hh:486
ArmISA::SveUnaryPredPredOp::op1
IntRegIndex op1
Definition: sve.hh:661
ArmISA::SveWhileOp::SveWhileOp
SveWhileOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, bool _srcIs32b)
Definition: sve.hh:162
ArmISA::SveDotProdIdxOp::op1
IntRegIndex op1
Definition: sve.hh:829
ArmISA::SvePredCountOp::SvePredCountOp
SvePredCountOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _gp, bool _srcIs32b=false, bool _destIsVec=false)
Definition: sve.hh:128
ArmISA::SveComplexOp::SveComplexOp
SveComplexOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _gp, uint8_t _rot)
Definition: sve.hh:870
ArmISA::SveWhileOp::op1
IntRegIndex op1
Definition: sve.hh:159
ArmISA::SveTerPredOp::op1
IntRegIndex op1
Definition: sve.hh:438
ArmISA::SveElemCountOp::dstIs32b
bool dstIs32b
Definition: sve.hh:583
ArmISA::SvePredUnaryWImplicitDstOp::op1
IntRegIndex op1
Definition: sve.hh:753
ArmISA::SveComplexOp::gp
IntRegIndex gp
Definition: sve.hh:866
ArmISA::SveBinImmUnpredDestrOp
SVE vector - immediate binary operation.
Definition: sve.hh:776
ArmISA::SveIndexIROp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:104
ArmISA::SveWhileOp::op2
IntRegIndex op2
Definition: sve.hh:159
ArmISA::SveComplexOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:793
ArmISA::SveTerImmUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:418
ArmISA::SveIntCmpOp::dest
IntRegIndex dest
Definition: sve.hh:517
ArmISA::SvePartBrkOp::gp
IntRegIndex gp
Definition: sve.hh:601
ArmISA::SveUnaryWideImmUnpredOp::SveUnaryWideImmUnpredOp
SveUnaryWideImmUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, uint64_t _imm)
Definition: sve.hh:222
ArmISA::SveSelectOp
Scalar element select SVE instruction.
Definition: sve.hh:634
ArmISA::SvePartBrkOp::dest
IntRegIndex dest
Definition: sve.hh:600
ArmISA::SveAdrOp::mult
uint8_t mult
Definition: sve.hh:561
ArmISA::SveBinUnpredOp::op2
IntRegIndex op2
Definition: sve.hh:340
ArmISA::SveIndexRIOp::SveIndexRIOp
SveIndexRIOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, int8_t _imm2)
Definition: sve.hh:94
ArmISA::SveCmpImmOp::dest
IntRegIndex dest
Definition: sve.hh:421
ArmISA::SvePartBrkOp::op1
IntRegIndex op1
Definition: sve.hh:602
ArmISA::SveUnpackOp
SVE unpack and widen predicate.
Definition: sve.hh:691
ArmISA::SveDotProdOp::SveDotProdOp
SveDotProdOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2)
Definition: sve.hh:852
ArmISA::SveUnaryPredOp::gp
IntRegIndex gp
Definition: sve.hh:189
ArmISA::SveUnaryPredPredOp::gp
IntRegIndex gp
Definition: sve.hh:662
ArmISA::SveBinConstrPredOp::dest
IntRegIndex dest
Definition: sve.hh:322
ArmISA::SvePredUnaryWImplicitSrcPredOp
SVE unary predicate instructions, predicated, with implicit source operand.
Definition: sve.hh:735
ArmISA::SveCompTermOp
Compare and terminate loop SVE instruction.
Definition: sve.hh:173
ArmISA::SveTerImmUnpredOp::dest
IntRegIndex dest
Definition: sve.hh:454
ArmISA::SveBinDestrPredOp
Binary, destructive, predicated (merging) SVE instruction.
Definition: sve.hh:304
ArmISA::SveUnaryUnpredOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:188
ArmISA::SveOrdReducOp::SveOrdReducOp
SveOrdReducOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _gp)
Definition: sve.hh:488
ArmISA::SvePredUnaryWImplicitSrcOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:673
ArmISA::SvePredBinPermOp::dest
IntRegIndex dest
Definition: sve.hh:389
ArmISA::SveIntCmpImmOp::op1
IntRegIndex op1
Definition: sve.hh:536
ArmISA::SveBinImmUnpredDestrOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: sve.cc:715
ArmISA::SvePredCountPredOp::op1
IntRegIndex op1
Definition: sve.hh:143
ArmISA::SveSelectOp::gp
IntRegIndex gp
Definition: sve.hh:638

Generated on Wed Sep 30 2020 14:02:00 for gem5 by doxygen 1.8.17