[v2,01/16] RISC-V: rename operand descriptor O4

Message ID 25ba2a4c-a254-4276-b03a-aae99d5b9eb1@suse.com
State New
Headers
Series RISC-V: assorted fixes and (hopefully) improvements |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-arm success Build passed
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 success Build passed
linaro-tcwg-bot/tcwg_binutils_check--master-aarch64 success Test passed
linaro-tcwg-bot/tcwg_binutils_check--master-arm success Test passed

Commit Message

Jan Beulich May 15, 2026, 1:28 p.m. UTC
  It's describing a 7-bit field, so O7 is the more consistent (with other
O<n> and F<n>) name. This way a subsequent change will also be a little
easier.
---
v2: New.
  

Comments

Jiawei May 15, 2026, 3:50 p.m. UTC | #1
> It's describing a 7-bit field, so O7 is the more consistent (with other
> O<n> and F<n>) name. This way a subsequent change will also be a little
> easier.
> ---
> v2: New.
>
> --- a/gas/config/tc-riscv.c
> +++ b/gas/config/tc-riscv.c
> @@ -1620,7 +1620,7 @@ validate_riscv_insn (const struct riscv_
>   	case 'O': /* Opcode for .insn directive.  */
>   	  switch (*++oparg)
>   	    {
> -	    case '4': USE_BITS (OP_MASK_OP, OP_SH_OP); break;
> +	    case '7': USE_BITS (OP_MASK_OP, OP_SH_OP); break;
>   	    case '2': USE_BITS (OP_MASK_OP2, OP_SH_OP2); break;
>   	    default:
>   	      goto unknown_validate_operand;
> @@ -3711,7 +3711,7 @@ riscv_ip (char *str, struct riscv_cl_ins
>   	    case 'O':
>   	      switch (*++oparg)
>   		{
> -		case '4':
> +		case '7':
>   		  if (my_getOpcodeExpression (imm_expr, imm_reloc, asarg)
>   		      || imm_expr->X_op != O_constant
>   		      || imm_expr->X_add_number < 0
LGTM.

Renaming O4 to O7 looks right to me.  The operand describes the full 7-bit
opcode field, so O7 is more consistent with the other O<n>/F<n> operand
names and avoids the temporary regno == 4 special case in the following
cleanup.
> --- a/opcodes/riscv-opc.c
> +++ b/opcodes/riscv-opc.c
> @@ -3587,74 +3587,74 @@ const struct riscv_opcode riscv_opcodes[
>   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, 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 },
> +{"r",       0, INSN_CLASS_I,       "O7,F3,F7,d,s,t",    0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F7,D,s,t",    0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F7,d,S,t",    0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F7,D,S,t",    0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F7,d,s,T",    0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F7,D,s,T",    0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F7,d,S,T",    0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F7,D,S,T",    0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_I,       "O7,F3,F2,d,s,t,r",  0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F2,D,s,t,r",  0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F2,d,S,t,r",  0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F2,D,S,t,r",  0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F2,d,s,T,r",  0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F2,D,s,T,r",  0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F2,d,S,T,r",  0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F2,D,S,T,r",  0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F2,d,s,t,R",  0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F2,D,s,t,R",  0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F2,d,S,t,R",  0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F2,D,S,t,R",  0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F2,d,s,T,R",  0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F2,D,s,T,R",  0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F2,d,S,T,R",  0, 0, NULL, 0 },
> +{"r",       0, INSN_CLASS_F,       "O7,F3,F2,D,S,T,R",  0, 0, NULL, 0 },
> +
> +{"r4",      0, INSN_CLASS_I,       "O7,F3,F2,d,s,t,r",  0, 0, NULL, 0 },
> +{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,D,s,t,r",  0, 0, NULL, 0 },
> +{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,d,S,t,r",  0, 0, NULL, 0 },
> +{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,D,S,t,r",  0, 0, NULL, 0 },
> +{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,d,s,T,r",  0, 0, NULL, 0 },
> +{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,D,s,T,r",  0, 0, NULL, 0 },
> +{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,d,S,T,r",  0, 0, NULL, 0 },
> +{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,D,S,T,r",  0, 0, NULL, 0 },
> +{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,d,s,t,R",  0, 0, NULL, 0 },
> +{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,D,s,t,R",  0, 0, NULL, 0 },
> +{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,d,S,t,R",  0, 0, NULL, 0 },
> +{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,D,S,t,R",  0, 0, NULL, 0 },
> +{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,d,s,T,R",  0, 0, NULL, 0 },
> +{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,D,s,T,R",  0, 0, NULL, 0 },
> +{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,d,S,T,R",  0, 0, NULL, 0 },
> +{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,D,S,T,R",  0, 0, NULL, 0 },
> +
> +{"i",       0, INSN_CLASS_I,       "O7,F3,d,s,j",       0, 0, NULL, 0 },
> +{"i",       0, INSN_CLASS_F,       "O7,F3,D,s,j",       0, 0, NULL, 0 },
> +{"i",       0, INSN_CLASS_F,       "O7,F3,d,S,j",       0, 0, NULL, 0 },
> +{"i",       0, INSN_CLASS_F,       "O7,F3,D,S,j",       0, 0, NULL, 0 },
> +{"i",       0, INSN_CLASS_I,       "O7,F3,d,o(s)",      0, 0, NULL, 0 },
> +{"i",       0, INSN_CLASS_F,       "O7,F3,D,o(s)",      0, 0, NULL, 0 },
> +
> +{"s",       0, INSN_CLASS_I,       "O7,F3,t,q(s)",      0, 0, NULL, 0 },
> +{"s",       0, INSN_CLASS_F,       "O7,F3,T,q(s)",      0, 0, NULL, 0 },
> +
> +{"sb",      0, INSN_CLASS_I,       "O7,F3,s,t,p",       0, 0, NULL, 0 },
> +{"sb",      0, INSN_CLASS_F,       "O7,F3,S,t,p",       0, 0, NULL, 0 },
> +{"sb",      0, INSN_CLASS_F,       "O7,F3,s,T,p",       0, 0, NULL, 0 },
> +{"sb",      0, INSN_CLASS_F,       "O7,F3,S,T,p",       0, 0, NULL, 0 },
> +{"b",       0, INSN_CLASS_I,       "O7,F3,s,t,p",       0, 0, NULL, 0 },
> +{"b",       0, INSN_CLASS_F,       "O7,F3,S,t,p",       0, 0, NULL, 0 },
> +{"b",       0, INSN_CLASS_F,       "O7,F3,s,T,p",       0, 0, NULL, 0 },
> +{"b",       0, INSN_CLASS_F,       "O7,F3,S,T,p",       0, 0, NULL, 0 },
> +
> +{"u",       0, INSN_CLASS_I,       "O7,d,u",            0, 0, NULL, 0 },
> +{"u",       0, INSN_CLASS_F,       "O7,D,u",            0, 0, NULL, 0 },
> +
> +{"uj",      0, INSN_CLASS_I,       "O7,d,a",            0, 0, NULL, 0 },
> +{"uj",      0, INSN_CLASS_F,       "O7,D,a",            0, 0, NULL, 0 },
> +{"j",       0, INSN_CLASS_I,       "O7,d,a",            0, 0, NULL, 0 },
> +{"j",       0, INSN_CLASS_F,       "O7,D,a",            0, 0, NULL, 0 },
>   
>   {"cr",      0, INSN_CLASS_ZCA,       "O2,CF4,d,CV",       0, 0, NULL, 0 },
>   {"cr",      0, INSN_CLASS_ZCF, "O2,CF4,D,CV",       0, 0, NULL, 0 },

Reviewed-by: Jiawei <jiawei@iscas.ac.cn>
  

Patch

--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -1620,7 +1620,7 @@  validate_riscv_insn (const struct riscv_
 	case 'O': /* Opcode for .insn directive.  */
 	  switch (*++oparg)
 	    {
-	    case '4': USE_BITS (OP_MASK_OP, OP_SH_OP); break;
+	    case '7': USE_BITS (OP_MASK_OP, OP_SH_OP); break;
 	    case '2': USE_BITS (OP_MASK_OP2, OP_SH_OP2); break;
 	    default:
 	      goto unknown_validate_operand;
@@ -3711,7 +3711,7 @@  riscv_ip (char *str, struct riscv_cl_ins
 	    case 'O':
 	      switch (*++oparg)
 		{
-		case '4':
+		case '7':
 		  if (my_getOpcodeExpression (imm_expr, imm_reloc, asarg)
 		      || imm_expr->X_op != O_constant
 		      || imm_expr->X_add_number < 0
--- a/opcodes/riscv-opc.c
+++ b/opcodes/riscv-opc.c
@@ -3587,74 +3587,74 @@  const struct riscv_opcode riscv_opcodes[
 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, 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 },
+{"r",       0, INSN_CLASS_I,       "O7,F3,F7,d,s,t",    0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F7,D,s,t",    0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F7,d,S,t",    0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F7,D,S,t",    0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F7,d,s,T",    0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F7,D,s,T",    0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F7,d,S,T",    0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F7,D,S,T",    0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_I,       "O7,F3,F2,d,s,t,r",  0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F2,D,s,t,r",  0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F2,d,S,t,r",  0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F2,D,S,t,r",  0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F2,d,s,T,r",  0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F2,D,s,T,r",  0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F2,d,S,T,r",  0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F2,D,S,T,r",  0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F2,d,s,t,R",  0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F2,D,s,t,R",  0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F2,d,S,t,R",  0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F2,D,S,t,R",  0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F2,d,s,T,R",  0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F2,D,s,T,R",  0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F2,d,S,T,R",  0, 0, NULL, 0 },
+{"r",       0, INSN_CLASS_F,       "O7,F3,F2,D,S,T,R",  0, 0, NULL, 0 },
+
+{"r4",      0, INSN_CLASS_I,       "O7,F3,F2,d,s,t,r",  0, 0, NULL, 0 },
+{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,D,s,t,r",  0, 0, NULL, 0 },
+{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,d,S,t,r",  0, 0, NULL, 0 },
+{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,D,S,t,r",  0, 0, NULL, 0 },
+{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,d,s,T,r",  0, 0, NULL, 0 },
+{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,D,s,T,r",  0, 0, NULL, 0 },
+{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,d,S,T,r",  0, 0, NULL, 0 },
+{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,D,S,T,r",  0, 0, NULL, 0 },
+{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,d,s,t,R",  0, 0, NULL, 0 },
+{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,D,s,t,R",  0, 0, NULL, 0 },
+{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,d,S,t,R",  0, 0, NULL, 0 },
+{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,D,S,t,R",  0, 0, NULL, 0 },
+{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,d,s,T,R",  0, 0, NULL, 0 },
+{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,D,s,T,R",  0, 0, NULL, 0 },
+{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,d,S,T,R",  0, 0, NULL, 0 },
+{"r4",      0, INSN_CLASS_F,       "O7,F3,F2,D,S,T,R",  0, 0, NULL, 0 },
+
+{"i",       0, INSN_CLASS_I,       "O7,F3,d,s,j",       0, 0, NULL, 0 },
+{"i",       0, INSN_CLASS_F,       "O7,F3,D,s,j",       0, 0, NULL, 0 },
+{"i",       0, INSN_CLASS_F,       "O7,F3,d,S,j",       0, 0, NULL, 0 },
+{"i",       0, INSN_CLASS_F,       "O7,F3,D,S,j",       0, 0, NULL, 0 },
+{"i",       0, INSN_CLASS_I,       "O7,F3,d,o(s)",      0, 0, NULL, 0 },
+{"i",       0, INSN_CLASS_F,       "O7,F3,D,o(s)",      0, 0, NULL, 0 },
+
+{"s",       0, INSN_CLASS_I,       "O7,F3,t,q(s)",      0, 0, NULL, 0 },
+{"s",       0, INSN_CLASS_F,       "O7,F3,T,q(s)",      0, 0, NULL, 0 },
+
+{"sb",      0, INSN_CLASS_I,       "O7,F3,s,t,p",       0, 0, NULL, 0 },
+{"sb",      0, INSN_CLASS_F,       "O7,F3,S,t,p",       0, 0, NULL, 0 },
+{"sb",      0, INSN_CLASS_F,       "O7,F3,s,T,p",       0, 0, NULL, 0 },
+{"sb",      0, INSN_CLASS_F,       "O7,F3,S,T,p",       0, 0, NULL, 0 },
+{"b",       0, INSN_CLASS_I,       "O7,F3,s,t,p",       0, 0, NULL, 0 },
+{"b",       0, INSN_CLASS_F,       "O7,F3,S,t,p",       0, 0, NULL, 0 },
+{"b",       0, INSN_CLASS_F,       "O7,F3,s,T,p",       0, 0, NULL, 0 },
+{"b",       0, INSN_CLASS_F,       "O7,F3,S,T,p",       0, 0, NULL, 0 },
+
+{"u",       0, INSN_CLASS_I,       "O7,d,u",            0, 0, NULL, 0 },
+{"u",       0, INSN_CLASS_F,       "O7,D,u",            0, 0, NULL, 0 },
+
+{"uj",      0, INSN_CLASS_I,       "O7,d,a",            0, 0, NULL, 0 },
+{"uj",      0, INSN_CLASS_F,       "O7,D,a",            0, 0, NULL, 0 },
+{"j",       0, INSN_CLASS_I,       "O7,d,a",            0, 0, NULL, 0 },
+{"j",       0, INSN_CLASS_F,       "O7,D,a",            0, 0, NULL, 0 },
 
 {"cr",      0, INSN_CLASS_ZCA,       "O2,CF4,d,CV",       0, 0, NULL, 0 },
 {"cr",      0, INSN_CLASS_ZCF, "O2,CF4,D,CV",       0, 0, NULL, 0 },