[v4,02/31] target/arm/cpu64: introduce ARM_V8_FP16 feature bit

Message ID 20180227143852.11175-3-alex.bennee@linaro.org
State New
Headers show
Series
  • Add ARMv8.2 half-precision functions
Related show

Commit Message

Alex Bennée Feb. 27, 2018, 2:38 p.m.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

---
 target/arm/cpu.h   | 1 +
 target/arm/cpu64.c | 1 +
 2 files changed, 2 insertions(+)

-- 
2.15.1

Comments

Peter Maydell Feb. 27, 2018, 6:09 p.m. | #1
On 27 February 2018 at 14:38, Alex Bennée <alex.bennee@linaro.org> wrote:
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

> ---

>  target/arm/cpu.h   | 1 +

>  target/arm/cpu64.c | 1 +

>  2 files changed, 2 insertions(+)

>

> diff --git a/target/arm/cpu.h b/target/arm/cpu.h

> index 8c839faa8f..267a9d7e2f 100644

> --- a/target/arm/cpu.h

> +++ b/target/arm/cpu.h

> @@ -1408,6 +1408,7 @@ enum arm_features {

>      ARM_FEATURE_V8_SHA3, /* implements SHA3 part of v8 Crypto Extensions */

>      ARM_FEATURE_V8_SM3, /* implements SM3 part of v8 Crypto Extensions */

>      ARM_FEATURE_V8_SM4, /* implements SM4 part of v8 Crypto Extensions */

> +    ARM_FEATURE_V8_FP16, /* implements v8.2 half-precision float */

>  };

>

>  static inline int arm_feature(CPUARMState *env, int feature)

> diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c

> index 1c330adc28..9743bdc8c3 100644

> --- a/target/arm/cpu64.c

> +++ b/target/arm/cpu64.c

> @@ -230,6 +230,7 @@ static void aarch64_any_initfn(Object *obj)

>      set_feature(&cpu->env, ARM_FEATURE_V8_SM4);

>      set_feature(&cpu->env, ARM_FEATURE_V8_PMULL);

>      set_feature(&cpu->env, ARM_FEATURE_CRC);

> +    set_feature(&cpu->env, ARM_FEATURE_V8_FP16);

>      cpu->ctr = 0x80038003; /* 32 byte I and D cacheline size, VIPT icache */

>      cpu->dcz_blocksize = 7; /*  512 bytes */

>  }


I'm just going to split out the second half of this patchset into its
own commit, because we shouldn't enable the feature until after we've
implemented it.

thanks
-- PMM

Patch

diff --git a/target/arm/cpu.h b/target/arm/cpu.h
index 8c839faa8f..267a9d7e2f 100644
--- a/target/arm/cpu.h
+++ b/target/arm/cpu.h
@@ -1408,6 +1408,7 @@  enum arm_features {
     ARM_FEATURE_V8_SHA3, /* implements SHA3 part of v8 Crypto Extensions */
     ARM_FEATURE_V8_SM3, /* implements SM3 part of v8 Crypto Extensions */
     ARM_FEATURE_V8_SM4, /* implements SM4 part of v8 Crypto Extensions */
+    ARM_FEATURE_V8_FP16, /* implements v8.2 half-precision float */
 };
 
 static inline int arm_feature(CPUARMState *env, int feature)
diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
index 1c330adc28..9743bdc8c3 100644
--- a/target/arm/cpu64.c
+++ b/target/arm/cpu64.c
@@ -230,6 +230,7 @@  static void aarch64_any_initfn(Object *obj)
     set_feature(&cpu->env, ARM_FEATURE_V8_SM4);
     set_feature(&cpu->env, ARM_FEATURE_V8_PMULL);
     set_feature(&cpu->env, ARM_FEATURE_CRC);
+    set_feature(&cpu->env, ARM_FEATURE_V8_FP16);
     cpu->ctr = 0x80038003; /* 32 byte I and D cacheline size, VIPT icache */
     cpu->dcz_blocksize = 7; /*  512 bytes */
 }