From: "Alex Bennée" <alex.bennee@linaro.org>
To: Richard Henderson <richard.henderson@linaro.org>
Cc: qemu-arm@nongnu.org, Peter Maydell <peter.maydell@linaro.org>,
qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v2 32/32] arm/translate-a64: add all single op FP16 to handle_fp_1src_half
Date: Fri, 23 Feb 2018 09:45:47 +0000 [thread overview]
Message-ID: <87fu5s9gz8.fsf@linaro.org> (raw)
In-Reply-To: <7ec2273c-a81a-eaa6-ef10-d229ae06e0cf@linaro.org>
Richard Henderson <richard.henderson@linaro.org> writes:
> On 02/08/2018 09:31 AM, Alex Bennée wrote:
>> This includes FMOV, FABS, FNEG, FSQRT and FRINT[NPMZAXI]. We re-use
>> existing helpers to achieve this.
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> ---
>> target/arm/translate-a64.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 72 insertions(+)
>>
>> diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
>> index 92adf43a89..265bfb14d0 100644
>> --- a/target/arm/translate-a64.c
>> +++ b/target/arm/translate-a64.c
>> @@ -4508,6 +4508,66 @@ static void disas_fp_csel(DisasContext *s, uint32_t insn)
>> tcg_temp_free_i64(t_true);
>> }
>>
>> +/* Floating-point data-processing (1 source) - half precision */
>> +static void handle_fp_1src_half(DisasContext *s, int opcode, int rd, int rn)
>> +{
>> + TCGv_ptr fpst = NULL;
>> + TCGv_i32 tcg_op;
>> + TCGv_i32 tcg_res;
>> +
>> + tcg_op = read_fp_sreg(s, rn);
>> + tcg_res = tcg_temp_new_i32();
>> +
>> + switch (opcode) {
>> + case 0x0: /* FMOV */
>> + tcg_gen_mov_i32(tcg_res, tcg_op);
>> + break;
>> + case 0x1: /* FABS */
>> + gen_helper_advsimd_absh(tcg_res, tcg_op);
>> + break;
>> + case 0x2: /* FNEG */
>> + tcg_gen_xori_i32(tcg_res, tcg_op, 0x8000);
>> + break;
>> + case 0x3: /* FSQRT */
>> + gen_helper_sqrt_f16(tcg_res, tcg_op, cpu_env);
>> + break;
>> + case 0x8: /* FRINTN */
>> + case 0x9: /* FRINTP */
>> + case 0xa: /* FRINTM */
>> + case 0xb: /* FRINTZ */
>> + case 0xc: /* FRINTA */
>> + {
>> + TCGv_i32 tcg_rmode = tcg_const_i32(arm_rmode_to_sf(opcode & 7));
>> + fpst = get_fpstatus_ptr(true);
>> +
>> + gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
>> + gen_helper_advsimd_rinth(tcg_res, tcg_op, fpst);
>> +
>> + gen_helper_set_rmode(tcg_rmode, tcg_rmode, fpst);
>> + tcg_temp_free_i32(tcg_rmode);
>> + break;
>> + }
>> + case 0xe: /* FRINTX */
>> + fpst = get_fpstatus_ptr(true);
>> + gen_helper_advsimd_rinth_exact(tcg_res, tcg_op, fpst);
>> + break;
>> + case 0xf: /* FRINTI */
>> + fpst = get_fpstatus_ptr(true);
>> + gen_helper_advsimd_rinth(tcg_res, tcg_op, fpst);
>> + break;
>> + default:
>> + abort();
>> + }
>> +
>> + write_fp_sreg(s, rd, tcg_res);
>
> Some of these helpers will zero-extend from 16 bits, but at least a few won't
> -- notably fmov and fneg. I wonder if it wouldn't be best to have a
> write_fp_hreg.
I fixed this up by using read_vec_element to load the value.
--
Alex Bennée
next prev parent reply other threads:[~2018-02-23 9:45 UTC|newest]
Thread overview: 121+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-08 17:31 [PATCH v2 00/32] Add ARMv8.2 half-precision functions Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 17:31 ` [PATCH v2 01/32] include/exec/helper-head.h: support f16 in helper calls Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 17:31 ` [PATCH v2 02/32] target/arm/cpu64: introduce ARM_V8_FP16 feature bit Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 17:31 ` [PATCH v2 03/32] target/arm/cpu64: allow fp16 to be disabled Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 20:36 ` Richard Henderson
2018-02-13 14:26 ` Peter Maydell
2018-02-13 14:26 ` [Qemu-devel] " Peter Maydell
2018-02-21 16:35 ` Alex Bennée
2018-02-21 16:35 ` [Qemu-devel] " Alex Bennée
2018-02-21 18:16 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 04/32] target/arm/cpu.h: update comment for half-precision values Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 17:31 ` [PATCH v2 05/32] target/arm/cpu.h: add additional float_status flags Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 20:42 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 06/32] target/arm/helper: pass explicit fpst to set_rmode Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 20:43 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 07/32] arm/translate-a64: implement half-precision F(MIN|MAX)(V|NMV) Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 20:46 ` Richard Henderson
2018-02-08 20:49 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 08/32] arm/translate-a64: handle_3same_64 comment fix Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 20:46 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 09/32] arm/translate-a64: initial decode for simd_three_reg_same_fp16 Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 20:48 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 10/32] arm/translate-a64: add FP16 FADD/FABD/FSUB/FMUL/FDIV to simd_three_reg_same_fp16 Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 20:49 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 11/32] arm/translate-a64: add FP16 F[A]C[EQ/GE/GT] " Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 20:54 ` Richard Henderson
2018-02-23 11:59 ` Alex Bennée
2018-02-23 22:10 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 12/32] arm/translate-a64: add FP16 FMULA/X/S " Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 20:56 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 13/32] arm/translate-a64: add FP16 FR[ECP/SQRT]S " Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 20:59 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 14/32] arm/translate-a64: add FP16 pairwise ops simd_three_reg_same_fp16 Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 21:30 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 15/32] arm/translate-a64: add FP16 FMULX/MLS/FMLA to simd_indexed Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 21:49 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 16/32] arm/translate-a64: add FP16 x2 ops for simd_indexed Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 22:10 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 17/32] arm/translate-a64: initial decode for simd_two_reg_misc_fp16 Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 22:15 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 18/32] arm/translate-a64: add FP16 FPRINTx to simd_two_reg_misc_fp16 Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 22:32 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 19/32] arm/translate-a64: add FCVTxx " Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 22:35 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 20/32] arm/translate-a64: add FP16 FCMxx (zero) " Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 22:39 ` Richard Henderson
2018-02-22 17:23 ` Alex Bennée
2018-02-22 19:40 ` Richard Henderson
2018-02-23 10:23 ` Alex Bennée
2018-02-08 17:31 ` [PATCH v2 21/32] arm/translate-a64: add FP16 SCVTF/UCVFT " Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 22:42 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 22/32] arm/translate-a64: add FP16 FNEG/FABS " Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-08 22:43 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 23/32] arm/helper.c: re-factor recpe and add recepe_f16 Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-09 17:54 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 24/32] arm/translate-a64: add FP16 FRECPE Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-09 17:57 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 25/32] arm/translate-a64: add FP16 FRCPX to simd_two_reg_misc_fp16 Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-09 18:00 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 26/32] arm/translate-a64: add FP16 FSQRT " Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-09 18:01 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 27/32] arm/helper.c: re-factor rsqrte and add rsqrte_f16 Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-09 18:15 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 28/32] arm/translate-a64: add FP16 FRSQRTE to simd_two_reg_misc_fp16 Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-09 18:15 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 29/32] arm/translate-a64: add FP16 FMOV to simd_mod_imm Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-09 18:23 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 30/32] arm/translate-a64: add all FP16 ops in simd_scalar_pairwise Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-09 18:27 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 31/32] arm/translate-a64: implement simd_scalar_three_reg_same_fp16 Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-09 18:34 ` Richard Henderson
2018-02-08 17:31 ` [PATCH v2 32/32] arm/translate-a64: add all single op FP16 to handle_fp_1src_half Alex Bennée
2018-02-08 17:31 ` [Qemu-devel] " Alex Bennée
2018-02-09 18:37 ` Richard Henderson
2018-02-23 9:45 ` Alex Bennée [this message]
2018-02-08 18:49 ` [Qemu-devel] [PATCH v2 00/32] Add ARMv8.2 half-precision functions no-reply
2018-02-08 18:49 ` no-reply
2018-02-08 18:56 ` no-reply
2018-02-08 18:56 ` no-reply
2018-02-08 19:04 ` no-reply
2018-02-08 19:04 ` no-reply
2018-02-08 19:11 ` no-reply
2018-02-08 19:11 ` no-reply
2018-02-08 19:17 ` no-reply
2018-02-08 19:17 ` no-reply
2018-02-08 21:33 ` no-reply
2018-02-08 21:33 ` no-reply
2018-02-13 14:27 ` [Qemu-arm] " Peter Maydell
2018-02-13 14:27 ` [Qemu-devel] " Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87fu5s9gz8.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.