aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJames Greenhalgh <james.greenhalgh@arm.com>2016-11-24 18:16:55 +0000
committerJames Greenhalgh <jgreenhalgh@gcc.gnu.org>2016-11-24 18:16:55 +0000
commit2e5f8203d26bec30f790dbde5058e224521b27cb (patch)
treea66c03cfab0387c16ab8e09044dc5dcdda4715cf /gcc
parentbf1e3646d150a0fcb542c918ad381f9aee583633 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/config/aarch64/aarch64.c14
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