0006-Add-pseudo-instructions-for-B-extension.patch 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. From 32134df31c001130ac0ad9b3975827aaa9c8f42c Mon Sep 17 00:00:00 2001
  2. From: LevyHsu <admin@levyhsu.com>
  3. Date: Tue, 8 Jun 2021 15:04:36 +0800
  4. Subject: [PATCH 06/28] Add pseudo-instructions for B extension
  5. rev[2/4/8/16].[p/n/b/w]
  6. [un]zip[2/4/8/16].[p/n/b/w]
  7. orc[2/4/8/16].[p/n/b/w]
  8. ---
  9. opcodes/riscv-opc.c | 246 +++++++++++++++++++++++++++++++++++++++++++-
  10. 1 file changed, 242 insertions(+), 4 deletions(-)
  11. diff --git a/opcodes/riscv-opc.c b/opcodes/riscv-opc.c
  12. index df6b1659f8..dc7c1fb428 100644
  13. --- a/opcodes/riscv-opc.c
  14. +++ b/opcodes/riscv-opc.c
  15. @@ -25,9 +25,128 @@
  16. #include <stdio.h>
  17. #define MASK_SHAMT (OP_MASK_SHAMT << OP_SH_SHAMT)
  18. -#define MATCH_SHAMT_REV8_32 (0b11000 << OP_SH_SHAMT)
  19. -#define MATCH_SHAMT_REV8_64 (0b111000 << OP_SH_SHAMT)
  20. -#define MATCH_SHAMT_ORC_B (0b00111 << OP_SH_SHAMT)
  21. +#define MATCH_SHAMT_REV_32 (0b11111 << OP_SH_SHAMT)
  22. +#define MATCH_SHAMT_REV_64 (0b111111 << OP_SH_SHAMT)
  23. +#define MATCH_SHAMT_REV_P_32 (0b00001 << OP_SH_SHAMT)
  24. +#define MATCH_SHAMT_REV_P_64 (0b000001 << OP_SH_SHAMT)
  25. +#define MATCH_SHAMT_REV_N_32 (0b00011 << OP_SH_SHAMT)
  26. +#define MATCH_SHAMT_REV_N_64 (0b000011 << OP_SH_SHAMT)
  27. +#define MATCH_SHAMT_REV_B_32 (0b00111 << OP_SH_SHAMT)
  28. +#define MATCH_SHAMT_REV_B_64 (0b000111 << OP_SH_SHAMT)
  29. +#define MATCH_SHAMT_REV_H_32 (0b01111 << OP_SH_SHAMT)
  30. +#define MATCH_SHAMT_REV_H_64 (0b001111 << OP_SH_SHAMT)
  31. +#define MATCH_SHAMT_REV_W_64 (0b011111 << OP_SH_SHAMT)
  32. +#define MATCH_SHAMT_REV2_32 (0b11110 << OP_SH_SHAMT)
  33. +#define MATCH_SHAMT_REV2_64 (0b111110 << OP_SH_SHAMT)
  34. +#define MATCH_SHAMT_REV2_N_32 (0b00010 << OP_SH_SHAMT)
  35. +#define MATCH_SHAMT_REV2_N_64 (0b000010 << OP_SH_SHAMT)
  36. +#define MATCH_SHAMT_REV2_B_32 (0b00110 << OP_SH_SHAMT)
  37. +#define MATCH_SHAMT_REV2_B_64 (0b000110 << OP_SH_SHAMT)
  38. +#define MATCH_SHAMT_REV2_H_32 (0b01110 << OP_SH_SHAMT)
  39. +#define MATCH_SHAMT_REV2_H_64 (0b001110 << OP_SH_SHAMT)
  40. +#define MATCH_SHAMT_REV2_W_64 (0b011110 << OP_SH_SHAMT)
  41. +#define MATCH_SHAMT_REV4_32 (0b11100 << OP_SH_SHAMT)
  42. +#define MATCH_SHAMT_REV4_64 (0b111100 << OP_SH_SHAMT)
  43. +#define MATCH_SHAMT_REV4_B_32 (0b00100 << OP_SH_SHAMT)
  44. +#define MATCH_SHAMT_REV4_B_64 (0b000100 << OP_SH_SHAMT)
  45. +#define MATCH_SHAMT_REV4_H_32 (0b01100 << OP_SH_SHAMT)
  46. +#define MATCH_SHAMT_REV4_H_64 (0b001100 << OP_SH_SHAMT)
  47. +#define MATCH_SHAMT_REV4_W_64 (0b011100 << OP_SH_SHAMT)
  48. +#define MATCH_SHAMT_REV8_32 (0b11000 << OP_SH_SHAMT)
  49. +#define MATCH_SHAMT_REV8_64 (0b111000 << OP_SH_SHAMT)
  50. +#define MATCH_SHAMT_REV8_H_32 (0b01000 << OP_SH_SHAMT)
  51. +#define MATCH_SHAMT_REV8_H_64 (0b001000 << OP_SH_SHAMT)
  52. +#define MATCH_SHAMT_REV8_W_64 (0b011000 << OP_SH_SHAMT)
  53. +#define MATCH_SHAMT_REV16_32 (0b10000 << OP_SH_SHAMT)
  54. +#define MATCH_SHAMT_REV16_64 (0b110000 << OP_SH_SHAMT)
  55. +#define MATCH_SHAMT_REV16_W_64 (0b010000 << OP_SH_SHAMT)
  56. +#define MATCH_SHAMT_REV32_64 (0b100000 << OP_SH_SHAMT)
  57. +#define MATCH_SHAMT_ZIP_32 (0b11110 << OP_SH_SHAMT)
  58. +#define MATCH_SHAMT_ZIP_64 (0b111110 << OP_SH_SHAMT)
  59. +#define MATCH_SHAMT_ZIP_N_32 (0b00010 << OP_SH_SHAMT)
  60. +#define MATCH_SHAMT_ZIP_N_64 (0b000010 << OP_SH_SHAMT)
  61. +#define MATCH_SHAMT_ZIP_B_32 (0b00110 << OP_SH_SHAMT)
  62. +#define MATCH_SHAMT_ZIP_B_64 (0b000110 << OP_SH_SHAMT)
  63. +#define MATCH_SHAMT_ZIP_H_32 (0b01110 << OP_SH_SHAMT)
  64. +#define MATCH_SHAMT_ZIP_H_64 (0b001110 << OP_SH_SHAMT)
  65. +#define MATCH_SHAMT_ZIP_W_64 (0b011110 << OP_SH_SHAMT)
  66. +#define MATCH_SHAMT_ZIP2_32 (0b11100 << OP_SH_SHAMT)
  67. +#define MATCH_SHAMT_ZIP2_64 (0b111100 << OP_SH_SHAMT)
  68. +#define MATCH_SHAMT_ZIP2_B_32 (0b00100 << OP_SH_SHAMT)
  69. +#define MATCH_SHAMT_ZIP2_B_64 (0b000100 << OP_SH_SHAMT)
  70. +#define MATCH_SHAMT_ZIP2_H_32 (0b01100 << OP_SH_SHAMT)
  71. +#define MATCH_SHAMT_ZIP2_H_64 (0b001100 << OP_SH_SHAMT)
  72. +#define MATCH_SHAMT_ZIP2_W_64 (0b011100 << OP_SH_SHAMT)
  73. +#define MATCH_SHAMT_ZIP4_32 (0b11000 << OP_SH_SHAMT)
  74. +#define MATCH_SHAMT_ZIP4_64 (0b111000 << OP_SH_SHAMT)
  75. +#define MATCH_SHAMT_ZIP4_H_32 (0b01000 << OP_SH_SHAMT)
  76. +#define MATCH_SHAMT_ZIP4_H_64 (0b001000 << OP_SH_SHAMT)
  77. +#define MATCH_SHAMT_ZIP4_W_64 (0b011000 << OP_SH_SHAMT)
  78. +#define MATCH_SHAMT_ZIP8_32 (0b10000 << OP_SH_SHAMT)
  79. +#define MATCH_SHAMT_ZIP8_64 (0b110000 << OP_SH_SHAMT)
  80. +#define MATCH_SHAMT_ZIP8_W_64 (0b010000 << OP_SH_SHAMT)
  81. +#define MATCH_SHAMT_ZIP16_64 (0b100000 << OP_SH_SHAMT)
  82. +#define MATCH_SHAMT_UNZIP_32 (0b11111 << OP_SH_SHAMT)
  83. +#define MATCH_SHAMT_UNZIP_64 (0b111111 << OP_SH_SHAMT)
  84. +#define MATCH_SHAMT_UNZIP_N_32 (0b00011 << OP_SH_SHAMT)
  85. +#define MATCH_SHAMT_UNZIP_N_64 (0b000011 << OP_SH_SHAMT)
  86. +#define MATCH_SHAMT_UNZIP_B_32 (0b00111 << OP_SH_SHAMT)
  87. +#define MATCH_SHAMT_UNZIP_B_64 (0b000111 << OP_SH_SHAMT)
  88. +#define MATCH_SHAMT_UNZIP_H_32 (0b01111 << OP_SH_SHAMT)
  89. +#define MATCH_SHAMT_UNZIP_H_64 (0b001111 << OP_SH_SHAMT)
  90. +#define MATCH_SHAMT_UNZIP_W_64 (0b011111 << OP_SH_SHAMT)
  91. +#define MATCH_SHAMT_UNZIP2_32 (0b11101 << OP_SH_SHAMT)
  92. +#define MATCH_SHAMT_UNZIP2_64 (0b111101 << OP_SH_SHAMT)
  93. +#define MATCH_SHAMT_UNZIP2_B_32 (0b00101 << OP_SH_SHAMT)
  94. +#define MATCH_SHAMT_UNZIP2_B_64 (0b000101 << OP_SH_SHAMT)
  95. +#define MATCH_SHAMT_UNZIP2_H_32 (0b01101 << OP_SH_SHAMT)
  96. +#define MATCH_SHAMT_UNZIP2_H_64 (0b001101 << OP_SH_SHAMT)
  97. +#define MATCH_SHAMT_UNZIP2_W_64 (0b011101 << OP_SH_SHAMT)
  98. +#define MATCH_SHAMT_UNZIP4_32 (0b11001 << OP_SH_SHAMT)
  99. +#define MATCH_SHAMT_UNZIP4_64 (0b111001 << OP_SH_SHAMT)
  100. +#define MATCH_SHAMT_UNZIP4_H_32 (0b01001 << OP_SH_SHAMT)
  101. +#define MATCH_SHAMT_UNZIP4_H_64 (0b001001 << OP_SH_SHAMT)
  102. +#define MATCH_SHAMT_UNZIP4_W_64 (0b011001 << OP_SH_SHAMT)
  103. +#define MATCH_SHAMT_UNZIP8_32 (0b10001 << OP_SH_SHAMT)
  104. +#define MATCH_SHAMT_UNZIP8_64 (0b110001 << OP_SH_SHAMT)
  105. +#define MATCH_SHAMT_UNZIP8_W_64 (0b010001 << OP_SH_SHAMT)
  106. +#define MATCH_SHAMT_UNZIP16_64 (0b100001 << OP_SH_SHAMT)
  107. +#define MATCH_SHAMT_ORC_32 (0b11111 << OP_SH_SHAMT)
  108. +#define MATCH_SHAMT_ORC_64 (0b111111 << OP_SH_SHAMT)
  109. +#define MATCH_SHAMT_ORC_P_32 (0b00001 << OP_SH_SHAMT)
  110. +#define MATCH_SHAMT_ORC_P_64 (0b000001 << OP_SH_SHAMT)
  111. +#define MATCH_SHAMT_ORC_N_32 (0b00011 << OP_SH_SHAMT)
  112. +#define MATCH_SHAMT_ORC_N_64 (0b000011 << OP_SH_SHAMT)
  113. +#define MATCH_SHAMT_ORC_B_32 (0b00111 << OP_SH_SHAMT)
  114. +#define MATCH_SHAMT_ORC_B_64 (0b000111 << OP_SH_SHAMT)
  115. +#define MATCH_SHAMT_ORC_H_32 (0b01111 << OP_SH_SHAMT)
  116. +#define MATCH_SHAMT_ORC_H_64 (0b001111 << OP_SH_SHAMT)
  117. +#define MATCH_SHAMT_ORC_W_64 (0b011111 << OP_SH_SHAMT)
  118. +#define MATCH_SHAMT_ORC2_32 (0b11110 << OP_SH_SHAMT)
  119. +#define MATCH_SHAMT_ORC2_64 (0b111110 << OP_SH_SHAMT)
  120. +#define MATCH_SHAMT_ORC2_N_32 (0b00010 << OP_SH_SHAMT)
  121. +#define MATCH_SHAMT_ORC2_N_64 (0b000010 << OP_SH_SHAMT)
  122. +#define MATCH_SHAMT_ORC2_B_32 (0b00110 << OP_SH_SHAMT)
  123. +#define MATCH_SHAMT_ORC2_B_64 (0b000110 << OP_SH_SHAMT)
  124. +#define MATCH_SHAMT_ORC2_H_32 (0b01110 << OP_SH_SHAMT)
  125. +#define MATCH_SHAMT_ORC2_H_64 (0b001110 << OP_SH_SHAMT)
  126. +#define MATCH_SHAMT_ORC2_W_64 (0b011110 << OP_SH_SHAMT)
  127. +#define MATCH_SHAMT_ORC4_32 (0b11100 << OP_SH_SHAMT)
  128. +#define MATCH_SHAMT_ORC4_64 (0b111100 << OP_SH_SHAMT)
  129. +#define MATCH_SHAMT_ORC4_B_32 (0b00100 << OP_SH_SHAMT)
  130. +#define MATCH_SHAMT_ORC4_B_64 (0b000100 << OP_SH_SHAMT)
  131. +#define MATCH_SHAMT_ORC4_H_32 (0b01100 << OP_SH_SHAMT)
  132. +#define MATCH_SHAMT_ORC4_H_64 (0b001100 << OP_SH_SHAMT)
  133. +#define MATCH_SHAMT_ORC4_W_64 (0b011100 << OP_SH_SHAMT)
  134. +#define MATCH_SHAMT_ORC8_32 (0b11000 << OP_SH_SHAMT)
  135. +#define MATCH_SHAMT_ORC8_64 (0b111000 << OP_SH_SHAMT)
  136. +#define MATCH_SHAMT_ORC8_H_32 (0b01000 << OP_SH_SHAMT)
  137. +#define MATCH_SHAMT_ORC8_H_64 (0b001000 << OP_SH_SHAMT)
  138. +#define MATCH_SHAMT_ORC8_W_64 (0b011000 << OP_SH_SHAMT)
  139. +#define MATCH_SHAMT_ORC16_32 (0b10000 << OP_SH_SHAMT)
  140. +#define MATCH_SHAMT_ORC16_64 (0b110000 << OP_SH_SHAMT)
  141. +#define MATCH_SHAMT_ORC16_W_64 (0b010000 << OP_SH_SHAMT)
  142. +#define MATCH_SHAMT_ORC32_64 (0b100000 << OP_SH_SHAMT)
  143. /* Register names used by gas and objdump. */
  144. @@ -1207,9 +1326,128 @@ const struct riscv_opcode riscv_opcodes[] =
  145. {"rori", 0, INSN_CLASS_ZBB_OR_ZBP, "d,s,>", MATCH_RORI, MASK_RORI, match_opcode, 0 },
  146. {"ror", 0, INSN_CLASS_ZBB_OR_ZBP, "d,s,t", MATCH_ROR, MASK_ROR, match_opcode, 0 },
  147. {"ror", 0, INSN_CLASS_ZBB_OR_ZBP, "d,s,>", MATCH_RORI, MASK_RORI, match_opcode, INSN_ALIAS },
  148. +{"rev", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  149. +{"rev", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  150. +{"rev.p", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_P_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  151. +{"rev.p", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_P_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  152. +{"rev.n", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_N_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  153. +{"rev.n", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_N_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  154. +{"rev.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_B_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  155. +{"rev.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_B_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  156. +{"rev.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_H_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  157. +{"rev.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_H_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  158. +{"rev.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_W_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  159. +{"rev2", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  160. +{"rev2", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  161. +{"rev2.n", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_N_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  162. +{"rev2.n", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_N_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  163. +{"rev2.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_B_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  164. +{"rev2.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_B_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  165. +{"rev2.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_H_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  166. +{"rev2.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_H_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  167. +{"rev2.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_W_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  168. +{"rev4", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV4_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  169. +{"rev4", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV4_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  170. +{"rev4.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV4_B_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  171. +{"rev4.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV4_B_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  172. +{"rev4.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV4_H_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  173. +{"rev4.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV4_H_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  174. +{"rev4.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV4_W_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  175. {"rev8", 32, INSN_CLASS_ZBB, "d,s", MATCH_GREVI|MATCH_SHAMT_REV8_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  176. {"rev8", 64, INSN_CLASS_ZBB, "d,s", MATCH_GREVI|MATCH_SHAMT_REV8_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  177. -{"orc.b", 0, INSN_CLASS_ZBB, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_B, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  178. +{"rev8.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV8_H_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  179. +{"rev8.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV8_H_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  180. +{"rev8.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV8_W_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  181. +{"rev16", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV16_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  182. +{"rev16", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV16_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  183. +{"rev16.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV16_W_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  184. +{"rev32", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV32_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
  185. +{"zip", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  186. +{"zip", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  187. +{"zip.n", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_N_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  188. +{"zip.n", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_N_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  189. +{"zip.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_B_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  190. +{"zip.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_B_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  191. +{"zip.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_H_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  192. +{"zip.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_H_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  193. +{"zip.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_W_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  194. +{"zip2", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP2_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  195. +{"zip2", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP2_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  196. +{"zip2.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP2_B_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  197. +{"zip2.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP2_B_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  198. +{"zip2.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP2_H_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  199. +{"zip2.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP2_H_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  200. +{"zip2.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP2_W_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  201. +{"zip4", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP4_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  202. +{"zip4", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP4_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  203. +{"zip4.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP4_H_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  204. +{"zip4.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP4_H_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  205. +{"zip4.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP4_W_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  206. +{"zip8", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP8_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  207. +{"zip8", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP8_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  208. +{"zip8.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP8_W_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  209. +{"zip16", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP16_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
  210. +{"unzip", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  211. +{"unzip", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  212. +{"unzip.n", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_N_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  213. +{"unzip.n", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_N_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  214. +{"unzip.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_B_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  215. +{"unzip.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_B_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  216. +{"unzip.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_H_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  217. +{"unzip.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_H_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  218. +{"unzip.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_W_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  219. +{"unzip2", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP2_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  220. +{"unzip2", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP2_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  221. +{"unzip2.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP2_B_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  222. +{"unzip2.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP2_B_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  223. +{"unzip2.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP2_H_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  224. +{"unzip2.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP2_H_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  225. +{"unzip2.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP2_W_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  226. +{"unzip4", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP4_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  227. +{"unzip4", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP4_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  228. +{"unzip4.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP4_H_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  229. +{"unzip4.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP4_H_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  230. +{"unzip4.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP4_W_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  231. +{"unzip8", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP8_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  232. +{"unzip8", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP8_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  233. +{"unzip8.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP8_W_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  234. +{"unzip16", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP16_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
  235. +{"orc", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  236. +{"orc", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  237. +{"orc.p", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_P_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  238. +{"orc.p", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_P_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  239. +{"orc.n", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_N_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  240. +{"orc.n", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_N_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  241. +{"orc.b", 32, INSN_CLASS_ZBB, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_B_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  242. +{"orc.b", 64, INSN_CLASS_ZBB, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_B_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  243. +{"orc.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_H_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  244. +{"orc.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_H_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  245. +{"orc.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_W_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  246. +{"orc2", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  247. +{"orc2", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  248. +{"orc2.n", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_N_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  249. +{"orc2.n", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_N_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  250. +{"orc2.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_B_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  251. +{"orc2.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_B_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  252. +{"orc2.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_H_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  253. +{"orc2.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_H_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  254. +{"orc2.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_W_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  255. +{"orc4", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC4_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  256. +{"orc4", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC4_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  257. +{"orc4.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC4_B_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  258. +{"orc4.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC4_B_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  259. +{"orc4.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC4_H_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  260. +{"orc4.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC4_H_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  261. +{"orc4.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC4_W_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  262. +{"orc8", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC8_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  263. +{"orc8", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC8_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  264. +{"orc8.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC8_H_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  265. +{"orc8.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC8_H_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  266. +{"orc8.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC8_W_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  267. +{"orc16", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC16_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  268. +{"orc16", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC16_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  269. +{"orc16.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC16_W_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  270. +{"orc32", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC32_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
  271. {"clzw", 64, INSN_CLASS_ZBB, "d,s", MATCH_CLZW, MASK_CLZW, match_opcode, 0 },
  272. {"ctzw", 64, INSN_CLASS_ZBB, "d,s", MATCH_CTZW, MASK_CTZW, match_opcode, 0 },
  273. {"cpopw", 64, INSN_CLASS_ZBB, "d,s", MATCH_CPOPW, MASK_CPOPW, match_opcode, 0 },
  274. --
  275. 2.33.0