This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [AArch64][SVE 17/32] Add a prefix parameter to print_register_list


On 23/08/16 10:16, Richard Sandiford wrote:
> This patch generalises the interface to print_register_list so
> that it can print register lists involving SVE z registers as
> well as AdvSIMD v ones.
> 
> OK to install?
> 
> Thanks,
> Richard
> 
> 
> opcodes/
> 	* aarch64-opc.c (print_register_list): Add a prefix parameter.
> 	(aarch64_print_operand): Update accordingly.
> 

OK.

R.

> diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c
> index 84da821..6eac70a 100644
> --- a/opcodes/aarch64-opc.c
> +++ b/opcodes/aarch64-opc.c
> @@ -2261,9 +2261,11 @@ expand_fp_imm (int size, uint32_t imm8)
>  }
>  
>  /* Produce the string representation of the register list operand *OPND
> -   in the buffer pointed by BUF of size SIZE.  */
> +   in the buffer pointed by BUF of size SIZE.  PREFIX is the part of
> +   the register name that comes before the register number, such as "v".  */
>  static void
> -print_register_list (char *buf, size_t size, const aarch64_opnd_info *opnd)
> +print_register_list (char *buf, size_t size, const aarch64_opnd_info *opnd,
> +		     const char *prefix)
>  {
>    const int num_regs = opnd->reglist.num_regs;
>    const int first_reg = opnd->reglist.first_regno;
> @@ -2284,8 +2286,8 @@ print_register_list (char *buf, size_t size, const aarch64_opnd_info *opnd)
>       more than two registers in the list, and the register numbers
>       are monotonically increasing in increments of one.  */
>    if (num_regs > 2 && last_reg > first_reg)
> -    snprintf (buf, size, "{v%d.%s-v%d.%s}%s", first_reg, qlf_name,
> -	      last_reg, qlf_name, tb);
> +    snprintf (buf, size, "{%s%d.%s-%s%d.%s}%s", prefix, first_reg, qlf_name,
> +	      prefix, last_reg, qlf_name, tb);
>    else
>      {
>        const int reg0 = first_reg;
> @@ -2296,20 +2298,21 @@ print_register_list (char *buf, size_t size, const aarch64_opnd_info *opnd)
>        switch (num_regs)
>  	{
>  	case 1:
> -	  snprintf (buf, size, "{v%d.%s}%s", reg0, qlf_name, tb);
> +	  snprintf (buf, size, "{%s%d.%s}%s", prefix, reg0, qlf_name, tb);
>  	  break;
>  	case 2:
> -	  snprintf (buf, size, "{v%d.%s, v%d.%s}%s", reg0, qlf_name,
> -		    reg1, qlf_name, tb);
> +	  snprintf (buf, size, "{%s%d.%s, %s%d.%s}%s", prefix, reg0, qlf_name,
> +		    prefix, reg1, qlf_name, tb);
>  	  break;
>  	case 3:
> -	  snprintf (buf, size, "{v%d.%s, v%d.%s, v%d.%s}%s", reg0, qlf_name,
> -		    reg1, qlf_name, reg2, qlf_name, tb);
> +	  snprintf (buf, size, "{%s%d.%s, %s%d.%s, %s%d.%s}%s",
> +		    prefix, reg0, qlf_name, prefix, reg1, qlf_name,
> +		    prefix, reg2, qlf_name, tb);
>  	  break;
>  	case 4:
> -	  snprintf (buf, size, "{v%d.%s, v%d.%s, v%d.%s, v%d.%s}%s",
> -		    reg0, qlf_name, reg1, qlf_name, reg2, qlf_name,
> -		    reg3, qlf_name, tb);
> +	  snprintf (buf, size, "{%s%d.%s, %s%d.%s, %s%d.%s, %s%d.%s}%s",
> +		    prefix, reg0, qlf_name, prefix, reg1, qlf_name,
> +		    prefix, reg2, qlf_name, prefix, reg3, qlf_name, tb);
>  	  break;
>  	}
>      }
> @@ -2513,7 +2516,7 @@ aarch64_print_operand (char *buf, size_t size, bfd_vma pc,
>      case AARCH64_OPND_LVt:
>      case AARCH64_OPND_LVt_AL:
>      case AARCH64_OPND_LEt:
> -      print_register_list (buf, size, opnd);
> +      print_register_list (buf, size, opnd, "v");
>        break;
>  
>      case AARCH64_OPND_Cn:
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]