hexcore-capstone 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +191 -0
  3. package/binding.gyp +168 -0
  4. package/deps/capstone/LEB128.h +38 -0
  5. package/deps/capstone/MCDisassembler.h +14 -0
  6. package/deps/capstone/MCFixedLenDisassembler.h +32 -0
  7. package/deps/capstone/MCInst.c +270 -0
  8. package/deps/capstone/MCInst.h +165 -0
  9. package/deps/capstone/MCInstrDesc.c +41 -0
  10. package/deps/capstone/MCInstrDesc.h +167 -0
  11. package/deps/capstone/MCRegisterInfo.c +151 -0
  12. package/deps/capstone/MCRegisterInfo.h +116 -0
  13. package/deps/capstone/Mapping.c +254 -0
  14. package/deps/capstone/Mapping.h +174 -0
  15. package/deps/capstone/MathExtras.h +442 -0
  16. package/deps/capstone/SStream.c +181 -0
  17. package/deps/capstone/SStream.h +40 -0
  18. package/deps/capstone/arch/AArch64/AArch64AddressingModes.h +945 -0
  19. package/deps/capstone/arch/AArch64/AArch64BaseInfo.c +77 -0
  20. package/deps/capstone/arch/AArch64/AArch64BaseInfo.h +585 -0
  21. package/deps/capstone/arch/AArch64/AArch64Disassembler.c +2280 -0
  22. package/deps/capstone/arch/AArch64/AArch64Disassembler.h +18 -0
  23. package/deps/capstone/arch/AArch64/AArch64GenAsmWriter.inc +26589 -0
  24. package/deps/capstone/arch/AArch64/AArch64GenDisassemblerTables.inc +27322 -0
  25. package/deps/capstone/arch/AArch64/AArch64GenInstrInfo.inc +13194 -0
  26. package/deps/capstone/arch/AArch64/AArch64GenRegisterInfo.inc +3814 -0
  27. package/deps/capstone/arch/AArch64/AArch64GenRegisterName.inc +714 -0
  28. package/deps/capstone/arch/AArch64/AArch64GenRegisterV.inc +673 -0
  29. package/deps/capstone/arch/AArch64/AArch64GenSubtargetInfo.inc +229 -0
  30. package/deps/capstone/arch/AArch64/AArch64GenSystemOperands.inc +2863 -0
  31. package/deps/capstone/arch/AArch64/AArch64GenSystemOperands_enum.inc +21 -0
  32. package/deps/capstone/arch/AArch64/AArch64InstPrinter.c +3029 -0
  33. package/deps/capstone/arch/AArch64/AArch64InstPrinter.h +28 -0
  34. package/deps/capstone/arch/AArch64/AArch64Mapping.c +883 -0
  35. package/deps/capstone/arch/AArch64/AArch64Mapping.h +43 -0
  36. package/deps/capstone/arch/AArch64/AArch64MappingInsn.inc +37790 -0
  37. package/deps/capstone/arch/AArch64/AArch64MappingInsnName.inc +1282 -0
  38. package/deps/capstone/arch/AArch64/AArch64MappingInsnOp.inc +26994 -0
  39. package/deps/capstone/arch/AArch64/AArch64Module.c +44 -0
  40. package/deps/capstone/arch/AArch64/AArch64Module.h +12 -0
  41. package/deps/capstone/arch/ARM/ARMAddressingModes.h +698 -0
  42. package/deps/capstone/arch/ARM/ARMBaseInfo.h +486 -0
  43. package/deps/capstone/arch/ARM/ARMDisassembler.c +5763 -0
  44. package/deps/capstone/arch/ARM/ARMDisassembler.h +18 -0
  45. package/deps/capstone/arch/ARM/ARMGenAsmWriter.inc +9545 -0
  46. package/deps/capstone/arch/ARM/ARMGenDisassemblerTables.inc +15185 -0
  47. package/deps/capstone/arch/ARM/ARMGenInstrInfo.inc +6632 -0
  48. package/deps/capstone/arch/ARM/ARMGenRegisterInfo.inc +2102 -0
  49. package/deps/capstone/arch/ARM/ARMGenRegisterName.inc +231 -0
  50. package/deps/capstone/arch/ARM/ARMGenRegisterName_digit.inc +231 -0
  51. package/deps/capstone/arch/ARM/ARMGenSubtargetInfo.inc +162 -0
  52. package/deps/capstone/arch/ARM/ARMGenSystemRegister.inc +270 -0
  53. package/deps/capstone/arch/ARM/ARMInstPrinter.c +3364 -0
  54. package/deps/capstone/arch/ARM/ARMInstPrinter.h +43 -0
  55. package/deps/capstone/arch/ARM/ARMMapping.c +551 -0
  56. package/deps/capstone/arch/ARM/ARMMapping.h +40 -0
  57. package/deps/capstone/arch/ARM/ARMMappingInsn.inc +18772 -0
  58. package/deps/capstone/arch/ARM/ARMMappingInsnName.inc +475 -0
  59. package/deps/capstone/arch/ARM/ARMMappingInsnOp.inc +10729 -0
  60. package/deps/capstone/arch/ARM/ARMModule.c +63 -0
  61. package/deps/capstone/arch/ARM/ARMModule.h +12 -0
  62. package/deps/capstone/arch/BPF/BPFConstants.h +88 -0
  63. package/deps/capstone/arch/BPF/BPFDisassembler.c +464 -0
  64. package/deps/capstone/arch/BPF/BPFDisassembler.h +27 -0
  65. package/deps/capstone/arch/BPF/BPFInstPrinter.c +285 -0
  66. package/deps/capstone/arch/BPF/BPFInstPrinter.h +16 -0
  67. package/deps/capstone/arch/BPF/BPFMapping.c +513 -0
  68. package/deps/capstone/arch/BPF/BPFMapping.h +21 -0
  69. package/deps/capstone/arch/BPF/BPFModule.c +34 -0
  70. package/deps/capstone/arch/BPF/BPFModule.h +12 -0
  71. package/deps/capstone/arch/EVM/EVMDisassembler.c +379 -0
  72. package/deps/capstone/arch/EVM/EVMDisassembler.h +12 -0
  73. package/deps/capstone/arch/EVM/EVMInstPrinter.c +20 -0
  74. package/deps/capstone/arch/EVM/EVMInstPrinter.h +17 -0
  75. package/deps/capstone/arch/EVM/EVMMapping.c +344 -0
  76. package/deps/capstone/arch/EVM/EVMMapping.h +8 -0
  77. package/deps/capstone/arch/EVM/EVMMappingInsn.inc +259 -0
  78. package/deps/capstone/arch/EVM/EVMModule.c +33 -0
  79. package/deps/capstone/arch/EVM/EVMModule.h +12 -0
  80. package/deps/capstone/arch/M680X/M680XDisassembler.c +2307 -0
  81. package/deps/capstone/arch/M680X/M680XDisassembler.h +17 -0
  82. package/deps/capstone/arch/M680X/M680XDisassemblerInternals.h +57 -0
  83. package/deps/capstone/arch/M680X/M680XInstPrinter.c +360 -0
  84. package/deps/capstone/arch/M680X/M680XInstPrinter.h +25 -0
  85. package/deps/capstone/arch/M680X/M680XModule.c +77 -0
  86. package/deps/capstone/arch/M680X/M680XModule.h +12 -0
  87. package/deps/capstone/arch/M680X/cpu12.inc +335 -0
  88. package/deps/capstone/arch/M680X/hcs08.inc +60 -0
  89. package/deps/capstone/arch/M680X/hd6301.inc +15 -0
  90. package/deps/capstone/arch/M680X/hd6309.inc +259 -0
  91. package/deps/capstone/arch/M680X/insn_props.inc +367 -0
  92. package/deps/capstone/arch/M680X/m6800.inc +277 -0
  93. package/deps/capstone/arch/M680X/m6801.inc +39 -0
  94. package/deps/capstone/arch/M680X/m6805.inc +277 -0
  95. package/deps/capstone/arch/M680X/m6808.inc +91 -0
  96. package/deps/capstone/arch/M680X/m6809.inc +352 -0
  97. package/deps/capstone/arch/M680X/m6811.inc +105 -0
  98. package/deps/capstone/arch/M68K/M68KDisassembler.c +3668 -0
  99. package/deps/capstone/arch/M68K/M68KDisassembler.h +30 -0
  100. package/deps/capstone/arch/M68K/M68KInstPrinter.c +387 -0
  101. package/deps/capstone/arch/M68K/M68KInstPrinter.h +21 -0
  102. package/deps/capstone/arch/M68K/M68KInstructionTable.inc +65540 -0
  103. package/deps/capstone/arch/M68K/M68KModule.c +42 -0
  104. package/deps/capstone/arch/M68K/M68KModule.h +12 -0
  105. package/deps/capstone/arch/MOS65XX/MOS65XXDisassembler.c +544 -0
  106. package/deps/capstone/arch/MOS65XX/MOS65XXDisassembler.h +22 -0
  107. package/deps/capstone/arch/MOS65XX/MOS65XXDisassemblerInternals.h +23 -0
  108. package/deps/capstone/arch/MOS65XX/MOS65XXModule.c +79 -0
  109. package/deps/capstone/arch/MOS65XX/MOS65XXModule.h +12 -0
  110. package/deps/capstone/arch/MOS65XX/instruction_info.inc +106 -0
  111. package/deps/capstone/arch/MOS65XX/m6502.inc +256 -0
  112. package/deps/capstone/arch/MOS65XX/m65816.inc +256 -0
  113. package/deps/capstone/arch/MOS65XX/m65c02.inc +256 -0
  114. package/deps/capstone/arch/MOS65XX/mw65c02.inc +256 -0
  115. package/deps/capstone/arch/Mips/MipsDisassembler.c +1794 -0
  116. package/deps/capstone/arch/Mips/MipsDisassembler.h +16 -0
  117. package/deps/capstone/arch/Mips/MipsGenAsmWriter.inc +5725 -0
  118. package/deps/capstone/arch/Mips/MipsGenDisassemblerTables.inc +6942 -0
  119. package/deps/capstone/arch/Mips/MipsGenInstrInfo.inc +1805 -0
  120. package/deps/capstone/arch/Mips/MipsGenRegisterInfo.inc +1679 -0
  121. package/deps/capstone/arch/Mips/MipsGenSubtargetInfo.inc +52 -0
  122. package/deps/capstone/arch/Mips/MipsInstPrinter.c +424 -0
  123. package/deps/capstone/arch/Mips/MipsInstPrinter.h +25 -0
  124. package/deps/capstone/arch/Mips/MipsMapping.c +1070 -0
  125. package/deps/capstone/arch/Mips/MipsMapping.h +25 -0
  126. package/deps/capstone/arch/Mips/MipsMappingInsn.inc +9315 -0
  127. package/deps/capstone/arch/Mips/MipsModule.c +52 -0
  128. package/deps/capstone/arch/Mips/MipsModule.h +12 -0
  129. package/deps/capstone/arch/PowerPC/PPCDisassembler.c +627 -0
  130. package/deps/capstone/arch/PowerPC/PPCDisassembler.h +17 -0
  131. package/deps/capstone/arch/PowerPC/PPCGenAsmWriter.inc +11451 -0
  132. package/deps/capstone/arch/PowerPC/PPCGenDisassemblerTables.inc +6886 -0
  133. package/deps/capstone/arch/PowerPC/PPCGenInstrInfo.inc +4772 -0
  134. package/deps/capstone/arch/PowerPC/PPCGenRegisterInfo.inc +1122 -0
  135. package/deps/capstone/arch/PowerPC/PPCGenRegisterName.inc +278 -0
  136. package/deps/capstone/arch/PowerPC/PPCGenSubtargetInfo.inc +90 -0
  137. package/deps/capstone/arch/PowerPC/PPCInstPrinter.c +1238 -0
  138. package/deps/capstone/arch/PowerPC/PPCInstPrinter.h +15 -0
  139. package/deps/capstone/arch/PowerPC/PPCMapping.c +570 -0
  140. package/deps/capstone/arch/PowerPC/PPCMapping.h +40 -0
  141. package/deps/capstone/arch/PowerPC/PPCMappingInsn.inc +13220 -0
  142. package/deps/capstone/arch/PowerPC/PPCMappingInsnName.inc +1731 -0
  143. package/deps/capstone/arch/PowerPC/PPCModule.c +45 -0
  144. package/deps/capstone/arch/PowerPC/PPCModule.h +12 -0
  145. package/deps/capstone/arch/PowerPC/PPCPredicates.h +62 -0
  146. package/deps/capstone/arch/RISCV/RISCVBaseInfo.h +106 -0
  147. package/deps/capstone/arch/RISCV/RISCVDisassembler.c +433 -0
  148. package/deps/capstone/arch/RISCV/RISCVDisassembler.h +18 -0
  149. package/deps/capstone/arch/RISCV/RISCVGenAsmWriter.inc +2651 -0
  150. package/deps/capstone/arch/RISCV/RISCVGenDisassemblerTables.inc +1776 -0
  151. package/deps/capstone/arch/RISCV/RISCVGenInsnNameMaps.inc +275 -0
  152. package/deps/capstone/arch/RISCV/RISCVGenInstrInfo.inc +470 -0
  153. package/deps/capstone/arch/RISCV/RISCVGenRegisterInfo.inc +426 -0
  154. package/deps/capstone/arch/RISCV/RISCVGenSubtargetInfo.inc +33 -0
  155. package/deps/capstone/arch/RISCV/RISCVInstPrinter.c +447 -0
  156. package/deps/capstone/arch/RISCV/RISCVInstPrinter.h +24 -0
  157. package/deps/capstone/arch/RISCV/RISCVMapping.c +366 -0
  158. package/deps/capstone/arch/RISCV/RISCVMapping.h +22 -0
  159. package/deps/capstone/arch/RISCV/RISCVMappingInsn.inc +1635 -0
  160. package/deps/capstone/arch/RISCV/RISCVModule.c +42 -0
  161. package/deps/capstone/arch/RISCV/RISCVModule.h +12 -0
  162. package/deps/capstone/arch/SH/SHDisassembler.c +2221 -0
  163. package/deps/capstone/arch/SH/SHDisassembler.h +19 -0
  164. package/deps/capstone/arch/SH/SHInsnTable.inc +66 -0
  165. package/deps/capstone/arch/SH/SHInstPrinter.c +438 -0
  166. package/deps/capstone/arch/SH/SHInstPrinter.h +23 -0
  167. package/deps/capstone/arch/SH/SHModule.c +39 -0
  168. package/deps/capstone/arch/SH/SHModule.h +12 -0
  169. package/deps/capstone/arch/SH/mktable.rb +390 -0
  170. package/deps/capstone/arch/Sparc/Sparc.h +63 -0
  171. package/deps/capstone/arch/Sparc/SparcDisassembler.c +500 -0
  172. package/deps/capstone/arch/Sparc/SparcDisassembler.h +17 -0
  173. package/deps/capstone/arch/Sparc/SparcGenAsmWriter.inc +5709 -0
  174. package/deps/capstone/arch/Sparc/SparcGenDisassemblerTables.inc +2028 -0
  175. package/deps/capstone/arch/Sparc/SparcGenInstrInfo.inc +514 -0
  176. package/deps/capstone/arch/Sparc/SparcGenRegisterInfo.inc +451 -0
  177. package/deps/capstone/arch/Sparc/SparcGenSubtargetInfo.inc +27 -0
  178. package/deps/capstone/arch/Sparc/SparcInstPrinter.c +446 -0
  179. package/deps/capstone/arch/Sparc/SparcInstPrinter.h +17 -0
  180. package/deps/capstone/arch/Sparc/SparcMapping.c +665 -0
  181. package/deps/capstone/arch/Sparc/SparcMapping.h +34 -0
  182. package/deps/capstone/arch/Sparc/SparcMappingInsn.inc +2643 -0
  183. package/deps/capstone/arch/Sparc/SparcModule.c +45 -0
  184. package/deps/capstone/arch/Sparc/SparcModule.h +12 -0
  185. package/deps/capstone/arch/SystemZ/SystemZDisassembler.c +484 -0
  186. package/deps/capstone/arch/SystemZ/SystemZDisassembler.h +17 -0
  187. package/deps/capstone/arch/SystemZ/SystemZGenAsmWriter.inc +11575 -0
  188. package/deps/capstone/arch/SystemZ/SystemZGenDisassemblerTables.inc +10262 -0
  189. package/deps/capstone/arch/SystemZ/SystemZGenInsnNameMaps.inc +2348 -0
  190. package/deps/capstone/arch/SystemZ/SystemZGenInstrInfo.inc +2820 -0
  191. package/deps/capstone/arch/SystemZ/SystemZGenRegisterInfo.inc +741 -0
  192. package/deps/capstone/arch/SystemZ/SystemZGenSubtargetInfo.inc +49 -0
  193. package/deps/capstone/arch/SystemZ/SystemZInstPrinter.c +433 -0
  194. package/deps/capstone/arch/SystemZ/SystemZInstPrinter.h +15 -0
  195. package/deps/capstone/arch/SystemZ/SystemZMCTargetDesc.c +195 -0
  196. package/deps/capstone/arch/SystemZ/SystemZMCTargetDesc.h +51 -0
  197. package/deps/capstone/arch/SystemZ/SystemZMapping.c +479 -0
  198. package/deps/capstone/arch/SystemZ/SystemZMapping.h +23 -0
  199. package/deps/capstone/arch/SystemZ/SystemZMappingInsn.inc +14175 -0
  200. package/deps/capstone/arch/SystemZ/SystemZModule.c +44 -0
  201. package/deps/capstone/arch/SystemZ/SystemZModule.h +12 -0
  202. package/deps/capstone/arch/TMS320C64x/TMS320C64xDisassembler.c +628 -0
  203. package/deps/capstone/arch/TMS320C64x/TMS320C64xDisassembler.h +19 -0
  204. package/deps/capstone/arch/TMS320C64x/TMS320C64xGenAsmWriter.inc +684 -0
  205. package/deps/capstone/arch/TMS320C64x/TMS320C64xGenDisassemblerTables.inc +1352 -0
  206. package/deps/capstone/arch/TMS320C64x/TMS320C64xGenInstrInfo.inc +298 -0
  207. package/deps/capstone/arch/TMS320C64x/TMS320C64xGenRegisterInfo.inc +277 -0
  208. package/deps/capstone/arch/TMS320C64x/TMS320C64xInstPrinter.c +572 -0
  209. package/deps/capstone/arch/TMS320C64x/TMS320C64xInstPrinter.h +15 -0
  210. package/deps/capstone/arch/TMS320C64x/TMS320C64xMapping.c +1926 -0
  211. package/deps/capstone/arch/TMS320C64x/TMS320C64xMapping.h +26 -0
  212. package/deps/capstone/arch/TMS320C64x/TMS320C64xModule.c +39 -0
  213. package/deps/capstone/arch/TMS320C64x/TMS320C64xModule.h +12 -0
  214. package/deps/capstone/arch/TriCore/TriCore.td +134 -0
  215. package/deps/capstone/arch/TriCore/TriCoreCallingConv.td +61 -0
  216. package/deps/capstone/arch/TriCore/TriCoreDisassembler.c +1655 -0
  217. package/deps/capstone/arch/TriCore/TriCoreDisassembler.h +18 -0
  218. package/deps/capstone/arch/TriCore/TriCoreGenAsmWriter.inc +3691 -0
  219. package/deps/capstone/arch/TriCore/TriCoreGenCSFeatureName.inc +22 -0
  220. package/deps/capstone/arch/TriCore/TriCoreGenCSMappingInsn.inc +8938 -0
  221. package/deps/capstone/arch/TriCore/TriCoreGenCSMappingInsnName.inc +404 -0
  222. package/deps/capstone/arch/TriCore/TriCoreGenCSMappingInsnOp.inc +7994 -0
  223. package/deps/capstone/arch/TriCore/TriCoreGenCSOpGroup.inc +32 -0
  224. package/deps/capstone/arch/TriCore/TriCoreGenDisassemblerTables.inc +4044 -0
  225. package/deps/capstone/arch/TriCore/TriCoreGenInstrInfo.inc +2693 -0
  226. package/deps/capstone/arch/TriCore/TriCoreGenRegisterInfo.inc +295 -0
  227. package/deps/capstone/arch/TriCore/TriCoreGenSubtargetInfo.inc +40 -0
  228. package/deps/capstone/arch/TriCore/TriCoreInstPrinter.c +488 -0
  229. package/deps/capstone/arch/TriCore/TriCoreInstrFormats.td +773 -0
  230. package/deps/capstone/arch/TriCore/TriCoreInstrInfo.td +1873 -0
  231. package/deps/capstone/arch/TriCore/TriCoreLinkage.h +21 -0
  232. package/deps/capstone/arch/TriCore/TriCoreMapping.c +241 -0
  233. package/deps/capstone/arch/TriCore/TriCoreMapping.h +32 -0
  234. package/deps/capstone/arch/TriCore/TriCoreModule.c +44 -0
  235. package/deps/capstone/arch/TriCore/TriCoreModule.h +11 -0
  236. package/deps/capstone/arch/TriCore/TriCoreRegisterInfo.td +153 -0
  237. package/deps/capstone/arch/WASM/WASMDisassembler.c +1009 -0
  238. package/deps/capstone/arch/WASM/WASMDisassembler.h +12 -0
  239. package/deps/capstone/arch/WASM/WASMInstPrinter.c +47 -0
  240. package/deps/capstone/arch/WASM/WASMInstPrinter.h +18 -0
  241. package/deps/capstone/arch/WASM/WASMMapping.c +333 -0
  242. package/deps/capstone/arch/WASM/WASMMapping.h +9 -0
  243. package/deps/capstone/arch/WASM/WASMModule.c +33 -0
  244. package/deps/capstone/arch/WASM/WASMModule.h +12 -0
  245. package/deps/capstone/arch/X86/X86ATTInstPrinter.c +997 -0
  246. package/deps/capstone/arch/X86/X86BaseInfo.h +50 -0
  247. package/deps/capstone/arch/X86/X86Disassembler.c +1033 -0
  248. package/deps/capstone/arch/X86/X86Disassembler.h +28 -0
  249. package/deps/capstone/arch/X86/X86DisassemblerDecoder.c +2358 -0
  250. package/deps/capstone/arch/X86/X86DisassemblerDecoder.h +725 -0
  251. package/deps/capstone/arch/X86/X86DisassemblerDecoderCommon.h +483 -0
  252. package/deps/capstone/arch/X86/X86GenAsmWriter.inc +49199 -0
  253. package/deps/capstone/arch/X86/X86GenAsmWriter1.inc +33196 -0
  254. package/deps/capstone/arch/X86/X86GenAsmWriter1_reduce.inc +2531 -0
  255. package/deps/capstone/arch/X86/X86GenAsmWriter_reduce.inc +2855 -0
  256. package/deps/capstone/arch/X86/X86GenDisassemblerTables.inc +112961 -0
  257. package/deps/capstone/arch/X86/X86GenDisassemblerTables2.inc +102151 -0
  258. package/deps/capstone/arch/X86/X86GenDisassemblerTables_reduce.inc +28047 -0
  259. package/deps/capstone/arch/X86/X86GenDisassemblerTables_reduce2.inc +18827 -0
  260. package/deps/capstone/arch/X86/X86GenInstrInfo.inc +15158 -0
  261. package/deps/capstone/arch/X86/X86GenInstrInfo_reduce.inc +1564 -0
  262. package/deps/capstone/arch/X86/X86GenRegisterInfo.inc +1549 -0
  263. package/deps/capstone/arch/X86/X86GenRegisterName.inc +292 -0
  264. package/deps/capstone/arch/X86/X86GenRegisterName1.inc +291 -0
  265. package/deps/capstone/arch/X86/X86ImmSize.inc +335 -0
  266. package/deps/capstone/arch/X86/X86InstPrinter.h +26 -0
  267. package/deps/capstone/arch/X86/X86InstPrinterCommon.c +116 -0
  268. package/deps/capstone/arch/X86/X86InstPrinterCommon.h +16 -0
  269. package/deps/capstone/arch/X86/X86IntelInstPrinter.c +1061 -0
  270. package/deps/capstone/arch/X86/X86Lookup16.inc +16874 -0
  271. package/deps/capstone/arch/X86/X86Lookup16_reduce.inc +2308 -0
  272. package/deps/capstone/arch/X86/X86Mapping.c +2266 -0
  273. package/deps/capstone/arch/X86/X86Mapping.h +96 -0
  274. package/deps/capstone/arch/X86/X86MappingInsn.inc +105977 -0
  275. package/deps/capstone/arch/X86/X86MappingInsnName.inc +1527 -0
  276. package/deps/capstone/arch/X86/X86MappingInsnName_reduce.inc +348 -0
  277. package/deps/capstone/arch/X86/X86MappingInsnOp.inc +75700 -0
  278. package/deps/capstone/arch/X86/X86MappingInsnOp_reduce.inc +7729 -0
  279. package/deps/capstone/arch/X86/X86MappingInsn_reduce.inc +10819 -0
  280. package/deps/capstone/arch/X86/X86MappingReg.inc +280 -0
  281. package/deps/capstone/arch/X86/X86Module.c +94 -0
  282. package/deps/capstone/arch/X86/X86Module.h +12 -0
  283. package/deps/capstone/arch/XCore/XCoreDisassembler.c +794 -0
  284. package/deps/capstone/arch/XCore/XCoreDisassembler.h +17 -0
  285. package/deps/capstone/arch/XCore/XCoreGenAsmWriter.inc +772 -0
  286. package/deps/capstone/arch/XCore/XCoreGenDisassemblerTables.inc +853 -0
  287. package/deps/capstone/arch/XCore/XCoreGenInstrInfo.inc +267 -0
  288. package/deps/capstone/arch/XCore/XCoreGenRegisterInfo.inc +110 -0
  289. package/deps/capstone/arch/XCore/XCoreInstPrinter.c +250 -0
  290. package/deps/capstone/arch/XCore/XCoreInstPrinter.h +18 -0
  291. package/deps/capstone/arch/XCore/XCoreMapping.c +297 -0
  292. package/deps/capstone/arch/XCore/XCoreMapping.h +26 -0
  293. package/deps/capstone/arch/XCore/XCoreMappingInsn.inc +1287 -0
  294. package/deps/capstone/arch/XCore/XCoreModule.c +41 -0
  295. package/deps/capstone/arch/XCore/XCoreModule.h +12 -0
  296. package/deps/capstone/cs.c +1664 -0
  297. package/deps/capstone/cs_priv.h +101 -0
  298. package/deps/capstone/cs_simple_types.h +886 -0
  299. package/deps/capstone/include/capstone/arm.h +991 -0
  300. package/deps/capstone/include/capstone/arm64.h +3159 -0
  301. package/deps/capstone/include/capstone/bpf.h +209 -0
  302. package/deps/capstone/include/capstone/capstone.h +875 -0
  303. package/deps/capstone/include/capstone/evm.h +188 -0
  304. package/deps/capstone/include/capstone/m680x.h +537 -0
  305. package/deps/capstone/include/capstone/m68k.h +613 -0
  306. package/deps/capstone/include/capstone/mips.h +956 -0
  307. package/deps/capstone/include/capstone/mos65xx.h +204 -0
  308. package/deps/capstone/include/capstone/platform.h +122 -0
  309. package/deps/capstone/include/capstone/ppc.h +2108 -0
  310. package/deps/capstone/include/capstone/riscv.h +531 -0
  311. package/deps/capstone/include/capstone/sh.h +465 -0
  312. package/deps/capstone/include/capstone/sparc.h +520 -0
  313. package/deps/capstone/include/capstone/systemz.h +2601 -0
  314. package/deps/capstone/include/capstone/tms320c64x.h +359 -0
  315. package/deps/capstone/include/capstone/tricore.h +567 -0
  316. package/deps/capstone/include/capstone/wasm.h +250 -0
  317. package/deps/capstone/include/capstone/x86.h +1986 -0
  318. package/deps/capstone/include/capstone/xcore.h +235 -0
  319. package/deps/capstone/include/platform.h +110 -0
  320. package/deps/capstone/include/windowsce/intrin.h +12 -0
  321. package/deps/capstone/include/windowsce/stdint.h +133 -0
  322. package/deps/capstone/utils.c +140 -0
  323. package/deps/capstone/utils.h +54 -0
  324. package/index.d.ts +448 -0
  325. package/index.js +64 -0
  326. package/index.mjs +25 -0
  327. package/package.json +82 -0
  328. package/prebuilds/win32-x64/hexcore-capstone.node +0 -0
  329. package/src/capstone_wrapper.cpp +910 -0
  330. package/src/capstone_wrapper.h +147 -0
  331. package/src/disasm_async_worker.h +215 -0
  332. package/src/main.cpp +145 -0
@@ -0,0 +1,2651 @@
1
+ /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2
+ |* *|
3
+ |* Assembly Writer Source Fragment *|
4
+ |* *|
5
+ |* Automatically generated file, do not edit! *|
6
+ |* *|
7
+ \*===----------------------------------------------------------------------===*/
8
+
9
+ /* Capstone Disassembly Engine */
10
+ /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */
11
+
12
+ #include <stdio.h> // debug
13
+ #include <capstone/platform.h>
14
+ #include <assert.h>
15
+
16
+
17
+ /// printInstruction - This method is automatically generated by tablegen
18
+ /// from the instruction set description.
19
+ static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
20
+ {
21
+ #ifndef CAPSTONE_DIET
22
+ static const char AsmStrs[] = {
23
+ /* 0 */ 'l', 'l', 'a', 9, 0,
24
+ /* 5 */ 's', 'f', 'e', 'n', 'c', 'e', '.', 'v', 'm', 'a', 9, 0,
25
+ /* 17 */ 's', 'r', 'a', 9, 0,
26
+ /* 22 */ 'l', 'b', 9, 0,
27
+ /* 26 */ 's', 'b', 9, 0,
28
+ /* 30 */ 'c', '.', 's', 'u', 'b', 9, 0,
29
+ /* 37 */ 'a', 'u', 'i', 'p', 'c', 9, 0,
30
+ /* 44 */ 'c', 's', 'r', 'r', 'c', 9, 0,
31
+ /* 51 */ 'f', 's', 'u', 'b', '.', 'd', 9, 0,
32
+ /* 59 */ 'f', 'm', 's', 'u', 'b', '.', 'd', 9, 0,
33
+ /* 68 */ 'f', 'n', 'm', 's', 'u', 'b', '.', 'd', 9, 0,
34
+ /* 78 */ 's', 'c', '.', 'd', 9, 0,
35
+ /* 84 */ 'f', 'a', 'd', 'd', '.', 'd', 9, 0,
36
+ /* 92 */ 'f', 'm', 'a', 'd', 'd', '.', 'd', 9, 0,
37
+ /* 101 */ 'f', 'n', 'm', 'a', 'd', 'd', '.', 'd', 9, 0,
38
+ /* 111 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'd', 9, 0,
39
+ /* 121 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'd', 9, 0,
40
+ /* 131 */ 'f', 'l', 'e', '.', 'd', 9, 0,
41
+ /* 138 */ 'f', 's', 'g', 'n', 'j', '.', 'd', 9, 0,
42
+ /* 147 */ 'f', 'c', 'v', 't', '.', 'l', '.', 'd', 9, 0,
43
+ /* 157 */ 'f', 'm', 'u', 'l', '.', 'd', 9, 0,
44
+ /* 165 */ 'f', 'm', 'i', 'n', '.', 'd', 9, 0,
45
+ /* 173 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'd', 9, 0,
46
+ /* 183 */ 'f', 's', 'g', 'n', 'j', 'n', '.', 'd', 9, 0,
47
+ /* 193 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'd', 9, 0,
48
+ /* 204 */ 'f', 'e', 'q', '.', 'd', 9, 0,
49
+ /* 211 */ 'l', 'r', '.', 'd', 9, 0,
50
+ /* 217 */ 'a', 'm', 'o', 'o', 'r', '.', 'd', 9, 0,
51
+ /* 226 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'd', 9, 0,
52
+ /* 236 */ 'f', 'c', 'v', 't', '.', 's', '.', 'd', 9, 0,
53
+ /* 246 */ 'f', 'c', 'l', 'a', 's', 's', '.', 'd', 9, 0,
54
+ /* 256 */ 'f', 'l', 't', '.', 'd', 9, 0,
55
+ /* 263 */ 'f', 's', 'q', 'r', 't', '.', 'd', 9, 0,
56
+ /* 272 */ 'f', 'c', 'v', 't', '.', 'l', 'u', '.', 'd', 9, 0,
57
+ /* 283 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'd', 9, 0,
58
+ /* 294 */ 'f', 'c', 'v', 't', '.', 'w', 'u', '.', 'd', 9, 0,
59
+ /* 305 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'd', 9, 0,
60
+ /* 316 */ 'f', 'd', 'i', 'v', '.', 'd', 9, 0,
61
+ /* 324 */ 'f', 'c', 'v', 't', '.', 'w', '.', 'd', 9, 0,
62
+ /* 334 */ 'f', 'm', 'v', '.', 'x', '.', 'd', 9, 0,
63
+ /* 343 */ 'f', 'm', 'a', 'x', '.', 'd', 9, 0,
64
+ /* 351 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'd', 9, 0,
65
+ /* 361 */ 'f', 's', 'g', 'n', 'j', 'x', '.', 'd', 9, 0,
66
+ /* 371 */ 'c', '.', 'a', 'd', 'd', 9, 0,
67
+ /* 378 */ 'c', '.', 'l', 'd', 9, 0,
68
+ /* 384 */ 'c', '.', 'f', 'l', 'd', 9, 0,
69
+ /* 391 */ 'c', '.', 'a', 'n', 'd', 9, 0,
70
+ /* 398 */ 'c', '.', 's', 'd', 9, 0,
71
+ /* 404 */ 'c', '.', 'f', 's', 'd', 9, 0,
72
+ /* 411 */ 'f', 'e', 'n', 'c', 'e', 9, 0,
73
+ /* 418 */ 'b', 'g', 'e', 9, 0,
74
+ /* 423 */ 'b', 'n', 'e', 9, 0,
75
+ /* 428 */ 'm', 'u', 'l', 'h', 9, 0,
76
+ /* 434 */ 's', 'h', 9, 0,
77
+ /* 438 */ 'f', 'e', 'n', 'c', 'e', '.', 'i', 9, 0,
78
+ /* 447 */ 'c', '.', 's', 'r', 'a', 'i', 9, 0,
79
+ /* 455 */ 'c', 's', 'r', 'r', 'c', 'i', 9, 0,
80
+ /* 463 */ 'c', '.', 'a', 'd', 'd', 'i', 9, 0,
81
+ /* 471 */ 'c', '.', 'a', 'n', 'd', 'i', 9, 0,
82
+ /* 479 */ 'w', 'f', 'i', 9, 0,
83
+ /* 484 */ 'c', '.', 'l', 'i', 9, 0,
84
+ /* 490 */ 'c', '.', 's', 'l', 'l', 'i', 9, 0,
85
+ /* 498 */ 'c', '.', 's', 'r', 'l', 'i', 9, 0,
86
+ /* 506 */ 'x', 'o', 'r', 'i', 9, 0,
87
+ /* 512 */ 'c', 's', 'r', 'r', 's', 'i', 9, 0,
88
+ /* 520 */ 's', 'l', 't', 'i', 9, 0,
89
+ /* 526 */ 'c', '.', 'l', 'u', 'i', 9, 0,
90
+ /* 533 */ 'c', 's', 'r', 'r', 'w', 'i', 9, 0,
91
+ /* 541 */ 'c', '.', 'j', 9, 0,
92
+ /* 546 */ 'c', '.', 'e', 'b', 'r', 'e', 'a', 'k', 9, 0,
93
+ /* 556 */ 'f', 'c', 'v', 't', '.', 'd', '.', 'l', 9, 0,
94
+ /* 566 */ 'f', 'c', 'v', 't', '.', 's', '.', 'l', 9, 0,
95
+ /* 576 */ 'c', '.', 'j', 'a', 'l', 9, 0,
96
+ /* 583 */ 't', 'a', 'i', 'l', 9, 0,
97
+ /* 589 */ 'e', 'c', 'a', 'l', 'l', 9, 0,
98
+ /* 596 */ 's', 'l', 'l', 9, 0,
99
+ /* 601 */ 's', 'c', '.', 'd', '.', 'r', 'l', 9, 0,
100
+ /* 610 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'd', '.', 'r', 'l', 9, 0,
101
+ /* 623 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'd', '.', 'r', 'l', 9, 0,
102
+ /* 636 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'd', '.', 'r', 'l', 9, 0,
103
+ /* 649 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'd', '.', 'r', 'l', 9, 0,
104
+ /* 663 */ 'l', 'r', '.', 'd', '.', 'r', 'l', 9, 0,
105
+ /* 672 */ 'a', 'm', 'o', 'o', 'r', '.', 'd', '.', 'r', 'l', 9, 0,
106
+ /* 684 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'd', '.', 'r', 'l', 9, 0,
107
+ /* 697 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'd', '.', 'r', 'l', 9, 0,
108
+ /* 711 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'd', '.', 'r', 'l', 9, 0,
109
+ /* 725 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'd', '.', 'r', 'l', 9, 0,
110
+ /* 738 */ 's', 'c', '.', 'w', '.', 'r', 'l', 9, 0,
111
+ /* 747 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'w', '.', 'r', 'l', 9, 0,
112
+ /* 760 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'w', '.', 'r', 'l', 9, 0,
113
+ /* 773 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'w', '.', 'r', 'l', 9, 0,
114
+ /* 786 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'w', '.', 'r', 'l', 9, 0,
115
+ /* 800 */ 'l', 'r', '.', 'w', '.', 'r', 'l', 9, 0,
116
+ /* 809 */ 'a', 'm', 'o', 'o', 'r', '.', 'w', '.', 'r', 'l', 9, 0,
117
+ /* 821 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'w', '.', 'r', 'l', 9, 0,
118
+ /* 834 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'w', '.', 'r', 'l', 9, 0,
119
+ /* 848 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'w', '.', 'r', 'l', 9, 0,
120
+ /* 862 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'w', '.', 'r', 'l', 9, 0,
121
+ /* 875 */ 's', 'c', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
122
+ /* 886 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
123
+ /* 901 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
124
+ /* 916 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
125
+ /* 931 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
126
+ /* 947 */ 'l', 'r', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
127
+ /* 958 */ 'a', 'm', 'o', 'o', 'r', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
128
+ /* 972 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
129
+ /* 987 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
130
+ /* 1003 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
131
+ /* 1019 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
132
+ /* 1034 */ 's', 'c', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
133
+ /* 1045 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
134
+ /* 1060 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
135
+ /* 1075 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
136
+ /* 1090 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
137
+ /* 1106 */ 'l', 'r', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
138
+ /* 1117 */ 'a', 'm', 'o', 'o', 'r', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
139
+ /* 1131 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
140
+ /* 1146 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
141
+ /* 1162 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
142
+ /* 1178 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
143
+ /* 1193 */ 's', 'r', 'l', 9, 0,
144
+ /* 1198 */ 'm', 'u', 'l', 9, 0,
145
+ /* 1203 */ 'r', 'e', 'm', 9, 0,
146
+ /* 1208 */ 'c', '.', 'a', 'd', 'd', 'i', '4', 's', 'p', 'n', 9, 0,
147
+ /* 1220 */ 'f', 'e', 'n', 'c', 'e', '.', 't', 's', 'o', 9, 0,
148
+ /* 1231 */ 'c', '.', 'u', 'n', 'i', 'm', 'p', 9, 0,
149
+ /* 1240 */ 'c', '.', 'n', 'o', 'p', 9, 0,
150
+ /* 1247 */ 'c', '.', 'a', 'd', 'd', 'i', '1', '6', 's', 'p', 9, 0,
151
+ /* 1259 */ 'c', '.', 'l', 'd', 's', 'p', 9, 0,
152
+ /* 1267 */ 'c', '.', 'f', 'l', 'd', 's', 'p', 9, 0,
153
+ /* 1276 */ 'c', '.', 's', 'd', 's', 'p', 9, 0,
154
+ /* 1284 */ 'c', '.', 'f', 's', 'd', 's', 'p', 9, 0,
155
+ /* 1293 */ 'c', '.', 'l', 'w', 's', 'p', 9, 0,
156
+ /* 1301 */ 'c', '.', 'f', 'l', 'w', 's', 'p', 9, 0,
157
+ /* 1310 */ 'c', '.', 's', 'w', 's', 'p', 9, 0,
158
+ /* 1318 */ 'c', '.', 'f', 's', 'w', 's', 'p', 9, 0,
159
+ /* 1327 */ 's', 'c', '.', 'd', '.', 'a', 'q', 9, 0,
160
+ /* 1336 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'd', '.', 'a', 'q', 9, 0,
161
+ /* 1349 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'd', '.', 'a', 'q', 9, 0,
162
+ /* 1362 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'd', '.', 'a', 'q', 9, 0,
163
+ /* 1375 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'd', '.', 'a', 'q', 9, 0,
164
+ /* 1389 */ 'l', 'r', '.', 'd', '.', 'a', 'q', 9, 0,
165
+ /* 1398 */ 'a', 'm', 'o', 'o', 'r', '.', 'd', '.', 'a', 'q', 9, 0,
166
+ /* 1410 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'd', '.', 'a', 'q', 9, 0,
167
+ /* 1423 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'd', '.', 'a', 'q', 9, 0,
168
+ /* 1437 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'd', '.', 'a', 'q', 9, 0,
169
+ /* 1451 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'd', '.', 'a', 'q', 9, 0,
170
+ /* 1464 */ 's', 'c', '.', 'w', '.', 'a', 'q', 9, 0,
171
+ /* 1473 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'w', '.', 'a', 'q', 9, 0,
172
+ /* 1486 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'w', '.', 'a', 'q', 9, 0,
173
+ /* 1499 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'w', '.', 'a', 'q', 9, 0,
174
+ /* 1512 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'w', '.', 'a', 'q', 9, 0,
175
+ /* 1526 */ 'l', 'r', '.', 'w', '.', 'a', 'q', 9, 0,
176
+ /* 1535 */ 'a', 'm', 'o', 'o', 'r', '.', 'w', '.', 'a', 'q', 9, 0,
177
+ /* 1547 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'w', '.', 'a', 'q', 9, 0,
178
+ /* 1560 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'w', '.', 'a', 'q', 9, 0,
179
+ /* 1574 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'w', '.', 'a', 'q', 9, 0,
180
+ /* 1588 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'w', '.', 'a', 'q', 9, 0,
181
+ /* 1601 */ 'b', 'e', 'q', 9, 0,
182
+ /* 1606 */ 'c', '.', 'j', 'r', 9, 0,
183
+ /* 1612 */ 'c', '.', 'j', 'a', 'l', 'r', 9, 0,
184
+ /* 1620 */ 'c', '.', 'o', 'r', 9, 0,
185
+ /* 1626 */ 'c', '.', 'x', 'o', 'r', 9, 0,
186
+ /* 1633 */ 'f', 's', 'u', 'b', '.', 's', 9, 0,
187
+ /* 1641 */ 'f', 'm', 's', 'u', 'b', '.', 's', 9, 0,
188
+ /* 1650 */ 'f', 'n', 'm', 's', 'u', 'b', '.', 's', 9, 0,
189
+ /* 1660 */ 'f', 'c', 'v', 't', '.', 'd', '.', 's', 9, 0,
190
+ /* 1670 */ 'f', 'a', 'd', 'd', '.', 's', 9, 0,
191
+ /* 1678 */ 'f', 'm', 'a', 'd', 'd', '.', 's', 9, 0,
192
+ /* 1687 */ 'f', 'n', 'm', 'a', 'd', 'd', '.', 's', 9, 0,
193
+ /* 1697 */ 'f', 'l', 'e', '.', 's', 9, 0,
194
+ /* 1704 */ 'f', 's', 'g', 'n', 'j', '.', 's', 9, 0,
195
+ /* 1713 */ 'f', 'c', 'v', 't', '.', 'l', '.', 's', 9, 0,
196
+ /* 1723 */ 'f', 'm', 'u', 'l', '.', 's', 9, 0,
197
+ /* 1731 */ 'f', 'm', 'i', 'n', '.', 's', 9, 0,
198
+ /* 1739 */ 'f', 's', 'g', 'n', 'j', 'n', '.', 's', 9, 0,
199
+ /* 1749 */ 'f', 'e', 'q', '.', 's', 9, 0,
200
+ /* 1756 */ 'f', 'c', 'l', 'a', 's', 's', '.', 's', 9, 0,
201
+ /* 1766 */ 'f', 'l', 't', '.', 's', 9, 0,
202
+ /* 1773 */ 'f', 's', 'q', 'r', 't', '.', 's', 9, 0,
203
+ /* 1782 */ 'f', 'c', 'v', 't', '.', 'l', 'u', '.', 's', 9, 0,
204
+ /* 1793 */ 'f', 'c', 'v', 't', '.', 'w', 'u', '.', 's', 9, 0,
205
+ /* 1804 */ 'f', 'd', 'i', 'v', '.', 's', 9, 0,
206
+ /* 1812 */ 'f', 'c', 'v', 't', '.', 'w', '.', 's', 9, 0,
207
+ /* 1822 */ 'f', 'm', 'a', 'x', '.', 's', 9, 0,
208
+ /* 1830 */ 'f', 's', 'g', 'n', 'j', 'x', '.', 's', 9, 0,
209
+ /* 1840 */ 'c', 's', 'r', 'r', 's', 9, 0,
210
+ /* 1847 */ 'm', 'r', 'e', 't', 9, 0,
211
+ /* 1853 */ 's', 'r', 'e', 't', 9, 0,
212
+ /* 1859 */ 'u', 'r', 'e', 't', 9, 0,
213
+ /* 1865 */ 'b', 'l', 't', 9, 0,
214
+ /* 1870 */ 's', 'l', 't', 9, 0,
215
+ /* 1875 */ 'l', 'b', 'u', 9, 0,
216
+ /* 1880 */ 'b', 'g', 'e', 'u', 9, 0,
217
+ /* 1886 */ 'm', 'u', 'l', 'h', 'u', 9, 0,
218
+ /* 1893 */ 's', 'l', 't', 'i', 'u', 9, 0,
219
+ /* 1900 */ 'f', 'c', 'v', 't', '.', 'd', '.', 'l', 'u', 9, 0,
220
+ /* 1911 */ 'f', 'c', 'v', 't', '.', 's', '.', 'l', 'u', 9, 0,
221
+ /* 1922 */ 'r', 'e', 'm', 'u', 9, 0,
222
+ /* 1928 */ 'm', 'u', 'l', 'h', 's', 'u', 9, 0,
223
+ /* 1936 */ 'b', 'l', 't', 'u', 9, 0,
224
+ /* 1942 */ 's', 'l', 't', 'u', 9, 0,
225
+ /* 1948 */ 'd', 'i', 'v', 'u', 9, 0,
226
+ /* 1954 */ 'f', 'c', 'v', 't', '.', 'd', '.', 'w', 'u', 9, 0,
227
+ /* 1965 */ 'f', 'c', 'v', 't', '.', 's', '.', 'w', 'u', 9, 0,
228
+ /* 1976 */ 'l', 'w', 'u', 9, 0,
229
+ /* 1981 */ 'd', 'i', 'v', 9, 0,
230
+ /* 1986 */ 'c', '.', 'm', 'v', 9, 0,
231
+ /* 1992 */ 's', 'c', '.', 'w', 9, 0,
232
+ /* 1998 */ 'f', 'c', 'v', 't', '.', 'd', '.', 'w', 9, 0,
233
+ /* 2008 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'w', 9, 0,
234
+ /* 2018 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'w', 9, 0,
235
+ /* 2028 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'w', 9, 0,
236
+ /* 2038 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'w', 9, 0,
237
+ /* 2049 */ 'l', 'r', '.', 'w', 9, 0,
238
+ /* 2055 */ 'a', 'm', 'o', 'o', 'r', '.', 'w', 9, 0,
239
+ /* 2064 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'w', 9, 0,
240
+ /* 2074 */ 'f', 'c', 'v', 't', '.', 's', '.', 'w', 9, 0,
241
+ /* 2084 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'w', 9, 0,
242
+ /* 2095 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'w', 9, 0,
243
+ /* 2106 */ 'f', 'm', 'v', '.', 'x', '.', 'w', 9, 0,
244
+ /* 2115 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'w', 9, 0,
245
+ /* 2125 */ 's', 'r', 'a', 'w', 9, 0,
246
+ /* 2131 */ 'c', '.', 's', 'u', 'b', 'w', 9, 0,
247
+ /* 2139 */ 'c', '.', 'a', 'd', 'd', 'w', 9, 0,
248
+ /* 2147 */ 's', 'r', 'a', 'i', 'w', 9, 0,
249
+ /* 2154 */ 'c', '.', 'a', 'd', 'd', 'i', 'w', 9, 0,
250
+ /* 2163 */ 's', 'l', 'l', 'i', 'w', 9, 0,
251
+ /* 2170 */ 's', 'r', 'l', 'i', 'w', 9, 0,
252
+ /* 2177 */ 'c', '.', 'l', 'w', 9, 0,
253
+ /* 2183 */ 'c', '.', 'f', 'l', 'w', 9, 0,
254
+ /* 2190 */ 's', 'l', 'l', 'w', 9, 0,
255
+ /* 2196 */ 's', 'r', 'l', 'w', 9, 0,
256
+ /* 2202 */ 'm', 'u', 'l', 'w', 9, 0,
257
+ /* 2208 */ 'r', 'e', 'm', 'w', 9, 0,
258
+ /* 2214 */ 'c', 's', 'r', 'r', 'w', 9, 0,
259
+ /* 2221 */ 'c', '.', 's', 'w', 9, 0,
260
+ /* 2227 */ 'c', '.', 'f', 's', 'w', 9, 0,
261
+ /* 2234 */ 'r', 'e', 'm', 'u', 'w', 9, 0,
262
+ /* 2241 */ 'd', 'i', 'v', 'u', 'w', 9, 0,
263
+ /* 2248 */ 'd', 'i', 'v', 'w', 9, 0,
264
+ /* 2254 */ 'f', 'm', 'v', '.', 'd', '.', 'x', 9, 0,
265
+ /* 2263 */ 'f', 'm', 'v', '.', 'w', '.', 'x', 9, 0,
266
+ /* 2272 */ 'c', '.', 'b', 'n', 'e', 'z', 9, 0,
267
+ /* 2280 */ 'c', '.', 'b', 'e', 'q', 'z', 9, 0,
268
+ /* 2288 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'P', 'a', 't', 'c', 'h', 'a', 'b', 'l', 'e', 32, 'R', 'E', 'T', '.', 0,
269
+ /* 2319 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'y', 'p', 'e', 'd', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
270
+ /* 2343 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'C', 'u', 's', 't', 'o', 'm', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
271
+ /* 2368 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'n', 't', 'e', 'r', '.', 0,
272
+ /* 2391 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'a', 'i', 'l', 32, 'C', 'a', 'l', 'l', 32, 'E', 'x', 'i', 't', '.', 0,
273
+ /* 2414 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'x', 'i', 't', '.', 0,
274
+ /* 2436 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'E', 'N', 'D', 0,
275
+ /* 2449 */ 'B', 'U', 'N', 'D', 'L', 'E', 0,
276
+ /* 2456 */ 'D', 'B', 'G', '_', 'V', 'A', 'L', 'U', 'E', 0,
277
+ /* 2466 */ 'D', 'B', 'G', '_', 'L', 'A', 'B', 'E', 'L', 0,
278
+ /* 2476 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'S', 'T', 'A', 'R', 'T', 0,
279
+ /* 2491 */ '#', 32, 'F', 'E', 'n', 't', 'r', 'y', 32, 'c', 'a', 'l', 'l', 0,
280
+ };
281
+ #endif
282
+
283
+ static const uint16_t OpInfo0[] = {
284
+ 0U, // PHI
285
+ 0U, // INLINEASM
286
+ 0U, // INLINEASM_BR
287
+ 0U, // CFI_INSTRUCTION
288
+ 0U, // EH_LABEL
289
+ 0U, // GC_LABEL
290
+ 0U, // ANNOTATION_LABEL
291
+ 0U, // KILL
292
+ 0U, // EXTRACT_SUBREG
293
+ 0U, // INSERT_SUBREG
294
+ 0U, // IMPLICIT_DEF
295
+ 0U, // SUBREG_TO_REG
296
+ 0U, // COPY_TO_REGCLASS
297
+ 2457U, // DBG_VALUE
298
+ 2467U, // DBG_LABEL
299
+ 0U, // REG_SEQUENCE
300
+ 0U, // COPY
301
+ 2450U, // BUNDLE
302
+ 2477U, // LIFETIME_START
303
+ 2437U, // LIFETIME_END
304
+ 0U, // STACKMAP
305
+ 2492U, // FENTRY_CALL
306
+ 0U, // PATCHPOINT
307
+ 0U, // LOAD_STACK_GUARD
308
+ 0U, // STATEPOINT
309
+ 0U, // LOCAL_ESCAPE
310
+ 0U, // FAULTING_OP
311
+ 0U, // PATCHABLE_OP
312
+ 2369U, // PATCHABLE_FUNCTION_ENTER
313
+ 2289U, // PATCHABLE_RET
314
+ 2415U, // PATCHABLE_FUNCTION_EXIT
315
+ 2392U, // PATCHABLE_TAIL_CALL
316
+ 2344U, // PATCHABLE_EVENT_CALL
317
+ 2320U, // PATCHABLE_TYPED_EVENT_CALL
318
+ 0U, // ICALL_BRANCH_FUNNEL
319
+ 0U, // G_ADD
320
+ 0U, // G_SUB
321
+ 0U, // G_MUL
322
+ 0U, // G_SDIV
323
+ 0U, // G_UDIV
324
+ 0U, // G_SREM
325
+ 0U, // G_UREM
326
+ 0U, // G_AND
327
+ 0U, // G_OR
328
+ 0U, // G_XOR
329
+ 0U, // G_IMPLICIT_DEF
330
+ 0U, // G_PHI
331
+ 0U, // G_FRAME_INDEX
332
+ 0U, // G_GLOBAL_VALUE
333
+ 0U, // G_EXTRACT
334
+ 0U, // G_UNMERGE_VALUES
335
+ 0U, // G_INSERT
336
+ 0U, // G_MERGE_VALUES
337
+ 0U, // G_BUILD_VECTOR
338
+ 0U, // G_BUILD_VECTOR_TRUNC
339
+ 0U, // G_CONCAT_VECTORS
340
+ 0U, // G_PTRTOINT
341
+ 0U, // G_INTTOPTR
342
+ 0U, // G_BITCAST
343
+ 0U, // G_INTRINSIC_TRUNC
344
+ 0U, // G_INTRINSIC_ROUND
345
+ 0U, // G_LOAD
346
+ 0U, // G_SEXTLOAD
347
+ 0U, // G_ZEXTLOAD
348
+ 0U, // G_STORE
349
+ 0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
350
+ 0U, // G_ATOMIC_CMPXCHG
351
+ 0U, // G_ATOMICRMW_XCHG
352
+ 0U, // G_ATOMICRMW_ADD
353
+ 0U, // G_ATOMICRMW_SUB
354
+ 0U, // G_ATOMICRMW_AND
355
+ 0U, // G_ATOMICRMW_NAND
356
+ 0U, // G_ATOMICRMW_OR
357
+ 0U, // G_ATOMICRMW_XOR
358
+ 0U, // G_ATOMICRMW_MAX
359
+ 0U, // G_ATOMICRMW_MIN
360
+ 0U, // G_ATOMICRMW_UMAX
361
+ 0U, // G_ATOMICRMW_UMIN
362
+ 0U, // G_BRCOND
363
+ 0U, // G_BRINDIRECT
364
+ 0U, // G_INTRINSIC
365
+ 0U, // G_INTRINSIC_W_SIDE_EFFECTS
366
+ 0U, // G_ANYEXT
367
+ 0U, // G_TRUNC
368
+ 0U, // G_CONSTANT
369
+ 0U, // G_FCONSTANT
370
+ 0U, // G_VASTART
371
+ 0U, // G_VAARG
372
+ 0U, // G_SEXT
373
+ 0U, // G_ZEXT
374
+ 0U, // G_SHL
375
+ 0U, // G_LSHR
376
+ 0U, // G_ASHR
377
+ 0U, // G_ICMP
378
+ 0U, // G_FCMP
379
+ 0U, // G_SELECT
380
+ 0U, // G_UADDO
381
+ 0U, // G_UADDE
382
+ 0U, // G_USUBO
383
+ 0U, // G_USUBE
384
+ 0U, // G_SADDO
385
+ 0U, // G_SADDE
386
+ 0U, // G_SSUBO
387
+ 0U, // G_SSUBE
388
+ 0U, // G_UMULO
389
+ 0U, // G_SMULO
390
+ 0U, // G_UMULH
391
+ 0U, // G_SMULH
392
+ 0U, // G_FADD
393
+ 0U, // G_FSUB
394
+ 0U, // G_FMUL
395
+ 0U, // G_FMA
396
+ 0U, // G_FDIV
397
+ 0U, // G_FREM
398
+ 0U, // G_FPOW
399
+ 0U, // G_FEXP
400
+ 0U, // G_FEXP2
401
+ 0U, // G_FLOG
402
+ 0U, // G_FLOG2
403
+ 0U, // G_FLOG10
404
+ 0U, // G_FNEG
405
+ 0U, // G_FPEXT
406
+ 0U, // G_FPTRUNC
407
+ 0U, // G_FPTOSI
408
+ 0U, // G_FPTOUI
409
+ 0U, // G_SITOFP
410
+ 0U, // G_UITOFP
411
+ 0U, // G_FABS
412
+ 0U, // G_FCANONICALIZE
413
+ 0U, // G_GEP
414
+ 0U, // G_PTR_MASK
415
+ 0U, // G_BR
416
+ 0U, // G_INSERT_VECTOR_ELT
417
+ 0U, // G_EXTRACT_VECTOR_ELT
418
+ 0U, // G_SHUFFLE_VECTOR
419
+ 0U, // G_CTTZ
420
+ 0U, // G_CTTZ_ZERO_UNDEF
421
+ 0U, // G_CTLZ
422
+ 0U, // G_CTLZ_ZERO_UNDEF
423
+ 0U, // G_CTPOP
424
+ 0U, // G_BSWAP
425
+ 0U, // G_FCEIL
426
+ 0U, // G_FCOS
427
+ 0U, // G_FSIN
428
+ 0U, // G_FSQRT
429
+ 0U, // G_FFLOOR
430
+ 0U, // G_ADDRSPACE_CAST
431
+ 0U, // G_BLOCK_ADDR
432
+ 4U, // ADJCALLSTACKDOWN
433
+ 4U, // ADJCALLSTACKUP
434
+ 4U, // BuildPairF64Pseudo
435
+ 4U, // PseudoAtomicLoadNand32
436
+ 4U, // PseudoAtomicLoadNand64
437
+ 4U, // PseudoBR
438
+ 4U, // PseudoBRIND
439
+ 4687U, // PseudoCALL
440
+ 4U, // PseudoCALLIndirect
441
+ 4U, // PseudoCmpXchg32
442
+ 4U, // PseudoCmpXchg64
443
+ 20482U, // PseudoLA
444
+ 20967U, // PseudoLI
445
+ 20481U, // PseudoLLA
446
+ 4U, // PseudoMaskedAtomicLoadAdd32
447
+ 4U, // PseudoMaskedAtomicLoadMax32
448
+ 4U, // PseudoMaskedAtomicLoadMin32
449
+ 4U, // PseudoMaskedAtomicLoadNand32
450
+ 4U, // PseudoMaskedAtomicLoadSub32
451
+ 4U, // PseudoMaskedAtomicLoadUMax32
452
+ 4U, // PseudoMaskedAtomicLoadUMin32
453
+ 4U, // PseudoMaskedAtomicSwap32
454
+ 4U, // PseudoMaskedCmpXchg32
455
+ 4U, // PseudoRET
456
+ 4680U, // PseudoTAIL
457
+ 4U, // PseudoTAILIndirect
458
+ 4U, // Select_FPR32_Using_CC_GPR
459
+ 4U, // Select_FPR64_Using_CC_GPR
460
+ 4U, // Select_GPR_Using_CC_GPR
461
+ 4U, // SplitF64Pseudo
462
+ 20854U, // ADD
463
+ 20946U, // ADDI
464
+ 22637U, // ADDIW
465
+ 22622U, // ADDW
466
+ 20592U, // AMOADD_D
467
+ 21817U, // AMOADD_D_AQ
468
+ 21367U, // AMOADD_D_AQ_RL
469
+ 21091U, // AMOADD_D_RL
470
+ 22489U, // AMOADD_W
471
+ 21954U, // AMOADD_W_AQ
472
+ 21526U, // AMOADD_W_AQ_RL
473
+ 21228U, // AMOADD_W_RL
474
+ 20602U, // AMOAND_D
475
+ 21830U, // AMOAND_D_AQ
476
+ 21382U, // AMOAND_D_AQ_RL
477
+ 21104U, // AMOAND_D_RL
478
+ 22499U, // AMOAND_W
479
+ 21967U, // AMOAND_W_AQ
480
+ 21541U, // AMOAND_W_AQ_RL
481
+ 21241U, // AMOAND_W_RL
482
+ 20786U, // AMOMAXU_D
483
+ 21918U, // AMOMAXU_D_AQ
484
+ 21484U, // AMOMAXU_D_AQ_RL
485
+ 21192U, // AMOMAXU_D_RL
486
+ 22576U, // AMOMAXU_W
487
+ 22055U, // AMOMAXU_W_AQ
488
+ 21643U, // AMOMAXU_W_AQ_RL
489
+ 21329U, // AMOMAXU_W_RL
490
+ 20832U, // AMOMAX_D
491
+ 21932U, // AMOMAX_D_AQ
492
+ 21500U, // AMOMAX_D_AQ_RL
493
+ 21206U, // AMOMAX_D_RL
494
+ 22596U, // AMOMAX_W
495
+ 22069U, // AMOMAX_W_AQ
496
+ 21659U, // AMOMAX_W_AQ_RL
497
+ 21343U, // AMOMAX_W_RL
498
+ 20764U, // AMOMINU_D
499
+ 21904U, // AMOMINU_D_AQ
500
+ 21468U, // AMOMINU_D_AQ_RL
501
+ 21178U, // AMOMINU_D_RL
502
+ 22565U, // AMOMINU_W
503
+ 22041U, // AMOMINU_W_AQ
504
+ 21627U, // AMOMINU_W_AQ_RL
505
+ 21315U, // AMOMINU_W_RL
506
+ 20654U, // AMOMIN_D
507
+ 21843U, // AMOMIN_D_AQ
508
+ 21397U, // AMOMIN_D_AQ_RL
509
+ 21117U, // AMOMIN_D_RL
510
+ 22509U, // AMOMIN_W
511
+ 21980U, // AMOMIN_W_AQ
512
+ 21556U, // AMOMIN_W_AQ_RL
513
+ 21254U, // AMOMIN_W_RL
514
+ 20698U, // AMOOR_D
515
+ 21879U, // AMOOR_D_AQ
516
+ 21439U, // AMOOR_D_AQ_RL
517
+ 21153U, // AMOOR_D_RL
518
+ 22536U, // AMOOR_W
519
+ 22016U, // AMOOR_W_AQ
520
+ 21598U, // AMOOR_W_AQ_RL
521
+ 21290U, // AMOOR_W_RL
522
+ 20674U, // AMOSWAP_D
523
+ 21856U, // AMOSWAP_D_AQ
524
+ 21412U, // AMOSWAP_D_AQ_RL
525
+ 21130U, // AMOSWAP_D_RL
526
+ 22519U, // AMOSWAP_W
527
+ 21993U, // AMOSWAP_W_AQ
528
+ 21571U, // AMOSWAP_W_AQ_RL
529
+ 21267U, // AMOSWAP_W_RL
530
+ 20707U, // AMOXOR_D
531
+ 21891U, // AMOXOR_D_AQ
532
+ 21453U, // AMOXOR_D_AQ_RL
533
+ 21165U, // AMOXOR_D_RL
534
+ 22545U, // AMOXOR_W
535
+ 22028U, // AMOXOR_W_AQ
536
+ 21612U, // AMOXOR_W_AQ_RL
537
+ 21302U, // AMOXOR_W_RL
538
+ 20874U, // AND
539
+ 20954U, // ANDI
540
+ 20518U, // AUIPC
541
+ 22082U, // BEQ
542
+ 20899U, // BGE
543
+ 22361U, // BGEU
544
+ 22346U, // BLT
545
+ 22417U, // BLTU
546
+ 20904U, // BNE
547
+ 20525U, // CSRRC
548
+ 20936U, // CSRRCI
549
+ 22321U, // CSRRS
550
+ 20993U, // CSRRSI
551
+ 22695U, // CSRRW
552
+ 21014U, // CSRRWI
553
+ 8564U, // C_ADD
554
+ 8656U, // C_ADDI
555
+ 9440U, // C_ADDI16SP
556
+ 21689U, // C_ADDI4SPN
557
+ 10347U, // C_ADDIW
558
+ 10332U, // C_ADDW
559
+ 8584U, // C_AND
560
+ 8664U, // C_ANDI
561
+ 22761U, // C_BEQZ
562
+ 22753U, // C_BNEZ
563
+ 547U, // C_EBREAK
564
+ 20865U, // C_FLD
565
+ 21748U, // C_FLDSP
566
+ 22664U, // C_FLW
567
+ 21782U, // C_FLWSP
568
+ 20885U, // C_FSD
569
+ 21765U, // C_FSDSP
570
+ 22708U, // C_FSW
571
+ 21799U, // C_FSWSP
572
+ 4638U, // C_J
573
+ 4673U, // C_JAL
574
+ 5709U, // C_JALR
575
+ 5703U, // C_JR
576
+ 20859U, // C_LD
577
+ 21740U, // C_LDSP
578
+ 20965U, // C_LI
579
+ 21007U, // C_LUI
580
+ 22658U, // C_LW
581
+ 21774U, // C_LWSP
582
+ 22467U, // C_MV
583
+ 1241U, // C_NOP
584
+ 9813U, // C_OR
585
+ 20879U, // C_SD
586
+ 21757U, // C_SDSP
587
+ 8683U, // C_SLLI
588
+ 8640U, // C_SRAI
589
+ 8691U, // C_SRLI
590
+ 8223U, // C_SUB
591
+ 10324U, // C_SUBW
592
+ 22702U, // C_SW
593
+ 21791U, // C_SWSP
594
+ 1232U, // C_UNIMP
595
+ 9819U, // C_XOR
596
+ 22462U, // DIV
597
+ 22429U, // DIVU
598
+ 22722U, // DIVUW
599
+ 22729U, // DIVW
600
+ 549U, // EBREAK
601
+ 590U, // ECALL
602
+ 20565U, // FADD_D
603
+ 22151U, // FADD_S
604
+ 20727U, // FCLASS_D
605
+ 22237U, // FCLASS_S
606
+ 21037U, // FCVT_D_L
607
+ 22381U, // FCVT_D_LU
608
+ 22141U, // FCVT_D_S
609
+ 22479U, // FCVT_D_W
610
+ 22435U, // FCVT_D_WU
611
+ 20753U, // FCVT_LU_D
612
+ 22263U, // FCVT_LU_S
613
+ 20628U, // FCVT_L_D
614
+ 22194U, // FCVT_L_S
615
+ 20717U, // FCVT_S_D
616
+ 21047U, // FCVT_S_L
617
+ 22392U, // FCVT_S_LU
618
+ 22555U, // FCVT_S_W
619
+ 22446U, // FCVT_S_WU
620
+ 20775U, // FCVT_WU_D
621
+ 22274U, // FCVT_WU_S
622
+ 20805U, // FCVT_W_D
623
+ 22293U, // FCVT_W_S
624
+ 20797U, // FDIV_D
625
+ 22285U, // FDIV_S
626
+ 12700U, // FENCE
627
+ 439U, // FENCE_I
628
+ 1221U, // FENCE_TSO
629
+ 20685U, // FEQ_D
630
+ 22230U, // FEQ_S
631
+ 20867U, // FLD
632
+ 20612U, // FLE_D
633
+ 22178U, // FLE_S
634
+ 20737U, // FLT_D
635
+ 22247U, // FLT_S
636
+ 22666U, // FLW
637
+ 20573U, // FMADD_D
638
+ 22159U, // FMADD_S
639
+ 20824U, // FMAX_D
640
+ 22303U, // FMAX_S
641
+ 20646U, // FMIN_D
642
+ 22212U, // FMIN_S
643
+ 20540U, // FMSUB_D
644
+ 22122U, // FMSUB_S
645
+ 20638U, // FMUL_D
646
+ 22204U, // FMUL_S
647
+ 22735U, // FMV_D_X
648
+ 22744U, // FMV_W_X
649
+ 20815U, // FMV_X_D
650
+ 22587U, // FMV_X_W
651
+ 20582U, // FNMADD_D
652
+ 22168U, // FNMADD_S
653
+ 20549U, // FNMSUB_D
654
+ 22131U, // FNMSUB_S
655
+ 20887U, // FSD
656
+ 20664U, // FSGNJN_D
657
+ 22220U, // FSGNJN_S
658
+ 20842U, // FSGNJX_D
659
+ 22311U, // FSGNJX_S
660
+ 20619U, // FSGNJ_D
661
+ 22185U, // FSGNJ_S
662
+ 20744U, // FSQRT_D
663
+ 22254U, // FSQRT_S
664
+ 20532U, // FSUB_D
665
+ 22114U, // FSUB_S
666
+ 22710U, // FSW
667
+ 21059U, // JAL
668
+ 22095U, // JALR
669
+ 20503U, // LB
670
+ 22356U, // LBU
671
+ 20861U, // LD
672
+ 20911U, // LH
673
+ 22369U, // LHU
674
+ 37076U, // LR_D
675
+ 38254U, // LR_D_AQ
676
+ 37812U, // LR_D_AQ_RL
677
+ 37528U, // LR_D_RL
678
+ 38914U, // LR_W
679
+ 38391U, // LR_W_AQ
680
+ 37971U, // LR_W_AQ_RL
681
+ 37665U, // LR_W_RL
682
+ 21009U, // LUI
683
+ 22660U, // LW
684
+ 22457U, // LWU
685
+ 1848U, // MRET
686
+ 21679U, // MUL
687
+ 20909U, // MULH
688
+ 22409U, // MULHSU
689
+ 22367U, // MULHU
690
+ 22683U, // MULW
691
+ 22103U, // OR
692
+ 20988U, // ORI
693
+ 21684U, // REM
694
+ 22403U, // REMU
695
+ 22715U, // REMUW
696
+ 22689U, // REMW
697
+ 20507U, // SB
698
+ 20559U, // SC_D
699
+ 21808U, // SC_D_AQ
700
+ 21356U, // SC_D_AQ_RL
701
+ 21082U, // SC_D_RL
702
+ 22473U, // SC_W
703
+ 21945U, // SC_W_AQ
704
+ 21515U, // SC_W_AQ_RL
705
+ 21219U, // SC_W_RL
706
+ 20881U, // SD
707
+ 20486U, // SFENCE_VMA
708
+ 20915U, // SH
709
+ 21077U, // SLL
710
+ 20973U, // SLLI
711
+ 22644U, // SLLIW
712
+ 22671U, // SLLW
713
+ 22351U, // SLT
714
+ 21001U, // SLTI
715
+ 22374U, // SLTIU
716
+ 22423U, // SLTU
717
+ 20498U, // SRA
718
+ 20930U, // SRAI
719
+ 22628U, // SRAIW
720
+ 22606U, // SRAW
721
+ 1854U, // SRET
722
+ 21674U, // SRL
723
+ 20981U, // SRLI
724
+ 22651U, // SRLIW
725
+ 22677U, // SRLW
726
+ 20513U, // SUB
727
+ 22614U, // SUBW
728
+ 22704U, // SW
729
+ 1234U, // UNIMP
730
+ 1860U, // URET
731
+ 480U, // WFI
732
+ 22109U, // XOR
733
+ 20987U, // XORI
734
+ };
735
+
736
+ static const uint8_t OpInfo1[] = {
737
+ 0U, // PHI
738
+ 0U, // INLINEASM
739
+ 0U, // INLINEASM_BR
740
+ 0U, // CFI_INSTRUCTION
741
+ 0U, // EH_LABEL
742
+ 0U, // GC_LABEL
743
+ 0U, // ANNOTATION_LABEL
744
+ 0U, // KILL
745
+ 0U, // EXTRACT_SUBREG
746
+ 0U, // INSERT_SUBREG
747
+ 0U, // IMPLICIT_DEF
748
+ 0U, // SUBREG_TO_REG
749
+ 0U, // COPY_TO_REGCLASS
750
+ 0U, // DBG_VALUE
751
+ 0U, // DBG_LABEL
752
+ 0U, // REG_SEQUENCE
753
+ 0U, // COPY
754
+ 0U, // BUNDLE
755
+ 0U, // LIFETIME_START
756
+ 0U, // LIFETIME_END
757
+ 0U, // STACKMAP
758
+ 0U, // FENTRY_CALL
759
+ 0U, // PATCHPOINT
760
+ 0U, // LOAD_STACK_GUARD
761
+ 0U, // STATEPOINT
762
+ 0U, // LOCAL_ESCAPE
763
+ 0U, // FAULTING_OP
764
+ 0U, // PATCHABLE_OP
765
+ 0U, // PATCHABLE_FUNCTION_ENTER
766
+ 0U, // PATCHABLE_RET
767
+ 0U, // PATCHABLE_FUNCTION_EXIT
768
+ 0U, // PATCHABLE_TAIL_CALL
769
+ 0U, // PATCHABLE_EVENT_CALL
770
+ 0U, // PATCHABLE_TYPED_EVENT_CALL
771
+ 0U, // ICALL_BRANCH_FUNNEL
772
+ 0U, // G_ADD
773
+ 0U, // G_SUB
774
+ 0U, // G_MUL
775
+ 0U, // G_SDIV
776
+ 0U, // G_UDIV
777
+ 0U, // G_SREM
778
+ 0U, // G_UREM
779
+ 0U, // G_AND
780
+ 0U, // G_OR
781
+ 0U, // G_XOR
782
+ 0U, // G_IMPLICIT_DEF
783
+ 0U, // G_PHI
784
+ 0U, // G_FRAME_INDEX
785
+ 0U, // G_GLOBAL_VALUE
786
+ 0U, // G_EXTRACT
787
+ 0U, // G_UNMERGE_VALUES
788
+ 0U, // G_INSERT
789
+ 0U, // G_MERGE_VALUES
790
+ 0U, // G_BUILD_VECTOR
791
+ 0U, // G_BUILD_VECTOR_TRUNC
792
+ 0U, // G_CONCAT_VECTORS
793
+ 0U, // G_PTRTOINT
794
+ 0U, // G_INTTOPTR
795
+ 0U, // G_BITCAST
796
+ 0U, // G_INTRINSIC_TRUNC
797
+ 0U, // G_INTRINSIC_ROUND
798
+ 0U, // G_LOAD
799
+ 0U, // G_SEXTLOAD
800
+ 0U, // G_ZEXTLOAD
801
+ 0U, // G_STORE
802
+ 0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
803
+ 0U, // G_ATOMIC_CMPXCHG
804
+ 0U, // G_ATOMICRMW_XCHG
805
+ 0U, // G_ATOMICRMW_ADD
806
+ 0U, // G_ATOMICRMW_SUB
807
+ 0U, // G_ATOMICRMW_AND
808
+ 0U, // G_ATOMICRMW_NAND
809
+ 0U, // G_ATOMICRMW_OR
810
+ 0U, // G_ATOMICRMW_XOR
811
+ 0U, // G_ATOMICRMW_MAX
812
+ 0U, // G_ATOMICRMW_MIN
813
+ 0U, // G_ATOMICRMW_UMAX
814
+ 0U, // G_ATOMICRMW_UMIN
815
+ 0U, // G_BRCOND
816
+ 0U, // G_BRINDIRECT
817
+ 0U, // G_INTRINSIC
818
+ 0U, // G_INTRINSIC_W_SIDE_EFFECTS
819
+ 0U, // G_ANYEXT
820
+ 0U, // G_TRUNC
821
+ 0U, // G_CONSTANT
822
+ 0U, // G_FCONSTANT
823
+ 0U, // G_VASTART
824
+ 0U, // G_VAARG
825
+ 0U, // G_SEXT
826
+ 0U, // G_ZEXT
827
+ 0U, // G_SHL
828
+ 0U, // G_LSHR
829
+ 0U, // G_ASHR
830
+ 0U, // G_ICMP
831
+ 0U, // G_FCMP
832
+ 0U, // G_SELECT
833
+ 0U, // G_UADDO
834
+ 0U, // G_UADDE
835
+ 0U, // G_USUBO
836
+ 0U, // G_USUBE
837
+ 0U, // G_SADDO
838
+ 0U, // G_SADDE
839
+ 0U, // G_SSUBO
840
+ 0U, // G_SSUBE
841
+ 0U, // G_UMULO
842
+ 0U, // G_SMULO
843
+ 0U, // G_UMULH
844
+ 0U, // G_SMULH
845
+ 0U, // G_FADD
846
+ 0U, // G_FSUB
847
+ 0U, // G_FMUL
848
+ 0U, // G_FMA
849
+ 0U, // G_FDIV
850
+ 0U, // G_FREM
851
+ 0U, // G_FPOW
852
+ 0U, // G_FEXP
853
+ 0U, // G_FEXP2
854
+ 0U, // G_FLOG
855
+ 0U, // G_FLOG2
856
+ 0U, // G_FLOG10
857
+ 0U, // G_FNEG
858
+ 0U, // G_FPEXT
859
+ 0U, // G_FPTRUNC
860
+ 0U, // G_FPTOSI
861
+ 0U, // G_FPTOUI
862
+ 0U, // G_SITOFP
863
+ 0U, // G_UITOFP
864
+ 0U, // G_FABS
865
+ 0U, // G_FCANONICALIZE
866
+ 0U, // G_GEP
867
+ 0U, // G_PTR_MASK
868
+ 0U, // G_BR
869
+ 0U, // G_INSERT_VECTOR_ELT
870
+ 0U, // G_EXTRACT_VECTOR_ELT
871
+ 0U, // G_SHUFFLE_VECTOR
872
+ 0U, // G_CTTZ
873
+ 0U, // G_CTTZ_ZERO_UNDEF
874
+ 0U, // G_CTLZ
875
+ 0U, // G_CTLZ_ZERO_UNDEF
876
+ 0U, // G_CTPOP
877
+ 0U, // G_BSWAP
878
+ 0U, // G_FCEIL
879
+ 0U, // G_FCOS
880
+ 0U, // G_FSIN
881
+ 0U, // G_FSQRT
882
+ 0U, // G_FFLOOR
883
+ 0U, // G_ADDRSPACE_CAST
884
+ 0U, // G_BLOCK_ADDR
885
+ 0U, // ADJCALLSTACKDOWN
886
+ 0U, // ADJCALLSTACKUP
887
+ 0U, // BuildPairF64Pseudo
888
+ 0U, // PseudoAtomicLoadNand32
889
+ 0U, // PseudoAtomicLoadNand64
890
+ 0U, // PseudoBR
891
+ 0U, // PseudoBRIND
892
+ 0U, // PseudoCALL
893
+ 0U, // PseudoCALLIndirect
894
+ 0U, // PseudoCmpXchg32
895
+ 0U, // PseudoCmpXchg64
896
+ 0U, // PseudoLA
897
+ 0U, // PseudoLI
898
+ 0U, // PseudoLLA
899
+ 0U, // PseudoMaskedAtomicLoadAdd32
900
+ 0U, // PseudoMaskedAtomicLoadMax32
901
+ 0U, // PseudoMaskedAtomicLoadMin32
902
+ 0U, // PseudoMaskedAtomicLoadNand32
903
+ 0U, // PseudoMaskedAtomicLoadSub32
904
+ 0U, // PseudoMaskedAtomicLoadUMax32
905
+ 0U, // PseudoMaskedAtomicLoadUMin32
906
+ 0U, // PseudoMaskedAtomicSwap32
907
+ 0U, // PseudoMaskedCmpXchg32
908
+ 0U, // PseudoRET
909
+ 0U, // PseudoTAIL
910
+ 0U, // PseudoTAILIndirect
911
+ 0U, // Select_FPR32_Using_CC_GPR
912
+ 0U, // Select_FPR64_Using_CC_GPR
913
+ 0U, // Select_GPR_Using_CC_GPR
914
+ 0U, // SplitF64Pseudo
915
+ 4U, // ADD
916
+ 4U, // ADDI
917
+ 4U, // ADDIW
918
+ 4U, // ADDW
919
+ 9U, // AMOADD_D
920
+ 9U, // AMOADD_D_AQ
921
+ 9U, // AMOADD_D_AQ_RL
922
+ 9U, // AMOADD_D_RL
923
+ 9U, // AMOADD_W
924
+ 9U, // AMOADD_W_AQ
925
+ 9U, // AMOADD_W_AQ_RL
926
+ 9U, // AMOADD_W_RL
927
+ 9U, // AMOAND_D
928
+ 9U, // AMOAND_D_AQ
929
+ 9U, // AMOAND_D_AQ_RL
930
+ 9U, // AMOAND_D_RL
931
+ 9U, // AMOAND_W
932
+ 9U, // AMOAND_W_AQ
933
+ 9U, // AMOAND_W_AQ_RL
934
+ 9U, // AMOAND_W_RL
935
+ 9U, // AMOMAXU_D
936
+ 9U, // AMOMAXU_D_AQ
937
+ 9U, // AMOMAXU_D_AQ_RL
938
+ 9U, // AMOMAXU_D_RL
939
+ 9U, // AMOMAXU_W
940
+ 9U, // AMOMAXU_W_AQ
941
+ 9U, // AMOMAXU_W_AQ_RL
942
+ 9U, // AMOMAXU_W_RL
943
+ 9U, // AMOMAX_D
944
+ 9U, // AMOMAX_D_AQ
945
+ 9U, // AMOMAX_D_AQ_RL
946
+ 9U, // AMOMAX_D_RL
947
+ 9U, // AMOMAX_W
948
+ 9U, // AMOMAX_W_AQ
949
+ 9U, // AMOMAX_W_AQ_RL
950
+ 9U, // AMOMAX_W_RL
951
+ 9U, // AMOMINU_D
952
+ 9U, // AMOMINU_D_AQ
953
+ 9U, // AMOMINU_D_AQ_RL
954
+ 9U, // AMOMINU_D_RL
955
+ 9U, // AMOMINU_W
956
+ 9U, // AMOMINU_W_AQ
957
+ 9U, // AMOMINU_W_AQ_RL
958
+ 9U, // AMOMINU_W_RL
959
+ 9U, // AMOMIN_D
960
+ 9U, // AMOMIN_D_AQ
961
+ 9U, // AMOMIN_D_AQ_RL
962
+ 9U, // AMOMIN_D_RL
963
+ 9U, // AMOMIN_W
964
+ 9U, // AMOMIN_W_AQ
965
+ 9U, // AMOMIN_W_AQ_RL
966
+ 9U, // AMOMIN_W_RL
967
+ 9U, // AMOOR_D
968
+ 9U, // AMOOR_D_AQ
969
+ 9U, // AMOOR_D_AQ_RL
970
+ 9U, // AMOOR_D_RL
971
+ 9U, // AMOOR_W
972
+ 9U, // AMOOR_W_AQ
973
+ 9U, // AMOOR_W_AQ_RL
974
+ 9U, // AMOOR_W_RL
975
+ 9U, // AMOSWAP_D
976
+ 9U, // AMOSWAP_D_AQ
977
+ 9U, // AMOSWAP_D_AQ_RL
978
+ 9U, // AMOSWAP_D_RL
979
+ 9U, // AMOSWAP_W
980
+ 9U, // AMOSWAP_W_AQ
981
+ 9U, // AMOSWAP_W_AQ_RL
982
+ 9U, // AMOSWAP_W_RL
983
+ 9U, // AMOXOR_D
984
+ 9U, // AMOXOR_D_AQ
985
+ 9U, // AMOXOR_D_AQ_RL
986
+ 9U, // AMOXOR_D_RL
987
+ 9U, // AMOXOR_W
988
+ 9U, // AMOXOR_W_AQ
989
+ 9U, // AMOXOR_W_AQ_RL
990
+ 9U, // AMOXOR_W_RL
991
+ 4U, // AND
992
+ 4U, // ANDI
993
+ 0U, // AUIPC
994
+ 4U, // BEQ
995
+ 4U, // BGE
996
+ 4U, // BGEU
997
+ 4U, // BLT
998
+ 4U, // BLTU
999
+ 4U, // BNE
1000
+ 2U, // CSRRC
1001
+ 2U, // CSRRCI
1002
+ 2U, // CSRRS
1003
+ 2U, // CSRRSI
1004
+ 2U, // CSRRW
1005
+ 2U, // CSRRWI
1006
+ 0U, // C_ADD
1007
+ 0U, // C_ADDI
1008
+ 0U, // C_ADDI16SP
1009
+ 4U, // C_ADDI4SPN
1010
+ 0U, // C_ADDIW
1011
+ 0U, // C_ADDW
1012
+ 0U, // C_AND
1013
+ 0U, // C_ANDI
1014
+ 0U, // C_BEQZ
1015
+ 0U, // C_BNEZ
1016
+ 0U, // C_EBREAK
1017
+ 13U, // C_FLD
1018
+ 13U, // C_FLDSP
1019
+ 13U, // C_FLW
1020
+ 13U, // C_FLWSP
1021
+ 13U, // C_FSD
1022
+ 13U, // C_FSDSP
1023
+ 13U, // C_FSW
1024
+ 13U, // C_FSWSP
1025
+ 0U, // C_J
1026
+ 0U, // C_JAL
1027
+ 0U, // C_JALR
1028
+ 0U, // C_JR
1029
+ 13U, // C_LD
1030
+ 13U, // C_LDSP
1031
+ 0U, // C_LI
1032
+ 0U, // C_LUI
1033
+ 13U, // C_LW
1034
+ 13U, // C_LWSP
1035
+ 0U, // C_MV
1036
+ 0U, // C_NOP
1037
+ 0U, // C_OR
1038
+ 13U, // C_SD
1039
+ 13U, // C_SDSP
1040
+ 0U, // C_SLLI
1041
+ 0U, // C_SRAI
1042
+ 0U, // C_SRLI
1043
+ 0U, // C_SUB
1044
+ 0U, // C_SUBW
1045
+ 13U, // C_SW
1046
+ 13U, // C_SWSP
1047
+ 0U, // C_UNIMP
1048
+ 0U, // C_XOR
1049
+ 4U, // DIV
1050
+ 4U, // DIVU
1051
+ 4U, // DIVUW
1052
+ 4U, // DIVW
1053
+ 0U, // EBREAK
1054
+ 0U, // ECALL
1055
+ 36U, // FADD_D
1056
+ 36U, // FADD_S
1057
+ 0U, // FCLASS_D
1058
+ 0U, // FCLASS_S
1059
+ 20U, // FCVT_D_L
1060
+ 20U, // FCVT_D_LU
1061
+ 0U, // FCVT_D_S
1062
+ 0U, // FCVT_D_W
1063
+ 0U, // FCVT_D_WU
1064
+ 20U, // FCVT_LU_D
1065
+ 20U, // FCVT_LU_S
1066
+ 20U, // FCVT_L_D
1067
+ 20U, // FCVT_L_S
1068
+ 20U, // FCVT_S_D
1069
+ 20U, // FCVT_S_L
1070
+ 20U, // FCVT_S_LU
1071
+ 20U, // FCVT_S_W
1072
+ 20U, // FCVT_S_WU
1073
+ 20U, // FCVT_WU_D
1074
+ 20U, // FCVT_WU_S
1075
+ 20U, // FCVT_W_D
1076
+ 20U, // FCVT_W_S
1077
+ 36U, // FDIV_D
1078
+ 36U, // FDIV_S
1079
+ 0U, // FENCE
1080
+ 0U, // FENCE_I
1081
+ 0U, // FENCE_TSO
1082
+ 4U, // FEQ_D
1083
+ 4U, // FEQ_S
1084
+ 13U, // FLD
1085
+ 4U, // FLE_D
1086
+ 4U, // FLE_S
1087
+ 4U, // FLT_D
1088
+ 4U, // FLT_S
1089
+ 13U, // FLW
1090
+ 100U, // FMADD_D
1091
+ 100U, // FMADD_S
1092
+ 4U, // FMAX_D
1093
+ 4U, // FMAX_S
1094
+ 4U, // FMIN_D
1095
+ 4U, // FMIN_S
1096
+ 100U, // FMSUB_D
1097
+ 100U, // FMSUB_S
1098
+ 36U, // FMUL_D
1099
+ 36U, // FMUL_S
1100
+ 0U, // FMV_D_X
1101
+ 0U, // FMV_W_X
1102
+ 0U, // FMV_X_D
1103
+ 0U, // FMV_X_W
1104
+ 100U, // FNMADD_D
1105
+ 100U, // FNMADD_S
1106
+ 100U, // FNMSUB_D
1107
+ 100U, // FNMSUB_S
1108
+ 13U, // FSD
1109
+ 4U, // FSGNJN_D
1110
+ 4U, // FSGNJN_S
1111
+ 4U, // FSGNJX_D
1112
+ 4U, // FSGNJX_S
1113
+ 4U, // FSGNJ_D
1114
+ 4U, // FSGNJ_S
1115
+ 20U, // FSQRT_D
1116
+ 20U, // FSQRT_S
1117
+ 36U, // FSUB_D
1118
+ 36U, // FSUB_S
1119
+ 13U, // FSW
1120
+ 0U, // JAL
1121
+ 4U, // JALR
1122
+ 13U, // LB
1123
+ 13U, // LBU
1124
+ 13U, // LD
1125
+ 13U, // LH
1126
+ 13U, // LHU
1127
+ 0U, // LR_D
1128
+ 0U, // LR_D_AQ
1129
+ 0U, // LR_D_AQ_RL
1130
+ 0U, // LR_D_RL
1131
+ 0U, // LR_W
1132
+ 0U, // LR_W_AQ
1133
+ 0U, // LR_W_AQ_RL
1134
+ 0U, // LR_W_RL
1135
+ 0U, // LUI
1136
+ 13U, // LW
1137
+ 13U, // LWU
1138
+ 0U, // MRET
1139
+ 4U, // MUL
1140
+ 4U, // MULH
1141
+ 4U, // MULHSU
1142
+ 4U, // MULHU
1143
+ 4U, // MULW
1144
+ 4U, // OR
1145
+ 4U, // ORI
1146
+ 4U, // REM
1147
+ 4U, // REMU
1148
+ 4U, // REMUW
1149
+ 4U, // REMW
1150
+ 13U, // SB
1151
+ 9U, // SC_D
1152
+ 9U, // SC_D_AQ
1153
+ 9U, // SC_D_AQ_RL
1154
+ 9U, // SC_D_RL
1155
+ 9U, // SC_W
1156
+ 9U, // SC_W_AQ
1157
+ 9U, // SC_W_AQ_RL
1158
+ 9U, // SC_W_RL
1159
+ 13U, // SD
1160
+ 0U, // SFENCE_VMA
1161
+ 13U, // SH
1162
+ 4U, // SLL
1163
+ 4U, // SLLI
1164
+ 4U, // SLLIW
1165
+ 4U, // SLLW
1166
+ 4U, // SLT
1167
+ 4U, // SLTI
1168
+ 4U, // SLTIU
1169
+ 4U, // SLTU
1170
+ 4U, // SRA
1171
+ 4U, // SRAI
1172
+ 4U, // SRAIW
1173
+ 4U, // SRAW
1174
+ 0U, // SRET
1175
+ 4U, // SRL
1176
+ 4U, // SRLI
1177
+ 4U, // SRLIW
1178
+ 4U, // SRLW
1179
+ 4U, // SUB
1180
+ 4U, // SUBW
1181
+ 13U, // SW
1182
+ 0U, // UNIMP
1183
+ 0U, // URET
1184
+ 0U, // WFI
1185
+ 4U, // XOR
1186
+ 4U, // XORI
1187
+ };
1188
+
1189
+ // Emit the opcode for the instruction.
1190
+ uint32_t Bits = 0;
1191
+ Bits |= OpInfo0[MCInst_getOpcode(MI)] << 0;
1192
+ Bits |= OpInfo1[MCInst_getOpcode(MI)] << 16;
1193
+ CS_ASSERT(Bits != 0 && "Cannot print this instruction.");
1194
+ #ifndef CAPSTONE_DIET
1195
+ SStream_concat0(O, AsmStrs+(Bits & 4095)-1);
1196
+ #endif
1197
+
1198
+
1199
+ // Fragment 0 encoded into 2 bits for 4 unique commands.
1200
+ switch ((Bits >> 12) & 3) {
1201
+ default: CS_ASSERT(0 && "Invalid command number.");
1202
+ case 0:
1203
+ // DBG_VALUE, DBG_LABEL, BUNDLE, LIFETIME_START, LIFETIME_END, FENTRY_CAL...
1204
+ return;
1205
+ break;
1206
+ case 1:
1207
+ // PseudoCALL, PseudoLA, PseudoLI, PseudoLLA, PseudoTAIL, ADD, ADDI, ADDI...
1208
+ printOperand(MI, 0, O);
1209
+ break;
1210
+ case 2:
1211
+ // C_ADD, C_ADDI, C_ADDI16SP, C_ADDIW, C_ADDW, C_AND, C_ANDI, C_OR, C_SLL...
1212
+ printOperand(MI, 1, O);
1213
+ SStream_concat0(O, ", ");
1214
+ printOperand(MI, 2, O);
1215
+ return;
1216
+ break;
1217
+ case 3:
1218
+ // FENCE
1219
+ printFenceArg(MI, 0, O);
1220
+ SStream_concat0(O, ", ");
1221
+ printFenceArg(MI, 1, O);
1222
+ return;
1223
+ break;
1224
+ }
1225
+
1226
+
1227
+ // Fragment 1 encoded into 2 bits for 3 unique commands.
1228
+ switch ((Bits >> 14) & 3) {
1229
+ default: CS_ASSERT(0 && "Invalid command number.");
1230
+ case 0:
1231
+ // PseudoCALL, PseudoTAIL, C_J, C_JAL, C_JALR, C_JR
1232
+ return;
1233
+ break;
1234
+ case 1:
1235
+ // PseudoLA, PseudoLI, PseudoLLA, ADD, ADDI, ADDIW, ADDW, AMOADD_D, AMOAD...
1236
+ SStream_concat0(O, ", ");
1237
+ break;
1238
+ case 2:
1239
+ // LR_D, LR_D_AQ, LR_D_AQ_RL, LR_D_RL, LR_W, LR_W_AQ, LR_W_AQ_RL, LR_W_RL
1240
+ SStream_concat0(O, ", (");
1241
+ printOperand(MI, 1, O);
1242
+ SStream_concat0(O, ")");
1243
+ return;
1244
+ break;
1245
+ }
1246
+
1247
+
1248
+ // Fragment 2 encoded into 2 bits for 3 unique commands.
1249
+ switch ((Bits >> 16) & 3) {
1250
+ default: CS_ASSERT(0 && "Invalid command number.");
1251
+ case 0:
1252
+ // PseudoLA, PseudoLI, PseudoLLA, ADD, ADDI, ADDIW, ADDW, AND, ANDI, AUIP...
1253
+ printOperand(MI, 1, O);
1254
+ break;
1255
+ case 1:
1256
+ // AMOADD_D, AMOADD_D_AQ, AMOADD_D_AQ_RL, AMOADD_D_RL, AMOADD_W, AMOADD_W...
1257
+ printOperand(MI, 2, O);
1258
+ break;
1259
+ case 2:
1260
+ // CSRRC, CSRRCI, CSRRS, CSRRSI, CSRRW, CSRRWI
1261
+ printCSRSystemRegister(MI, 1, O);
1262
+ SStream_concat0(O, ", ");
1263
+ printOperand(MI, 2, O);
1264
+ return;
1265
+ break;
1266
+ }
1267
+
1268
+
1269
+ // Fragment 3 encoded into 2 bits for 4 unique commands.
1270
+ switch ((Bits >> 18) & 3) {
1271
+ default: CS_ASSERT(0 && "Invalid command number.");
1272
+ case 0:
1273
+ // PseudoLA, PseudoLI, PseudoLLA, AUIPC, C_BEQZ, C_BNEZ, C_LI, C_LUI, C_M...
1274
+ return;
1275
+ break;
1276
+ case 1:
1277
+ // ADD, ADDI, ADDIW, ADDW, AND, ANDI, BEQ, BGE, BGEU, BLT, BLTU, BNE, C_A...
1278
+ SStream_concat0(O, ", ");
1279
+ break;
1280
+ case 2:
1281
+ // AMOADD_D, AMOADD_D_AQ, AMOADD_D_AQ_RL, AMOADD_D_RL, AMOADD_W, AMOADD_W...
1282
+ SStream_concat0(O, ", (");
1283
+ printOperand(MI, 1, O);
1284
+ SStream_concat0(O, ")");
1285
+ return;
1286
+ break;
1287
+ case 3:
1288
+ // C_FLD, C_FLDSP, C_FLW, C_FLWSP, C_FSD, C_FSDSP, C_FSW, C_FSWSP, C_LD, ...
1289
+ SStream_concat0(O, "(");
1290
+ printOperand(MI, 1, O);
1291
+ SStream_concat0(O, ")");
1292
+ return;
1293
+ break;
1294
+ }
1295
+
1296
+
1297
+ // Fragment 4 encoded into 1 bits for 2 unique commands.
1298
+ if ((Bits >> 20) & 1) {
1299
+ // FCVT_D_L, FCVT_D_LU, FCVT_LU_D, FCVT_LU_S, FCVT_L_D, FCVT_L_S, FCVT_S_...
1300
+ printFRMArg(MI, 2, O);
1301
+ return;
1302
+ } else {
1303
+ // ADD, ADDI, ADDIW, ADDW, AND, ANDI, BEQ, BGE, BGEU, BLT, BLTU, BNE, C_A...
1304
+ printOperand(MI, 2, O);
1305
+ }
1306
+
1307
+
1308
+ // Fragment 5 encoded into 1 bits for 2 unique commands.
1309
+ if ((Bits >> 21) & 1) {
1310
+ // FADD_D, FADD_S, FDIV_D, FDIV_S, FMADD_D, FMADD_S, FMSUB_D, FMSUB_S, FM...
1311
+ SStream_concat0(O, ", ");
1312
+ } else {
1313
+ // ADD, ADDI, ADDIW, ADDW, AND, ANDI, BEQ, BGE, BGEU, BLT, BLTU, BNE, C_A...
1314
+ return;
1315
+ }
1316
+
1317
+
1318
+ // Fragment 6 encoded into 1 bits for 2 unique commands.
1319
+ if ((Bits >> 22) & 1) {
1320
+ // FMADD_D, FMADD_S, FMSUB_D, FMSUB_S, FNMADD_D, FNMADD_S, FNMSUB_D, FNMS...
1321
+ printOperand(MI, 3, O);
1322
+ SStream_concat0(O, ", ");
1323
+ printFRMArg(MI, 4, O);
1324
+ return;
1325
+ } else {
1326
+ // FADD_D, FADD_S, FDIV_D, FDIV_S, FMUL_D, FMUL_S, FSUB_D, FSUB_S
1327
+ printFRMArg(MI, 3, O);
1328
+ return;
1329
+ }
1330
+
1331
+ }
1332
+
1333
+
1334
+ /// getRegisterName - This method is automatically generated by tblgen
1335
+ /// from the register set description. This returns the assembler name
1336
+ /// for the specified register.
1337
+ static const char *
1338
+ getRegisterName(unsigned RegNo, unsigned AltIdx)
1339
+ {
1340
+ CS_ASSERT(RegNo && RegNo < 97 && "Invalid register number!");
1341
+
1342
+ #ifndef CAPSTONE_DIET
1343
+ static const char AsmStrsABIRegAltName[] = {
1344
+ /* 0 */ 'f', 's', '1', '0', 0,
1345
+ /* 5 */ 'f', 't', '1', '0', 0,
1346
+ /* 10 */ 'f', 'a', '0', 0,
1347
+ /* 14 */ 'f', 's', '0', 0,
1348
+ /* 18 */ 'f', 't', '0', 0,
1349
+ /* 22 */ 'f', 's', '1', '1', 0,
1350
+ /* 27 */ 'f', 't', '1', '1', 0,
1351
+ /* 32 */ 'f', 'a', '1', 0,
1352
+ /* 36 */ 'f', 's', '1', 0,
1353
+ /* 40 */ 'f', 't', '1', 0,
1354
+ /* 44 */ 'f', 'a', '2', 0,
1355
+ /* 48 */ 'f', 's', '2', 0,
1356
+ /* 52 */ 'f', 't', '2', 0,
1357
+ /* 56 */ 'f', 'a', '3', 0,
1358
+ /* 60 */ 'f', 's', '3', 0,
1359
+ /* 64 */ 'f', 't', '3', 0,
1360
+ /* 68 */ 'f', 'a', '4', 0,
1361
+ /* 72 */ 'f', 's', '4', 0,
1362
+ /* 76 */ 'f', 't', '4', 0,
1363
+ /* 80 */ 'f', 'a', '5', 0,
1364
+ /* 84 */ 'f', 's', '5', 0,
1365
+ /* 88 */ 'f', 't', '5', 0,
1366
+ /* 92 */ 'f', 'a', '6', 0,
1367
+ /* 96 */ 'f', 's', '6', 0,
1368
+ /* 100 */ 'f', 't', '6', 0,
1369
+ /* 104 */ 'f', 'a', '7', 0,
1370
+ /* 108 */ 'f', 's', '7', 0,
1371
+ /* 112 */ 'f', 't', '7', 0,
1372
+ /* 116 */ 'f', 's', '8', 0,
1373
+ /* 120 */ 'f', 't', '8', 0,
1374
+ /* 124 */ 'f', 's', '9', 0,
1375
+ /* 128 */ 'f', 't', '9', 0,
1376
+ /* 132 */ 'r', 'a', 0,
1377
+ /* 135 */ 'z', 'e', 'r', 'o', 0,
1378
+ /* 140 */ 'g', 'p', 0,
1379
+ /* 143 */ 's', 'p', 0,
1380
+ /* 146 */ 't', 'p', 0,
1381
+ };
1382
+
1383
+ static const uint8_t RegAsmOffsetABIRegAltName[] = {
1384
+ 135, 132, 143, 140, 146, 19, 41, 53, 15, 37, 11, 33, 45, 57,
1385
+ 69, 81, 93, 105, 49, 61, 73, 85, 97, 109, 117, 125, 1, 23,
1386
+ 65, 77, 89, 101, 18, 18, 40, 40, 52, 52, 64, 64, 76, 76,
1387
+ 88, 88, 100, 100, 112, 112, 14, 14, 36, 36, 10, 10, 32, 32,
1388
+ 44, 44, 56, 56, 68, 68, 80, 80, 92, 92, 104, 104, 48, 48,
1389
+ 60, 60, 72, 72, 84, 84, 96, 96, 108, 108, 116, 116, 124, 124,
1390
+ 0, 0, 22, 22, 120, 120, 128, 128, 5, 5, 27, 27,
1391
+ };
1392
+
1393
+ static const char AsmStrsNoRegAltName[] = {
1394
+ /* 0 */ 'f', '1', '0', 0,
1395
+ /* 4 */ 'x', '1', '0', 0,
1396
+ /* 8 */ 'f', '2', '0', 0,
1397
+ /* 12 */ 'x', '2', '0', 0,
1398
+ /* 16 */ 'f', '3', '0', 0,
1399
+ /* 20 */ 'x', '3', '0', 0,
1400
+ /* 24 */ 'f', '0', 0,
1401
+ /* 27 */ 'x', '0', 0,
1402
+ /* 30 */ 'f', '1', '1', 0,
1403
+ /* 34 */ 'x', '1', '1', 0,
1404
+ /* 38 */ 'f', '2', '1', 0,
1405
+ /* 42 */ 'x', '2', '1', 0,
1406
+ /* 46 */ 'f', '3', '1', 0,
1407
+ /* 50 */ 'x', '3', '1', 0,
1408
+ /* 54 */ 'f', '1', 0,
1409
+ /* 57 */ 'x', '1', 0,
1410
+ /* 60 */ 'f', '1', '2', 0,
1411
+ /* 64 */ 'x', '1', '2', 0,
1412
+ /* 68 */ 'f', '2', '2', 0,
1413
+ /* 72 */ 'x', '2', '2', 0,
1414
+ /* 76 */ 'f', '2', 0,
1415
+ /* 79 */ 'x', '2', 0,
1416
+ /* 82 */ 'f', '1', '3', 0,
1417
+ /* 86 */ 'x', '1', '3', 0,
1418
+ /* 90 */ 'f', '2', '3', 0,
1419
+ /* 94 */ 'x', '2', '3', 0,
1420
+ /* 98 */ 'f', '3', 0,
1421
+ /* 101 */ 'x', '3', 0,
1422
+ /* 104 */ 'f', '1', '4', 0,
1423
+ /* 108 */ 'x', '1', '4', 0,
1424
+ /* 112 */ 'f', '2', '4', 0,
1425
+ /* 116 */ 'x', '2', '4', 0,
1426
+ /* 120 */ 'f', '4', 0,
1427
+ /* 123 */ 'x', '4', 0,
1428
+ /* 126 */ 'f', '1', '5', 0,
1429
+ /* 130 */ 'x', '1', '5', 0,
1430
+ /* 134 */ 'f', '2', '5', 0,
1431
+ /* 138 */ 'x', '2', '5', 0,
1432
+ /* 142 */ 'f', '5', 0,
1433
+ /* 145 */ 'x', '5', 0,
1434
+ /* 148 */ 'f', '1', '6', 0,
1435
+ /* 152 */ 'x', '1', '6', 0,
1436
+ /* 156 */ 'f', '2', '6', 0,
1437
+ /* 160 */ 'x', '2', '6', 0,
1438
+ /* 164 */ 'f', '6', 0,
1439
+ /* 167 */ 'x', '6', 0,
1440
+ /* 170 */ 'f', '1', '7', 0,
1441
+ /* 174 */ 'x', '1', '7', 0,
1442
+ /* 178 */ 'f', '2', '7', 0,
1443
+ /* 182 */ 'x', '2', '7', 0,
1444
+ /* 186 */ 'f', '7', 0,
1445
+ /* 189 */ 'x', '7', 0,
1446
+ /* 192 */ 'f', '1', '8', 0,
1447
+ /* 196 */ 'x', '1', '8', 0,
1448
+ /* 200 */ 'f', '2', '8', 0,
1449
+ /* 204 */ 'x', '2', '8', 0,
1450
+ /* 208 */ 'f', '8', 0,
1451
+ /* 211 */ 'x', '8', 0,
1452
+ /* 214 */ 'f', '1', '9', 0,
1453
+ /* 218 */ 'x', '1', '9', 0,
1454
+ /* 222 */ 'f', '2', '9', 0,
1455
+ /* 226 */ 'x', '2', '9', 0,
1456
+ /* 230 */ 'f', '9', 0,
1457
+ /* 233 */ 'x', '9', 0,
1458
+ };
1459
+
1460
+ static const uint8_t RegAsmOffsetNoRegAltName[] = {
1461
+ 27, 57, 79, 101, 123, 145, 167, 189, 211, 233, 4, 34, 64, 86,
1462
+ 108, 130, 152, 174, 196, 218, 12, 42, 72, 94, 116, 138, 160, 182,
1463
+ 204, 226, 20, 50, 24, 24, 54, 54, 76, 76, 98, 98, 120, 120,
1464
+ 142, 142, 164, 164, 186, 186, 208, 208, 230, 230, 0, 0, 30, 30,
1465
+ 60, 60, 82, 82, 104, 104, 126, 126, 148, 148, 170, 170, 192, 192,
1466
+ 214, 214, 8, 8, 38, 38, 68, 68, 90, 90, 112, 112, 134, 134,
1467
+ 156, 156, 178, 178, 200, 200, 222, 222, 16, 16, 46, 46,
1468
+ };
1469
+
1470
+ switch(AltIdx) {
1471
+ default: CS_ASSERT(0 && "Invalid register alt name index!");
1472
+ case RISCV_ABIRegAltName:
1473
+ CS_ASSERT(*(AsmStrsABIRegAltName+RegAsmOffsetABIRegAltName[RegNo-1]) &&
1474
+ "Invalid alt name index for register!");
1475
+ return AsmStrsABIRegAltName+RegAsmOffsetABIRegAltName[RegNo-1];
1476
+ case RISCV_NoRegAltName:
1477
+ CS_ASSERT(*(AsmStrsNoRegAltName+RegAsmOffsetNoRegAltName[RegNo-1]) &&
1478
+ "Invalid alt name index for register!");
1479
+ return AsmStrsNoRegAltName+RegAsmOffsetNoRegAltName[RegNo-1];
1480
+ }
1481
+ #else
1482
+ return NULL;
1483
+ #endif
1484
+ }
1485
+
1486
+ #ifdef PRINT_ALIAS_INSTR
1487
+ #undef PRINT_ALIAS_INSTR
1488
+
1489
+ static bool RISCVInstPrinterValidateMCOperand(MCOperand *MCOp,
1490
+ unsigned PredicateIndex);
1491
+
1492
+ static bool printAliasInstr(MCInst *MI, SStream * OS, void *info)
1493
+ {
1494
+ MCRegisterInfo *MRI = (MCRegisterInfo *) info;
1495
+ const char *AsmString;
1496
+ unsigned I = 0;
1497
+ #define ASMSTRING_CONTAIN_SIZE 64
1498
+ unsigned AsmStringLen = 0;
1499
+ char tmpString_[ASMSTRING_CONTAIN_SIZE];
1500
+ char *tmpString = tmpString_;
1501
+ switch (MCInst_getOpcode(MI)) {
1502
+ default: return false;
1503
+ case RISCV_ADDI:
1504
+ if (MCInst_getNumOperands(MI) == 3 &&
1505
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1506
+ MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1507
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1508
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1509
+ // (ADDI X0, X0, 0)
1510
+ AsmString = "nop";
1511
+ break;
1512
+ }
1513
+ if (MCInst_getNumOperands(MI) == 3 &&
1514
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1515
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1516
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1517
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1518
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1519
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1520
+ // (ADDI GPR:$rd, GPR:$rs, 0)
1521
+ AsmString = "mv $\x01, $\x02";
1522
+ break;
1523
+ }
1524
+ return false;
1525
+ case RISCV_ADDIW:
1526
+ if (MCInst_getNumOperands(MI) == 3 &&
1527
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1528
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1529
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1530
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1531
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1532
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
1533
+ // (ADDIW GPR:$rd, GPR:$rs, 0)
1534
+ AsmString = "sext.w $\x01, $\x02";
1535
+ break;
1536
+ }
1537
+ return false;
1538
+ case RISCV_BEQ:
1539
+ if (MCInst_getNumOperands(MI) == 3 &&
1540
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1541
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1542
+ MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1543
+ RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1544
+ // (BEQ GPR:$rs, X0, simm13_lsb0:$offset)
1545
+ AsmString = "beqz $\x01, $\x03";
1546
+ break;
1547
+ }
1548
+ return false;
1549
+ case RISCV_BGE:
1550
+ if (MCInst_getNumOperands(MI) == 3 &&
1551
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1552
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1553
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1554
+ RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1555
+ // (BGE X0, GPR:$rs, simm13_lsb0:$offset)
1556
+ AsmString = "blez $\x02, $\x03";
1557
+ break;
1558
+ }
1559
+ if (MCInst_getNumOperands(MI) == 3 &&
1560
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1561
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1562
+ MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1563
+ RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1564
+ // (BGE GPR:$rs, X0, simm13_lsb0:$offset)
1565
+ AsmString = "bgez $\x01, $\x03";
1566
+ break;
1567
+ }
1568
+ return false;
1569
+ case RISCV_BLT:
1570
+ if (MCInst_getNumOperands(MI) == 3 &&
1571
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1572
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1573
+ MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1574
+ RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1575
+ // (BLT GPR:$rs, X0, simm13_lsb0:$offset)
1576
+ AsmString = "bltz $\x01, $\x03";
1577
+ break;
1578
+ }
1579
+ if (MCInst_getNumOperands(MI) == 3 &&
1580
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1581
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1582
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1583
+ RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1584
+ // (BLT X0, GPR:$rs, simm13_lsb0:$offset)
1585
+ AsmString = "bgtz $\x02, $\x03";
1586
+ break;
1587
+ }
1588
+ return false;
1589
+ case RISCV_BNE:
1590
+ if (MCInst_getNumOperands(MI) == 3 &&
1591
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1592
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1593
+ MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
1594
+ RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
1595
+ // (BNE GPR:$rs, X0, simm13_lsb0:$offset)
1596
+ AsmString = "bnez $\x01, $\x03";
1597
+ break;
1598
+ }
1599
+ return false;
1600
+ case RISCV_CSRRC:
1601
+ if (MCInst_getNumOperands(MI) == 3 &&
1602
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1603
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1604
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1605
+ // (CSRRC X0, csr_sysreg:$csr, GPR:$rs)
1606
+ AsmString = "csrc $\xFF\x02\x01, $\x03";
1607
+ break;
1608
+ }
1609
+ return false;
1610
+ case RISCV_CSRRCI:
1611
+ if (MCInst_getNumOperands(MI) == 3 &&
1612
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1613
+ // (CSRRCI X0, csr_sysreg:$csr, uimm5:$imm)
1614
+ AsmString = "csrci $\xFF\x02\x01, $\x03";
1615
+ break;
1616
+ }
1617
+ return false;
1618
+ case RISCV_CSRRS:
1619
+ if (MCInst_getNumOperands(MI) == 3 &&
1620
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1621
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1622
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1623
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1624
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1625
+ // (CSRRS GPR:$rd, 3, X0)
1626
+ AsmString = "frcsr $\x01";
1627
+ break;
1628
+ }
1629
+ if (MCInst_getNumOperands(MI) == 3 &&
1630
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1631
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1632
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1633
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1634
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1635
+ // (CSRRS GPR:$rd, 2, X0)
1636
+ AsmString = "frrm $\x01";
1637
+ break;
1638
+ }
1639
+ if (MCInst_getNumOperands(MI) == 3 &&
1640
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1641
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1642
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1643
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1644
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1645
+ // (CSRRS GPR:$rd, 1, X0)
1646
+ AsmString = "frflags $\x01";
1647
+ break;
1648
+ }
1649
+ if (MCInst_getNumOperands(MI) == 3 &&
1650
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1651
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1652
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1653
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3074 &&
1654
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1655
+ // (CSRRS GPR:$rd, 3074, X0)
1656
+ AsmString = "rdinstret $\x01";
1657
+ break;
1658
+ }
1659
+ if (MCInst_getNumOperands(MI) == 3 &&
1660
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1661
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1662
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1663
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3072 &&
1664
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1665
+ // (CSRRS GPR:$rd, 3072, X0)
1666
+ AsmString = "rdcycle $\x01";
1667
+ break;
1668
+ }
1669
+ if (MCInst_getNumOperands(MI) == 3 &&
1670
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1671
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1672
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1673
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3073 &&
1674
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1675
+ // (CSRRS GPR:$rd, 3073, X0)
1676
+ AsmString = "rdtime $\x01";
1677
+ break;
1678
+ }
1679
+ if (MCInst_getNumOperands(MI) == 3 &&
1680
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1681
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1682
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1683
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3202 &&
1684
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1685
+ // (CSRRS GPR:$rd, 3202, X0)
1686
+ AsmString = "rdinstreth $\x01";
1687
+ break;
1688
+ }
1689
+ if (MCInst_getNumOperands(MI) == 3 &&
1690
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1691
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1692
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1693
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3200 &&
1694
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1695
+ // (CSRRS GPR:$rd, 3200, X0)
1696
+ AsmString = "rdcycleh $\x01";
1697
+ break;
1698
+ }
1699
+ if (MCInst_getNumOperands(MI) == 3 &&
1700
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1701
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1702
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1703
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3201 &&
1704
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1705
+ // (CSRRS GPR:$rd, 3201, X0)
1706
+ AsmString = "rdtimeh $\x01";
1707
+ break;
1708
+ }
1709
+ if (MCInst_getNumOperands(MI) == 3 &&
1710
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1711
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1712
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
1713
+ // (CSRRS GPR:$rd, csr_sysreg:$csr, X0)
1714
+ AsmString = "csrr $\x01, $\xFF\x02\x01";
1715
+ break;
1716
+ }
1717
+ if (MCInst_getNumOperands(MI) == 3 &&
1718
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1719
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1720
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1721
+ // (CSRRS X0, csr_sysreg:$csr, GPR:$rs)
1722
+ AsmString = "csrs $\xFF\x02\x01, $\x03";
1723
+ break;
1724
+ }
1725
+ return false;
1726
+ case RISCV_CSRRSI:
1727
+ if (MCInst_getNumOperands(MI) == 3 &&
1728
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1729
+ // (CSRRSI X0, csr_sysreg:$csr, uimm5:$imm)
1730
+ AsmString = "csrsi $\xFF\x02\x01, $\x03";
1731
+ break;
1732
+ }
1733
+ return false;
1734
+ case RISCV_CSRRW:
1735
+ if (MCInst_getNumOperands(MI) == 3 &&
1736
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1737
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1738
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1739
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1740
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1741
+ // (CSRRW X0, 3, GPR:$rs)
1742
+ AsmString = "fscsr $\x03";
1743
+ break;
1744
+ }
1745
+ if (MCInst_getNumOperands(MI) == 3 &&
1746
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1747
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1748
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1749
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1750
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1751
+ // (CSRRW X0, 2, GPR:$rs)
1752
+ AsmString = "fsrm $\x03";
1753
+ break;
1754
+ }
1755
+ if (MCInst_getNumOperands(MI) == 3 &&
1756
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1757
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1758
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1759
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1760
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1761
+ // (CSRRW X0, 1, GPR:$rs)
1762
+ AsmString = "fsflags $\x03";
1763
+ break;
1764
+ }
1765
+ if (MCInst_getNumOperands(MI) == 3 &&
1766
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1767
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1768
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1769
+ // (CSRRW X0, csr_sysreg:$csr, GPR:$rs)
1770
+ AsmString = "csrw $\xFF\x02\x01, $\x03";
1771
+ break;
1772
+ }
1773
+ if (MCInst_getNumOperands(MI) == 3 &&
1774
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1775
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1776
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1777
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
1778
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1779
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1780
+ // (CSRRW GPR:$rd, 3, GPR:$rs)
1781
+ AsmString = "fscsr $\x01, $\x03";
1782
+ break;
1783
+ }
1784
+ if (MCInst_getNumOperands(MI) == 3 &&
1785
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1786
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1787
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1788
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
1789
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1790
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1791
+ // (CSRRW GPR:$rd, 2, GPR:$rs)
1792
+ AsmString = "fsrm $\x01, $\x03";
1793
+ break;
1794
+ }
1795
+ if (MCInst_getNumOperands(MI) == 3 &&
1796
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1797
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1798
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1799
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
1800
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1801
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
1802
+ // (CSRRW GPR:$rd, 1, GPR:$rs)
1803
+ AsmString = "fsflags $\x01, $\x03";
1804
+ break;
1805
+ }
1806
+ return false;
1807
+ case RISCV_CSRRWI:
1808
+ if (MCInst_getNumOperands(MI) == 3 &&
1809
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1810
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1811
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2) {
1812
+ // (CSRRWI X0, 2, uimm5:$imm)
1813
+ AsmString = "fsrmi $\x03";
1814
+ break;
1815
+ }
1816
+ if (MCInst_getNumOperands(MI) == 3 &&
1817
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
1818
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1819
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1) {
1820
+ // (CSRRWI X0, 1, uimm5:$imm)
1821
+ AsmString = "fsflagsi $\x03";
1822
+ break;
1823
+ }
1824
+ if (MCInst_getNumOperands(MI) == 3 &&
1825
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
1826
+ // (CSRRWI X0, csr_sysreg:$csr, uimm5:$imm)
1827
+ AsmString = "csrwi $\xFF\x02\x01, $\x03";
1828
+ break;
1829
+ }
1830
+ if (MCInst_getNumOperands(MI) == 3 &&
1831
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1832
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1833
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1834
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2) {
1835
+ // (CSRRWI GPR:$rd, 2, uimm5:$imm)
1836
+ AsmString = "fsrmi $\x01, $\x03";
1837
+ break;
1838
+ }
1839
+ if (MCInst_getNumOperands(MI) == 3 &&
1840
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1841
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1842
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
1843
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1) {
1844
+ // (CSRRWI GPR:$rd, 1, uimm5:$imm)
1845
+ AsmString = "fsflagsi $\x01, $\x03";
1846
+ break;
1847
+ }
1848
+ return false;
1849
+ case RISCV_FADD_D:
1850
+ if (MCInst_getNumOperands(MI) == 4 &&
1851
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1852
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1853
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1854
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1855
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1856
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
1857
+ MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
1858
+ MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
1859
+ // (FADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
1860
+ AsmString = "fadd.d $\x01, $\x02, $\x03";
1861
+ break;
1862
+ }
1863
+ return false;
1864
+ case RISCV_FADD_S:
1865
+ if (MCInst_getNumOperands(MI) == 4 &&
1866
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1867
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1868
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1869
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1870
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
1871
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
1872
+ MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
1873
+ MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
1874
+ // (FADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
1875
+ AsmString = "fadd.s $\x01, $\x02, $\x03";
1876
+ break;
1877
+ }
1878
+ return false;
1879
+ case RISCV_FCVT_D_L:
1880
+ if (MCInst_getNumOperands(MI) == 3 &&
1881
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1882
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1883
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1884
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1885
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1886
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1887
+ // (FCVT_D_L FPR64:$rd, GPR:$rs1, { 1, 1, 1 })
1888
+ AsmString = "fcvt.d.l $\x01, $\x02";
1889
+ break;
1890
+ }
1891
+ return false;
1892
+ case RISCV_FCVT_D_LU:
1893
+ if (MCInst_getNumOperands(MI) == 3 &&
1894
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1895
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1896
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1897
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1898
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1899
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1900
+ // (FCVT_D_LU FPR64:$rd, GPR:$rs1, { 1, 1, 1 })
1901
+ AsmString = "fcvt.d.lu $\x01, $\x02";
1902
+ break;
1903
+ }
1904
+ return false;
1905
+ case RISCV_FCVT_LU_D:
1906
+ if (MCInst_getNumOperands(MI) == 3 &&
1907
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1908
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1909
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1910
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1911
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1912
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1913
+ // (FCVT_LU_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
1914
+ AsmString = "fcvt.lu.d $\x01, $\x02";
1915
+ break;
1916
+ }
1917
+ return false;
1918
+ case RISCV_FCVT_LU_S:
1919
+ if (MCInst_getNumOperands(MI) == 3 &&
1920
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1921
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1922
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1923
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1924
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1925
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1926
+ // (FCVT_LU_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
1927
+ AsmString = "fcvt.lu.s $\x01, $\x02";
1928
+ break;
1929
+ }
1930
+ return false;
1931
+ case RISCV_FCVT_L_D:
1932
+ if (MCInst_getNumOperands(MI) == 3 &&
1933
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1934
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1935
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1936
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1937
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1938
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1939
+ // (FCVT_L_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
1940
+ AsmString = "fcvt.l.d $\x01, $\x02";
1941
+ break;
1942
+ }
1943
+ return false;
1944
+ case RISCV_FCVT_L_S:
1945
+ if (MCInst_getNumOperands(MI) == 3 &&
1946
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1947
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1948
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1949
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1950
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1951
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1952
+ // (FCVT_L_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
1953
+ AsmString = "fcvt.l.s $\x01, $\x02";
1954
+ break;
1955
+ }
1956
+ return false;
1957
+ case RISCV_FCVT_S_D:
1958
+ if (MCInst_getNumOperands(MI) == 3 &&
1959
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1960
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1961
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1962
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1963
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1964
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1965
+ // (FCVT_S_D FPR32:$rd, FPR64:$rs1, { 1, 1, 1 })
1966
+ AsmString = "fcvt.s.d $\x01, $\x02";
1967
+ break;
1968
+ }
1969
+ return false;
1970
+ case RISCV_FCVT_S_L:
1971
+ if (MCInst_getNumOperands(MI) == 3 &&
1972
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1973
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1974
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1975
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1976
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1977
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1978
+ // (FCVT_S_L FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
1979
+ AsmString = "fcvt.s.l $\x01, $\x02";
1980
+ break;
1981
+ }
1982
+ return false;
1983
+ case RISCV_FCVT_S_LU:
1984
+ if (MCInst_getNumOperands(MI) == 3 &&
1985
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1986
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
1987
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
1988
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
1989
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
1990
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
1991
+ // (FCVT_S_LU FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
1992
+ AsmString = "fcvt.s.lu $\x01, $\x02";
1993
+ break;
1994
+ }
1995
+ return false;
1996
+ case RISCV_FCVT_S_W:
1997
+ if (MCInst_getNumOperands(MI) == 3 &&
1998
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
1999
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2000
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2001
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2002
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2003
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2004
+ // (FCVT_S_W FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
2005
+ AsmString = "fcvt.s.w $\x01, $\x02";
2006
+ break;
2007
+ }
2008
+ return false;
2009
+ case RISCV_FCVT_S_WU:
2010
+ if (MCInst_getNumOperands(MI) == 3 &&
2011
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2012
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2013
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2014
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2015
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2016
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2017
+ // (FCVT_S_WU FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
2018
+ AsmString = "fcvt.s.wu $\x01, $\x02";
2019
+ break;
2020
+ }
2021
+ return false;
2022
+ case RISCV_FCVT_WU_D:
2023
+ if (MCInst_getNumOperands(MI) == 3 &&
2024
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2025
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2026
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2027
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2028
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2029
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2030
+ // (FCVT_WU_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
2031
+ AsmString = "fcvt.wu.d $\x01, $\x02";
2032
+ break;
2033
+ }
2034
+ return false;
2035
+ case RISCV_FCVT_WU_S:
2036
+ if (MCInst_getNumOperands(MI) == 3 &&
2037
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2038
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2039
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2040
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2041
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2042
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2043
+ // (FCVT_WU_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
2044
+ AsmString = "fcvt.wu.s $\x01, $\x02";
2045
+ break;
2046
+ }
2047
+ return false;
2048
+ case RISCV_FCVT_W_D:
2049
+ if (MCInst_getNumOperands(MI) == 3 &&
2050
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2051
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2052
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2053
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2054
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2055
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2056
+ // (FCVT_W_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
2057
+ AsmString = "fcvt.w.d $\x01, $\x02";
2058
+ break;
2059
+ }
2060
+ return false;
2061
+ case RISCV_FCVT_W_S:
2062
+ if (MCInst_getNumOperands(MI) == 3 &&
2063
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2064
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2065
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2066
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2067
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2068
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2069
+ // (FCVT_W_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
2070
+ AsmString = "fcvt.w.s $\x01, $\x02";
2071
+ break;
2072
+ }
2073
+ return false;
2074
+ case RISCV_FDIV_D:
2075
+ if (MCInst_getNumOperands(MI) == 4 &&
2076
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2077
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2078
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2079
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2080
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2081
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2082
+ MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2083
+ MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2084
+ // (FDIV_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2085
+ AsmString = "fdiv.d $\x01, $\x02, $\x03";
2086
+ break;
2087
+ }
2088
+ return false;
2089
+ case RISCV_FDIV_S:
2090
+ if (MCInst_getNumOperands(MI) == 4 &&
2091
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2092
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2093
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2094
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2095
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2096
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2097
+ MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2098
+ MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2099
+ // (FDIV_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2100
+ AsmString = "fdiv.s $\x01, $\x02, $\x03";
2101
+ break;
2102
+ }
2103
+ return false;
2104
+ case RISCV_FENCE:
2105
+ if (MCInst_getNumOperands(MI) == 2 &&
2106
+ MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
2107
+ MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
2108
+ MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
2109
+ MCOperand_getImm(MCInst_getOperand(MI, 1)) == 15) {
2110
+ // (FENCE 15, 15)
2111
+ AsmString = "fence";
2112
+ break;
2113
+ }
2114
+ return false;
2115
+ case RISCV_FMADD_D:
2116
+ if (MCInst_getNumOperands(MI) == 5 &&
2117
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2118
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2119
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2120
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2121
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2122
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2123
+ MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2124
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2125
+ MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2126
+ MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2127
+ // (FMADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2128
+ AsmString = "fmadd.d $\x01, $\x02, $\x03, $\x04";
2129
+ break;
2130
+ }
2131
+ return false;
2132
+ case RISCV_FMADD_S:
2133
+ if (MCInst_getNumOperands(MI) == 5 &&
2134
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2135
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2136
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2137
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2138
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2139
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2140
+ MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2141
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2142
+ MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2143
+ MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2144
+ // (FMADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2145
+ AsmString = "fmadd.s $\x01, $\x02, $\x03, $\x04";
2146
+ break;
2147
+ }
2148
+ return false;
2149
+ case RISCV_FMSUB_D:
2150
+ if (MCInst_getNumOperands(MI) == 5 &&
2151
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2152
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2153
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2154
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2155
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2156
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2157
+ MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2158
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2159
+ MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2160
+ MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2161
+ // (FMSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2162
+ AsmString = "fmsub.d $\x01, $\x02, $\x03, $\x04";
2163
+ break;
2164
+ }
2165
+ return false;
2166
+ case RISCV_FMSUB_S:
2167
+ if (MCInst_getNumOperands(MI) == 5 &&
2168
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2169
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2170
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2171
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2172
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2173
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2174
+ MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2175
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2176
+ MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2177
+ MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2178
+ // (FMSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2179
+ AsmString = "fmsub.s $\x01, $\x02, $\x03, $\x04";
2180
+ break;
2181
+ }
2182
+ return false;
2183
+ case RISCV_FMUL_D:
2184
+ if (MCInst_getNumOperands(MI) == 4 &&
2185
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2186
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2187
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2188
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2189
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2190
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2191
+ MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2192
+ MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2193
+ // (FMUL_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2194
+ AsmString = "fmul.d $\x01, $\x02, $\x03";
2195
+ break;
2196
+ }
2197
+ return false;
2198
+ case RISCV_FMUL_S:
2199
+ if (MCInst_getNumOperands(MI) == 4 &&
2200
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2201
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2202
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2203
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2204
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2205
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2206
+ MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2207
+ MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2208
+ // (FMUL_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2209
+ AsmString = "fmul.s $\x01, $\x02, $\x03";
2210
+ break;
2211
+ }
2212
+ return false;
2213
+ case RISCV_FNMADD_D:
2214
+ if (MCInst_getNumOperands(MI) == 5 &&
2215
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2216
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2217
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2218
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2219
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2220
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2221
+ MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2222
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2223
+ MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2224
+ MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2225
+ // (FNMADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2226
+ AsmString = "fnmadd.d $\x01, $\x02, $\x03, $\x04";
2227
+ break;
2228
+ }
2229
+ return false;
2230
+ case RISCV_FNMADD_S:
2231
+ if (MCInst_getNumOperands(MI) == 5 &&
2232
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2233
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2234
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2235
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2236
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2237
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2238
+ MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2239
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2240
+ MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2241
+ MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2242
+ // (FNMADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2243
+ AsmString = "fnmadd.s $\x01, $\x02, $\x03, $\x04";
2244
+ break;
2245
+ }
2246
+ return false;
2247
+ case RISCV_FNMSUB_D:
2248
+ if (MCInst_getNumOperands(MI) == 5 &&
2249
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2250
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2251
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2252
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2253
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2254
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2255
+ MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2256
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2257
+ MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2258
+ MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2259
+ // (FNMSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
2260
+ AsmString = "fnmsub.d $\x01, $\x02, $\x03, $\x04";
2261
+ break;
2262
+ }
2263
+ return false;
2264
+ case RISCV_FNMSUB_S:
2265
+ if (MCInst_getNumOperands(MI) == 5 &&
2266
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2267
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2268
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2269
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2270
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2271
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2272
+ MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
2273
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
2274
+ MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
2275
+ MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
2276
+ // (FNMSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
2277
+ AsmString = "fnmsub.s $\x01, $\x02, $\x03, $\x04";
2278
+ break;
2279
+ }
2280
+ return false;
2281
+ case RISCV_FSGNJN_D:
2282
+ if (MCInst_getNumOperands(MI) == 3 &&
2283
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2284
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2285
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2286
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2287
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2288
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2289
+ // (FSGNJN_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2290
+ AsmString = "fneg.d $\x01, $\x02";
2291
+ break;
2292
+ }
2293
+ return false;
2294
+ case RISCV_FSGNJN_S:
2295
+ if (MCInst_getNumOperands(MI) == 3 &&
2296
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2297
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2298
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2299
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2300
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2301
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2302
+ // (FSGNJN_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2303
+ AsmString = "fneg.s $\x01, $\x02";
2304
+ break;
2305
+ }
2306
+ return false;
2307
+ case RISCV_FSGNJX_D:
2308
+ if (MCInst_getNumOperands(MI) == 3 &&
2309
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2310
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2311
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2312
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2313
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2314
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2315
+ // (FSGNJX_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2316
+ AsmString = "fabs.d $\x01, $\x02";
2317
+ break;
2318
+ }
2319
+ return false;
2320
+ case RISCV_FSGNJX_S:
2321
+ if (MCInst_getNumOperands(MI) == 3 &&
2322
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2323
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2324
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2325
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2326
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2327
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2328
+ // (FSGNJX_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2329
+ AsmString = "fabs.s $\x01, $\x02";
2330
+ break;
2331
+ }
2332
+ return false;
2333
+ case RISCV_FSGNJ_D:
2334
+ if (MCInst_getNumOperands(MI) == 3 &&
2335
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2336
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2337
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2338
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2339
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2340
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2341
+ // (FSGNJ_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
2342
+ AsmString = "fmv.d $\x01, $\x02";
2343
+ break;
2344
+ }
2345
+ return false;
2346
+ case RISCV_FSGNJ_S:
2347
+ if (MCInst_getNumOperands(MI) == 3 &&
2348
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2349
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2350
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2351
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2352
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2353
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
2354
+ // (FSGNJ_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
2355
+ AsmString = "fmv.s $\x01, $\x02";
2356
+ break;
2357
+ }
2358
+ return false;
2359
+ case RISCV_FSQRT_D:
2360
+ if (MCInst_getNumOperands(MI) == 3 &&
2361
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2362
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2363
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2364
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2365
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2366
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2367
+ // (FSQRT_D FPR64:$rd, FPR64:$rs1, { 1, 1, 1 })
2368
+ AsmString = "fsqrt.d $\x01, $\x02";
2369
+ break;
2370
+ }
2371
+ return false;
2372
+ case RISCV_FSQRT_S:
2373
+ if (MCInst_getNumOperands(MI) == 3 &&
2374
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2375
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2376
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2377
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2378
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2379
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
2380
+ // (FSQRT_S FPR32:$rd, FPR32:$rs1, { 1, 1, 1 })
2381
+ AsmString = "fsqrt.s $\x01, $\x02";
2382
+ break;
2383
+ }
2384
+ return false;
2385
+ case RISCV_FSUB_D:
2386
+ if (MCInst_getNumOperands(MI) == 4 &&
2387
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2388
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2389
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2390
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2391
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2392
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2393
+ MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2394
+ MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2395
+ // (FSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
2396
+ AsmString = "fsub.d $\x01, $\x02, $\x03";
2397
+ break;
2398
+ }
2399
+ return false;
2400
+ case RISCV_FSUB_S:
2401
+ if (MCInst_getNumOperands(MI) == 4 &&
2402
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2403
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2404
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2405
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2406
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2407
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
2408
+ MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
2409
+ MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
2410
+ // (FSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
2411
+ AsmString = "fsub.s $\x01, $\x02, $\x03";
2412
+ break;
2413
+ }
2414
+ return false;
2415
+ case RISCV_JAL:
2416
+ if (MCInst_getNumOperands(MI) == 2 &&
2417
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2418
+ RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 1), 2)) {
2419
+ // (JAL X0, simm21_lsb0_jal:$offset)
2420
+ AsmString = "j $\x02";
2421
+ break;
2422
+ }
2423
+ if (MCInst_getNumOperands(MI) == 2 &&
2424
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X1 &&
2425
+ RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 1), 2)) {
2426
+ // (JAL X1, simm21_lsb0_jal:$offset)
2427
+ AsmString = "jal $\x02";
2428
+ break;
2429
+ }
2430
+ return false;
2431
+ case RISCV_JALR:
2432
+ if (MCInst_getNumOperands(MI) == 3 &&
2433
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2434
+ MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X1 &&
2435
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2436
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2437
+ // (JALR X0, X1, 0)
2438
+ AsmString = "ret";
2439
+ break;
2440
+ }
2441
+ if (MCInst_getNumOperands(MI) == 3 &&
2442
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2443
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2444
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2445
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2446
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2447
+ // (JALR X0, GPR:$rs, 0)
2448
+ AsmString = "jr $\x02";
2449
+ break;
2450
+ }
2451
+ if (MCInst_getNumOperands(MI) == 3 &&
2452
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X1 &&
2453
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2454
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2455
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2456
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
2457
+ // (JALR X1, GPR:$rs, 0)
2458
+ AsmString = "jalr $\x02";
2459
+ break;
2460
+ }
2461
+ return false;
2462
+ case RISCV_SFENCE_VMA:
2463
+ if (MCInst_getNumOperands(MI) == 2 &&
2464
+ MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
2465
+ MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0) {
2466
+ // (SFENCE_VMA X0, X0)
2467
+ AsmString = "sfence.vma";
2468
+ break;
2469
+ }
2470
+ if (MCInst_getNumOperands(MI) == 2 &&
2471
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2472
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2473
+ MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0) {
2474
+ // (SFENCE_VMA GPR:$rs, X0)
2475
+ AsmString = "sfence.vma $\x01";
2476
+ break;
2477
+ }
2478
+ return false;
2479
+ case RISCV_SLT:
2480
+ if (MCInst_getNumOperands(MI) == 3 &&
2481
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2482
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2483
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2484
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2485
+ MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
2486
+ // (SLT GPR:$rd, GPR:$rs, X0)
2487
+ AsmString = "sltz $\x01, $\x02";
2488
+ break;
2489
+ }
2490
+ if (MCInst_getNumOperands(MI) == 3 &&
2491
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2492
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2493
+ MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2494
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2495
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2496
+ // (SLT GPR:$rd, X0, GPR:$rs)
2497
+ AsmString = "sgtz $\x01, $\x03";
2498
+ break;
2499
+ }
2500
+ return false;
2501
+ case RISCV_SLTIU:
2502
+ if (MCInst_getNumOperands(MI) == 3 &&
2503
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2504
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2505
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2506
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2507
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2508
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == 1) {
2509
+ // (SLTIU GPR:$rd, GPR:$rs, 1)
2510
+ AsmString = "seqz $\x01, $\x02";
2511
+ break;
2512
+ }
2513
+ return false;
2514
+ case RISCV_SLTU:
2515
+ if (MCInst_getNumOperands(MI) == 3 &&
2516
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2517
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2518
+ MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2519
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2520
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2521
+ // (SLTU GPR:$rd, X0, GPR:$rs)
2522
+ AsmString = "snez $\x01, $\x03";
2523
+ break;
2524
+ }
2525
+ return false;
2526
+ case RISCV_SUB:
2527
+ if (MCInst_getNumOperands(MI) == 3 &&
2528
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2529
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2530
+ MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2531
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2532
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2533
+ // (SUB GPR:$rd, X0, GPR:$rs)
2534
+ AsmString = "neg $\x01, $\x03";
2535
+ break;
2536
+ }
2537
+ return false;
2538
+ case RISCV_SUBW:
2539
+ if (MCInst_getNumOperands(MI) == 3 &&
2540
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2541
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2542
+ MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
2543
+ MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
2544
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
2545
+ // (SUBW GPR:$rd, X0, GPR:$rs)
2546
+ AsmString = "negw $\x01, $\x03";
2547
+ break;
2548
+ }
2549
+ return false;
2550
+ case RISCV_XORI:
2551
+ if (MCInst_getNumOperands(MI) == 3 &&
2552
+ MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
2553
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
2554
+ MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
2555
+ MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
2556
+ MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
2557
+ MCOperand_getImm(MCInst_getOperand(MI, 2)) == -1) {
2558
+ // (XORI GPR:$rd, GPR:$rs, -1)
2559
+ AsmString = "not $\x01, $\x02";
2560
+ break;
2561
+ }
2562
+ return false;
2563
+ }
2564
+
2565
+ AsmStringLen = strlen(AsmString);
2566
+ if (ASMSTRING_CONTAIN_SIZE - 1 < AsmStringLen)
2567
+ tmpString = cs_strdup(AsmString);
2568
+ else
2569
+ tmpString = memcpy(tmpString, AsmString, 1 + AsmStringLen);
2570
+
2571
+ while (AsmString[I] != ' ' && AsmString[I] != '\t' &&
2572
+ AsmString[I] != '$' && AsmString[I] != '\0')
2573
+ ++I;
2574
+ tmpString[I] = 0;
2575
+ SStream_concat0(OS, tmpString);
2576
+ if (ASMSTRING_CONTAIN_SIZE - 1 < AsmStringLen)
2577
+ /* Free the possible cs_strdup() memory. PR#1424. */
2578
+ cs_mem_free(tmpString);
2579
+ #undef ASMSTRING_CONTAIN_SIZE
2580
+
2581
+ if (AsmString[I] != '\0') {
2582
+ if (AsmString[I] == ' ' || AsmString[I] == '\t') {
2583
+ SStream_concat0(OS, " ");
2584
+ ++I;
2585
+ }
2586
+ do {
2587
+ if (AsmString[I] == '$') {
2588
+ ++I;
2589
+ if (AsmString[I] == (char)0xff) {
2590
+ ++I;
2591
+ int OpIdx = AsmString[I++] - 1;
2592
+ int PrintMethodIdx = AsmString[I++] - 1;
2593
+ printCustomAliasOperand(MI, OpIdx, PrintMethodIdx, OS);
2594
+ } else
2595
+ printOperand(MI, (unsigned)(AsmString[I++]) - 1, OS);
2596
+ } else {
2597
+ SStream_concat1(OS, AsmString[I++]);
2598
+ }
2599
+ } while (AsmString[I] != '\0');
2600
+ }
2601
+
2602
+ return true;
2603
+ }
2604
+
2605
+ static void printCustomAliasOperand(
2606
+ MCInst *MI, unsigned OpIdx,
2607
+ unsigned PrintMethodIdx,
2608
+ SStream *OS) {
2609
+ switch (PrintMethodIdx) {
2610
+ default:
2611
+ CS_ASSERT(0 && "Unknown PrintMethod kind");
2612
+ break;
2613
+ case 0:
2614
+ printCSRSystemRegister(MI, OpIdx, OS);
2615
+ break;
2616
+ }
2617
+ }
2618
+
2619
+ static bool RISCVInstPrinterValidateMCOperand(MCOperand *MCOp,
2620
+ unsigned PredicateIndex) {
2621
+ // TODO: need some constant untils operate the MCOperand,
2622
+ // but current CAPSTONE does't have.
2623
+ // So, We just return true
2624
+ return true;
2625
+
2626
+ #if 0
2627
+ switch (PredicateIndex) {
2628
+ default:
2629
+ llvm_unreachable("Unknown MCOperandPredicate kind");
2630
+ break;
2631
+ case 1: {
2632
+
2633
+ int64_t Imm;
2634
+ if (MCOp.evaluateAsConstantImm(Imm))
2635
+ return isShiftedInt<12, 1>(Imm);
2636
+ return MCOp.isBareSymbolRef();
2637
+
2638
+ }
2639
+ case 2: {
2640
+
2641
+ int64_t Imm;
2642
+ if (MCOp.evaluateAsConstantImm(Imm))
2643
+ return isShiftedInt<20, 1>(Imm);
2644
+ return MCOp.isBareSymbolRef();
2645
+
2646
+ }
2647
+ }
2648
+ #endif
2649
+ }
2650
+
2651
+ #endif // PRINT_ALIAS_INSTR