diff options
author | Christophe Lyon <christophe.lyon@linaro.org> | 2017-04-03 12:41:32 +0000 |
---|---|---|
committer | Yvan Roux <yvan.roux@linaro.org> | 2017-04-04 09:12:26 +0000 |
commit | f6c8cc016eda16b42d8d59c1c13f8569e37d980b (patch) | |
tree | 06ee620b860a64c87d7e39ea0860ded29991e0af | |
parent | 255d1845221546377ef3ab1d4fc089919f8b416e (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.md | 6 | ||||
-rw-r--r-- | gcc/config/aarch64/iterators.md | 4 |
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")]) |