blob: c89d7d5cf341e25f33d7a4803d69e861871534cb [file] [log] [blame]
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|* *|
|* Assembly Writer Source Fragment *|
|* *|
|* Automatically generated file, do not edit! *|
|* *|
\*===----------------------------------------------------------------------===*/
/* Capstone Disassembly Engine */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */
#include <stdio.h> // debug
#include <capstone/platform.h>
#include <assert.h>
/// printInstruction - This method is automatically generated by tablegen
/// from the instruction set description.
static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
{
#ifndef CAPSTONE_DIET
static const char AsmStrs[] = {
/* 0 */ 'l', 'l', 'a', 9, 0,
/* 5 */ 's', 'f', 'e', 'n', 'c', 'e', '.', 'v', 'm', 'a', 9, 0,
/* 17 */ 's', 'r', 'a', 9, 0,
/* 22 */ 'l', 'b', 9, 0,
/* 26 */ 's', 'b', 9, 0,
/* 30 */ 'c', '.', 's', 'u', 'b', 9, 0,
/* 37 */ 'a', 'u', 'i', 'p', 'c', 9, 0,
/* 44 */ 'c', 's', 'r', 'r', 'c', 9, 0,
/* 51 */ 'f', 's', 'u', 'b', '.', 'd', 9, 0,
/* 59 */ 'f', 'm', 's', 'u', 'b', '.', 'd', 9, 0,
/* 68 */ 'f', 'n', 'm', 's', 'u', 'b', '.', 'd', 9, 0,
/* 78 */ 's', 'c', '.', 'd', 9, 0,
/* 84 */ 'f', 'a', 'd', 'd', '.', 'd', 9, 0,
/* 92 */ 'f', 'm', 'a', 'd', 'd', '.', 'd', 9, 0,
/* 101 */ 'f', 'n', 'm', 'a', 'd', 'd', '.', 'd', 9, 0,
/* 111 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'd', 9, 0,
/* 121 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'd', 9, 0,
/* 131 */ 'f', 'l', 'e', '.', 'd', 9, 0,
/* 138 */ 'f', 's', 'g', 'n', 'j', '.', 'd', 9, 0,
/* 147 */ 'f', 'c', 'v', 't', '.', 'l', '.', 'd', 9, 0,
/* 157 */ 'f', 'm', 'u', 'l', '.', 'd', 9, 0,
/* 165 */ 'f', 'm', 'i', 'n', '.', 'd', 9, 0,
/* 173 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'd', 9, 0,
/* 183 */ 'f', 's', 'g', 'n', 'j', 'n', '.', 'd', 9, 0,
/* 193 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'd', 9, 0,
/* 204 */ 'f', 'e', 'q', '.', 'd', 9, 0,
/* 211 */ 'l', 'r', '.', 'd', 9, 0,
/* 217 */ 'a', 'm', 'o', 'o', 'r', '.', 'd', 9, 0,
/* 226 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'd', 9, 0,
/* 236 */ 'f', 'c', 'v', 't', '.', 's', '.', 'd', 9, 0,
/* 246 */ 'f', 'c', 'l', 'a', 's', 's', '.', 'd', 9, 0,
/* 256 */ 'f', 'l', 't', '.', 'd', 9, 0,
/* 263 */ 'f', 's', 'q', 'r', 't', '.', 'd', 9, 0,
/* 272 */ 'f', 'c', 'v', 't', '.', 'l', 'u', '.', 'd', 9, 0,
/* 283 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'd', 9, 0,
/* 294 */ 'f', 'c', 'v', 't', '.', 'w', 'u', '.', 'd', 9, 0,
/* 305 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'd', 9, 0,
/* 316 */ 'f', 'd', 'i', 'v', '.', 'd', 9, 0,
/* 324 */ 'f', 'c', 'v', 't', '.', 'w', '.', 'd', 9, 0,
/* 334 */ 'f', 'm', 'v', '.', 'x', '.', 'd', 9, 0,
/* 343 */ 'f', 'm', 'a', 'x', '.', 'd', 9, 0,
/* 351 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'd', 9, 0,
/* 361 */ 'f', 's', 'g', 'n', 'j', 'x', '.', 'd', 9, 0,
/* 371 */ 'c', '.', 'a', 'd', 'd', 9, 0,
/* 378 */ 'c', '.', 'l', 'd', 9, 0,
/* 384 */ 'c', '.', 'f', 'l', 'd', 9, 0,
/* 391 */ 'c', '.', 'a', 'n', 'd', 9, 0,
/* 398 */ 'c', '.', 's', 'd', 9, 0,
/* 404 */ 'c', '.', 'f', 's', 'd', 9, 0,
/* 411 */ 'f', 'e', 'n', 'c', 'e', 9, 0,
/* 418 */ 'b', 'g', 'e', 9, 0,
/* 423 */ 'b', 'n', 'e', 9, 0,
/* 428 */ 'm', 'u', 'l', 'h', 9, 0,
/* 434 */ 's', 'h', 9, 0,
/* 438 */ 'f', 'e', 'n', 'c', 'e', '.', 'i', 9, 0,
/* 447 */ 'c', '.', 's', 'r', 'a', 'i', 9, 0,
/* 455 */ 'c', 's', 'r', 'r', 'c', 'i', 9, 0,
/* 463 */ 'c', '.', 'a', 'd', 'd', 'i', 9, 0,
/* 471 */ 'c', '.', 'a', 'n', 'd', 'i', 9, 0,
/* 479 */ 'w', 'f', 'i', 9, 0,
/* 484 */ 'c', '.', 'l', 'i', 9, 0,
/* 490 */ 'c', '.', 's', 'l', 'l', 'i', 9, 0,
/* 498 */ 'c', '.', 's', 'r', 'l', 'i', 9, 0,
/* 506 */ 'x', 'o', 'r', 'i', 9, 0,
/* 512 */ 'c', 's', 'r', 'r', 's', 'i', 9, 0,
/* 520 */ 's', 'l', 't', 'i', 9, 0,
/* 526 */ 'c', '.', 'l', 'u', 'i', 9, 0,
/* 533 */ 'c', 's', 'r', 'r', 'w', 'i', 9, 0,
/* 541 */ 'c', '.', 'j', 9, 0,
/* 546 */ 'c', '.', 'e', 'b', 'r', 'e', 'a', 'k', 9, 0,
/* 556 */ 'f', 'c', 'v', 't', '.', 'd', '.', 'l', 9, 0,
/* 566 */ 'f', 'c', 'v', 't', '.', 's', '.', 'l', 9, 0,
/* 576 */ 'c', '.', 'j', 'a', 'l', 9, 0,
/* 583 */ 't', 'a', 'i', 'l', 9, 0,
/* 589 */ 'e', 'c', 'a', 'l', 'l', 9, 0,
/* 596 */ 's', 'l', 'l', 9, 0,
/* 601 */ 's', 'c', '.', 'd', '.', 'r', 'l', 9, 0,
/* 610 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'd', '.', 'r', 'l', 9, 0,
/* 623 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'd', '.', 'r', 'l', 9, 0,
/* 636 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'd', '.', 'r', 'l', 9, 0,
/* 649 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'd', '.', 'r', 'l', 9, 0,
/* 663 */ 'l', 'r', '.', 'd', '.', 'r', 'l', 9, 0,
/* 672 */ 'a', 'm', 'o', 'o', 'r', '.', 'd', '.', 'r', 'l', 9, 0,
/* 684 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'd', '.', 'r', 'l', 9, 0,
/* 697 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'd', '.', 'r', 'l', 9, 0,
/* 711 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'd', '.', 'r', 'l', 9, 0,
/* 725 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'd', '.', 'r', 'l', 9, 0,
/* 738 */ 's', 'c', '.', 'w', '.', 'r', 'l', 9, 0,
/* 747 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'w', '.', 'r', 'l', 9, 0,
/* 760 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'w', '.', 'r', 'l', 9, 0,
/* 773 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'w', '.', 'r', 'l', 9, 0,
/* 786 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'w', '.', 'r', 'l', 9, 0,
/* 800 */ 'l', 'r', '.', 'w', '.', 'r', 'l', 9, 0,
/* 809 */ 'a', 'm', 'o', 'o', 'r', '.', 'w', '.', 'r', 'l', 9, 0,
/* 821 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'w', '.', 'r', 'l', 9, 0,
/* 834 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'w', '.', 'r', 'l', 9, 0,
/* 848 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'w', '.', 'r', 'l', 9, 0,
/* 862 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'w', '.', 'r', 'l', 9, 0,
/* 875 */ 's', 'c', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 886 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 901 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 916 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 931 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 947 */ 'l', 'r', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 958 */ 'a', 'm', 'o', 'o', 'r', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 972 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 987 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 1003 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 1019 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'd', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 1034 */ 's', 'c', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 1045 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 1060 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 1075 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 1090 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 1106 */ 'l', 'r', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 1117 */ 'a', 'm', 'o', 'o', 'r', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 1131 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 1146 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 1162 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 1178 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'w', '.', 'a', 'q', 'r', 'l', 9, 0,
/* 1193 */ 's', 'r', 'l', 9, 0,
/* 1198 */ 'm', 'u', 'l', 9, 0,
/* 1203 */ 'r', 'e', 'm', 9, 0,
/* 1208 */ 'c', '.', 'a', 'd', 'd', 'i', '4', 's', 'p', 'n', 9, 0,
/* 1220 */ 'f', 'e', 'n', 'c', 'e', '.', 't', 's', 'o', 9, 0,
/* 1231 */ 'c', '.', 'u', 'n', 'i', 'm', 'p', 9, 0,
/* 1240 */ 'c', '.', 'n', 'o', 'p', 9, 0,
/* 1247 */ 'c', '.', 'a', 'd', 'd', 'i', '1', '6', 's', 'p', 9, 0,
/* 1259 */ 'c', '.', 'l', 'd', 's', 'p', 9, 0,
/* 1267 */ 'c', '.', 'f', 'l', 'd', 's', 'p', 9, 0,
/* 1276 */ 'c', '.', 's', 'd', 's', 'p', 9, 0,
/* 1284 */ 'c', '.', 'f', 's', 'd', 's', 'p', 9, 0,
/* 1293 */ 'c', '.', 'l', 'w', 's', 'p', 9, 0,
/* 1301 */ 'c', '.', 'f', 'l', 'w', 's', 'p', 9, 0,
/* 1310 */ 'c', '.', 's', 'w', 's', 'p', 9, 0,
/* 1318 */ 'c', '.', 'f', 's', 'w', 's', 'p', 9, 0,
/* 1327 */ 's', 'c', '.', 'd', '.', 'a', 'q', 9, 0,
/* 1336 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'd', '.', 'a', 'q', 9, 0,
/* 1349 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'd', '.', 'a', 'q', 9, 0,
/* 1362 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'd', '.', 'a', 'q', 9, 0,
/* 1375 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'd', '.', 'a', 'q', 9, 0,
/* 1389 */ 'l', 'r', '.', 'd', '.', 'a', 'q', 9, 0,
/* 1398 */ 'a', 'm', 'o', 'o', 'r', '.', 'd', '.', 'a', 'q', 9, 0,
/* 1410 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'd', '.', 'a', 'q', 9, 0,
/* 1423 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'd', '.', 'a', 'q', 9, 0,
/* 1437 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'd', '.', 'a', 'q', 9, 0,
/* 1451 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'd', '.', 'a', 'q', 9, 0,
/* 1464 */ 's', 'c', '.', 'w', '.', 'a', 'q', 9, 0,
/* 1473 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'w', '.', 'a', 'q', 9, 0,
/* 1486 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'w', '.', 'a', 'q', 9, 0,
/* 1499 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'w', '.', 'a', 'q', 9, 0,
/* 1512 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'w', '.', 'a', 'q', 9, 0,
/* 1526 */ 'l', 'r', '.', 'w', '.', 'a', 'q', 9, 0,
/* 1535 */ 'a', 'm', 'o', 'o', 'r', '.', 'w', '.', 'a', 'q', 9, 0,
/* 1547 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'w', '.', 'a', 'q', 9, 0,
/* 1560 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'w', '.', 'a', 'q', 9, 0,
/* 1574 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'w', '.', 'a', 'q', 9, 0,
/* 1588 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'w', '.', 'a', 'q', 9, 0,
/* 1601 */ 'b', 'e', 'q', 9, 0,
/* 1606 */ 'c', '.', 'j', 'r', 9, 0,
/* 1612 */ 'c', '.', 'j', 'a', 'l', 'r', 9, 0,
/* 1620 */ 'c', '.', 'o', 'r', 9, 0,
/* 1626 */ 'c', '.', 'x', 'o', 'r', 9, 0,
/* 1633 */ 'f', 's', 'u', 'b', '.', 's', 9, 0,
/* 1641 */ 'f', 'm', 's', 'u', 'b', '.', 's', 9, 0,
/* 1650 */ 'f', 'n', 'm', 's', 'u', 'b', '.', 's', 9, 0,
/* 1660 */ 'f', 'c', 'v', 't', '.', 'd', '.', 's', 9, 0,
/* 1670 */ 'f', 'a', 'd', 'd', '.', 's', 9, 0,
/* 1678 */ 'f', 'm', 'a', 'd', 'd', '.', 's', 9, 0,
/* 1687 */ 'f', 'n', 'm', 'a', 'd', 'd', '.', 's', 9, 0,
/* 1697 */ 'f', 'l', 'e', '.', 's', 9, 0,
/* 1704 */ 'f', 's', 'g', 'n', 'j', '.', 's', 9, 0,
/* 1713 */ 'f', 'c', 'v', 't', '.', 'l', '.', 's', 9, 0,
/* 1723 */ 'f', 'm', 'u', 'l', '.', 's', 9, 0,
/* 1731 */ 'f', 'm', 'i', 'n', '.', 's', 9, 0,
/* 1739 */ 'f', 's', 'g', 'n', 'j', 'n', '.', 's', 9, 0,
/* 1749 */ 'f', 'e', 'q', '.', 's', 9, 0,
/* 1756 */ 'f', 'c', 'l', 'a', 's', 's', '.', 's', 9, 0,
/* 1766 */ 'f', 'l', 't', '.', 's', 9, 0,
/* 1773 */ 'f', 's', 'q', 'r', 't', '.', 's', 9, 0,
/* 1782 */ 'f', 'c', 'v', 't', '.', 'l', 'u', '.', 's', 9, 0,
/* 1793 */ 'f', 'c', 'v', 't', '.', 'w', 'u', '.', 's', 9, 0,
/* 1804 */ 'f', 'd', 'i', 'v', '.', 's', 9, 0,
/* 1812 */ 'f', 'c', 'v', 't', '.', 'w', '.', 's', 9, 0,
/* 1822 */ 'f', 'm', 'a', 'x', '.', 's', 9, 0,
/* 1830 */ 'f', 's', 'g', 'n', 'j', 'x', '.', 's', 9, 0,
/* 1840 */ 'c', 's', 'r', 'r', 's', 9, 0,
/* 1847 */ 'm', 'r', 'e', 't', 9, 0,
/* 1853 */ 's', 'r', 'e', 't', 9, 0,
/* 1859 */ 'u', 'r', 'e', 't', 9, 0,
/* 1865 */ 'b', 'l', 't', 9, 0,
/* 1870 */ 's', 'l', 't', 9, 0,
/* 1875 */ 'l', 'b', 'u', 9, 0,
/* 1880 */ 'b', 'g', 'e', 'u', 9, 0,
/* 1886 */ 'm', 'u', 'l', 'h', 'u', 9, 0,
/* 1893 */ 's', 'l', 't', 'i', 'u', 9, 0,
/* 1900 */ 'f', 'c', 'v', 't', '.', 'd', '.', 'l', 'u', 9, 0,
/* 1911 */ 'f', 'c', 'v', 't', '.', 's', '.', 'l', 'u', 9, 0,
/* 1922 */ 'r', 'e', 'm', 'u', 9, 0,
/* 1928 */ 'm', 'u', 'l', 'h', 's', 'u', 9, 0,
/* 1936 */ 'b', 'l', 't', 'u', 9, 0,
/* 1942 */ 's', 'l', 't', 'u', 9, 0,
/* 1948 */ 'd', 'i', 'v', 'u', 9, 0,
/* 1954 */ 'f', 'c', 'v', 't', '.', 'd', '.', 'w', 'u', 9, 0,
/* 1965 */ 'f', 'c', 'v', 't', '.', 's', '.', 'w', 'u', 9, 0,
/* 1976 */ 'l', 'w', 'u', 9, 0,
/* 1981 */ 'd', 'i', 'v', 9, 0,
/* 1986 */ 'c', '.', 'm', 'v', 9, 0,
/* 1992 */ 's', 'c', '.', 'w', 9, 0,
/* 1998 */ 'f', 'c', 'v', 't', '.', 'd', '.', 'w', 9, 0,
/* 2008 */ 'a', 'm', 'o', 'a', 'd', 'd', '.', 'w', 9, 0,
/* 2018 */ 'a', 'm', 'o', 'a', 'n', 'd', '.', 'w', 9, 0,
/* 2028 */ 'a', 'm', 'o', 'm', 'i', 'n', '.', 'w', 9, 0,
/* 2038 */ 'a', 'm', 'o', 's', 'w', 'a', 'p', '.', 'w', 9, 0,
/* 2049 */ 'l', 'r', '.', 'w', 9, 0,
/* 2055 */ 'a', 'm', 'o', 'o', 'r', '.', 'w', 9, 0,
/* 2064 */ 'a', 'm', 'o', 'x', 'o', 'r', '.', 'w', 9, 0,
/* 2074 */ 'f', 'c', 'v', 't', '.', 's', '.', 'w', 9, 0,
/* 2084 */ 'a', 'm', 'o', 'm', 'i', 'n', 'u', '.', 'w', 9, 0,
/* 2095 */ 'a', 'm', 'o', 'm', 'a', 'x', 'u', '.', 'w', 9, 0,
/* 2106 */ 'f', 'm', 'v', '.', 'x', '.', 'w', 9, 0,
/* 2115 */ 'a', 'm', 'o', 'm', 'a', 'x', '.', 'w', 9, 0,
/* 2125 */ 's', 'r', 'a', 'w', 9, 0,
/* 2131 */ 'c', '.', 's', 'u', 'b', 'w', 9, 0,
/* 2139 */ 'c', '.', 'a', 'd', 'd', 'w', 9, 0,
/* 2147 */ 's', 'r', 'a', 'i', 'w', 9, 0,
/* 2154 */ 'c', '.', 'a', 'd', 'd', 'i', 'w', 9, 0,
/* 2163 */ 's', 'l', 'l', 'i', 'w', 9, 0,
/* 2170 */ 's', 'r', 'l', 'i', 'w', 9, 0,
/* 2177 */ 'c', '.', 'l', 'w', 9, 0,
/* 2183 */ 'c', '.', 'f', 'l', 'w', 9, 0,
/* 2190 */ 's', 'l', 'l', 'w', 9, 0,
/* 2196 */ 's', 'r', 'l', 'w', 9, 0,
/* 2202 */ 'm', 'u', 'l', 'w', 9, 0,
/* 2208 */ 'r', 'e', 'm', 'w', 9, 0,
/* 2214 */ 'c', 's', 'r', 'r', 'w', 9, 0,
/* 2221 */ 'c', '.', 's', 'w', 9, 0,
/* 2227 */ 'c', '.', 'f', 's', 'w', 9, 0,
/* 2234 */ 'r', 'e', 'm', 'u', 'w', 9, 0,
/* 2241 */ 'd', 'i', 'v', 'u', 'w', 9, 0,
/* 2248 */ 'd', 'i', 'v', 'w', 9, 0,
/* 2254 */ 'f', 'm', 'v', '.', 'd', '.', 'x', 9, 0,
/* 2263 */ 'f', 'm', 'v', '.', 'w', '.', 'x', 9, 0,
/* 2272 */ 'c', '.', 'b', 'n', 'e', 'z', 9, 0,
/* 2280 */ 'c', '.', 'b', 'e', 'q', 'z', 9, 0,
/* 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,
/* 2319 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'y', 'p', 'e', 'd', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
/* 2343 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'C', 'u', 's', 't', 'o', 'm', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
/* 2368 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'n', 't', 'e', 'r', '.', 0,
/* 2391 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'a', 'i', 'l', 32, 'C', 'a', 'l', 'l', 32, 'E', 'x', 'i', 't', '.', 0,
/* 2414 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'x', 'i', 't', '.', 0,
/* 2436 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'E', 'N', 'D', 0,
/* 2449 */ 'B', 'U', 'N', 'D', 'L', 'E', 0,
/* 2456 */ 'D', 'B', 'G', '_', 'V', 'A', 'L', 'U', 'E', 0,
/* 2466 */ 'D', 'B', 'G', '_', 'L', 'A', 'B', 'E', 'L', 0,
/* 2476 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'S', 'T', 'A', 'R', 'T', 0,
/* 2491 */ '#', 32, 'F', 'E', 'n', 't', 'r', 'y', 32, 'c', 'a', 'l', 'l', 0,
};
#endif
static const uint16_t OpInfo0[] = {
0U, // PHI
0U, // INLINEASM
0U, // INLINEASM_BR
0U, // CFI_INSTRUCTION
0U, // EH_LABEL
0U, // GC_LABEL
0U, // ANNOTATION_LABEL
0U, // KILL
0U, // EXTRACT_SUBREG
0U, // INSERT_SUBREG
0U, // IMPLICIT_DEF
0U, // SUBREG_TO_REG
0U, // COPY_TO_REGCLASS
2457U, // DBG_VALUE
2467U, // DBG_LABEL
0U, // REG_SEQUENCE
0U, // COPY
2450U, // BUNDLE
2477U, // LIFETIME_START
2437U, // LIFETIME_END
0U, // STACKMAP
2492U, // FENTRY_CALL
0U, // PATCHPOINT
0U, // LOAD_STACK_GUARD
0U, // STATEPOINT
0U, // LOCAL_ESCAPE
0U, // FAULTING_OP
0U, // PATCHABLE_OP
2369U, // PATCHABLE_FUNCTION_ENTER
2289U, // PATCHABLE_RET
2415U, // PATCHABLE_FUNCTION_EXIT
2392U, // PATCHABLE_TAIL_CALL
2344U, // PATCHABLE_EVENT_CALL
2320U, // PATCHABLE_TYPED_EVENT_CALL
0U, // ICALL_BRANCH_FUNNEL
0U, // G_ADD
0U, // G_SUB
0U, // G_MUL
0U, // G_SDIV
0U, // G_UDIV
0U, // G_SREM
0U, // G_UREM
0U, // G_AND
0U, // G_OR
0U, // G_XOR
0U, // G_IMPLICIT_DEF
0U, // G_PHI
0U, // G_FRAME_INDEX
0U, // G_GLOBAL_VALUE
0U, // G_EXTRACT
0U, // G_UNMERGE_VALUES
0U, // G_INSERT
0U, // G_MERGE_VALUES
0U, // G_BUILD_VECTOR
0U, // G_BUILD_VECTOR_TRUNC
0U, // G_CONCAT_VECTORS
0U, // G_PTRTOINT
0U, // G_INTTOPTR
0U, // G_BITCAST
0U, // G_INTRINSIC_TRUNC
0U, // G_INTRINSIC_ROUND
0U, // G_LOAD
0U, // G_SEXTLOAD
0U, // G_ZEXTLOAD
0U, // G_STORE
0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
0U, // G_ATOMIC_CMPXCHG
0U, // G_ATOMICRMW_XCHG
0U, // G_ATOMICRMW_ADD
0U, // G_ATOMICRMW_SUB
0U, // G_ATOMICRMW_AND
0U, // G_ATOMICRMW_NAND
0U, // G_ATOMICRMW_OR
0U, // G_ATOMICRMW_XOR
0U, // G_ATOMICRMW_MAX
0U, // G_ATOMICRMW_MIN
0U, // G_ATOMICRMW_UMAX
0U, // G_ATOMICRMW_UMIN
0U, // G_BRCOND
0U, // G_BRINDIRECT
0U, // G_INTRINSIC
0U, // G_INTRINSIC_W_SIDE_EFFECTS
0U, // G_ANYEXT
0U, // G_TRUNC
0U, // G_CONSTANT
0U, // G_FCONSTANT
0U, // G_VASTART
0U, // G_VAARG
0U, // G_SEXT
0U, // G_ZEXT
0U, // G_SHL
0U, // G_LSHR
0U, // G_ASHR
0U, // G_ICMP
0U, // G_FCMP
0U, // G_SELECT
0U, // G_UADDO
0U, // G_UADDE
0U, // G_USUBO
0U, // G_USUBE
0U, // G_SADDO
0U, // G_SADDE
0U, // G_SSUBO
0U, // G_SSUBE
0U, // G_UMULO
0U, // G_SMULO
0U, // G_UMULH
0U, // G_SMULH
0U, // G_FADD
0U, // G_FSUB
0U, // G_FMUL
0U, // G_FMA
0U, // G_FDIV
0U, // G_FREM
0U, // G_FPOW
0U, // G_FEXP
0U, // G_FEXP2
0U, // G_FLOG
0U, // G_FLOG2
0U, // G_FLOG10
0U, // G_FNEG
0U, // G_FPEXT
0U, // G_FPTRUNC
0U, // G_FPTOSI
0U, // G_FPTOUI
0U, // G_SITOFP
0U, // G_UITOFP
0U, // G_FABS
0U, // G_FCANONICALIZE
0U, // G_GEP
0U, // G_PTR_MASK
0U, // G_BR
0U, // G_INSERT_VECTOR_ELT
0U, // G_EXTRACT_VECTOR_ELT
0U, // G_SHUFFLE_VECTOR
0U, // G_CTTZ
0U, // G_CTTZ_ZERO_UNDEF
0U, // G_CTLZ
0U, // G_CTLZ_ZERO_UNDEF
0U, // G_CTPOP
0U, // G_BSWAP
0U, // G_FCEIL
0U, // G_FCOS
0U, // G_FSIN
0U, // G_FSQRT
0U, // G_FFLOOR
0U, // G_ADDRSPACE_CAST
0U, // G_BLOCK_ADDR
4U, // ADJCALLSTACKDOWN
4U, // ADJCALLSTACKUP
4U, // BuildPairF64Pseudo
4U, // PseudoAtomicLoadNand32
4U, // PseudoAtomicLoadNand64
4U, // PseudoBR
4U, // PseudoBRIND
4687U, // PseudoCALL
4U, // PseudoCALLIndirect
4U, // PseudoCmpXchg32
4U, // PseudoCmpXchg64
20482U, // PseudoLA
20967U, // PseudoLI
20481U, // PseudoLLA
4U, // PseudoMaskedAtomicLoadAdd32
4U, // PseudoMaskedAtomicLoadMax32
4U, // PseudoMaskedAtomicLoadMin32
4U, // PseudoMaskedAtomicLoadNand32
4U, // PseudoMaskedAtomicLoadSub32
4U, // PseudoMaskedAtomicLoadUMax32
4U, // PseudoMaskedAtomicLoadUMin32
4U, // PseudoMaskedAtomicSwap32
4U, // PseudoMaskedCmpXchg32
4U, // PseudoRET
4680U, // PseudoTAIL
4U, // PseudoTAILIndirect
4U, // Select_FPR32_Using_CC_GPR
4U, // Select_FPR64_Using_CC_GPR
4U, // Select_GPR_Using_CC_GPR
4U, // SplitF64Pseudo
20854U, // ADD
20946U, // ADDI
22637U, // ADDIW
22622U, // ADDW
20592U, // AMOADD_D
21817U, // AMOADD_D_AQ
21367U, // AMOADD_D_AQ_RL
21091U, // AMOADD_D_RL
22489U, // AMOADD_W
21954U, // AMOADD_W_AQ
21526U, // AMOADD_W_AQ_RL
21228U, // AMOADD_W_RL
20602U, // AMOAND_D
21830U, // AMOAND_D_AQ
21382U, // AMOAND_D_AQ_RL
21104U, // AMOAND_D_RL
22499U, // AMOAND_W
21967U, // AMOAND_W_AQ
21541U, // AMOAND_W_AQ_RL
21241U, // AMOAND_W_RL
20786U, // AMOMAXU_D
21918U, // AMOMAXU_D_AQ
21484U, // AMOMAXU_D_AQ_RL
21192U, // AMOMAXU_D_RL
22576U, // AMOMAXU_W
22055U, // AMOMAXU_W_AQ
21643U, // AMOMAXU_W_AQ_RL
21329U, // AMOMAXU_W_RL
20832U, // AMOMAX_D
21932U, // AMOMAX_D_AQ
21500U, // AMOMAX_D_AQ_RL
21206U, // AMOMAX_D_RL
22596U, // AMOMAX_W
22069U, // AMOMAX_W_AQ
21659U, // AMOMAX_W_AQ_RL
21343U, // AMOMAX_W_RL
20764U, // AMOMINU_D
21904U, // AMOMINU_D_AQ
21468U, // AMOMINU_D_AQ_RL
21178U, // AMOMINU_D_RL
22565U, // AMOMINU_W
22041U, // AMOMINU_W_AQ
21627U, // AMOMINU_W_AQ_RL
21315U, // AMOMINU_W_RL
20654U, // AMOMIN_D
21843U, // AMOMIN_D_AQ
21397U, // AMOMIN_D_AQ_RL
21117U, // AMOMIN_D_RL
22509U, // AMOMIN_W
21980U, // AMOMIN_W_AQ
21556U, // AMOMIN_W_AQ_RL
21254U, // AMOMIN_W_RL
20698U, // AMOOR_D
21879U, // AMOOR_D_AQ
21439U, // AMOOR_D_AQ_RL
21153U, // AMOOR_D_RL
22536U, // AMOOR_W
22016U, // AMOOR_W_AQ
21598U, // AMOOR_W_AQ_RL
21290U, // AMOOR_W_RL
20674U, // AMOSWAP_D
21856U, // AMOSWAP_D_AQ
21412U, // AMOSWAP_D_AQ_RL
21130U, // AMOSWAP_D_RL
22519U, // AMOSWAP_W
21993U, // AMOSWAP_W_AQ
21571U, // AMOSWAP_W_AQ_RL
21267U, // AMOSWAP_W_RL
20707U, // AMOXOR_D
21891U, // AMOXOR_D_AQ
21453U, // AMOXOR_D_AQ_RL
21165U, // AMOXOR_D_RL
22545U, // AMOXOR_W
22028U, // AMOXOR_W_AQ
21612U, // AMOXOR_W_AQ_RL
21302U, // AMOXOR_W_RL
20874U, // AND
20954U, // ANDI
20518U, // AUIPC
22082U, // BEQ
20899U, // BGE
22361U, // BGEU
22346U, // BLT
22417U, // BLTU
20904U, // BNE
20525U, // CSRRC
20936U, // CSRRCI
22321U, // CSRRS
20993U, // CSRRSI
22695U, // CSRRW
21014U, // CSRRWI
8564U, // C_ADD
8656U, // C_ADDI
9440U, // C_ADDI16SP
21689U, // C_ADDI4SPN
10347U, // C_ADDIW
10332U, // C_ADDW
8584U, // C_AND
8664U, // C_ANDI
22761U, // C_BEQZ
22753U, // C_BNEZ
547U, // C_EBREAK
20865U, // C_FLD
21748U, // C_FLDSP
22664U, // C_FLW
21782U, // C_FLWSP
20885U, // C_FSD
21765U, // C_FSDSP
22708U, // C_FSW
21799U, // C_FSWSP
4638U, // C_J
4673U, // C_JAL
5709U, // C_JALR
5703U, // C_JR
20859U, // C_LD
21740U, // C_LDSP
20965U, // C_LI
21007U, // C_LUI
22658U, // C_LW
21774U, // C_LWSP
22467U, // C_MV
1241U, // C_NOP
9813U, // C_OR
20879U, // C_SD
21757U, // C_SDSP
8683U, // C_SLLI
8640U, // C_SRAI
8691U, // C_SRLI
8223U, // C_SUB
10324U, // C_SUBW
22702U, // C_SW
21791U, // C_SWSP
1232U, // C_UNIMP
9819U, // C_XOR
22462U, // DIV
22429U, // DIVU
22722U, // DIVUW
22729U, // DIVW
549U, // EBREAK
590U, // ECALL
20565U, // FADD_D
22151U, // FADD_S
20727U, // FCLASS_D
22237U, // FCLASS_S
21037U, // FCVT_D_L
22381U, // FCVT_D_LU
22141U, // FCVT_D_S
22479U, // FCVT_D_W
22435U, // FCVT_D_WU
20753U, // FCVT_LU_D
22263U, // FCVT_LU_S
20628U, // FCVT_L_D
22194U, // FCVT_L_S
20717U, // FCVT_S_D
21047U, // FCVT_S_L
22392U, // FCVT_S_LU
22555U, // FCVT_S_W
22446U, // FCVT_S_WU
20775U, // FCVT_WU_D
22274U, // FCVT_WU_S
20805U, // FCVT_W_D
22293U, // FCVT_W_S
20797U, // FDIV_D
22285U, // FDIV_S
12700U, // FENCE
439U, // FENCE_I
1221U, // FENCE_TSO
20685U, // FEQ_D
22230U, // FEQ_S
20867U, // FLD
20612U, // FLE_D
22178U, // FLE_S
20737U, // FLT_D
22247U, // FLT_S
22666U, // FLW
20573U, // FMADD_D
22159U, // FMADD_S
20824U, // FMAX_D
22303U, // FMAX_S
20646U, // FMIN_D
22212U, // FMIN_S
20540U, // FMSUB_D
22122U, // FMSUB_S
20638U, // FMUL_D
22204U, // FMUL_S
22735U, // FMV_D_X
22744U, // FMV_W_X
20815U, // FMV_X_D
22587U, // FMV_X_W
20582U, // FNMADD_D
22168U, // FNMADD_S
20549U, // FNMSUB_D
22131U, // FNMSUB_S
20887U, // FSD
20664U, // FSGNJN_D
22220U, // FSGNJN_S
20842U, // FSGNJX_D
22311U, // FSGNJX_S
20619U, // FSGNJ_D
22185U, // FSGNJ_S
20744U, // FSQRT_D
22254U, // FSQRT_S
20532U, // FSUB_D
22114U, // FSUB_S
22710U, // FSW
21059U, // JAL
22095U, // JALR
20503U, // LB
22356U, // LBU
20861U, // LD
20911U, // LH
22369U, // LHU
37076U, // LR_D
38254U, // LR_D_AQ
37812U, // LR_D_AQ_RL
37528U, // LR_D_RL
38914U, // LR_W
38391U, // LR_W_AQ
37971U, // LR_W_AQ_RL
37665U, // LR_W_RL
21009U, // LUI
22660U, // LW
22457U, // LWU
1848U, // MRET
21679U, // MUL
20909U, // MULH
22409U, // MULHSU
22367U, // MULHU
22683U, // MULW
22103U, // OR
20988U, // ORI
21684U, // REM
22403U, // REMU
22715U, // REMUW
22689U, // REMW
20507U, // SB
20559U, // SC_D
21808U, // SC_D_AQ
21356U, // SC_D_AQ_RL
21082U, // SC_D_RL
22473U, // SC_W
21945U, // SC_W_AQ
21515U, // SC_W_AQ_RL
21219U, // SC_W_RL
20881U, // SD
20486U, // SFENCE_VMA
20915U, // SH
21077U, // SLL
20973U, // SLLI
22644U, // SLLIW
22671U, // SLLW
22351U, // SLT
21001U, // SLTI
22374U, // SLTIU
22423U, // SLTU
20498U, // SRA
20930U, // SRAI
22628U, // SRAIW
22606U, // SRAW
1854U, // SRET
21674U, // SRL
20981U, // SRLI
22651U, // SRLIW
22677U, // SRLW
20513U, // SUB
22614U, // SUBW
22704U, // SW
1234U, // UNIMP
1860U, // URET
480U, // WFI
22109U, // XOR
20987U, // XORI
};
static const uint8_t OpInfo1[] = {
0U, // PHI
0U, // INLINEASM
0U, // INLINEASM_BR
0U, // CFI_INSTRUCTION
0U, // EH_LABEL
0U, // GC_LABEL
0U, // ANNOTATION_LABEL
0U, // KILL
0U, // EXTRACT_SUBREG
0U, // INSERT_SUBREG
0U, // IMPLICIT_DEF
0U, // SUBREG_TO_REG
0U, // COPY_TO_REGCLASS
0U, // DBG_VALUE
0U, // DBG_LABEL
0U, // REG_SEQUENCE
0U, // COPY
0U, // BUNDLE
0U, // LIFETIME_START
0U, // LIFETIME_END
0U, // STACKMAP
0U, // FENTRY_CALL
0U, // PATCHPOINT
0U, // LOAD_STACK_GUARD
0U, // STATEPOINT
0U, // LOCAL_ESCAPE
0U, // FAULTING_OP
0U, // PATCHABLE_OP
0U, // PATCHABLE_FUNCTION_ENTER
0U, // PATCHABLE_RET
0U, // PATCHABLE_FUNCTION_EXIT
0U, // PATCHABLE_TAIL_CALL
0U, // PATCHABLE_EVENT_CALL
0U, // PATCHABLE_TYPED_EVENT_CALL
0U, // ICALL_BRANCH_FUNNEL
0U, // G_ADD
0U, // G_SUB
0U, // G_MUL
0U, // G_SDIV
0U, // G_UDIV
0U, // G_SREM
0U, // G_UREM
0U, // G_AND
0U, // G_OR
0U, // G_XOR
0U, // G_IMPLICIT_DEF
0U, // G_PHI
0U, // G_FRAME_INDEX
0U, // G_GLOBAL_VALUE
0U, // G_EXTRACT
0U, // G_UNMERGE_VALUES
0U, // G_INSERT
0U, // G_MERGE_VALUES
0U, // G_BUILD_VECTOR
0U, // G_BUILD_VECTOR_TRUNC
0U, // G_CONCAT_VECTORS
0U, // G_PTRTOINT
0U, // G_INTTOPTR
0U, // G_BITCAST
0U, // G_INTRINSIC_TRUNC
0U, // G_INTRINSIC_ROUND
0U, // G_LOAD
0U, // G_SEXTLOAD
0U, // G_ZEXTLOAD
0U, // G_STORE
0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
0U, // G_ATOMIC_CMPXCHG
0U, // G_ATOMICRMW_XCHG
0U, // G_ATOMICRMW_ADD
0U, // G_ATOMICRMW_SUB
0U, // G_ATOMICRMW_AND
0U, // G_ATOMICRMW_NAND
0U, // G_ATOMICRMW_OR
0U, // G_ATOMICRMW_XOR
0U, // G_ATOMICRMW_MAX
0U, // G_ATOMICRMW_MIN
0U, // G_ATOMICRMW_UMAX
0U, // G_ATOMICRMW_UMIN
0U, // G_BRCOND
0U, // G_BRINDIRECT
0U, // G_INTRINSIC
0U, // G_INTRINSIC_W_SIDE_EFFECTS
0U, // G_ANYEXT
0U, // G_TRUNC
0U, // G_CONSTANT
0U, // G_FCONSTANT
0U, // G_VASTART
0U, // G_VAARG
0U, // G_SEXT
0U, // G_ZEXT
0U, // G_SHL
0U, // G_LSHR
0U, // G_ASHR
0U, // G_ICMP
0U, // G_FCMP
0U, // G_SELECT
0U, // G_UADDO
0U, // G_UADDE
0U, // G_USUBO
0U, // G_USUBE
0U, // G_SADDO
0U, // G_SADDE
0U, // G_SSUBO
0U, // G_SSUBE
0U, // G_UMULO
0U, // G_SMULO
0U, // G_UMULH
0U, // G_SMULH
0U, // G_FADD
0U, // G_FSUB
0U, // G_FMUL
0U, // G_FMA
0U, // G_FDIV
0U, // G_FREM
0U, // G_FPOW
0U, // G_FEXP
0U, // G_FEXP2
0U, // G_FLOG
0U, // G_FLOG2
0U, // G_FLOG10
0U, // G_FNEG
0U, // G_FPEXT
0U, // G_FPTRUNC
0U, // G_FPTOSI
0U, // G_FPTOUI
0U, // G_SITOFP
0U, // G_UITOFP
0U, // G_FABS
0U, // G_FCANONICALIZE
0U, // G_GEP
0U, // G_PTR_MASK
0U, // G_BR
0U, // G_INSERT_VECTOR_ELT
0U, // G_EXTRACT_VECTOR_ELT
0U, // G_SHUFFLE_VECTOR
0U, // G_CTTZ
0U, // G_CTTZ_ZERO_UNDEF
0U, // G_CTLZ
0U, // G_CTLZ_ZERO_UNDEF
0U, // G_CTPOP
0U, // G_BSWAP
0U, // G_FCEIL
0U, // G_FCOS
0U, // G_FSIN
0U, // G_FSQRT
0U, // G_FFLOOR
0U, // G_ADDRSPACE_CAST
0U, // G_BLOCK_ADDR
0U, // ADJCALLSTACKDOWN
0U, // ADJCALLSTACKUP
0U, // BuildPairF64Pseudo
0U, // PseudoAtomicLoadNand32
0U, // PseudoAtomicLoadNand64
0U, // PseudoBR
0U, // PseudoBRIND
0U, // PseudoCALL
0U, // PseudoCALLIndirect
0U, // PseudoCmpXchg32
0U, // PseudoCmpXchg64
0U, // PseudoLA
0U, // PseudoLI
0U, // PseudoLLA
0U, // PseudoMaskedAtomicLoadAdd32
0U, // PseudoMaskedAtomicLoadMax32
0U, // PseudoMaskedAtomicLoadMin32
0U, // PseudoMaskedAtomicLoadNand32
0U, // PseudoMaskedAtomicLoadSub32
0U, // PseudoMaskedAtomicLoadUMax32
0U, // PseudoMaskedAtomicLoadUMin32
0U, // PseudoMaskedAtomicSwap32
0U, // PseudoMaskedCmpXchg32
0U, // PseudoRET
0U, // PseudoTAIL
0U, // PseudoTAILIndirect
0U, // Select_FPR32_Using_CC_GPR
0U, // Select_FPR64_Using_CC_GPR
0U, // Select_GPR_Using_CC_GPR
0U, // SplitF64Pseudo
4U, // ADD
4U, // ADDI
4U, // ADDIW
4U, // ADDW
9U, // AMOADD_D
9U, // AMOADD_D_AQ
9U, // AMOADD_D_AQ_RL
9U, // AMOADD_D_RL
9U, // AMOADD_W
9U, // AMOADD_W_AQ
9U, // AMOADD_W_AQ_RL
9U, // AMOADD_W_RL
9U, // AMOAND_D
9U, // AMOAND_D_AQ
9U, // AMOAND_D_AQ_RL
9U, // AMOAND_D_RL
9U, // AMOAND_W
9U, // AMOAND_W_AQ
9U, // AMOAND_W_AQ_RL
9U, // AMOAND_W_RL
9U, // AMOMAXU_D
9U, // AMOMAXU_D_AQ
9U, // AMOMAXU_D_AQ_RL
9U, // AMOMAXU_D_RL
9U, // AMOMAXU_W
9U, // AMOMAXU_W_AQ
9U, // AMOMAXU_W_AQ_RL
9U, // AMOMAXU_W_RL
9U, // AMOMAX_D
9U, // AMOMAX_D_AQ
9U, // AMOMAX_D_AQ_RL
9U, // AMOMAX_D_RL
9U, // AMOMAX_W
9U, // AMOMAX_W_AQ
9U, // AMOMAX_W_AQ_RL
9U, // AMOMAX_W_RL
9U, // AMOMINU_D
9U, // AMOMINU_D_AQ
9U, // AMOMINU_D_AQ_RL
9U, // AMOMINU_D_RL
9U, // AMOMINU_W
9U, // AMOMINU_W_AQ
9U, // AMOMINU_W_AQ_RL
9U, // AMOMINU_W_RL
9U, // AMOMIN_D
9U, // AMOMIN_D_AQ
9U, // AMOMIN_D_AQ_RL
9U, // AMOMIN_D_RL
9U, // AMOMIN_W
9U, // AMOMIN_W_AQ
9U, // AMOMIN_W_AQ_RL
9U, // AMOMIN_W_RL
9U, // AMOOR_D
9U, // AMOOR_D_AQ
9U, // AMOOR_D_AQ_RL
9U, // AMOOR_D_RL
9U, // AMOOR_W
9U, // AMOOR_W_AQ
9U, // AMOOR_W_AQ_RL
9U, // AMOOR_W_RL
9U, // AMOSWAP_D
9U, // AMOSWAP_D_AQ
9U, // AMOSWAP_D_AQ_RL
9U, // AMOSWAP_D_RL
9U, // AMOSWAP_W
9U, // AMOSWAP_W_AQ
9U, // AMOSWAP_W_AQ_RL
9U, // AMOSWAP_W_RL
9U, // AMOXOR_D
9U, // AMOXOR_D_AQ
9U, // AMOXOR_D_AQ_RL
9U, // AMOXOR_D_RL
9U, // AMOXOR_W
9U, // AMOXOR_W_AQ
9U, // AMOXOR_W_AQ_RL
9U, // AMOXOR_W_RL
4U, // AND
4U, // ANDI
0U, // AUIPC
4U, // BEQ
4U, // BGE
4U, // BGEU
4U, // BLT
4U, // BLTU
4U, // BNE
2U, // CSRRC
2U, // CSRRCI
2U, // CSRRS
2U, // CSRRSI
2U, // CSRRW
2U, // CSRRWI
0U, // C_ADD
0U, // C_ADDI
0U, // C_ADDI16SP
4U, // C_ADDI4SPN
0U, // C_ADDIW
0U, // C_ADDW
0U, // C_AND
0U, // C_ANDI
0U, // C_BEQZ
0U, // C_BNEZ
0U, // C_EBREAK
13U, // C_FLD
13U, // C_FLDSP
13U, // C_FLW
13U, // C_FLWSP
13U, // C_FSD
13U, // C_FSDSP
13U, // C_FSW
13U, // C_FSWSP
0U, // C_J
0U, // C_JAL
0U, // C_JALR
0U, // C_JR
13U, // C_LD
13U, // C_LDSP
0U, // C_LI
0U, // C_LUI
13U, // C_LW
13U, // C_LWSP
0U, // C_MV
0U, // C_NOP
0U, // C_OR
13U, // C_SD
13U, // C_SDSP
0U, // C_SLLI
0U, // C_SRAI
0U, // C_SRLI
0U, // C_SUB
0U, // C_SUBW
13U, // C_SW
13U, // C_SWSP
0U, // C_UNIMP
0U, // C_XOR
4U, // DIV
4U, // DIVU
4U, // DIVUW
4U, // DIVW
0U, // EBREAK
0U, // ECALL
36U, // FADD_D
36U, // FADD_S
0U, // FCLASS_D
0U, // FCLASS_S
20U, // FCVT_D_L
20U, // FCVT_D_LU
0U, // FCVT_D_S
0U, // FCVT_D_W
0U, // FCVT_D_WU
20U, // FCVT_LU_D
20U, // FCVT_LU_S
20U, // FCVT_L_D
20U, // FCVT_L_S
20U, // FCVT_S_D
20U, // FCVT_S_L
20U, // FCVT_S_LU
20U, // FCVT_S_W
20U, // FCVT_S_WU
20U, // FCVT_WU_D
20U, // FCVT_WU_S
20U, // FCVT_W_D
20U, // FCVT_W_S
36U, // FDIV_D
36U, // FDIV_S
0U, // FENCE
0U, // FENCE_I
0U, // FENCE_TSO
4U, // FEQ_D
4U, // FEQ_S
13U, // FLD
4U, // FLE_D
4U, // FLE_S
4U, // FLT_D
4U, // FLT_S
13U, // FLW
100U, // FMADD_D
100U, // FMADD_S
4U, // FMAX_D
4U, // FMAX_S
4U, // FMIN_D
4U, // FMIN_S
100U, // FMSUB_D
100U, // FMSUB_S
36U, // FMUL_D
36U, // FMUL_S
0U, // FMV_D_X
0U, // FMV_W_X
0U, // FMV_X_D
0U, // FMV_X_W
100U, // FNMADD_D
100U, // FNMADD_S
100U, // FNMSUB_D
100U, // FNMSUB_S
13U, // FSD
4U, // FSGNJN_D
4U, // FSGNJN_S
4U, // FSGNJX_D
4U, // FSGNJX_S
4U, // FSGNJ_D
4U, // FSGNJ_S
20U, // FSQRT_D
20U, // FSQRT_S
36U, // FSUB_D
36U, // FSUB_S
13U, // FSW
0U, // JAL
4U, // JALR
13U, // LB
13U, // LBU
13U, // LD
13U, // LH
13U, // LHU
0U, // LR_D
0U, // LR_D_AQ
0U, // LR_D_AQ_RL
0U, // LR_D_RL
0U, // LR_W
0U, // LR_W_AQ
0U, // LR_W_AQ_RL
0U, // LR_W_RL
0U, // LUI
13U, // LW
13U, // LWU
0U, // MRET
4U, // MUL
4U, // MULH
4U, // MULHSU
4U, // MULHU
4U, // MULW
4U, // OR
4U, // ORI
4U, // REM
4U, // REMU
4U, // REMUW
4U, // REMW
13U, // SB
9U, // SC_D
9U, // SC_D_AQ
9U, // SC_D_AQ_RL
9U, // SC_D_RL
9U, // SC_W
9U, // SC_W_AQ
9U, // SC_W_AQ_RL
9U, // SC_W_RL
13U, // SD
0U, // SFENCE_VMA
13U, // SH
4U, // SLL
4U, // SLLI
4U, // SLLIW
4U, // SLLW
4U, // SLT
4U, // SLTI
4U, // SLTIU
4U, // SLTU
4U, // SRA
4U, // SRAI
4U, // SRAIW
4U, // SRAW
0U, // SRET
4U, // SRL
4U, // SRLI
4U, // SRLIW
4U, // SRLW
4U, // SUB
4U, // SUBW
13U, // SW
0U, // UNIMP
0U, // URET
0U, // WFI
4U, // XOR
4U, // XORI
};
// Emit the opcode for the instruction.
uint32_t Bits = 0;
Bits |= OpInfo0[MCInst_getOpcode(MI)] << 0;
Bits |= OpInfo1[MCInst_getOpcode(MI)] << 16;
CS_ASSERT(Bits != 0 && "Cannot print this instruction.");
#ifndef CAPSTONE_DIET
SStream_concat0(O, AsmStrs+(Bits & 4095)-1);
#endif
// Fragment 0 encoded into 2 bits for 4 unique commands.
switch ((Bits >> 12) & 3) {
default: CS_ASSERT(0 && "Invalid command number.");
case 0:
// DBG_VALUE, DBG_LABEL, BUNDLE, LIFETIME_START, LIFETIME_END, FENTRY_CAL...
return;
break;
case 1:
// PseudoCALL, PseudoLA, PseudoLI, PseudoLLA, PseudoTAIL, ADD, ADDI, ADDI...
printOperand(MI, 0, O);
break;
case 2:
// C_ADD, C_ADDI, C_ADDI16SP, C_ADDIW, C_ADDW, C_AND, C_ANDI, C_OR, C_SLL...
printOperand(MI, 1, O);
SStream_concat0(O, ", ");
printOperand(MI, 2, O);
return;
break;
case 3:
// FENCE
printFenceArg(MI, 0, O);
SStream_concat0(O, ", ");
printFenceArg(MI, 1, O);
return;
break;
}
// Fragment 1 encoded into 2 bits for 3 unique commands.
switch ((Bits >> 14) & 3) {
default: CS_ASSERT(0 && "Invalid command number.");
case 0:
// PseudoCALL, PseudoTAIL, C_J, C_JAL, C_JALR, C_JR
return;
break;
case 1:
// PseudoLA, PseudoLI, PseudoLLA, ADD, ADDI, ADDIW, ADDW, AMOADD_D, AMOAD...
SStream_concat0(O, ", ");
break;
case 2:
// LR_D, LR_D_AQ, LR_D_AQ_RL, LR_D_RL, LR_W, LR_W_AQ, LR_W_AQ_RL, LR_W_RL
SStream_concat0(O, ", (");
printOperand(MI, 1, O);
SStream_concat0(O, ")");
return;
break;
}
// Fragment 2 encoded into 2 bits for 3 unique commands.
switch ((Bits >> 16) & 3) {
default: CS_ASSERT(0 && "Invalid command number.");
case 0:
// PseudoLA, PseudoLI, PseudoLLA, ADD, ADDI, ADDIW, ADDW, AND, ANDI, AUIP...
printOperand(MI, 1, O);
break;
case 1:
// AMOADD_D, AMOADD_D_AQ, AMOADD_D_AQ_RL, AMOADD_D_RL, AMOADD_W, AMOADD_W...
printOperand(MI, 2, O);
break;
case 2:
// CSRRC, CSRRCI, CSRRS, CSRRSI, CSRRW, CSRRWI
printCSRSystemRegister(MI, 1, O);
SStream_concat0(O, ", ");
printOperand(MI, 2, O);
return;
break;
}
// Fragment 3 encoded into 2 bits for 4 unique commands.
switch ((Bits >> 18) & 3) {
default: CS_ASSERT(0 && "Invalid command number.");
case 0:
// PseudoLA, PseudoLI, PseudoLLA, AUIPC, C_BEQZ, C_BNEZ, C_LI, C_LUI, C_M...
return;
break;
case 1:
// ADD, ADDI, ADDIW, ADDW, AND, ANDI, BEQ, BGE, BGEU, BLT, BLTU, BNE, C_A...
SStream_concat0(O, ", ");
break;
case 2:
// AMOADD_D, AMOADD_D_AQ, AMOADD_D_AQ_RL, AMOADD_D_RL, AMOADD_W, AMOADD_W...
SStream_concat0(O, ", (");
printOperand(MI, 1, O);
SStream_concat0(O, ")");
return;
break;
case 3:
// C_FLD, C_FLDSP, C_FLW, C_FLWSP, C_FSD, C_FSDSP, C_FSW, C_FSWSP, C_LD, ...
SStream_concat0(O, "(");
printOperand(MI, 1, O);
SStream_concat0(O, ")");
return;
break;
}
// Fragment 4 encoded into 1 bits for 2 unique commands.
if ((Bits >> 20) & 1) {
// FCVT_D_L, FCVT_D_LU, FCVT_LU_D, FCVT_LU_S, FCVT_L_D, FCVT_L_S, FCVT_S_...
printFRMArg(MI, 2, O);
return;
} else {
// ADD, ADDI, ADDIW, ADDW, AND, ANDI, BEQ, BGE, BGEU, BLT, BLTU, BNE, C_A...
printOperand(MI, 2, O);
}
// Fragment 5 encoded into 1 bits for 2 unique commands.
if ((Bits >> 21) & 1) {
// FADD_D, FADD_S, FDIV_D, FDIV_S, FMADD_D, FMADD_S, FMSUB_D, FMSUB_S, FM...
SStream_concat0(O, ", ");
} else {
// ADD, ADDI, ADDIW, ADDW, AND, ANDI, BEQ, BGE, BGEU, BLT, BLTU, BNE, C_A...
return;
}
// Fragment 6 encoded into 1 bits for 2 unique commands.
if ((Bits >> 22) & 1) {
// FMADD_D, FMADD_S, FMSUB_D, FMSUB_S, FNMADD_D, FNMADD_S, FNMSUB_D, FNMS...
printOperand(MI, 3, O);
SStream_concat0(O, ", ");
printFRMArg(MI, 4, O);
return;
} else {
// FADD_D, FADD_S, FDIV_D, FDIV_S, FMUL_D, FMUL_S, FSUB_D, FSUB_S
printFRMArg(MI, 3, O);
return;
}
}
/// getRegisterName - This method is automatically generated by tblgen
/// from the register set description. This returns the assembler name
/// for the specified register.
static const char *
getRegisterName(unsigned RegNo, unsigned AltIdx)
{
CS_ASSERT(RegNo && RegNo < 97 && "Invalid register number!");
#ifndef CAPSTONE_DIET
static const char AsmStrsABIRegAltName[] = {
/* 0 */ 'f', 's', '1', '0', 0,
/* 5 */ 'f', 't', '1', '0', 0,
/* 10 */ 'f', 'a', '0', 0,
/* 14 */ 'f', 's', '0', 0,
/* 18 */ 'f', 't', '0', 0,
/* 22 */ 'f', 's', '1', '1', 0,
/* 27 */ 'f', 't', '1', '1', 0,
/* 32 */ 'f', 'a', '1', 0,
/* 36 */ 'f', 's', '1', 0,
/* 40 */ 'f', 't', '1', 0,
/* 44 */ 'f', 'a', '2', 0,
/* 48 */ 'f', 's', '2', 0,
/* 52 */ 'f', 't', '2', 0,
/* 56 */ 'f', 'a', '3', 0,
/* 60 */ 'f', 's', '3', 0,
/* 64 */ 'f', 't', '3', 0,
/* 68 */ 'f', 'a', '4', 0,
/* 72 */ 'f', 's', '4', 0,
/* 76 */ 'f', 't', '4', 0,
/* 80 */ 'f', 'a', '5', 0,
/* 84 */ 'f', 's', '5', 0,
/* 88 */ 'f', 't', '5', 0,
/* 92 */ 'f', 'a', '6', 0,
/* 96 */ 'f', 's', '6', 0,
/* 100 */ 'f', 't', '6', 0,
/* 104 */ 'f', 'a', '7', 0,
/* 108 */ 'f', 's', '7', 0,
/* 112 */ 'f', 't', '7', 0,
/* 116 */ 'f', 's', '8', 0,
/* 120 */ 'f', 't', '8', 0,
/* 124 */ 'f', 's', '9', 0,
/* 128 */ 'f', 't', '9', 0,
/* 132 */ 'r', 'a', 0,
/* 135 */ 'z', 'e', 'r', 'o', 0,
/* 140 */ 'g', 'p', 0,
/* 143 */ 's', 'p', 0,
/* 146 */ 't', 'p', 0,
};
static const uint8_t RegAsmOffsetABIRegAltName[] = {
135, 132, 143, 140, 146, 19, 41, 53, 15, 37, 11, 33, 45, 57,
69, 81, 93, 105, 49, 61, 73, 85, 97, 109, 117, 125, 1, 23,
65, 77, 89, 101, 18, 18, 40, 40, 52, 52, 64, 64, 76, 76,
88, 88, 100, 100, 112, 112, 14, 14, 36, 36, 10, 10, 32, 32,
44, 44, 56, 56, 68, 68, 80, 80, 92, 92, 104, 104, 48, 48,
60, 60, 72, 72, 84, 84, 96, 96, 108, 108, 116, 116, 124, 124,
0, 0, 22, 22, 120, 120, 128, 128, 5, 5, 27, 27,
};
static const char AsmStrsNoRegAltName[] = {
/* 0 */ 'f', '1', '0', 0,
/* 4 */ 'x', '1', '0', 0,
/* 8 */ 'f', '2', '0', 0,
/* 12 */ 'x', '2', '0', 0,
/* 16 */ 'f', '3', '0', 0,
/* 20 */ 'x', '3', '0', 0,
/* 24 */ 'f', '0', 0,
/* 27 */ 'x', '0', 0,
/* 30 */ 'f', '1', '1', 0,
/* 34 */ 'x', '1', '1', 0,
/* 38 */ 'f', '2', '1', 0,
/* 42 */ 'x', '2', '1', 0,
/* 46 */ 'f', '3', '1', 0,
/* 50 */ 'x', '3', '1', 0,
/* 54 */ 'f', '1', 0,
/* 57 */ 'x', '1', 0,
/* 60 */ 'f', '1', '2', 0,
/* 64 */ 'x', '1', '2', 0,
/* 68 */ 'f', '2', '2', 0,
/* 72 */ 'x', '2', '2', 0,
/* 76 */ 'f', '2', 0,
/* 79 */ 'x', '2', 0,
/* 82 */ 'f', '1', '3', 0,
/* 86 */ 'x', '1', '3', 0,
/* 90 */ 'f', '2', '3', 0,
/* 94 */ 'x', '2', '3', 0,
/* 98 */ 'f', '3', 0,
/* 101 */ 'x', '3', 0,
/* 104 */ 'f', '1', '4', 0,
/* 108 */ 'x', '1', '4', 0,
/* 112 */ 'f', '2', '4', 0,
/* 116 */ 'x', '2', '4', 0,
/* 120 */ 'f', '4', 0,
/* 123 */ 'x', '4', 0,
/* 126 */ 'f', '1', '5', 0,
/* 130 */ 'x', '1', '5', 0,
/* 134 */ 'f', '2', '5', 0,
/* 138 */ 'x', '2', '5', 0,
/* 142 */ 'f', '5', 0,
/* 145 */ 'x', '5', 0,
/* 148 */ 'f', '1', '6', 0,
/* 152 */ 'x', '1', '6', 0,
/* 156 */ 'f', '2', '6', 0,
/* 160 */ 'x', '2', '6', 0,
/* 164 */ 'f', '6', 0,
/* 167 */ 'x', '6', 0,
/* 170 */ 'f', '1', '7', 0,
/* 174 */ 'x', '1', '7', 0,
/* 178 */ 'f', '2', '7', 0,
/* 182 */ 'x', '2', '7', 0,
/* 186 */ 'f', '7', 0,
/* 189 */ 'x', '7', 0,
/* 192 */ 'f', '1', '8', 0,
/* 196 */ 'x', '1', '8', 0,
/* 200 */ 'f', '2', '8', 0,
/* 204 */ 'x', '2', '8', 0,
/* 208 */ 'f', '8', 0,
/* 211 */ 'x', '8', 0,
/* 214 */ 'f', '1', '9', 0,
/* 218 */ 'x', '1', '9', 0,
/* 222 */ 'f', '2', '9', 0,
/* 226 */ 'x', '2', '9', 0,
/* 230 */ 'f', '9', 0,
/* 233 */ 'x', '9', 0,
};
static const uint8_t RegAsmOffsetNoRegAltName[] = {
27, 57, 79, 101, 123, 145, 167, 189, 211, 233, 4, 34, 64, 86,
108, 130, 152, 174, 196, 218, 12, 42, 72, 94, 116, 138, 160, 182,
204, 226, 20, 50, 24, 24, 54, 54, 76, 76, 98, 98, 120, 120,
142, 142, 164, 164, 186, 186, 208, 208, 230, 230, 0, 0, 30, 30,
60, 60, 82, 82, 104, 104, 126, 126, 148, 148, 170, 170, 192, 192,
214, 214, 8, 8, 38, 38, 68, 68, 90, 90, 112, 112, 134, 134,
156, 156, 178, 178, 200, 200, 222, 222, 16, 16, 46, 46,
};
switch(AltIdx) {
default: CS_ASSERT(0 && "Invalid register alt name index!");
case RISCV_ABIRegAltName:
CS_ASSERT(*(AsmStrsABIRegAltName+RegAsmOffsetABIRegAltName[RegNo-1]) &&
"Invalid alt name index for register!");
return AsmStrsABIRegAltName+RegAsmOffsetABIRegAltName[RegNo-1];
case RISCV_NoRegAltName:
CS_ASSERT(*(AsmStrsNoRegAltName+RegAsmOffsetNoRegAltName[RegNo-1]) &&
"Invalid alt name index for register!");
return AsmStrsNoRegAltName+RegAsmOffsetNoRegAltName[RegNo-1];
}
#else
return NULL;
#endif
}
#ifdef PRINT_ALIAS_INSTR
#undef PRINT_ALIAS_INSTR
static bool RISCVInstPrinterValidateMCOperand(MCOperand *MCOp,
unsigned PredicateIndex);
static bool printAliasInstr(MCInst *MI, SStream * OS, void *info)
{
MCRegisterInfo *MRI = (MCRegisterInfo *) info;
const char *AsmString;
unsigned I = 0;
#define ASMSTRING_CONTAIN_SIZE 64
unsigned AsmStringLen = 0;
char tmpString_[ASMSTRING_CONTAIN_SIZE];
char *tmpString = tmpString_;
switch (MCInst_getOpcode(MI)) {
default: return false;
case RISCV_ADDI:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
// (ADDI X0, X0, 0)
AsmString = "nop";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
// (ADDI GPR:$rd, GPR:$rs, 0)
AsmString = "mv $\x01, $\x02";
break;
}
return false;
case RISCV_ADDIW:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
// (ADDIW GPR:$rd, GPR:$rs, 0)
AsmString = "sext.w $\x01, $\x02";
break;
}
return false;
case RISCV_BEQ:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
// (BEQ GPR:$rs, X0, simm13_lsb0:$offset)
AsmString = "beqz $\x01, $\x03";
break;
}
return false;
case RISCV_BGE:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
// (BGE X0, GPR:$rs, simm13_lsb0:$offset)
AsmString = "blez $\x02, $\x03";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
// (BGE GPR:$rs, X0, simm13_lsb0:$offset)
AsmString = "bgez $\x01, $\x03";
break;
}
return false;
case RISCV_BLT:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
// (BLT GPR:$rs, X0, simm13_lsb0:$offset)
AsmString = "bltz $\x01, $\x03";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
// (BLT X0, GPR:$rs, simm13_lsb0:$offset)
AsmString = "bgtz $\x02, $\x03";
break;
}
return false;
case RISCV_BNE:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 2), 1)) {
// (BNE GPR:$rs, X0, simm13_lsb0:$offset)
AsmString = "bnez $\x01, $\x03";
break;
}
return false;
case RISCV_CSRRC:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
// (CSRRC X0, csr_sysreg:$csr, GPR:$rs)
AsmString = "csrc $\xFF\x02\x01, $\x03";
break;
}
return false;
case RISCV_CSRRCI:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
// (CSRRCI X0, csr_sysreg:$csr, uimm5:$imm)
AsmString = "csrci $\xFF\x02\x01, $\x03";
break;
}
return false;
case RISCV_CSRRS:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
// (CSRRS GPR:$rd, 3, X0)
AsmString = "frcsr $\x01";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
// (CSRRS GPR:$rd, 2, X0)
AsmString = "frrm $\x01";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
// (CSRRS GPR:$rd, 1, X0)
AsmString = "frflags $\x01";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3074 &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
// (CSRRS GPR:$rd, 3074, X0)
AsmString = "rdinstret $\x01";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3072 &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
// (CSRRS GPR:$rd, 3072, X0)
AsmString = "rdcycle $\x01";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3073 &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
// (CSRRS GPR:$rd, 3073, X0)
AsmString = "rdtime $\x01";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3202 &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
// (CSRRS GPR:$rd, 3202, X0)
AsmString = "rdinstreth $\x01";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3200 &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
// (CSRRS GPR:$rd, 3200, X0)
AsmString = "rdcycleh $\x01";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3201 &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
// (CSRRS GPR:$rd, 3201, X0)
AsmString = "rdtimeh $\x01";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
// (CSRRS GPR:$rd, csr_sysreg:$csr, X0)
AsmString = "csrr $\x01, $\xFF\x02\x01";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
// (CSRRS X0, csr_sysreg:$csr, GPR:$rs)
AsmString = "csrs $\xFF\x02\x01, $\x03";
break;
}
return false;
case RISCV_CSRRSI:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
// (CSRRSI X0, csr_sysreg:$csr, uimm5:$imm)
AsmString = "csrsi $\xFF\x02\x01, $\x03";
break;
}
return false;
case RISCV_CSRRW:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
// (CSRRW X0, 3, GPR:$rs)
AsmString = "fscsr $\x03";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
// (CSRRW X0, 2, GPR:$rs)
AsmString = "fsrm $\x03";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
// (CSRRW X0, 1, GPR:$rs)
AsmString = "fsflags $\x03";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
// (CSRRW X0, csr_sysreg:$csr, GPR:$rs)
AsmString = "csrw $\xFF\x02\x01, $\x03";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
// (CSRRW GPR:$rd, 3, GPR:$rs)
AsmString = "fscsr $\x01, $\x03";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2 &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
// (CSRRW GPR:$rd, 2, GPR:$rs)
AsmString = "fsrm $\x01, $\x03";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1 &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
// (CSRRW GPR:$rd, 1, GPR:$rs)
AsmString = "fsflags $\x01, $\x03";
break;
}
return false;
case RISCV_CSRRWI:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2) {
// (CSRRWI X0, 2, uimm5:$imm)
AsmString = "fsrmi $\x03";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1) {
// (CSRRWI X0, 1, uimm5:$imm)
AsmString = "fsflagsi $\x03";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0) {
// (CSRRWI X0, csr_sysreg:$csr, uimm5:$imm)
AsmString = "csrwi $\xFF\x02\x01, $\x03";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 2) {
// (CSRRWI GPR:$rd, 2, uimm5:$imm)
AsmString = "fsrmi $\x01, $\x03";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 1) {
// (CSRRWI GPR:$rd, 1, uimm5:$imm)
AsmString = "fsflagsi $\x01, $\x03";
break;
}
return false;
case RISCV_FADD_D:
if (MCInst_getNumOperands(MI) == 4 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
// (FADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
AsmString = "fadd.d $\x01, $\x02, $\x03";
break;
}
return false;
case RISCV_FADD_S:
if (MCInst_getNumOperands(MI) == 4 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
// (FADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
AsmString = "fadd.s $\x01, $\x02, $\x03";
break;
}
return false;
case RISCV_FCVT_D_L:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FCVT_D_L FPR64:$rd, GPR:$rs1, { 1, 1, 1 })
AsmString = "fcvt.d.l $\x01, $\x02";
break;
}
return false;
case RISCV_FCVT_D_LU:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FCVT_D_LU FPR64:$rd, GPR:$rs1, { 1, 1, 1 })
AsmString = "fcvt.d.lu $\x01, $\x02";
break;
}
return false;
case RISCV_FCVT_LU_D:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FCVT_LU_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
AsmString = "fcvt.lu.d $\x01, $\x02";
break;
}
return false;
case RISCV_FCVT_LU_S:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FCVT_LU_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
AsmString = "fcvt.lu.s $\x01, $\x02";
break;
}
return false;
case RISCV_FCVT_L_D:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FCVT_L_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
AsmString = "fcvt.l.d $\x01, $\x02";
break;
}
return false;
case RISCV_FCVT_L_S:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FCVT_L_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
AsmString = "fcvt.l.s $\x01, $\x02";
break;
}
return false;
case RISCV_FCVT_S_D:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FCVT_S_D FPR32:$rd, FPR64:$rs1, { 1, 1, 1 })
AsmString = "fcvt.s.d $\x01, $\x02";
break;
}
return false;
case RISCV_FCVT_S_L:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FCVT_S_L FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
AsmString = "fcvt.s.l $\x01, $\x02";
break;
}
return false;
case RISCV_FCVT_S_LU:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FCVT_S_LU FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
AsmString = "fcvt.s.lu $\x01, $\x02";
break;
}
return false;
case RISCV_FCVT_S_W:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FCVT_S_W FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
AsmString = "fcvt.s.w $\x01, $\x02";
break;
}
return false;
case RISCV_FCVT_S_WU:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FCVT_S_WU FPR32:$rd, GPR:$rs1, { 1, 1, 1 })
AsmString = "fcvt.s.wu $\x01, $\x02";
break;
}
return false;
case RISCV_FCVT_WU_D:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FCVT_WU_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
AsmString = "fcvt.wu.d $\x01, $\x02";
break;
}
return false;
case RISCV_FCVT_WU_S:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FCVT_WU_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
AsmString = "fcvt.wu.s $\x01, $\x02";
break;
}
return false;
case RISCV_FCVT_W_D:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FCVT_W_D GPR:$rd, FPR64:$rs1, { 1, 1, 1 })
AsmString = "fcvt.w.d $\x01, $\x02";
break;
}
return false;
case RISCV_FCVT_W_S:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FCVT_W_S GPR:$rd, FPR32:$rs1, { 1, 1, 1 })
AsmString = "fcvt.w.s $\x01, $\x02";
break;
}
return false;
case RISCV_FDIV_D:
if (MCInst_getNumOperands(MI) == 4 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
// (FDIV_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
AsmString = "fdiv.d $\x01, $\x02, $\x03";
break;
}
return false;
case RISCV_FDIV_S:
if (MCInst_getNumOperands(MI) == 4 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
// (FDIV_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
AsmString = "fdiv.s $\x01, $\x02, $\x03";
break;
}
return false;
case RISCV_FENCE:
if (MCInst_getNumOperands(MI) == 2 &&
MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
MCOperand_isImm(MCInst_getOperand(MI, 1)) &&
MCOperand_getImm(MCInst_getOperand(MI, 1)) == 15) {
// (FENCE 15, 15)
AsmString = "fence";
break;
}
return false;
case RISCV_FMADD_D:
if (MCInst_getNumOperands(MI) == 5 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
// (FMADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
AsmString = "fmadd.d $\x01, $\x02, $\x03, $\x04";
break;
}
return false;
case RISCV_FMADD_S:
if (MCInst_getNumOperands(MI) == 5 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
// (FMADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
AsmString = "fmadd.s $\x01, $\x02, $\x03, $\x04";
break;
}
return false;
case RISCV_FMSUB_D:
if (MCInst_getNumOperands(MI) == 5 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
// (FMSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
AsmString = "fmsub.d $\x01, $\x02, $\x03, $\x04";
break;
}
return false;
case RISCV_FMSUB_S:
if (MCInst_getNumOperands(MI) == 5 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
// (FMSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
AsmString = "fmsub.s $\x01, $\x02, $\x03, $\x04";
break;
}
return false;
case RISCV_FMUL_D:
if (MCInst_getNumOperands(MI) == 4 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
// (FMUL_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
AsmString = "fmul.d $\x01, $\x02, $\x03";
break;
}
return false;
case RISCV_FMUL_S:
if (MCInst_getNumOperands(MI) == 4 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
// (FMUL_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
AsmString = "fmul.s $\x01, $\x02, $\x03";
break;
}
return false;
case RISCV_FNMADD_D:
if (MCInst_getNumOperands(MI) == 5 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
// (FNMADD_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
AsmString = "fnmadd.d $\x01, $\x02, $\x03, $\x04";
break;
}
return false;
case RISCV_FNMADD_S:
if (MCInst_getNumOperands(MI) == 5 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
// (FNMADD_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
AsmString = "fnmadd.s $\x01, $\x02, $\x03, $\x04";
break;
}
return false;
case RISCV_FNMSUB_D:
if (MCInst_getNumOperands(MI) == 5 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
// (FNMSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, FPR64:$rs3, { 1, 1, 1 })
AsmString = "fnmsub.d $\x01, $\x02, $\x03, $\x04";
break;
}
return false;
case RISCV_FNMSUB_S:
if (MCInst_getNumOperands(MI) == 5 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
MCOperand_isReg(MCInst_getOperand(MI, 3)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 3))) &&
MCOperand_isImm(MCInst_getOperand(MI, 4)) &&
MCOperand_getImm(MCInst_getOperand(MI, 4)) == 7) {
// (FNMSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, FPR32:$rs3, { 1, 1, 1 })
AsmString = "fnmsub.s $\x01, $\x02, $\x03, $\x04";
break;
}
return false;
case RISCV_FSGNJN_D:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
// (FSGNJN_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
AsmString = "fneg.d $\x01, $\x02";
break;
}
return false;
case RISCV_FSGNJN_S:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
// (FSGNJN_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
AsmString = "fneg.s $\x01, $\x02";
break;
}
return false;
case RISCV_FSGNJX_D:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
// (FSGNJX_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
AsmString = "fabs.d $\x01, $\x02";
break;
}
return false;
case RISCV_FSGNJX_S:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
// (FSGNJX_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
AsmString = "fabs.s $\x01, $\x02";
break;
}
return false;
case RISCV_FSGNJ_D:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
// (FSGNJ_D FPR64:$rd, FPR64:$rs, FPR64:$rs)
AsmString = "fmv.d $\x01, $\x02";
break;
}
return false;
case RISCV_FSGNJ_S:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
// (FSGNJ_S FPR32:$rd, FPR32:$rs, FPR32:$rs)
AsmString = "fmv.s $\x01, $\x02";
break;
}
return false;
case RISCV_FSQRT_D:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FSQRT_D FPR64:$rd, FPR64:$rs1, { 1, 1, 1 })
AsmString = "fsqrt.d $\x01, $\x02";
break;
}
return false;
case RISCV_FSQRT_S:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 7) {
// (FSQRT_S FPR32:$rd, FPR32:$rs1, { 1, 1, 1 })
AsmString = "fsqrt.s $\x01, $\x02";
break;
}
return false;
case RISCV_FSUB_D:
if (MCInst_getNumOperands(MI) == 4 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR64RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
// (FSUB_D FPR64:$rd, FPR64:$rs1, FPR64:$rs2, { 1, 1, 1 })
AsmString = "fsub.d $\x01, $\x02, $\x03";
break;
}
return false;
case RISCV_FSUB_S:
if (MCInst_getNumOperands(MI) == 4 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_FPR32RegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
MCOperand_getImm(MCInst_getOperand(MI, 3)) == 7) {
// (FSUB_S FPR32:$rd, FPR32:$rs1, FPR32:$rs2, { 1, 1, 1 })
AsmString = "fsub.s $\x01, $\x02, $\x03";
break;
}
return false;
case RISCV_JAL:
if (MCInst_getNumOperands(MI) == 2 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 1), 2)) {
// (JAL X0, simm21_lsb0_jal:$offset)
AsmString = "j $\x02";
break;
}
if (MCInst_getNumOperands(MI) == 2 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X1 &&
RISCVInstPrinterValidateMCOperand(MCInst_getOperand(MI, 1), 2)) {
// (JAL X1, simm21_lsb0_jal:$offset)
AsmString = "jal $\x02";
break;
}
return false;
case RISCV_JALR:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X1 &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
// (JALR X0, X1, 0)
AsmString = "ret";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
// (JALR X0, GPR:$rs, 0)
AsmString = "jr $\x02";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X1 &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
// (JALR X1, GPR:$rs, 0)
AsmString = "jalr $\x02";
break;
}
return false;
case RISCV_SFENCE_VMA:
if (MCInst_getNumOperands(MI) == 2 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == RISCV_X0 &&
MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0) {
// (SFENCE_VMA X0, X0)
AsmString = "sfence.vma";
break;
}
if (MCInst_getNumOperands(MI) == 2 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0) {
// (SFENCE_VMA GPR:$rs, X0)
AsmString = "sfence.vma $\x01";
break;
}
return false;
case RISCV_SLT:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == RISCV_X0) {
// (SLT GPR:$rd, GPR:$rs, X0)
AsmString = "sltz $\x01, $\x02";
break;
}
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
// (SLT GPR:$rd, X0, GPR:$rs)
AsmString = "sgtz $\x01, $\x03";
break;
}
return false;
case RISCV_SLTIU:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == 1) {
// (SLTIU GPR:$rd, GPR:$rs, 1)
AsmString = "seqz $\x01, $\x02";
break;
}
return false;
case RISCV_SLTU:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
// (SLTU GPR:$rd, X0, GPR:$rs)
AsmString = "snez $\x01, $\x03";
break;
}
return false;
case RISCV_SUB:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
// (SUB GPR:$rd, X0, GPR:$rs)
AsmString = "neg $\x01, $\x03";
break;
}
return false;
case RISCV_SUBW:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_getReg(MCInst_getOperand(MI, 1)) == RISCV_X0 &&
MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 2)))) {
// (SUBW GPR:$rd, X0, GPR:$rs)
AsmString = "negw $\x01, $\x03";
break;
}
return false;
case RISCV_XORI:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, RISCV_GPRRegClassID), MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
MCOperand_getImm(MCInst_getOperand(MI, 2)) == -1) {
// (XORI GPR:$rd, GPR:$rs, -1)
AsmString = "not $\x01, $\x02";
break;
}
return false;
}
AsmStringLen = strlen(AsmString);
if (ASMSTRING_CONTAIN_SIZE - 1 < AsmStringLen)
tmpString = cs_strdup(AsmString);
else
tmpString = memcpy(tmpString, AsmString, 1 + AsmStringLen);
while (AsmString[I] != ' ' && AsmString[I] != '\t' &&
AsmString[I] != '$' && AsmString[I] != '\0')
++I;
tmpString[I] = 0;
SStream_concat0(OS, tmpString);
if (ASMSTRING_CONTAIN_SIZE - 1 < AsmStringLen)
/* Free the possible cs_strdup() memory. PR#1424. */
cs_mem_free(tmpString);
#undef ASMSTRING_CONTAIN_SIZE
if (AsmString[I] != '\0') {
if (AsmString[I] == ' ' || AsmString[I] == '\t') {
SStream_concat0(OS, " ");
++I;
}
do {
if (AsmString[I] == '$') {
++I;
if (AsmString[I] == (char)0xff) {
++I;
int OpIdx = AsmString[I++] - 1;
int PrintMethodIdx = AsmString[I++] - 1;
printCustomAliasOperand(MI, OpIdx, PrintMethodIdx, OS);
} else
printOperand(MI, (unsigned)(AsmString[I++]) - 1, OS);
} else {
SStream_concat1(OS, AsmString[I++]);
}
} while (AsmString[I] != '\0');
}
return true;
}
static void printCustomAliasOperand(
MCInst *MI, unsigned OpIdx,
unsigned PrintMethodIdx,
SStream *OS) {
switch (PrintMethodIdx) {
default:
CS_ASSERT(0 && "Unknown PrintMethod kind");
break;
case 0:
printCSRSystemRegister(MI, OpIdx, OS);
break;
}
}
static bool RISCVInstPrinterValidateMCOperand(MCOperand *MCOp,
unsigned PredicateIndex) {
// TODO: need some constant untils operate the MCOperand,
// but current CAPSTONE does't have.
// So, We just return true
return true;
#if 0
switch (PredicateIndex) {
default:
llvm_unreachable("Unknown MCOperandPredicate kind");
break;
case 1: {
int64_t Imm;
if (MCOp.evaluateAsConstantImm(Imm))
return isShiftedInt<12, 1>(Imm);
return MCOp.isBareSymbolRef();
}
case 2: {
int64_t Imm;
if (MCOp.evaluateAsConstantImm(Imm))
return isShiftedInt<20, 1>(Imm);
return MCOp.isBareSymbolRef();
}
}
#endif
}
#endif // PRINT_ALIAS_INSTR