/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.17M | { |
8 | 1.17M | if (feature == RISCV_FeatureNoRVCHints) { |
9 | 15.3k | return false; |
10 | 15.3k | } |
11 | | |
12 | 1.16M | switch (feature) { |
13 | 0 | case RISCV_Feature32Bit: |
14 | 0 | return mode & CS_MODE_RISCV32; |
15 | | |
16 | 144k | case RISCV_Feature64Bit: |
17 | 144k | return mode & CS_MODE_RISCV64; |
18 | | |
19 | 147 | case RISCV_FeatureStdExtF: |
20 | 286 | case RISCV_FeatureStdExtD: |
21 | 286 | return mode & CS_MODE_RISCV_FD; |
22 | | |
23 | 0 | case RISCV_FeatureStdExtV: |
24 | 0 | return mode & CS_MODE_RISCV_V; |
25 | | |
26 | 19.1k | case RISCV_FeatureStdExtZfinx: |
27 | 38.3k | case RISCV_FeatureStdExtZdinx: |
28 | 38.3k | case RISCV_FeatureStdExtZhinx: |
29 | 38.3k | case RISCV_FeatureStdExtZhinxmin: |
30 | 38.3k | return mode & CS_MODE_RISCV_ZFINX; |
31 | | |
32 | 141k | case RISCV_FeatureStdExtC: |
33 | 141k | return mode & CS_MODE_RISCV_C; |
34 | | |
35 | 40.7k | case RISCV_FeatureStdExtZcmp: |
36 | 81.4k | case RISCV_FeatureStdExtZcmt: |
37 | 81.4k | case RISCV_FeatureStdExtZce: |
38 | 81.4k | return mode & CS_MODE_RISCV_ZCMP_ZCMT_ZCE; |
39 | | |
40 | 40.7k | case RISCV_FeatureStdExtZicfiss: |
41 | 40.7k | return mode & CS_MODE_RISCV_ZICFISS; |
42 | | |
43 | 50.9k | case RISCV_FeatureRVE: |
44 | 50.9k | return mode & CS_MODE_RISCV_E; |
45 | | |
46 | 6 | case RISCV_FeatureStdExtA: |
47 | 6 | return mode & CS_MODE_RISCV_A; |
48 | | |
49 | 18.2k | case RISCV_FeatureVendorXCVelw: |
50 | 18.2k | return mode & CS_MODE_RISCV_COREV; |
51 | | |
52 | 19.1k | case RISCV_FeatureVendorXSfvcp: |
53 | 38.3k | case RISCV_FeatureVendorXSfvfnrclipxfqf: |
54 | 57.5k | case RISCV_FeatureVendorXSfvfwmaccqqq: |
55 | 76.6k | case RISCV_FeatureVendorXSfvqmaccdod: |
56 | 95.8k | case RISCV_FeatureVendorXSfvqmaccqoq: |
57 | 95.8k | return mode & CS_MODE_RISCV_SIFIVE; |
58 | | |
59 | 19.1k | case RISCV_FeatureVendorXTHeadBa: |
60 | 38.3k | case RISCV_FeatureVendorXTHeadBb: |
61 | 57.5k | case RISCV_FeatureVendorXTHeadBs: |
62 | 76.6k | case RISCV_FeatureVendorXTHeadCmo: |
63 | 95.8k | case RISCV_FeatureVendorXTHeadCondMov: |
64 | 115k | case RISCV_FeatureVendorXTHeadFMemIdx: |
65 | 134k | case RISCV_FeatureVendorXTHeadMac: |
66 | 153k | case RISCV_FeatureVendorXTHeadMemIdx: |
67 | 172k | case RISCV_FeatureVendorXTHeadMemPair: |
68 | 191k | case RISCV_FeatureVendorXTHeadSync: |
69 | 210k | case RISCV_FeatureVendorXTHeadVdot: |
70 | 210k | return mode & CS_MODE_RISCV_THEAD; |
71 | | |
72 | 2 | case RISCV_FeatureStdExtZba: |
73 | 2 | return mode & CS_MODE_RISCV_ZBA; |
74 | 6 | case RISCV_FeatureStdExtZbb: |
75 | 6 | return mode & CS_MODE_RISCV_ZBB; |
76 | 2 | case RISCV_FeatureStdExtZbc: |
77 | 2 | return mode & CS_MODE_RISCV_ZBC; |
78 | 6 | case RISCV_FeatureStdExtZbkb: |
79 | 6 | return mode & CS_MODE_RISCV_ZBKB; |
80 | 0 | case RISCV_FeatureStdExtZbkc: |
81 | 0 | return mode & CS_MODE_RISCV_ZBKC; |
82 | 1 | case RISCV_FeatureStdExtZbkx: |
83 | 1 | return mode & CS_MODE_RISCV_ZBKX; |
84 | 2 | case RISCV_FeatureStdExtZbs: |
85 | 2 | return mode & CS_MODE_RISCV_ZBS; |
86 | 337k | default: |
87 | | // support everything by default |
88 | | return true; |
89 | 1.16M | } |
90 | 1.16M | } |