On 2/14/20 7:15 PM, Richard Henderson wrote:
These registers are 32-bits wide.  Cut and paste used FIELD_EX64
instead of the more proper FIELD_EX32.  In practice all this did
was use an unnecessary 64-bit operation, producing correct results.

Signed-off-by: Richard Henderson <richard.hender...@linaro.org>
---
  target/arm/cpu.h | 18 +++++++++---------
  1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/target/arm/cpu.h b/target/arm/cpu.h
index e943ffe8a9..28cb2be6fc 100644
--- a/target/arm/cpu.h
+++ b/target/arm/cpu.h
@@ -3415,18 +3415,18 @@ static inline bool isar_feature_aa32_fp16_arith(const 
ARMISARegisters *id)
  static inline bool isar_feature_aa32_fp_d32(const ARMISARegisters *id)
  {
      /* Return true if D16-D31 are implemented */
-    return FIELD_EX64(id->mvfr0, MVFR0, SIMDREG) >= 2;
+    return FIELD_EX32(id->mvfr0, MVFR0, SIMDREG) >= 2;
  }
static inline bool isar_feature_aa32_fpshvec(const ARMISARegisters *id)
  {
-    return FIELD_EX64(id->mvfr0, MVFR0, FPSHVEC) > 0;
+    return FIELD_EX32(id->mvfr0, MVFR0, FPSHVEC) > 0;
  }
static inline bool isar_feature_aa32_fpdp(const ARMISARegisters *id)
  {
      /* Return true if CPU supports double precision floating point */
-    return FIELD_EX64(id->mvfr0, MVFR0, FPDP) > 0;
+    return FIELD_EX32(id->mvfr0, MVFR0, FPDP) > 0;
  }
/*
@@ -3436,32 +3436,32 @@ static inline bool isar_feature_aa32_fpdp(const 
ARMISARegisters *id)
   */
  static inline bool isar_feature_aa32_fp16_spconv(const ARMISARegisters *id)
  {
-    return FIELD_EX64(id->mvfr1, MVFR1, FPHP) > 0;
+    return FIELD_EX32(id->mvfr1, MVFR1, FPHP) > 0;
  }
static inline bool isar_feature_aa32_fp16_dpconv(const ARMISARegisters *id)
  {
-    return FIELD_EX64(id->mvfr1, MVFR1, FPHP) > 1;
+    return FIELD_EX32(id->mvfr1, MVFR1, FPHP) > 1;
  }
static inline bool isar_feature_aa32_vsel(const ARMISARegisters *id)
  {
-    return FIELD_EX64(id->mvfr2, MVFR2, FPMISC) >= 1;
+    return FIELD_EX32(id->mvfr2, MVFR2, FPMISC) >= 1;
  }
static inline bool isar_feature_aa32_vcvt_dr(const ARMISARegisters *id)
  {
-    return FIELD_EX64(id->mvfr2, MVFR2, FPMISC) >= 2;
+    return FIELD_EX32(id->mvfr2, MVFR2, FPMISC) >= 2;
  }
static inline bool isar_feature_aa32_vrint(const ARMISARegisters *id)
  {
-    return FIELD_EX64(id->mvfr2, MVFR2, FPMISC) >= 3;
+    return FIELD_EX32(id->mvfr2, MVFR2, FPMISC) >= 3;
  }
static inline bool isar_feature_aa32_vminmaxnm(const ARMISARegisters *id)
  {
-    return FIELD_EX64(id->mvfr2, MVFR2, FPMISC) >= 4;
+    return FIELD_EX32(id->mvfr2, MVFR2, FPMISC) >= 4;
  }
static inline bool isar_feature_aa32_pan(const ARMISARegisters *id)


Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com>


Reply via email to