diff options
author | James Greenhalgh <james.greenhalgh@arm.com> | 2016-11-24 18:16:55 +0000 |
---|---|---|
committer | James Greenhalgh <jgreenhalgh@gcc.gnu.org> | 2016-11-24 18:16:55 +0000 |
commit | 2e5f8203d26bec30f790dbde5058e224521b27cb (patch) | |
tree | a66c03cfab0387c16ab8e09044dc5dcdda4715cf /gcc | |
parent | bf1e3646d150a0fcb542c918ad381f9aee583633 (diff) | |
download | gcc-2e5f8203d26bec30f790dbde5058e224521b27cb.zip gcc-2e5f8203d26bec30f790dbde5058e224521b27cb.tar.gz gcc-2e5f8203d26bec30f790dbde5058e224521b27cb.tar.bz2 |
[Patch libgcc AArch64 12/17] Enable hfmode soft-float conversions and truncations
gcc/
* config/aarch64/aarch64-c.c (aarch64_scalar_mode_supported_p): New.
(TARGET_SCALAR_MODE_SUPPORTED_P): Define.
libgcc/
* config/aarch64/sfp-machine.h (_FP_NANFRAC_H): Define.
(_FP_NANSIGN_H): Likewise.
* config/aarch64/t-softfp (softfp_extensions): Add hftf.
(softfp_truncations): Add tfhf.
(softfp_extras): Add required conversion functions.
From-SVN: r242844
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 14 |
2 files changed, 19 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f142c46..b088f7c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2016-11-24 James Greenhalgh <james.greenhalgh@arm.com> + * config/aarch64/aarch64-c.c (aarch64_scalar_mode_supported_p): New. + (TARGET_SCALAR_MODE_SUPPORTED_P): Define. + +2016-11-24 James Greenhalgh <james.greenhalgh@arm.com> + * config/aarch64/aarch64.md (<optab>sihf2): Convert to expand. (<optab>dihf2): Likewise. (aarch64_fp16_<optab><mode>hf2): New. diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 1f35220..f0e10d7 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -14265,6 +14265,17 @@ aarch64_optab_supported_p (int op, machine_mode mode1, machine_mode, } } +/* Implement TARGET_SCALAR_MODE_SUPPORTED_P - return TRUE + if MODE is HFmode, and punt to the generic implementation otherwise. */ + +static bool +aarch64_scalar_mode_supported_p (machine_mode mode) +{ + return (mode == HFmode + ? true + : default_scalar_mode_supported_p (mode)); +} + #undef TARGET_ADDRESS_COST #define TARGET_ADDRESS_COST aarch64_address_cost @@ -14475,6 +14486,9 @@ aarch64_optab_supported_p (int op, machine_mode mode1, machine_mode, #undef TARGET_RTX_COSTS #define TARGET_RTX_COSTS aarch64_rtx_costs_wrapper +#undef TARGET_SCALAR_MODE_SUPPORTED_P +#define TARGET_SCALAR_MODE_SUPPORTED_P aarch64_scalar_mode_supported_p + #undef TARGET_SCHED_ISSUE_RATE #define TARGET_SCHED_ISSUE_RATE aarch64_sched_issue_rate |