Re: [PATCH 7/9] target/arm: Rename FPCR_ QC, NZCV macros to FPSR_

2024-06-28 Thread Richard Henderson

On 6/28/24 07:23, Peter Maydell wrote:

The QC, N, Z, C, V bits live in the FPSR, not the FPCR. Rename the
macros that define these bits accordingly.

Signed-off-by: Peter Maydell
---
  target/arm/cpu.h  | 17 ++---
  target/arm/tcg/mve_helper.c   |  8 
  target/arm/tcg/translate-m-nocp.c | 16 
  target/arm/tcg/translate-vfp.c|  2 +-
  target/arm/vfp_helper.c   |  8 
  5 files changed, 27 insertions(+), 24 deletions(-)


Reviewed-by: Richard Henderson 


r~



[PATCH 7/9] target/arm: Rename FPCR_ QC, NZCV macros to FPSR_

2024-06-28 Thread Peter Maydell
The QC, N, Z, C, V bits live in the FPSR, not the FPCR. Rename the
macros that define these bits accordingly.

Signed-off-by: Peter Maydell 
---
 target/arm/cpu.h  | 17 ++---
 target/arm/tcg/mve_helper.c   |  8 
 target/arm/tcg/translate-m-nocp.c | 16 
 target/arm/tcg/translate-vfp.c|  2 +-
 target/arm/vfp_helper.c   |  8 
 5 files changed, 27 insertions(+), 24 deletions(-)

diff --git a/target/arm/cpu.h b/target/arm/cpu.h
index 2eb7fc3bc39..9d226c474d2 100644
--- a/target/arm/cpu.h
+++ b/target/arm/cpu.h
@@ -1697,6 +1697,7 @@ void vfp_set_fpscr(CPUARMState *env, uint32_t val);
 #define FPSR_MASK 0xf89f
 #define FPCR_MASK 0x07ff9f00
 
+/* FPCR bits */
 #define FPCR_IOE(1 << 8)/* Invalid Operation exception trap enable */
 #define FPCR_DZE(1 << 9)/* Divide by Zero exception trap enable */
 #define FPCR_OFE(1 << 10)   /* Overflow exception trap enable */
@@ -1708,18 +1709,20 @@ void vfp_set_fpscr(CPUARMState *env, uint32_t val);
 #define FPCR_FZ (1 << 24)   /* Flush-to-zero enable bit */
 #define FPCR_DN (1 << 25)   /* Default NaN enable bit */
 #define FPCR_AHP(1 << 26)   /* Alternative half-precision */
-#define FPCR_QC (1 << 27)   /* Cumulative saturation bit */
-#define FPCR_V  (1 << 28)   /* FP overflow flag */
-#define FPCR_C  (1 << 29)   /* FP carry flag */
-#define FPCR_Z  (1 << 30)   /* FP zero flag */
-#define FPCR_N  (1 << 31)   /* FP negative flag */
 
 #define FPCR_LTPSIZE_SHIFT 16   /* LTPSIZE, M-profile only */
 #define FPCR_LTPSIZE_MASK (7 << FPCR_LTPSIZE_SHIFT)
 #define FPCR_LTPSIZE_LENGTH 3
 
-#define FPCR_NZCV_MASK (FPCR_N | FPCR_Z | FPCR_C | FPCR_V)
-#define FPCR_NZCVQC_MASK (FPCR_NZCV_MASK | FPCR_QC)
+/* FPSR bits */
+#define FPSR_QC (1 << 27)   /* Cumulative saturation bit */
+#define FPSR_V  (1 << 28)   /* FP overflow flag */
+#define FPSR_C  (1 << 29)   /* FP carry flag */
+#define FPSR_Z  (1 << 30)   /* FP zero flag */
+#define FPSR_N  (1 << 31)   /* FP negative flag */
+
+#define FPSR_NZCV_MASK (FPSR_N | FPSR_Z | FPSR_C | FPSR_V)
+#define FPSR_NZCVQC_MASK (FPSR_NZCV_MASK | FPSR_QC)
 
 /**
  * vfp_get_fpsr: read the AArch64 FPSR
diff --git a/target/arm/tcg/mve_helper.c b/target/arm/tcg/mve_helper.c
index 234f395b093..03ebef5ef21 100644
--- a/target/arm/tcg/mve_helper.c
+++ b/target/arm/tcg/mve_helper.c
@@ -1115,21 +1115,21 @@ static void do_vadc(CPUARMState *env, uint32_t *d, 
uint32_t *n, uint32_t *m,
 
 if (update_flags) {
 /* Store C, clear NZV. */
-env->vfp.fpsr &= ~FPCR_NZCV_MASK;
-env->vfp.fpsr |= carry_in * FPCR_C;
+env->vfp.fpsr &= ~FPSR_NZCV_MASK;
+env->vfp.fpsr |= carry_in * FPSR_C;
 }
 mve_advance_vpt(env);
 }
 
 void HELPER(mve_vadc)(CPUARMState *env, void *vd, void *vn, void *vm)
 {
-bool carry_in = env->vfp.fpsr & FPCR_C;
+bool carry_in = env->vfp.fpsr & FPSR_C;
 do_vadc(env, vd, vn, vm, 0, carry_in, false);
 }
 
 void HELPER(mve_vsbc)(CPUARMState *env, void *vd, void *vn, void *vm)
 {
-bool carry_in = env->vfp.fpsr & FPCR_C;
+bool carry_in = env->vfp.fpsr & FPSR_C;
 do_vadc(env, vd, vn, vm, -1, carry_in, false);
 }
 
diff --git a/target/arm/tcg/translate-m-nocp.c 
b/target/arm/tcg/translate-m-nocp.c
index 875f6a8725d..b92773b4af5 100644
--- a/target/arm/tcg/translate-m-nocp.c
+++ b/target/arm/tcg/translate-m-nocp.c
@@ -332,7 +332,7 @@ static bool gen_M_fp_sysreg_write(DisasContext *s, int 
regno,
 if (dc_isar_feature(aa32_mve, s)) {
 /* QC is only present for MVE; otherwise RES0 */
 TCGv_i32 qc = tcg_temp_new_i32();
-tcg_gen_andi_i32(qc, tmp, FPCR_QC);
+tcg_gen_andi_i32(qc, tmp, FPSR_QC);
 /*
  * The 4 vfp.qc[] fields need only be "zero" vs "non-zero";
  * here writing the same value into all elements is simplest.
@@ -340,9 +340,9 @@ static bool gen_M_fp_sysreg_write(DisasContext *s, int 
regno,
 tcg_gen_gvec_dup_i32(MO_32, offsetof(CPUARMState, vfp.qc),
  16, 16, qc);
 }
-tcg_gen_andi_i32(tmp, tmp, FPCR_NZCV_MASK);
+tcg_gen_andi_i32(tmp, tmp, FPSR_NZCV_MASK);
 fpscr = load_cpu_field_low32(vfp.fpsr);
-tcg_gen_andi_i32(fpscr, fpscr, ~FPCR_NZCV_MASK);
+tcg_gen_andi_i32(fpscr, fpscr, ~FPSR_NZCV_MASK);
 tcg_gen_or_i32(fpscr, fpscr, tmp);
 store_cpu_field_low32(fpscr, vfp.fpsr);
 break;
@@ -390,7 +390,7 @@ static bool gen_M_fp_sysreg_write(DisasContext *s, int 
regno,
 tcg_gen_deposit_i32(control, control, sfpa,
 R_V7M_CONTROL_SFPA_SHIFT, 1);
 store_cpu_field(control, v7m.control[M_REG_S]);
-tcg_gen_andi_i32(tmp, tmp, ~FPCR_NZCV_MASK);
+tcg_gen_andi_i32(tmp, tmp, ~FPSR_NZCV_MASK);
 gen_helper_vfp_set_fpscr(tcg_env, tmp);
 s->base.is_jmp = DISAS_UPDATE_NOCHAIN;