aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/aarch64/iterators.md
diff options
context:
space:
mode:
authorAlan Lawrence <alan.lawrence@arm.com>2015-09-08 19:18:29 +0000
committerAlan Lawrence <alalaw01@gcc.gnu.org>2015-09-08 19:18:29 +0000
commit862abc04beb0874f2e4352c44f28849a52c5c434 (patch)
treebf2e641ff14bdb561987a390c8a0d0b76c73c841 /gcc/config/aarch64/iterators.md
parent7171dc86e4bb022c1f55a5a0af921ec3a6c9c17c (diff)
downloadgcc-862abc04beb0874f2e4352c44f28849a52c5c434.zip
gcc-862abc04beb0874f2e4352c44f28849a52c5c434.tar.gz
gcc-862abc04beb0874f2e4352c44f28849a52c5c434.tar.bz2
[AArch64] Improve code generation for float16 vector code
gcc/: * config/aarch64/aarch64-simd.md (aarch64_simd_dup<mode>, aarch64_dup_lane<mode>, aarch64_dup_lane_<vswap_width_name><mode>, aarch64_simd_vec_set<mode>, vec_set<mode>, vec_perm_const<mode>, vec_init<mode>, *aarch64_simd_ld1r<mode>, vec_extract<mode>): Add V4HF and V8HF variants to iterator. * config/aarch64/aarch64.c (aarch64_evpc_dup): Add V4HF and V8HF cases. * config/aarch64/iterators.md (VDQF_F16): New. (VSWAP_WIDTH, vswap_width_name): Add V4HF and V8HF cases. From-SVN: r227550
Diffstat (limited to 'gcc/config/aarch64/iterators.md')
-rw-r--r--gcc/config/aarch64/iterators.md7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md
index d7dfdc1..0210602 100644
--- a/gcc/config/aarch64/iterators.md
+++ b/gcc/config/aarch64/iterators.md
@@ -82,7 +82,10 @@
;; pointer-sized quantities. Exactly one of the two alternatives will match.
(define_mode_iterator PTR [(SI "ptr_mode == SImode") (DI "ptr_mode == DImode")])
-;; Vector Float modes.
+;; Vector Float modes suitable for moving, loading and storing.
+(define_mode_iterator VDQF_F16 [V4HF V8HF V2SF V4SF V2DF])
+
+;; Vector Float modes, barring HF modes.
(define_mode_iterator VDQF [V2SF V4SF V2DF])
;; Vector Float modes, and DF.
@@ -627,12 +630,14 @@
(V2SI "V4SI") (V4SI "V2SI")
(DI "V2DI") (V2DI "DI")
(V2SF "V4SF") (V4SF "V2SF")
+ (V4HF "V8HF") (V8HF "V4HF")
(DF "V2DF") (V2DF "DF")])
(define_mode_attr vswap_width_name [(V8QI "to_128") (V16QI "to_64")
(V4HI "to_128") (V8HI "to_64")
(V2SI "to_128") (V4SI "to_64")
(DI "to_128") (V2DI "to_64")
+ (V4HF "to_128") (V8HF "to_64")
(V2SF "to_128") (V4SF "to_64")
(DF "to_128") (V2DF "to_64")])