aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Lyon <christophe.lyon@linaro.org>2017-04-03 12:41:32 +0000
committerYvan Roux <yvan.roux@linaro.org>2017-04-04 09:12:26 +0000
commitf6c8cc016eda16b42d8d59c1c13f8569e37d980b (patch)
tree06ee620b860a64c87d7e39ea0860ded29991e0af
parent255d1845221546377ef3ab1d4fc089919f8b416e (diff)
gcc/
Backport from trunk r246189. 2017-03-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/aarch64/iterators.md (h_con): Return "x" for V4HF and V8HF. * config/aarch64/aarch64-simd.md (*aarch64_fma4_elt_from_dup<mode>): Use h_con constraint for operand 1. (*aarch64_fnma4_elt_from_dup<mode>): Likewise. (*aarch64_mulx_elt_from_dup<mode>): Likewise for operand 2. Change-Id: Iaa454b2f6b56fea65515242a8546e639d6ea8021
-rw-r--r--gcc/config/aarch64/aarch64-simd.md6
-rw-r--r--gcc/config/aarch64/iterators.md4
2 files changed, 5 insertions, 5 deletions
diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md
index 34cd09c075c..eb8d3edd7bc 100644
--- a/gcc/config/aarch64/aarch64-simd.md
+++ b/gcc/config/aarch64/aarch64-simd.md
@@ -1629,7 +1629,7 @@
[(set (match_operand:VMUL 0 "register_operand" "=w")
(fma:VMUL
(vec_duplicate:VMUL
- (match_operand:<VEL> 1 "register_operand" "w"))
+ (match_operand:<VEL> 1 "register_operand" "<h_con>"))
(match_operand:VMUL 2 "register_operand" "w")
(match_operand:VMUL 3 "register_operand" "0")))]
"TARGET_SIMD"
@@ -1708,7 +1708,7 @@
(neg:VMUL
(match_operand:VMUL 2 "register_operand" "w"))
(vec_duplicate:VMUL
- (match_operand:<VEL> 1 "register_operand" "w"))
+ (match_operand:<VEL> 1 "register_operand" "<h_con>"))
(match_operand:VMUL 3 "register_operand" "0")))]
"TARGET_SIMD"
"fmls\t%0.<Vtype>, %2.<Vtype>, %1.<Vetype>[0]"
@@ -3126,7 +3126,7 @@
(unspec:VHSDF
[(match_operand:VHSDF 1 "register_operand" "w")
(vec_duplicate:VHSDF
- (match_operand:<VEL> 2 "register_operand" "w"))]
+ (match_operand:<VEL> 2 "register_operand" "<h_con>"))]
UNSPEC_FMULX))]
"TARGET_SIMD"
"fmulx\t%0.<Vtype>, %1.<Vtype>, %2.<Vetype>[0]";
diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md
index 187057f2da0..dcb0532d1b2 100644
--- a/gcc/config/aarch64/iterators.md
+++ b/gcc/config/aarch64/iterators.md
@@ -733,11 +733,11 @@
(DF "to_128") (V2DF "to_64")])
;; For certain vector-by-element multiplication instructions we must
-;; constrain the HI cases to use only V0-V15. This is covered by
+;; constrain the 16-bit cases to use only V0-V15. This is covered by
;; the 'x' constraint. All other modes may use the 'w' constraint.
(define_mode_attr h_con [(V2SI "w") (V4SI "w")
(V4HI "x") (V8HI "x")
- (V4HF "w") (V8HF "w")
+ (V4HF "x") (V8HF "x")
(V2SF "w") (V4SF "w")
(V2DF "w") (DF "w")])