gem5 v24.0.0.0
Loading...
Searching...
No Matches
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
43namespace gem5
44{
45
46namespace ArmISA {
47
48enum class SvePredType
49{
50 NONE,
51 MERGE,
52 ZERO,
53 SELECT
54};
55
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:
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
168{
169 protected:
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
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
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
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
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
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:
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
625{
626 public:
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;
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:
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;
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
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
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
1015std::string sveDisasmPredCountImm(uint8_t imm);
1016
1021unsigned int sveDecodePredCount(uint8_t imm, unsigned int num_elems);
1022
1027uint64_t sveExpandFpImmAddSub(uint8_t imm, uint8_t size);
1028
1034uint64_t sveExpandFpImmMaxMin(uint8_t imm, uint8_t size);
1035
1040uint64_t sveExpandFpImmMul(uint8_t imm, uint8_t size);
1041
1042} // namespace ArmISA
1043} // namespace gem5
1044
1045#endif // __ARCH_ARM_INSTS_SVE_HH__
SveAdrOffsetFormat offsetFormat
Definition sve.hh:637
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:549
SveAdrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, uint8_t _mult, SveAdrOffsetFormat _offsetFormat)
Definition sve.hh:639
Binary, constructive, predicated SVE instruction.
Definition sve.hh:363
SveBinConstrPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, RegIndex _gp, SvePredType _predType)
Definition sve.hh:368
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:308
Binary, destructive, predicated (merging) SVE instruction.
Definition sve.hh:346
SveBinDestrPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op2, RegIndex _gp)
Definition sve.hh:350
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:292
Binary, unpredicated SVE instruction.
Definition sve.hh:398
SveBinIdxUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, uint8_t _index)
Definition sve.hh:403
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:341
Binary with immediate index, destructive, unpredicated SVE instruction.
Definition sve.hh:882
SveBinImmIdxUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint64_t _imm)
Definition sve.hh:887
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:766
Binary with immediate, destructive, predicated (merging) SVE instruction.
Definition sve.hh:311
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:262
SveBinImmPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint64_t _imm, RegIndex _gp)
Definition sve.hh:316
Binary with immediate, destructive, unpredicated SVE instruction.
Definition sve.hh:293
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:248
SveBinImmUnpredConstrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint64_t _imm)
Definition sve.hh:298
SVE vector - immediate binary operation.
Definition sve.hh:864
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:750
SveBinImmUnpredDestrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint64_t _imm)
Definition sve.hh:870
Binary, unpredicated SVE instruction with indexed operand.
Definition sve.hh:382
SveBinUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2)
Definition sve.hh:386
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:327
Binary with wide immediate, destructive, unpredicated SVE instruction.
Definition sve.hh:328
SveBinWideImmUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint64_t _imm)
Definition sve.hh:333
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:278
SveClampOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2)
Definition sve.hh:1001
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:867
SVE compare-with-immediate instructions, predicated (zeroing).
Definition sve.hh:468
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:407
SveCmpImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint64_t _imm, RegIndex _gp)
Definition sve.hh:473
SVE compare instructions, predicated (zeroing).
Definition sve.hh:451
SveCmpOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, RegIndex _gp)
Definition sve.hh:455
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:392
Compare and terminate loop SVE instruction.
Definition sve.hh:207
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:183
SveCompTermOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _op1, RegIndex _op2)
Definition sve.hh:211
SVE Complex Instructions (indexed)
Definition sve.hh:976
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:848
SveComplexIdxOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, uint8_t _rot, uint8_t _imm)
Definition sve.hh:982
SVE Complex Instructions (vectors)
Definition sve.hh:957
SveComplexOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, RegIndex _gp, uint8_t _rot)
Definition sve.hh:963
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:828
SVE dot product instruction (indexed)
Definition sve.hh:918
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:797
SveDotProdIdxOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, uint64_t _imm)
Definition sve.hh:925
SVE dot product instruction (vectors)
Definition sve.hh:938
SveDotProdOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2)
Definition sve.hh:944
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:814
Element count SVE instruction.
Definition sve.hh:653
SveElemCountOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint8_t _pattern, uint8_t _imm, bool _dstIsVec, bool _dstIs32b)
Definition sve.hh:662
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:573
Index generation instruction, immediate operands.
Definition sve.hh:61
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:96
SveIndexIIOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, int8_t _imm1, int8_t _imm2)
Definition sve.hh:67
SveIndexIROp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, int8_t _imm1, RegIndex _op2)
Definition sve.hh:84
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:107
SveIndexRIOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, int8_t _imm2)
Definition sve.hh:101
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:119
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:132
SveIndexRROp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2)
Definition sve.hh:118
Integer compare with immediate SVE instruction.
Definition sve.hh:606
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:533
SveIntCmpImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, int64_t _imm, RegIndex _gp)
Definition sve.hh:613
Integer compare SVE instruction.
Definition sve.hh:587
SveIntCmpOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, RegIndex _gp, bool _op2IsWide=false)
Definition sve.hh:594
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:513
SVE ordered reductions.
Definition sve.hh:554
SveOrdReducOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _gp)
Definition sve.hh:558
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:483
Partition break SVE instruction.
Definition sve.hh:675
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:601
SvePartBrkOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _gp, RegIndex _op1, bool _isMerging)
Definition sve.hh:682
Partition break with propagation SVE instruction.
Definition sve.hh:694
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:615
SvePartBrkPropOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, RegIndex _gp)
Definition sve.hh:701
Predicate binary permute instruction.
Definition sve.hh:434
SvePredBinPermOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2)
Definition sve.hh:438
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:378
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:75
SvePredCountOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _gp, bool _srcIs32b=false, bool _destIsVec=false)
Definition sve.hh:137
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:61
SvePredCountPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _gp)
Definition sve.hh:156
Predicate logical instruction.
Definition sve.hh:416
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:358
SvePredLogicalOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, RegIndex _gp, bool _isSel=false)
Definition sve.hh:421
SVE predicate test.
Definition sve.hh:789
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:696
SvePredTestOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _op1, RegIndex _gp)
Definition sve.hh:794
SVE unary predicate instructions with implicit destination operand.
Definition sve.hh:837
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:731
SvePredUnaryWImplicitDstOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _op1)
Definition sve.hh:841
SVE unary predicate instructions with implicit source operand.
Definition sve.hh:805
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:708
SvePredUnaryWImplicitSrcOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest)
Definition sve.hh:809
SVE unary predicate instructions, predicated, with implicit source operand.
Definition sve.hh:820
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:718
SvePredUnaryWImplicitSrcPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _gp)
Definition sve.hh:825
Psel predicate selection SVE instruction.
Definition sve.hh:185
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:165
SvePselOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _gp, RegIndex _op2, uint64_t _imm)
Definition sve.hh:193
PTRUE, PTRUES.
Definition sve.hh:570
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:499
SvePtrueOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint8_t _imm)
Definition sve.hh:575
SVE reductions.
Definition sve.hh:538
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:469
SveReducOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _gp)
Definition sve.hh:542
Scalar element select SVE instruction.
Definition sve.hh:713
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:631
SveSelectOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _gp, bool _conditional, bool _scalar, bool _simdFp)
Definition sve.hh:723
SVE table lookup/permute using vector of element indices (TBL)
Definition sve.hh:756
SveTblOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2)
Definition sve.hh:762
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:671
Ternary with immediate, destructive, unpredicated SVE instruction.
Definition sve.hh:520
SveTerImmUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op2, uint64_t _imm)
Definition sve.hh:525
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:453
Ternary, destructive, predicated (merging) SVE instruction.
Definition sve.hh:486
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:423
SveTerPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, RegIndex _gp)
Definition sve.hh:490
Ternary, destructive, unpredicated SVE instruction.
Definition sve.hh:503
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:439
SveTerUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2)
Definition sve.hh:507
Unary, constructive, predicated (merging) SVE instruction.
Definition sve.hh:222
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:195
SveUnaryPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _gp)
Definition sve.hh:226
SVE unary operation on predicate (predicated)
Definition sve.hh:738
SveUnaryPredPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _gp)
Definition sve.hh:744
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:657
Unary unpredicated scalar to vector instruction.
Definition sve.hh:900
SveUnarySca2VecUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, bool _simdFp)
Definition sve.hh:905
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:781
Unary, constructive, unpredicated SVE instruction.
Definition sve.hh:238
SveUnaryUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1)
Definition sve.hh:242
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:209
Unary with wide immediate, constructive, predicated SVE instruction.
Definition sve.hh:272
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:233
SveUnaryWideImmPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint64_t _imm, RegIndex _gp, bool _isMerging)
Definition sve.hh:280
Unary with wide immediate, constructive, unpredicated SVE instruction.
Definition sve.hh:254
SveUnaryWideImmUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint64_t _imm)
Definition sve.hh:259
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:221
SVE unpack and widen predicate.
Definition sve.hh:773
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:684
SveUnpackOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1)
Definition sve.hh:778
SVE unary predicate instructions with implicit destination operand.
Definition sve.hh:852
SveWImplicitSrcDstOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
Definition sve.hh:854
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:741
While predicate generation SVE instruction.
Definition sve.hh:168
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition sve.cc:146
SveWhileOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, bool _srcIs32b)
Definition sve.hh:173
Bitfield< 7, 0 > imm
Definition types.hh:132
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
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
const char * svePredTypeToStr(SvePredType pt)
Returns the specifier for the predication type pt as a string.
Definition sve.cc:48
std::string sveDisasmPredCountImm(uint8_t imm)
Returns the symbolic name associated with pattern imm for PTRUE(S) instructions.
Definition sve.cc:881
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
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
Bitfield< 4 > pc
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition binary32.hh:36
uint16_t RegIndex
Definition types.hh:176
Bitfield< 8 > pt
Definition x86_cpu.cc:127
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition types.hh:147

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