/src/capstonenext/arch/RISCV/RISCVDisassemblerExtension.c
Line | Count | Source |
1 | | #include "RISCVDisassemblerExtension.h" |
2 | | |
3 | | #define GET_SUBTARGETINFO_ENUM |
4 | | #include "RISCVGenSubtargetInfo.inc" |
5 | | |
6 | | bool RISCV_getFeatureBits(unsigned int mode, unsigned int feature) |
7 | 1.06M | { |
8 | 1.06M | if (feature == RISCV_FeatureNoRVCHints) { |
9 | 15.1k | return false; |
10 | 15.1k | } |
11 | | |
12 | 1.05M | switch (feature) { |
13 | 0 | case RISCV_Feature32Bit: |
14 | 0 | return mode & CS_MODE_RISCV32; |
15 | | |
16 | 133k | case RISCV_Feature64Bit: |
17 | 133k | return mode & CS_MODE_RISCV64; |
18 | | |
19 | 147 | case RISCV_FeatureStdExtF: |
20 | 273 | case RISCV_FeatureStdExtD: |
21 | 273 | return mode & CS_MODE_RISCV_FD; |
22 | | |
23 | 0 | case RISCV_FeatureStdExtV: |
24 | 0 | return mode & CS_MODE_RISCV_V; |
25 | | |
26 | 16.2k | case RISCV_FeatureStdExtZfinx: |
27 | 32.5k | case RISCV_FeatureStdExtZdinx: |
28 | 32.5k | case RISCV_FeatureStdExtZhinx: |
29 | 32.5k | case RISCV_FeatureStdExtZhinxmin: |
30 | 32.5k | return mode & CS_MODE_RISCV_ZFINX; |
31 | | |
32 | 136k | case RISCV_FeatureStdExtC: |
33 | 136k | return mode & CS_MODE_RISCV_C; |
34 | | |
35 | 39.2k | case RISCV_FeatureStdExtZcmp: |
36 | 78.5k | case RISCV_FeatureStdExtZcmt: |
37 | 78.5k | case RISCV_FeatureStdExtZce: |
38 | 78.5k | return mode & CS_MODE_RISCV_ZCMP_ZCMT_ZCE; |
39 | | |
40 | 39.3k | case RISCV_FeatureStdExtZicfiss: |
41 | 39.3k | return mode & CS_MODE_RISCV_ZICFISS; |
42 | | |
43 | 45.5k | case RISCV_FeatureRVE: |
44 | 45.5k | return mode & CS_MODE_RISCV_E; |
45 | | |
46 | 6 | case RISCV_FeatureStdExtA: |
47 | 6 | return mode & CS_MODE_RISCV_A; |
48 | | |
49 | 16.0k | case RISCV_FeatureVendorXCVelw: |
50 | 16.0k | return mode & CS_MODE_RISCV_COREV; |
51 | | |
52 | 16.2k | case RISCV_FeatureVendorXSfvcp: |
53 | 32.4k | case RISCV_FeatureVendorXSfvfnrclipxfqf: |
54 | 48.6k | case RISCV_FeatureVendorXSfvfwmaccqqq: |
55 | 64.9k | case RISCV_FeatureVendorXSfvqmaccdod: |
56 | 81.1k | case RISCV_FeatureVendorXSfvqmaccqoq: |
57 | 81.1k | return mode & CS_MODE_RISCV_SIFIVE; |
58 | | |
59 | 16.2k | case RISCV_FeatureVendorXTHeadBa: |
60 | 32.4k | case RISCV_FeatureVendorXTHeadBb: |
61 | 48.6k | case RISCV_FeatureVendorXTHeadBs: |
62 | 64.9k | case RISCV_FeatureVendorXTHeadCmo: |
63 | 81.1k | case RISCV_FeatureVendorXTHeadCondMov: |
64 | 97.3k | case RISCV_FeatureVendorXTHeadFMemIdx: |
65 | 113k | case RISCV_FeatureVendorXTHeadMac: |
66 | 129k | case RISCV_FeatureVendorXTHeadMemIdx: |
67 | 146k | case RISCV_FeatureVendorXTHeadMemPair: |
68 | 162k | case RISCV_FeatureVendorXTHeadSync: |
69 | 178k | case RISCV_FeatureVendorXTHeadVdot: |
70 | 178k | return mode & CS_MODE_RISCV_THEAD; |
71 | | |
72 | 2 | case RISCV_FeatureStdExtZba: |
73 | 2 | return mode & CS_MODE_RISCV_ZBA; |
74 | 5 | case RISCV_FeatureStdExtZbb: |
75 | 5 | return mode & CS_MODE_RISCV_ZBB; |
76 | 2 | case RISCV_FeatureStdExtZbc: |
77 | 2 | return mode & CS_MODE_RISCV_ZBC; |
78 | 4 | case RISCV_FeatureStdExtZbkb: |
79 | 4 | return mode & CS_MODE_RISCV_ZBKB; |
80 | 0 | case RISCV_FeatureStdExtZbkc: |
81 | 0 | return mode & CS_MODE_RISCV_ZBKC; |
82 | 0 | case RISCV_FeatureStdExtZbkx: |
83 | 0 | return mode & CS_MODE_RISCV_ZBKX; |
84 | 2 | case RISCV_FeatureStdExtZbs: |
85 | 2 | return mode & CS_MODE_RISCV_ZBS; |
86 | 308k | default: |
87 | | // support everything by default |
88 | | return true; |
89 | 1.05M | } |
90 | 1.05M | } |