This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [ARM][PATCH 1/2] Support HFmode for standard names implemented with VRINT instructions.


Pinging for review of



From:<> <><> on behalf of Srinath Parvathaneni <><>
Sent: 29 May 2019 15:47:59
To:<> <><>
Cc: nd <><>; Richard Earnshaw <><>; Ramana Radhakrishnan <><>; Kyrylo Tkachov <><>
Subject: [ARM][PATCH 1/2] Support HFmode for standard names implemented with VRINT instructions.


The initial implementation of the FP16 extension added HFmode support to
a limited number of the standard names.  Following , this patch
extends the HFmode support to the names implemented by the ARM
<vrint_pattern> and l<vrint_pattern> expanders: btrunc, ceil, round,
floor, nearbyint and rint. This patch also changes the patterns
supporting the neon_vrnd* and neon_vcvt* Adv.SIMD intrinsics to use the
standard names, where apropriate.

No new tests are added. The ARM tests for the SF and DF mode variants of
these names are based on GCC builtin functions and there doesn't seem to
be an obvious alternative to trigger the new patterns through the
standard names. The pattern definitions though are tested through the
Adv.SIMD intrinsics.

The following patch reworks the implementation for HFmode VRINT to
remove a number of redundant constructs that were added in the initial

The two patches have been tested for arm-none-linux-gnueabihf with
native bootstrap and make check and for arm-none-eabi with
cross-compiled check-gcc on an ARMv8.4-A emulator.

Ok for trunk? If ok, could someone please commit the patch on my behalf,
I don't have commit rights.

2019-05-29 Srinath Parvathaneni <><>
           Matthew Wahab  <><>

        * config/arm/ (fp16_rnd_str): Replace UNSPEC_VRND
        values with equivalent UNSPEC_VRINT values.  Add UNSPEC_NVRINTZ,
        (vrint_variant): Fix some white-space.
        (vrint_predicable): Fix some white-space.
        * config/arm/ (neon_v<fp16_rnd_str><mode>): Replace
        FP16_RND iterator with NEON_VRINT and update the rest of the
        pattern accordingly.
        (neon_vcvt<vcvth_op><sup><mode>): Replace with
        (neon_vcvt<nvrint_variant><su><mode>): New.
        (neon_vcvtn<su><mode>): New.
        * config/arm/ Add UNSPEC_VRINTN.
        * config/arm/ (neon_v<fp16_rnd_str>hf): Convert to an
        expander invoking <vrint_pattern>hf2.
        (neon_vrndihf): Remove.
        (neon_vrndnhf): New.
        (neon_vcvt<vcvth_op>h<sup>si): Remove.
        (<vrint_pattern>hf2): New.
        (l<vrint_pattern><su_optab>hfsi2): New.
        (neon_vcvt<vrint_variant>h<su>si): New.
        (neon_vcvtnh<su>si): New.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]