Hi, This patch set enables the _Float16 type specified in ISO/IEC TS 18661-3 for AArch64 and ARM. The patch set has been posted over the past two months, with many of the target-independent changes approved. I'm reposting it in entirity in the form I hope to commit it to trunk.
The patch set can be roughly split in three; first, hookization of TARGET_FLT_EVAL_METHOD, and changes to the excess precision logic in the compiler to handle the new values for FLT_EVAL_METHOD defined in ISO/IEC TS-18661-3. Second, the AArch64 changes required to enable _Float16, and finally the ARM changes required to enable _Float16. The broad goals and an outline of each patch in the patch set were described in https://gcc.gnu.org/ml/gcc-patches/2016-09/msg02383.html . As compared to the original submission, the patch set has grown an ARM port, and has had several rounds of technical review on the target independent aspects. This has resulted in many of the patches already being approved, a full summary of the status of each ticket is immediately below. Clearly the focus for review of this patch set now needs to be the AArch64 and ARM ports, I hope the appropriate maintainers will be able to do so in time for the patch set to be accepted for GCC 7. I've built and tested the full patch set on ARM (cross and native), AArch64 (cross and native) and x86_64 (native) with no identified issues. Thanks, James ------------------ Target independent changes 10 patches, 9 previously approved, 1 New implementing testsuite changes to enable _Float16 tests in more circumstances on ARM. ------------------ [Patch 1/17] Add a new target hook for describing excess precision intentions Approved: https://gcc.gnu.org/ml/gcc-patches/2016-11/msg00781.html [Patch 2/17] Implement TARGET_C_EXCESS_PRECISION for i386 Blanket approved by Jeff in: https://gcc.gnu.org/ml/gcc-patches/2016-09/msg02402.html [Patch 3/17] Implement TARGET_C_EXCESS_PRECISION for s390 Approved: https://gcc.gnu.org/ml/gcc-patches/2016-10/msg01554.html [Patch 4/17] Implement TARGET_C_EXCESS_PRECISION for m68k Blanket approved by Jeff in: https://gcc.gnu.org/ml/gcc-patches/2016-09/msg02402.html And by Andreas: https://gcc.gnu.org/ml/gcc-patches/2016-09/msg02414.html There was a typo in the original patch, fixed in: https://gcc.gnu.org/ml/gcc-patches/2016-10/msg01173.html which I would apply as an "obvious" fix to the original patch. [Patch 5/17] Add -fpermitted-flt-eval-methods=[c11|ts-18661-3] Approved: https://gcc.gnu.org/ml/gcc-patches/2016-09/msg02405.html Joseph had a comment in https://gcc.gnu.org/ml/gcc-patches/2016-10/msg00335.html that the tests should check FLT_EVAL_METHOD from <float.h> rather than __FLT_EVAL_METHOD__. Rather than implement that suggestion, I added tests to patch 6 which tested the <float.h> macro, and left the tests in this patch testing the internal macro. [Patch 6/17] Migrate excess precision logic to use TARGET_EXCESS_PRECISION Approved (after removing a rebase bug): https://gcc.gnu.org/ml/gcc-patches/2016-11/msg00231.html [Patch 7/17] Delete TARGET_FLT_EVAL_METHOD and poison it. Approved: https://gcc.gnu.org/ml/gcc-patches/2016-09/msg02401.html [Patch 8/17] Make _Float16 available if HFmode is available Approved: https://gcc.gnu.org/ml/gcc-patches/2016-09/msg02403.html [Patch libgcc 9/17] Update soft-fp from glibc Self approved under policy that we can update libraries which GCC mirrors without further approval. [Patch testsuite patch 10/17] Add options for floatN when checking effective target for support NEW! ---------------- AArch64 changes 3 patches, none reviewed ---------------- [Patch AArch64 11/17] Add floatdihf2 and floatunsdihf2 patterns Not reviewed, last pinged (^6): https://gcc.gnu.org/ml/gcc-patches/2016-11/msg00584.html [Patch libgcc AArch64 12/17] Enable hfmode soft-float conversions and truncations Not reviewed: https://gcc.gnu.org/ml/gcc-patches/2016-09/msg02395.html [Patch AArch64 13/17] Enable _Float16 for AArch64 Not reviewed: https://gcc.gnu.org/ml/gcc-patches/2016-10/msg01176.html ---------------- ARM changes 4 patches, none OK'ed ---------------- [Patch 14/17] [libgcc, ARM] Generalise float-to-half conversion function. Respun in this submission to avoid a bug identified during extended multilib testing, original submission here: https://gcc.gnu.org/ml/gcc-patches/2016-11/msg00714.html [Patch 15/17 libgcc] Add double to half conversions. Reviewed, but not approved: https://gcc.gnu.org/ml/gcc-patches/2016-10/msg01975.html Changes were required to patch 16/17, and patch 10/17 was introduced to implement the suggested testsuite patch. The original patch still stands, and needs reviewed: https://gcc.gnu.org/ml/gcc-patches/2016-10/msg01914.html [Patch 16/17 ARM] Half to double precision conversions Resubmitted: https://gcc.gnu.org/ml/gcc-patches/2016-11/msg00233.html Needs review. [Patch ARM 17/17] Enable _Float16 for ARM. Resubmitted: https://gcc.gnu.org/ml/gcc-patches/2016-11/msg00234.html Needs review.