99 ccprintf(ss,
", #%d, #%d", imm1, imm2);
106 std::stringstream
ss;
117 std::stringstream
ss;
129 std::stringstream
ss;
142 std::stringstream
ss;
160 std::stringstream
ss;
171 std::stringstream
ss;
184 std::stringstream
ss;
196 std::stringstream
ss;
208 std::stringstream
ss;
213 ccprintf(ss, (isMerging ?
"/m" :
"/z"));
223 std::stringstream
ss;
236 std::stringstream
ss;
252 std::stringstream
ss;
266 std::stringstream
ss;
282 std::stringstream
ss;
300 std::stringstream
ss;
314 std::stringstream
ss;
322 ss << (uint64_t)
index;
330 std::stringstream
ss;
349 std::stringstream
ss;
362 std::stringstream
ss;
377 std::stringstream
ss;
392 std::stringstream
ss;
408 std::stringstream
ss;
424 std::stringstream
ss;
438 std::stringstream
ss;
454 std::stringstream
ss;
468 std::stringstream
ss;
488 std::stringstream
ss;
503 std::stringstream
ss;
510 if (offsetFormat == SveAdrOffsetUnpackedSigned) {
512 }
else if (offsetFormat == SveAdrOffsetUnpackedUnsigned) {
514 }
else if (mult != 1) {
518 ss << __builtin_ctz(mult);
528 static const char suffix[9] =
529 {
'\0',
'b',
'h',
'\0',
'w',
'\0',
'\0',
'\0',
'd'};
530 std::stringstream
ss;
531 ss <<
" " <<
mnemonic << suffix[esize] <<
" ";
541 if (pattern != 0x1f) {
556 std::stringstream
ss;
561 ccprintf(ss, isMerging ?
"/m, " :
"/z, ");
570 std::stringstream
ss;
586 std::stringstream
ss;
612 std::stringstream
ss;
626 std::stringstream
ss;
640 std::stringstream
ss;
652 std::stringstream
ss;
664 std::stringstream
ss;
674 std::stringstream
ss;
687 std::stringstream
ss;
697 std::stringstream
ss;
706 std::stringstream
ss;
722 std::stringstream
ss;
737 std::stringstream
ss;
753 std::stringstream
ss;
770 std::stringstream
ss;
784 std::stringstream
ss;
794 const char* rotstr[4] = {
"0",
"90",
"180",
"270"};
804 std::stringstream
ss;
814 const char* rotstr[4] = {
"0",
"90",
"180",
"270"};
854 assert(num_elems > 0);
859 return 1 << (31 - __builtin_clz((uint32_t) num_elems));
868 return (num_elems >= imm) ?
imm : 0;
877 unsigned int pcount = 1 << ((imm & 0x7) + 3);
878 return (num_elems >= pcount) ? pcount : 0;
882 return num_elems - (num_elems % 4);
885 return num_elems - (num_elems % 3);
897 static constexpr uint16_t fpOne16 = 0x3c00;
898 static constexpr uint16_t fpPointFive16 = 0x3800;
899 static constexpr uint32_t fpOne32 = 0x3f800000;
900 static constexpr uint32_t fpPointFive32 = 0x3f000000;
901 static constexpr uint64_t fpOne64 = 0x3ff0000000000000;
902 static constexpr uint64_t fpPointFive64 = 0x3fe0000000000000;
906 return imm ? fpOne16 : fpPointFive16;
908 return imm ? fpOne32 : fpPointFive32;
910 return imm ? fpOne64 : fpPointFive64;
912 panic(
"Unsupported size");
919 static constexpr uint16_t fpOne16 = 0x3c00;
920 static constexpr uint32_t fpOne32 = 0x3f800000;
921 static constexpr uint64_t fpOne64 = 0x3ff0000000000000;
925 return imm ? fpOne16 : 0x0;
927 return imm ? fpOne32 : 0x0;
929 return imm ? fpOne64 : 0x0;
931 panic(
"Unsupported size");
938 static constexpr uint16_t fpTwo16 = 0x4000;
939 static constexpr uint16_t fpPointFive16 = 0x3800;
940 static constexpr uint32_t fpTwo32 = 0x40000000;
941 static constexpr uint32_t fpPointFive32 = 0x3f000000;
942 static constexpr uint64_t fpTwo64 = 0x4000000000000000;
943 static constexpr uint64_t fpPointFive64 = 0x3fe0000000000000;
947 return imm ? fpTwo16 : fpPointFive16;
949 return imm ? fpTwo32 : fpPointFive32;
951 return imm ? fpTwo64 : fpPointFive64;
953 panic(
"Unsupported size");
#define panic(...)
This implements a cprintf based panic() function.
void ccprintf(cp::Print &print)
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
void printMnemonic(std::ostream &os, const std::string &suffix="", bool withPred=true, bool withCond64=false, ConditionCode cond64=COND_UC) const
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
const char * mnemonic
Base mnemonic (e.g., "add").
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
uint64_t sveExpandFpImmMul(uint8_t imm, uint8_t size)
Expand 1-bit floating-point immediate to 0.5 or 2.0 (FMUL).
unsigned int sveDecodePredCount(uint8_t imm, unsigned int num_elems)
Returns the actual number of elements active for PTRUE(S) instructions.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
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). ...
void printVecPredReg(std::ostream &os, RegIndex reg_idx) const
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string sveDisasmPredCountImm(uint8_t imm)
Returns the symbolic name associated with pattern imm for PTRUE(S) instructions.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
void printVecReg(std::ostream &os, RegIndex reg_idx, bool isSveVecReg=false) const
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
void printIntReg(std::ostream &os, RegIndex reg_idx, uint8_t opWidth=0) const
Print a register name for disassembly given the unique dependence tag number (FP or int)...
uint64_t sveExpandFpImmAddSub(uint8_t imm, uint8_t size)
Expand 1-bit floating-point immediate to 0.5 or 1.0 (FADD, FSUB, FSUBR).
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
void printFloatReg(std::ostream &os, RegIndex reg_idx) const
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
const char * svePredTypeToStr(SvePredType pt)
Returns the specifier for the predication type pt as a string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
const std::string to_string(sc_enc enc)
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.