/src/capstonev5/arch/RISCV/RISCVBaseInfo.h
Line | Count | Source (jump to first uncovered line) |
1 | | //===-- RISCVBaseInfo.h - Top level definitions for RISCV MC ----*- C++ -*-===// |
2 | | // |
3 | | // The LLVM Compiler Infrastructure |
4 | | // |
5 | | // This file is distributed under the University of Illinois Open Source |
6 | | // License. See LICENSE.TXT for details. |
7 | | // |
8 | | //===----------------------------------------------------------------------===// |
9 | | // |
10 | | // This file contains small standalone enum definitions for the RISCV target |
11 | | // useful for the compiler back-end and the MC libraries. |
12 | | // |
13 | | //===----------------------------------------------------------------------===// |
14 | | #ifndef CS_RISCVBASEINFO_H |
15 | | #define CS_RISCVBASEINFO_H |
16 | | #include "../../cs_priv.h" |
17 | | |
18 | | //#include "RISCVMCTargetDesc.h" |
19 | | |
20 | | // RISCVII - This namespace holds all of the target specific flags that |
21 | | // instruction info tracks. All definitions must match RISCVInstrFormats.td. |
22 | | enum { |
23 | | IRISCVII_InstFormatPseudo = 0, |
24 | | IRISCVII_InstFormatR = 1, |
25 | | IRISCVII_InstFormatR4 = 2, |
26 | | IRISCVII_InstFormatI = 3, |
27 | | IRISCVII_InstFormatS = 4, |
28 | | IRISCVII_InstFormatB = 5, |
29 | | IRISCVII_InstFormatU = 6, |
30 | | IRISCVII_InstFormatJ = 7, |
31 | | IRISCVII_InstFormatCR = 8, |
32 | | IRISCVII_InstFormatCI = 9, |
33 | | IRISCVII_InstFormatCSS = 10, |
34 | | IRISCVII_InstFormatCIW = 11, |
35 | | IRISCVII_InstFormatCL = 12, |
36 | | IRISCVII_InstFormatCS = 13, |
37 | | IRISCVII_InstFormatCA = 14, |
38 | | IRISCVII_InstFormatCB = 15, |
39 | | IRISCVII_InstFormatCJ = 16, |
40 | | IRISCVII_InstFormatOther = 17, |
41 | | |
42 | | IRISCVII_InstFormatMask = 31 |
43 | | }; |
44 | | |
45 | | enum { |
46 | | RISCVII_MO_None, |
47 | | RISCVII_MO_LO, |
48 | | RISCVII_MO_HI, |
49 | | RISCVII_MO_PCREL_HI, |
50 | | }; |
51 | | |
52 | | // Describes the predecessor/successor bits used in the FENCE instruction. |
53 | | enum FenceField { |
54 | | RISCVFenceField_I = 8, |
55 | | RISCVFenceField_O = 4, |
56 | | RISCVFenceField_R = 2, |
57 | | RISCVFenceField_W = 1 |
58 | | }; |
59 | | |
60 | | // Describes the supported floating point rounding mode encodings. |
61 | | enum RoundingMode { |
62 | | RISCVFPRndMode_RNE = 0, |
63 | | RISCVFPRndMode_RTZ = 1, |
64 | | RISCVFPRndMode_RDN = 2, |
65 | | RISCVFPRndMode_RUP = 3, |
66 | | RISCVFPRndMode_RMM = 4, |
67 | | RISCVFPRndMode_DYN = 7, |
68 | | RISCVFPRndMode_Invalid |
69 | | }; |
70 | | |
71 | | inline static const char *roundingModeToString(enum RoundingMode RndMode) |
72 | 11.5k | { |
73 | 11.5k | switch (RndMode) { |
74 | 0 | default: |
75 | 0 | CS_ASSERT(0 && "Unknown floating point rounding mode"); |
76 | 1.82k | case RISCVFPRndMode_RNE: |
77 | 1.82k | return "rne"; |
78 | 1.32k | case RISCVFPRndMode_RTZ: |
79 | 1.32k | return "rtz"; |
80 | 2.18k | case RISCVFPRndMode_RDN: |
81 | 2.18k | return "rdn"; |
82 | 2.42k | case RISCVFPRndMode_RUP: |
83 | 2.42k | return "rup"; |
84 | 3.80k | case RISCVFPRndMode_RMM: |
85 | 3.80k | return "rmm"; |
86 | 0 | case RISCVFPRndMode_DYN: |
87 | 0 | return "dyn"; |
88 | 11.5k | } |
89 | 11.5k | } Unexecuted instantiation: RISCVDisassembler.c:roundingModeToString RISCVInstPrinter.c:roundingModeToString Line | Count | Source | 72 | 11.5k | { | 73 | 11.5k | switch (RndMode) { | 74 | 0 | default: | 75 | 0 | CS_ASSERT(0 && "Unknown floating point rounding mode"); | 76 | 1.82k | case RISCVFPRndMode_RNE: | 77 | 1.82k | return "rne"; | 78 | 1.32k | case RISCVFPRndMode_RTZ: | 79 | 1.32k | return "rtz"; | 80 | 2.18k | case RISCVFPRndMode_RDN: | 81 | 2.18k | return "rdn"; | 82 | 2.42k | case RISCVFPRndMode_RUP: | 83 | 2.42k | return "rup"; | 84 | 3.80k | case RISCVFPRndMode_RMM: | 85 | 3.80k | return "rmm"; | 86 | 0 | case RISCVFPRndMode_DYN: | 87 | 0 | return "dyn"; | 88 | 11.5k | } | 89 | 11.5k | } |
|
90 | | |
91 | | inline static bool RISCVFPRndMode_isValidRoundingMode(unsigned Mode) |
92 | 17.5k | { |
93 | 17.5k | switch (Mode) { |
94 | 29 | default: |
95 | 29 | return false; |
96 | 1.82k | case RISCVFPRndMode_RNE: |
97 | 3.14k | case RISCVFPRndMode_RTZ: |
98 | 5.33k | case RISCVFPRndMode_RDN: |
99 | 7.76k | case RISCVFPRndMode_RUP: |
100 | 11.5k | case RISCVFPRndMode_RMM: |
101 | 17.4k | case RISCVFPRndMode_DYN: |
102 | 17.4k | return true; |
103 | 17.5k | } |
104 | 17.5k | } RISCVDisassembler.c:RISCVFPRndMode_isValidRoundingMode Line | Count | Source | 92 | 17.5k | { | 93 | 17.5k | switch (Mode) { | 94 | 29 | default: | 95 | 29 | return false; | 96 | 1.82k | case RISCVFPRndMode_RNE: | 97 | 3.14k | case RISCVFPRndMode_RTZ: | 98 | 5.33k | case RISCVFPRndMode_RDN: | 99 | 7.76k | case RISCVFPRndMode_RUP: | 100 | 11.5k | case RISCVFPRndMode_RMM: | 101 | 17.4k | case RISCVFPRndMode_DYN: | 102 | 17.4k | return true; | 103 | 17.5k | } | 104 | 17.5k | } |
Unexecuted instantiation: RISCVInstPrinter.c:RISCVFPRndMode_isValidRoundingMode |
105 | | |
106 | | #endif |