From: Ramana Radhakrishnan <ramana.gcc@googlemail.com>
To: Matthew Wahab <matthew.wahab@foss.arm.com>
Cc: gcc-patches <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH 8/17][ARM] Add VFP FP16 arithmetic instructions.
Date: Thu, 28 Jul 2016 11:37:00 -0000 [thread overview]
Message-ID: <CAJA7tRbgRkFM1YN5Ezsj3LC3jkAssn=6vqDSBhg1F19hUHWRrw@mail.gmail.com> (raw)
In-Reply-To: <577A6C6F.3080703@foss.arm.com>
On Mon, Jul 4, 2016 at 3:02 PM, Matthew Wahab
<matthew.wahab@foss.arm.com> wrote:
> On 19/05/16 15:54, Matthew Wahab wrote:
>> On 18/05/16 16:20, Joseph Myers wrote:
>>> On Wed, 18 May 2016, Matthew Wahab wrote:
>>>
>>> In short: instructions for direct HFmode arithmetic should be described
>>> with patterns with the standard names. It's the job of the
>>> architecture-independent compiler to ensure that fp16 arithmetic in the
>>> user's source code only generates direct fp16 arithmetic in GIMPLE (and
>>> thus ends up using those patterns) if that is a correct representation of
>>> the source code's semantics according to ACLE.
>>>
>>> The intrinsics you provide can then be written to use direct arithmetic,
>>> and rely on convert_to_real_1 eliminating the promotions, rather than
>>> needing built-in functions at all, just like many arm_neon.h intrinsics
>>> make direct use of GNU C vector arithmetic.
>>
>> I think it's clear that this has exhausted my knowledge of FP semantics.
>>
>> Forcing promotion to single-precision was to settle concerns brought up in
>> internal discussions about __fp16 semantics. I'll see if anybody has any
>> problem with the changes you suggest.
>
> This patch changes the implementation to use the standard names for the
> HFmode arithmetic. Later patches will also be updated to use the
> arithmetic operators where appropriate.
>
> Changes since the last version of this patch:
> - The standard names for plus, minus, mult, div and fma are defined for
> HF mode.
> - The patterns supporting the new ACLE intrinsics vnegh_f16, vaddh_f16,
> vsubh_f16, vmulh_f16 and vdivh_f16 are removed, the arithmetic
> operators will be used instead.
> - The tests are updated to expect f16 instructions rather than the f32
> instructions that were previously emitted.
>
> Tested the series for arm-none-linux-gnueabihf with native bootstrap and
> make check and for arm-none-eabi and armeb-none-eabi with make check on
> an ARMv8.2-A emulator.
All fine except -
Why can we not extend the <vrint_pattern> and the l<vrint_pattern> in
vfp.md for fp16 and avoid all the unspecs for vcvta and vrnd*
instructions ?
Ramana
>
> Ok for trunk?
> Matthew
>
> 2016-07-04 Matthew Wahab <matthew.wahab@arm.com>
>
> * config/arm/iterators.md (Code iterators): Fix some white-space
> in the comments.
> (GLTE): New.
> (ABSNEG): New
> (FCVT): Moved from vfp.md.
> (VCVT_HF_US_N): New.
> (VCVT_SI_US_N): New.
> (VCVT_HF_US): New.
> (VCVTH_US): New.
> (FP16_RND): New.
> (absneg_str): New.
> (FCVTI32typename): Moved from vfp.md.
> (sup): Add UNSPEC_VCVTA_S, UNSPEC_VCVTA_U, UNSPEC_VCVTM_S,
> UNSPEC_VCVTM_U, UNSPEC_VCVTN_S, UNSPEC_VCVTN_U, UNSPEC_VCVTP_S,
> UNSPEC_VCVTP_U, UNSPEC_VCVT_HF_S_N, UNSPEC_VCVT_HF_U_N,
> UNSPEC_VCVT_SI_S_N, UNSPEC_VCVT_SI_U_N, UNSPEC_VCVTH_S_N,
> UNSPEC_VCVTH_U_N, UNSPEC_VCVTH_S and UNSPEC_VCVTH_U.
>
> (vcvth_op): New.
> (fp16_rnd_str): New.
> (fp16_rnd_insn): New.
> * config/arm/unspecs.md (UNSPEC_VCVT_HF_S_N): New.
> (UNSPEC_VCVT_HF_U_N): New.
> (UNSPEC_VCVT_SI_S_N): New.
> (UNSPEC_VCVT_SI_U_N): New.
> (UNSPEC_VCVTH_S): New.
> (UNSPEC_VCVTH_U): New.
> (UNSPEC_VCVTA_S): New.
> (UNSPEC_VCVTA_U): New.
> (UNSPEC_VCVTM_S): New.
> (UNSPEC_VCVTM_U): New.
> (UNSPEC_VCVTN_S): New.
> (UNSPEC_VCVTN_U): New.
> (UNSPEC_VCVTP_S): New.
> (UNSPEC_VCVTP_U): New.
> (UNSPEC_VCVTP_S): New.
> (UNSPEC_VCVTP_U): New.
> (UNSPEC_VRND): New.
> (UNSPEC_VRNDA): New.
> (UNSPEC_VRNDI): New.
> (UNSPEC_VRNDM): New.
> (UNSPEC_VRNDN): New.
> (UNSPEC_VRNDP): New.
> (UNSPEC_VRNDX): New.
> * config/arm/vfp.md (<absneg_str>hf2): New.
> (neon_vabshf): New.
> (neon_v<fp16_rnd_str>hf): New.
> (neon_vrndihf): New.
> (addhf3): New.
> (subhf3): New.
> (divhf3): New.
> (mulhf3): New.
> (*mulsf3neghf_vfp): New.
> (*negmulhf3_vfp): New.
> (*mulsf3addhf_vfp): New.
> (*mulhf3subhf_vfp): New.
> (*mulhf3neghfaddhf_vfp): New.
> (*mulhf3neghfsubhf_vfp): New.
> (fmahf4): New.
> (neon_vfmahf): New.
> (fmsubhf4_fp16): New.
> (neon_vfmshf): New.
> (*fnmsubhf4): New.
> (*fnmaddhf4): New.
> (neon_vsqrthf): New.
> (neon_vrsqrtshf): New.
> (FCVT): Move to iterators.md.
> (FCVTI32typename): Likewise.
> (neon_vcvth<sup>hf): New.
> (neon_vcvth<sup>si): New.
> (neon_vcvth<sup>_nhf_unspec): New.
> (neon_vcvth<sup>_nhf): New.
> (neon_vcvth<sup>_nsi_unspec): New.
> (neon_vcvth<sup>_nsi): New.
> (neon_vcvt<vcvth_op>h<sup>si): New.
> (neon_<fmaxmin_op>hf): New.
>
> testsuite/
> 2016-07-04 Matthew Wahab <matthew.wahab@arm.com>
>
>
> * gcc.target/arm/armv8_2-fp16-arith-1.c: New.
> * gcc.target/arm/armv8_2-fp16-conv-1.c: New.
>
next prev parent reply other threads:[~2016-07-28 11:37 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-17 14:20 [PATCH 0/17][ARM] ARMv8.2-A and FP16 extension support Matthew Wahab
2016-05-17 14:23 ` [PATCH 1/17][ARM] Add ARMv8.2-A command line option and profile Matthew Wahab
2016-07-04 13:46 ` Matthew Wahab
2016-09-21 13:57 ` Ramana Radhakrishnan
2016-05-17 14:25 ` [PATCH 2/17][Testsuite] Add a selector for ARM FP16 alternative format support Matthew Wahab
2016-07-27 13:34 ` Ramana Radhakrishnan
2016-05-17 14:26 ` [PATCH 3/17][Testsuite] Add ARM support for ARMv8.2-A with FP16 arithmetic instructions Matthew Wahab
2016-07-04 13:49 ` Matthew Wahab
2016-07-27 13:34 ` Ramana Radhakrishnan
2016-05-17 14:28 ` [PATCH 4/17][ARM] Define feature macros for FP16 Matthew Wahab
2016-07-27 13:35 ` Ramana Radhakrishnan
2016-05-17 14:29 ` [PATCH 5/17][ARM] Enable HI mode moves for floating point values Matthew Wahab
2016-07-27 13:57 ` Ramana Radhakrishnan
2016-09-26 13:20 ` Christophe Lyon
2016-09-26 13:26 ` Matthew Wahab
2016-05-17 14:32 ` [PATCH 6/17][ARM] Add data processing intrinsics for float16_t Matthew Wahab
2016-07-27 13:59 ` Ramana Radhakrishnan
2016-09-25 14:44 ` Christophe Lyon
2016-09-26 9:56 ` Matthew Wahab
2016-09-26 12:54 ` Christophe Lyon
2016-09-26 13:11 ` Ramana Radhakrishnan
2016-09-26 13:19 ` Matthew Wahab
2016-09-26 13:21 ` Christophe Lyon
2016-09-26 20:02 ` Christophe Lyon
2016-05-17 14:34 ` [PATCH 7/17][ARM] Add FP16 data movement instructions Matthew Wahab
2016-07-04 13:57 ` Matthew Wahab
2016-07-27 14:01 ` Ramana Radhakrishnan
2016-05-17 14:36 ` [PATCH 8/17][ARM] Add VFP FP16 arithmetic instructions Matthew Wahab
2016-05-18 0:52 ` Joseph Myers
2016-05-18 0:57 ` Joseph Myers
2016-05-18 13:40 ` Matthew Wahab
2016-05-18 15:21 ` Joseph Myers
2016-05-19 14:54 ` Matthew Wahab
2016-07-04 14:02 ` Matthew Wahab
2016-07-28 11:37 ` Ramana Radhakrishnan [this message]
2016-08-03 11:52 ` Ramana Radhakrishnan
2016-08-03 13:10 ` Matthew Wahab
2016-08-03 14:45 ` James Greenhalgh
2016-08-03 17:44 ` Joseph Myers
2016-05-17 14:37 ` [PATCH 9/17][ARM] Add NEON " Matthew Wahab
2016-05-18 0:58 ` Joseph Myers
2016-05-19 17:01 ` Jiong Wang
2016-05-19 17:29 ` Joseph Myers
2016-06-08 8:46 ` James Greenhalgh
2016-06-08 20:02 ` Joseph Myers
2016-07-04 14:09 ` Matthew Wahab
2016-07-28 11:53 ` Ramana Radhakrishnan
2016-05-17 14:39 ` [PATCH 10/17][ARM] Refactor support code for NEON builtins Matthew Wahab
2016-07-28 11:54 ` Ramana Radhakrishnan
2016-12-05 16:47 ` [arm-embedded][committed][PATCH 10/17] " Andre Vieira (lists)
2016-05-17 14:41 ` [PATCH 11/17][ARM] Add builtins for VFP FP16 intrinsics Matthew Wahab
2016-07-04 14:12 ` Matthew Wahab
2016-07-28 11:55 ` Ramana Radhakrishnan
2016-05-17 14:43 ` [PATCH 12/17][ARM] Add builtins for NEON " Matthew Wahab
2016-07-04 14:13 ` Matthew Wahab
2016-07-28 11:56 ` Ramana Radhakrishnan
2016-05-17 14:44 ` [PATCH 13/17][ARM] Add VFP FP16 instrinsics Matthew Wahab
2016-07-04 14:14 ` Matthew Wahab
2016-07-28 11:57 ` Ramana Radhakrishnan
2016-05-17 14:47 ` [PATCH 14/17][ARM] Add NEON " Matthew Wahab
2016-07-04 14:16 ` Matthew Wahab
2016-08-03 12:57 ` Ramana Radhakrishnan
2016-05-17 14:49 ` [PATCH 15/17][ARM] Add tests for ARMv8.2-A FP16 support Matthew Wahab
2016-07-04 14:17 ` Matthew Wahab
2016-08-04 8:34 ` Ramana Radhakrishnan
2016-05-17 14:51 ` [PATCH 16/17][ARM] Add tests for VFP FP16 ACLE instrinsics Matthew Wahab
2016-05-18 1:07 ` Joseph Myers
2016-05-18 10:58 ` Matthew Wahab
2016-07-04 14:18 ` Matthew Wahab
2016-08-04 8:35 ` Ramana Radhakrishnan
2016-05-17 14:52 ` [PATCH 17/17][ARM] Add tests for NEON FP16 ACLE intrinsics Matthew Wahab
2016-07-04 14:22 ` Matthew Wahab
2016-08-04 9:01 ` Ramana Radhakrishnan
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='CAJA7tRbgRkFM1YN5Ezsj3LC3jkAssn=6vqDSBhg1F19hUHWRrw@mail.gmail.com' \
--to=ramana.gcc@googlemail.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=matthew.wahab@foss.arm.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).