Re: [Qemu-devel] [PATCH 7/9] target/arm: Implement FCVT (scalar, fixed-point) for fp16

2018-05-01 Thread Alex Bennée

Richard Henderson  writes:

> Signed-off-by: Richard Henderson 

Reviewed-by: Alex Bennée 

> ---
>  target/arm/translate-a64.c | 17 +++--
>  1 file changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
> index 4f6317aa0f..794ede7222 100644
> --- a/target/arm/translate-a64.c
> +++ b/target/arm/translate-a64.c
> @@ -5372,8 +5372,7 @@ static void disas_fp_fixed_conv(DisasContext *s, 
> uint32_t insn)
>  bool sf = extract32(insn, 31, 1);
>  bool itof;
>
> -if (sbit || (type > 1)
> -|| (!sf && scale < 32)) {
> +if (sbit || (!sf && scale < 32)) {
>  unallocated_encoding(s);
>  return;
>  }
> @@ -5392,6 +5391,20 @@ static void disas_fp_fixed_conv(DisasContext *s, 
> uint32_t insn)
>  return;
>  }
>
> +switch (type) {
> +case 0: /* float32 */
> +case 1: /* float64 */
> +break;
> +case 3: /* float16 */
> +if (arm_dc_feature(s, ARM_FEATURE_V8_FP16)) {
> +break;
> +}
> +/* fallthru */
> +default:
> +unallocated_encoding(s);
> +return;
> +}
> +
>  if (!fp_access_check(s)) {
>  return;
>  }


--
Alex Bennée



[Qemu-devel] [PATCH 7/9] target/arm: Implement FCVT (scalar, fixed-point) for fp16

2018-04-24 Thread Richard Henderson
Signed-off-by: Richard Henderson 
---
 target/arm/translate-a64.c | 17 +++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
index 4f6317aa0f..794ede7222 100644
--- a/target/arm/translate-a64.c
+++ b/target/arm/translate-a64.c
@@ -5372,8 +5372,7 @@ static void disas_fp_fixed_conv(DisasContext *s, uint32_t 
insn)
 bool sf = extract32(insn, 31, 1);
 bool itof;
 
-if (sbit || (type > 1)
-|| (!sf && scale < 32)) {
+if (sbit || (!sf && scale < 32)) {
 unallocated_encoding(s);
 return;
 }
@@ -5392,6 +5391,20 @@ static void disas_fp_fixed_conv(DisasContext *s, 
uint32_t insn)
 return;
 }
 
+switch (type) {
+case 0: /* float32 */
+case 1: /* float64 */
+break;
+case 3: /* float16 */
+if (arm_dc_feature(s, ARM_FEATURE_V8_FP16)) {
+break;
+}
+/* fallthru */
+default:
+unallocated_encoding(s);
+return;
+}
+
 if (!fp_access_check(s)) {
 return;
 }
-- 
2.14.3