[1/2] RISC-V: Simplify riscv_csr_address logic on state enable extensions

Message ID c509db05e4f1500736f4de994ed2aede544234d5.1672286099.git.research_trasio@irq.a4lg.com
State Accepted
Headers
Series [1/2] RISC-V: Simplify riscv_csr_address logic on state enable extensions |

Checks

Context Check Description
snail/binutils-gdb-check success Github commit url

Commit Message

Tsukasa OI Dec. 29, 2022, 3:55 a.m. UTC
  From: Tsukasa OI <research_trasio@irq.a4lg.com>

This commit makes CSR class handling for 'Smstateen' and 'Ssstateen'
extensions simpler using fall-throughs (as used in CSR_CLASS_I{,_32}).

gas/ChangeLog:

	* config/tc-riscv.c (riscv_csr_address): Simplify the logic for
	'Smstateen' and 'Ssstateen' extensions.
---
 gas/config/tc-riscv.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)


base-commit: dc20b8f00abb74e2c26846c615ec5ba3a62f8677
  

Comments

Nelson Chu Dec. 29, 2022, 5:14 a.m. UTC | #1
LGTM, thanks, please commit.

Nelson

On Thu, Dec 29, 2022 at 11:55 AM Tsukasa OI
<research_trasio@irq.a4lg.com> wrote:
>
> From: Tsukasa OI <research_trasio@irq.a4lg.com>
>
> This commit makes CSR class handling for 'Smstateen' and 'Ssstateen'
> extensions simpler using fall-throughs (as used in CSR_CLASS_I{,_32}).
>
> gas/ChangeLog:
>
>         * config/tc-riscv.c (riscv_csr_address): Simplify the logic for
>         'Smstateen' and 'Ssstateen' extensions.
> ---
>  gas/config/tc-riscv.c | 16 +++++++++-------
>  1 file changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
> index 77c0d2e32abf..cc0d74921027 100644
> --- a/gas/config/tc-riscv.c
> +++ b/gas/config/tc-riscv.c
> @@ -1049,9 +1049,10 @@ riscv_csr_address (const char *csr_name,
>      case CSR_CLASS_SMAIA:
>        extension = "smaia";
>        break;
> -    case CSR_CLASS_SMSTATEEN:
>      case CSR_CLASS_SMSTATEEN_32:
> -      is_rv32_only = (csr_class == CSR_CLASS_SMSTATEEN_32);
> +      is_rv32_only = true;
> +      /* Fall through.  */
> +    case CSR_CLASS_SMSTATEEN:
>        extension = "smstateen";
>        break;
>      case CSR_CLASS_SSAIA:
> @@ -1064,12 +1065,13 @@ riscv_csr_address (const char *csr_name,
>                        || csr_class == CSR_CLASS_SSAIA_AND_H_32);
>        extension = "ssaia";
>        break;
> -    case CSR_CLASS_SSSTATEEN:
> -    case CSR_CLASS_SSSTATEEN_AND_H:
>      case CSR_CLASS_SSSTATEEN_AND_H_32:
> -      is_rv32_only = (csr_class == CSR_CLASS_SSSTATEEN_AND_H_32);
> -      is_h_required = (csr_class == CSR_CLASS_SSSTATEEN_AND_H
> -                     || csr_class == CSR_CLASS_SSSTATEEN_AND_H_32);
> +      is_rv32_only = true;
> +      /* Fall through.  */
> +    case CSR_CLASS_SSSTATEEN_AND_H:
> +      is_h_required = true;
> +      /* Fall through.  */
> +    case CSR_CLASS_SSSTATEEN:
>        extension = "ssstateen";
>        break;
>      case CSR_CLASS_SSCOFPMF_32:
>
> base-commit: dc20b8f00abb74e2c26846c615ec5ba3a62f8677
> --
> 2.39.0
>
  

Patch

diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 77c0d2e32abf..cc0d74921027 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -1049,9 +1049,10 @@  riscv_csr_address (const char *csr_name,
     case CSR_CLASS_SMAIA:
       extension = "smaia";
       break;
-    case CSR_CLASS_SMSTATEEN:
     case CSR_CLASS_SMSTATEEN_32:
-      is_rv32_only = (csr_class == CSR_CLASS_SMSTATEEN_32);
+      is_rv32_only = true;
+      /* Fall through.  */
+    case CSR_CLASS_SMSTATEEN:
       extension = "smstateen";
       break;
     case CSR_CLASS_SSAIA:
@@ -1064,12 +1065,13 @@  riscv_csr_address (const char *csr_name,
 		       || csr_class == CSR_CLASS_SSAIA_AND_H_32);
       extension = "ssaia";
       break;
-    case CSR_CLASS_SSSTATEEN:
-    case CSR_CLASS_SSSTATEEN_AND_H:
     case CSR_CLASS_SSSTATEEN_AND_H_32:
-      is_rv32_only = (csr_class == CSR_CLASS_SSSTATEEN_AND_H_32);
-      is_h_required = (csr_class == CSR_CLASS_SSSTATEEN_AND_H
-		      || csr_class == CSR_CLASS_SSSTATEEN_AND_H_32);
+      is_rv32_only = true;
+      /* Fall through.  */
+    case CSR_CLASS_SSSTATEEN_AND_H:
+      is_h_required = true;
+      /* Fall through.  */
+    case CSR_CLASS_SSSTATEEN:
       extension = "ssstateen";
       break;
     case CSR_CLASS_SSCOFPMF_32: