const struct riscv_opcode riscv_insn_types[] =
{
/* name, xlen, isa, operands, match, mask, match_func, pinfo. */
-{"r", 0, INSN_CLASS_I, "O4,F3,F7,d,s,t", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F7,D,s,t", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F7,d,S,t", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F7,D,S,t", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F7,d,s,T", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F7,D,s,T", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F7,d,S,T", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F7,D,S,T", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_I, "O4,F3,F2,d,s,t,r", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F2,D,s,t,r", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F2,d,S,t,r", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F2,D,S,t,r", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F2,d,s,T,r", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F2,D,s,T,r", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F2,d,S,T,r", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F2,D,S,T,r", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F2,d,s,t,R", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F2,D,s,t,R", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F2,d,S,t,R", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F2,D,S,t,R", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F2,d,s,T,R", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F2,D,s,T,R", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F2,d,S,T,R", 0, 0, match_opcode, 0 },
-{"r", 0, INSN_CLASS_F, "O4,F3,F2,D,S,T,R", 0, 0, match_opcode, 0 },
-
-{"r4", 0, INSN_CLASS_I, "O4,F3,F2,d,s,t,r", 0, 0, match_opcode, 0 },
-{"r4", 0, INSN_CLASS_F, "O4,F3,F2,D,s,t,r", 0, 0, match_opcode, 0 },
-{"r4", 0, INSN_CLASS_F, "O4,F3,F2,d,S,t,r", 0, 0, match_opcode, 0 },
-{"r4", 0, INSN_CLASS_F, "O4,F3,F2,D,S,t,r", 0, 0, match_opcode, 0 },
-{"r4", 0, INSN_CLASS_F, "O4,F3,F2,d,s,T,r", 0, 0, match_opcode, 0 },
-{"r4", 0, INSN_CLASS_F, "O4,F3,F2,D,s,T,r", 0, 0, match_opcode, 0 },
-{"r4", 0, INSN_CLASS_F, "O4,F3,F2,d,S,T,r", 0, 0, match_opcode, 0 },
-{"r4", 0, INSN_CLASS_F, "O4,F3,F2,D,S,T,r", 0, 0, match_opcode, 0 },
-{"r4", 0, INSN_CLASS_F, "O4,F3,F2,d,s,t,R", 0, 0, match_opcode, 0 },
-{"r4", 0, INSN_CLASS_F, "O4,F3,F2,D,s,t,R", 0, 0, match_opcode, 0 },
-{"r4", 0, INSN_CLASS_F, "O4,F3,F2,d,S,t,R", 0, 0, match_opcode, 0 },
-{"r4", 0, INSN_CLASS_F, "O4,F3,F2,D,S,t,R", 0, 0, match_opcode, 0 },
-{"r4", 0, INSN_CLASS_F, "O4,F3,F2,d,s,T,R", 0, 0, match_opcode, 0 },
-{"r4", 0, INSN_CLASS_F, "O4,F3,F2,D,s,T,R", 0, 0, match_opcode, 0 },
-{"r4", 0, INSN_CLASS_F, "O4,F3,F2,d,S,T,R", 0, 0, match_opcode, 0 },
-{"r4", 0, INSN_CLASS_F, "O4,F3,F2,D,S,T,R", 0, 0, match_opcode, 0 },
-
-{"i", 0, INSN_CLASS_I, "O4,F3,d,s,j", 0, 0, match_opcode, 0 },
-{"i", 0, INSN_CLASS_F, "O4,F3,D,s,j", 0, 0, match_opcode, 0 },
-{"i", 0, INSN_CLASS_F, "O4,F3,d,S,j", 0, 0, match_opcode, 0 },
-{"i", 0, INSN_CLASS_F, "O4,F3,D,S,j", 0, 0, match_opcode, 0 },
-{"i", 0, INSN_CLASS_I, "O4,F3,d,o(s)", 0, 0, match_opcode, 0 },
-{"i", 0, INSN_CLASS_F, "O4,F3,D,o(s)", 0, 0, match_opcode, 0 },
-
-{"s", 0, INSN_CLASS_I, "O4,F3,t,q(s)", 0, 0, match_opcode, 0 },
-{"s", 0, INSN_CLASS_F, "O4,F3,T,q(s)", 0, 0, match_opcode, 0 },
-
-{"sb", 0, INSN_CLASS_I, "O4,F3,s,t,p", 0, 0, match_opcode, 0 },
-{"sb", 0, INSN_CLASS_F, "O4,F3,S,t,p", 0, 0, match_opcode, 0 },
-{"sb", 0, INSN_CLASS_F, "O4,F3,s,T,p", 0, 0, match_opcode, 0 },
-{"sb", 0, INSN_CLASS_F, "O4,F3,S,T,p", 0, 0, match_opcode, 0 },
-{"b", 0, INSN_CLASS_I, "O4,F3,s,t,p", 0, 0, match_opcode, 0 },
-{"b", 0, INSN_CLASS_F, "O4,F3,S,t,p", 0, 0, match_opcode, 0 },
-{"b", 0, INSN_CLASS_F, "O4,F3,s,T,p", 0, 0, match_opcode, 0 },
-{"b", 0, INSN_CLASS_F, "O4,F3,S,T,p", 0, 0, match_opcode, 0 },
-
-{"u", 0, INSN_CLASS_I, "O4,d,u", 0, 0, match_opcode, 0 },
-{"u", 0, INSN_CLASS_F, "O4,D,u", 0, 0, match_opcode, 0 },
-
-{"uj", 0, INSN_CLASS_I, "O4,d,a", 0, 0, match_opcode, 0 },
-{"uj", 0, INSN_CLASS_F, "O4,D,a", 0, 0, match_opcode, 0 },
-{"j", 0, INSN_CLASS_I, "O4,d,a", 0, 0, match_opcode, 0 },
-{"j", 0, INSN_CLASS_F, "O4,D,a", 0, 0, match_opcode, 0 },
-
-{"cr", 0, INSN_CLASS_C, "O2,CF4,d,CV", 0, 0, match_opcode, 0 },
-{"cr", 0, INSN_CLASS_F_AND_C, "O2,CF4,D,CV", 0, 0, match_opcode, 0 },
-{"cr", 0, INSN_CLASS_F_AND_C, "O2,CF4,d,CT", 0, 0, match_opcode, 0 },
-{"cr", 0, INSN_CLASS_F_AND_C, "O2,CF4,D,CT", 0, 0, match_opcode, 0 },
-
-{"ci", 0, INSN_CLASS_C, "O2,CF3,d,Co", 0, 0, match_opcode, 0 },
-{"ci", 0, INSN_CLASS_F_AND_C, "O2,CF3,D,Co", 0, 0, match_opcode, 0 },
-
-{"ciw", 0, INSN_CLASS_C, "O2,CF3,Ct,C8", 0, 0, match_opcode, 0 },
-{"ciw", 0, INSN_CLASS_F_AND_C, "O2,CF3,CD,C8", 0, 0, match_opcode, 0 },
-
-{"css", 0, INSN_CLASS_C, "O2,CF3,CV,C6", 0, 0, match_opcode, 0 },
-{"css", 0, INSN_CLASS_F_AND_C, "O2,CF3,CT,C6", 0, 0, match_opcode, 0 },
-
-{"cl", 0, INSN_CLASS_C, "O2,CF3,Ct,C5(Cs)", 0, 0, match_opcode, 0 },
-{"cl", 0, INSN_CLASS_F_AND_C, "O2,CF3,CD,C5(Cs)", 0, 0, match_opcode, 0 },
-{"cl", 0, INSN_CLASS_F_AND_C, "O2,CF3,Ct,C5(CS)", 0, 0, match_opcode, 0 },
-{"cl", 0, INSN_CLASS_F_AND_C, "O2,CF3,CD,C5(CS)", 0, 0, match_opcode, 0 },
-
-{"cs", 0, INSN_CLASS_C, "O2,CF3,Ct,C5(Cs)", 0, 0, match_opcode, 0 },
-{"cs", 0, INSN_CLASS_F_AND_C, "O2,CF3,CD,C5(Cs)", 0, 0, match_opcode, 0 },
-{"cs", 0, INSN_CLASS_F_AND_C, "O2,CF3,Ct,C5(CS)", 0, 0, match_opcode, 0 },
-{"cs", 0, INSN_CLASS_F_AND_C, "O2,CF3,CD,C5(CS)", 0, 0, match_opcode, 0 },
-
-{"ca", 0, INSN_CLASS_C, "O2,CF6,CF2,Cs,Ct", 0, 0, match_opcode, 0 },
-{"ca", 0, INSN_CLASS_F_AND_C, "O2,CF6,CF2,CS,Ct", 0, 0, match_opcode, 0 },
-{"ca", 0, INSN_CLASS_F_AND_C, "O2,CF6,CF2,Cs,CD", 0, 0, match_opcode, 0 },
-{"ca", 0, INSN_CLASS_F_AND_C, "O2,CF6,CF2,CS,CD", 0, 0, match_opcode, 0 },
-
-{"cb", 0, INSN_CLASS_C, "O2,CF3,Cs,Cp", 0, 0, match_opcode, 0 },
-{"cb", 0, INSN_CLASS_F_AND_C, "O2,CF3,CS,Cp", 0, 0, match_opcode, 0 },
-
-{"cj", 0, INSN_CLASS_C, "O2,CF3,Ca", 0, 0, match_opcode, 0 },
+{"r", 0, INSN_CLASS_I, "O4,F3,F7,d,s,t", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F7,D,s,t", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F7,d,S,t", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F7,D,S,t", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F7,d,s,T", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F7,D,s,T", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F7,d,S,T", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F7,D,S,T", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_I, "O4,F3,F2,d,s,t,r", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F2,D,s,t,r", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F2,d,S,t,r", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F2,D,S,t,r", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F2,d,s,T,r", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F2,D,s,T,r", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F2,d,S,T,r", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F2,D,S,T,r", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F2,d,s,t,R", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F2,D,s,t,R", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F2,d,S,t,R", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F2,D,S,t,R", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F2,d,s,T,R", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F2,D,s,T,R", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F2,d,S,T,R", 0, 0, NULL, 0 },
+{"r", 0, INSN_CLASS_F, "O4,F3,F2,D,S,T,R", 0, 0, NULL, 0 },
+
+{"r4", 0, INSN_CLASS_I, "O4,F3,F2,d,s,t,r", 0, 0, NULL, 0 },
+{"r4", 0, INSN_CLASS_F, "O4,F3,F2,D,s,t,r", 0, 0, NULL, 0 },
+{"r4", 0, INSN_CLASS_F, "O4,F3,F2,d,S,t,r", 0, 0, NULL, 0 },
+{"r4", 0, INSN_CLASS_F, "O4,F3,F2,D,S,t,r", 0, 0, NULL, 0 },
+{"r4", 0, INSN_CLASS_F, "O4,F3,F2,d,s,T,r", 0, 0, NULL, 0 },
+{"r4", 0, INSN_CLASS_F, "O4,F3,F2,D,s,T,r", 0, 0, NULL, 0 },
+{"r4", 0, INSN_CLASS_F, "O4,F3,F2,d,S,T,r", 0, 0, NULL, 0 },
+{"r4", 0, INSN_CLASS_F, "O4,F3,F2,D,S,T,r", 0, 0, NULL, 0 },
+{"r4", 0, INSN_CLASS_F, "O4,F3,F2,d,s,t,R", 0, 0, NULL, 0 },
+{"r4", 0, INSN_CLASS_F, "O4,F3,F2,D,s,t,R", 0, 0, NULL, 0 },
+{"r4", 0, INSN_CLASS_F, "O4,F3,F2,d,S,t,R", 0, 0, NULL, 0 },
+{"r4", 0, INSN_CLASS_F, "O4,F3,F2,D,S,t,R", 0, 0, NULL, 0 },
+{"r4", 0, INSN_CLASS_F, "O4,F3,F2,d,s,T,R", 0, 0, NULL, 0 },
+{"r4", 0, INSN_CLASS_F, "O4,F3,F2,D,s,T,R", 0, 0, NULL, 0 },
+{"r4", 0, INSN_CLASS_F, "O4,F3,F2,d,S,T,R", 0, 0, NULL, 0 },
+{"r4", 0, INSN_CLASS_F, "O4,F3,F2,D,S,T,R", 0, 0, NULL, 0 },
+
+{"i", 0, INSN_CLASS_I, "O4,F3,d,s,j", 0, 0, NULL, 0 },
+{"i", 0, INSN_CLASS_F, "O4,F3,D,s,j", 0, 0, NULL, 0 },
+{"i", 0, INSN_CLASS_F, "O4,F3,d,S,j", 0, 0, NULL, 0 },
+{"i", 0, INSN_CLASS_F, "O4,F3,D,S,j", 0, 0, NULL, 0 },
+{"i", 0, INSN_CLASS_I, "O4,F3,d,o(s)", 0, 0, NULL, 0 },
+{"i", 0, INSN_CLASS_F, "O4,F3,D,o(s)", 0, 0, NULL, 0 },
+
+{"s", 0, INSN_CLASS_I, "O4,F3,t,q(s)", 0, 0, NULL, 0 },
+{"s", 0, INSN_CLASS_F, "O4,F3,T,q(s)", 0, 0, NULL, 0 },
+
+{"sb", 0, INSN_CLASS_I, "O4,F3,s,t,p", 0, 0, NULL, 0 },
+{"sb", 0, INSN_CLASS_F, "O4,F3,S,t,p", 0, 0, NULL, 0 },
+{"sb", 0, INSN_CLASS_F, "O4,F3,s,T,p", 0, 0, NULL, 0 },
+{"sb", 0, INSN_CLASS_F, "O4,F3,S,T,p", 0, 0, NULL, 0 },
+{"b", 0, INSN_CLASS_I, "O4,F3,s,t,p", 0, 0, NULL, 0 },
+{"b", 0, INSN_CLASS_F, "O4,F3,S,t,p", 0, 0, NULL, 0 },
+{"b", 0, INSN_CLASS_F, "O4,F3,s,T,p", 0, 0, NULL, 0 },
+{"b", 0, INSN_CLASS_F, "O4,F3,S,T,p", 0, 0, NULL, 0 },
+
+{"u", 0, INSN_CLASS_I, "O4,d,u", 0, 0, NULL, 0 },
+{"u", 0, INSN_CLASS_F, "O4,D,u", 0, 0, NULL, 0 },
+
+{"uj", 0, INSN_CLASS_I, "O4,d,a", 0, 0, NULL, 0 },
+{"uj", 0, INSN_CLASS_F, "O4,D,a", 0, 0, NULL, 0 },
+{"j", 0, INSN_CLASS_I, "O4,d,a", 0, 0, NULL, 0 },
+{"j", 0, INSN_CLASS_F, "O4,D,a", 0, 0, NULL, 0 },
+
+{"cr", 0, INSN_CLASS_C, "O2,CF4,d,CV", 0, 0, NULL, 0 },
+{"cr", 0, INSN_CLASS_F_AND_C, "O2,CF4,D,CV", 0, 0, NULL, 0 },
+{"cr", 0, INSN_CLASS_F_AND_C, "O2,CF4,d,CT", 0, 0, NULL, 0 },
+{"cr", 0, INSN_CLASS_F_AND_C, "O2,CF4,D,CT", 0, 0, NULL, 0 },
+
+{"ci", 0, INSN_CLASS_C, "O2,CF3,d,Co", 0, 0, NULL, 0 },
+{"ci", 0, INSN_CLASS_F_AND_C, "O2,CF3,D,Co", 0, 0, NULL, 0 },
+
+{"ciw", 0, INSN_CLASS_C, "O2,CF3,Ct,C8", 0, 0, NULL, 0 },
+{"ciw", 0, INSN_CLASS_F_AND_C, "O2,CF3,CD,C8", 0, 0, NULL, 0 },
+
+{"css", 0, INSN_CLASS_C, "O2,CF3,CV,C6", 0, 0, NULL, 0 },
+{"css", 0, INSN_CLASS_F_AND_C, "O2,CF3,CT,C6", 0, 0, NULL, 0 },
+
+{"cl", 0, INSN_CLASS_C, "O2,CF3,Ct,C5(Cs)", 0, 0, NULL, 0 },
+{"cl", 0, INSN_CLASS_F_AND_C, "O2,CF3,CD,C5(Cs)", 0, 0, NULL, 0 },
+{"cl", 0, INSN_CLASS_F_AND_C, "O2,CF3,Ct,C5(CS)", 0, 0, NULL, 0 },
+{"cl", 0, INSN_CLASS_F_AND_C, "O2,CF3,CD,C5(CS)", 0, 0, NULL, 0 },
+
+{"cs", 0, INSN_CLASS_C, "O2,CF3,Ct,C5(Cs)", 0, 0, NULL, 0 },
+{"cs", 0, INSN_CLASS_F_AND_C, "O2,CF3,CD,C5(Cs)", 0, 0, NULL, 0 },
+{"cs", 0, INSN_CLASS_F_AND_C, "O2,CF3,Ct,C5(CS)", 0, 0, NULL, 0 },
+{"cs", 0, INSN_CLASS_F_AND_C, "O2,CF3,CD,C5(CS)", 0, 0, NULL, 0 },
+
+{"ca", 0, INSN_CLASS_C, "O2,CF6,CF2,Cs,Ct", 0, 0, NULL, 0 },
+{"ca", 0, INSN_CLASS_F_AND_C, "O2,CF6,CF2,CS,Ct", 0, 0, NULL, 0 },
+{"ca", 0, INSN_CLASS_F_AND_C, "O2,CF6,CF2,Cs,CD", 0, 0, NULL, 0 },
+{"ca", 0, INSN_CLASS_F_AND_C, "O2,CF6,CF2,CS,CD", 0, 0, NULL, 0 },
+
+{"cb", 0, INSN_CLASS_C, "O2,CF3,Cs,Cp", 0, 0, NULL, 0 },
+{"cb", 0, INSN_CLASS_F_AND_C, "O2,CF3,CS,Cp", 0, 0, NULL, 0 },
+
+{"cj", 0, INSN_CLASS_C, "O2,CF3,Ca", 0, 0, NULL, 0 },
/* Terminate the list. */
{0, 0, INSN_CLASS_NONE, 0, 0, 0, 0, 0}