/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.39M | { |
8 | 1.39M | if (feature == RISCV_FeatureNoRVCHints) { |
9 | 19.5k | return false; |
10 | 19.5k | } |
11 | | |
12 | 1.37M | switch (feature) { |
13 | 0 | case RISCV_Feature32Bit: |
14 | 0 | return mode & CS_MODE_RISCV32; |
15 | | |
16 | 170k | case RISCV_Feature64Bit: |
17 | 170k | return mode & CS_MODE_RISCV64; |
18 | | |
19 | 347 | case RISCV_FeatureStdExtF: |
20 | 496 | case RISCV_FeatureStdExtD: |
21 | 496 | return mode & CS_MODE_RISCV_FD; |
22 | | |
23 | 0 | case RISCV_FeatureStdExtV: |
24 | 0 | return mode & CS_MODE_RISCV_V; |
25 | | |
26 | 22.7k | case RISCV_FeatureStdExtZfinx: |
27 | 45.4k | case RISCV_FeatureStdExtZdinx: |
28 | 45.4k | case RISCV_FeatureStdExtZhinx: |
29 | 45.4k | case RISCV_FeatureStdExtZhinxmin: |
30 | 45.4k | return mode & CS_MODE_RISCV_ZFINX; |
31 | | |
32 | 165k | case RISCV_FeatureStdExtC: |
33 | 165k | return mode & CS_MODE_RISCV_C; |
34 | | |
35 | 49.0k | case RISCV_FeatureStdExtZcmp: |
36 | 98.0k | case RISCV_FeatureStdExtZcmt: |
37 | 98.0k | case RISCV_FeatureStdExtZce: |
38 | 98.0k | return mode & CS_MODE_RISCV_ZCMP_ZCMT_ZCE; |
39 | | |
40 | 49.0k | case RISCV_FeatureStdExtZicfiss: |
41 | 49.0k | return mode & CS_MODE_RISCV_ZICFISS; |
42 | | |
43 | 54.9k | case RISCV_FeatureRVE: |
44 | 54.9k | return mode & CS_MODE_RISCV_E; |
45 | | |
46 | 4 | case RISCV_FeatureStdExtA: |
47 | 4 | return mode & CS_MODE_RISCV_A; |
48 | | |
49 | 22.0k | case RISCV_FeatureVendorXCVelw: |
50 | 22.0k | return mode & CS_MODE_RISCV_COREV; |
51 | | |
52 | 22.6k | case RISCV_FeatureVendorXSfvcp: |
53 | 45.3k | case RISCV_FeatureVendorXSfvfnrclipxfqf: |
54 | 68.0k | case RISCV_FeatureVendorXSfvfwmaccqqq: |
55 | 90.7k | case RISCV_FeatureVendorXSfvqmaccdod: |
56 | 113k | case RISCV_FeatureVendorXSfvqmaccqoq: |
57 | 113k | return mode & CS_MODE_RISCV_SIFIVE; |
58 | | |
59 | 22.6k | case RISCV_FeatureVendorXTHeadBa: |
60 | 45.3k | case RISCV_FeatureVendorXTHeadBb: |
61 | 68.0k | case RISCV_FeatureVendorXTHeadBs: |
62 | 90.7k | case RISCV_FeatureVendorXTHeadCmo: |
63 | 113k | case RISCV_FeatureVendorXTHeadCondMov: |
64 | 136k | case RISCV_FeatureVendorXTHeadFMemIdx: |
65 | 158k | case RISCV_FeatureVendorXTHeadMac: |
66 | 181k | case RISCV_FeatureVendorXTHeadMemIdx: |
67 | 204k | case RISCV_FeatureVendorXTHeadMemPair: |
68 | 226k | case RISCV_FeatureVendorXTHeadSync: |
69 | 249k | case RISCV_FeatureVendorXTHeadVdot: |
70 | 249k | return mode & CS_MODE_RISCV_THEAD; |
71 | | |
72 | 5 | case RISCV_FeatureStdExtZba: |
73 | 5 | 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 | 5 | case RISCV_FeatureStdExtZbkb: |
79 | 5 | return mode & CS_MODE_RISCV_ZBKB; |
80 | 1 | case RISCV_FeatureStdExtZbkc: |
81 | 1 | 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 | 408k | default: |
87 | | // support everything by default |
88 | | return true; |
89 | 1.37M | } |
90 | 1.37M | } |