Commit 88119b46 by Kyrylo Tkachov Committed by Kyrylo Tkachov

[AArch64] PR target/79913: VEC_SELECT bugs in aarch64 patterns

	PR target/79913
	* config/aarch64/iterators.md (VALL_F16_NO_V2Q): New mode iterator.
	(VALL_NO_V2Q): Likewise.
	(VDQF_DF): Delete.
	* config/aarch64/aarch64-simd.md
	(aarch64_dup_lane_<vswap_width_name><mode>): Use VALL_F16_NO_V2Q
	iterator.
	(*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Use
	VALL_NO_V2Q mode iterator.
	(*aarch64_vgetfmulx<mode>): Use VDQF iterator.

From-SVN: r245999
parent 8a7df031
2017-03-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR target/79913
* config/aarch64/iterators.md (VALL_F16_NO_V2Q): New mode iterator.
(VALL_NO_V2Q): Likewise.
(VDQF_DF): Delete.
* config/aarch64/aarch64-simd.md
(aarch64_dup_lane_<vswap_width_name><mode>): Use VALL_F16_NO_V2Q
iterator.
(*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Use
VALL_NO_V2Q mode iterator.
(*aarch64_vgetfmulx<mode>): Use VDQF iterator.
2017-03-09 Martin Liska <mliska@suse.cz> 2017-03-09 Martin Liska <mliska@suse.cz>
PR tree-optimization/79631 PR tree-optimization/79631
......
...@@ -77,8 +77,8 @@ ...@@ -77,8 +77,8 @@
) )
(define_insn "aarch64_dup_lane_<vswap_width_name><mode>" (define_insn "aarch64_dup_lane_<vswap_width_name><mode>"
[(set (match_operand:VALL_F16 0 "register_operand" "=w") [(set (match_operand:VALL_F16_NO_V2Q 0 "register_operand" "=w")
(vec_duplicate:VALL_F16 (vec_duplicate:VALL_F16_NO_V2Q
(vec_select:<VEL> (vec_select:<VEL>
(match_operand:<VSWAP_WIDTH> 1 "register_operand" "w") (match_operand:<VSWAP_WIDTH> 1 "register_operand" "w")
(parallel [(match_operand:SI 2 "immediate_operand" "i")]) (parallel [(match_operand:SI 2 "immediate_operand" "i")])
...@@ -586,14 +586,14 @@ ...@@ -586,14 +586,14 @@
) )
(define_insn "*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>" (define_insn "*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>"
[(set (match_operand:VALL 0 "register_operand" "=w") [(set (match_operand:VALL_F16_NO_V2Q 0 "register_operand" "=w")
(vec_merge:VALL (vec_merge:VALL_F16_NO_V2Q
(vec_duplicate:VALL (vec_duplicate:VALL_F16_NO_V2Q
(vec_select:<VEL> (vec_select:<VEL>
(match_operand:<VSWAP_WIDTH> 3 "register_operand" "w") (match_operand:<VSWAP_WIDTH> 3 "register_operand" "w")
(parallel (parallel
[(match_operand:SI 4 "immediate_operand" "i")]))) [(match_operand:SI 4 "immediate_operand" "i")])))
(match_operand:VALL 1 "register_operand" "0") (match_operand:VALL_F16_NO_V2Q 1 "register_operand" "0")
(match_operand:SI 2 "immediate_operand" "i")))] (match_operand:SI 2 "immediate_operand" "i")))]
"TARGET_SIMD" "TARGET_SIMD"
{ {
...@@ -3194,7 +3194,7 @@ ...@@ -3194,7 +3194,7 @@
(unspec:<VEL> (unspec:<VEL>
[(match_operand:<VEL> 1 "register_operand" "w") [(match_operand:<VEL> 1 "register_operand" "w")
(vec_select:<VEL> (vec_select:<VEL>
(match_operand:VDQF_DF 2 "register_operand" "w") (match_operand:VDQF 2 "register_operand" "w")
(parallel [(match_operand:SI 3 "immediate_operand" "i")]))] (parallel [(match_operand:SI 3 "immediate_operand" "i")]))]
UNSPEC_FMULX))] UNSPEC_FMULX))]
"TARGET_SIMD" "TARGET_SIMD"
......
...@@ -101,7 +101,6 @@ ...@@ -101,7 +101,6 @@
V2SF V4SF V2DF]) V2SF V4SF V2DF])
;; Vector Float modes, and DF. ;; Vector Float modes, and DF.
(define_mode_iterator VDQF_DF [V2SF V4SF V2DF DF])
(define_mode_iterator VHSDF_DF [(V4HF "TARGET_SIMD_F16INST") (define_mode_iterator VHSDF_DF [(V4HF "TARGET_SIMD_F16INST")
(V8HF "TARGET_SIMD_F16INST") (V8HF "TARGET_SIMD_F16INST")
V2SF V4SF V2DF DF]) V2SF V4SF V2DF DF])
...@@ -133,6 +132,10 @@ ...@@ -133,6 +132,10 @@
(define_mode_iterator VALL_F16 [V8QI V16QI V4HI V8HI V2SI V4SI V2DI (define_mode_iterator VALL_F16 [V8QI V16QI V4HI V8HI V2SI V4SI V2DI
V4HF V8HF V2SF V4SF V2DF]) V4HF V8HF V2SF V4SF V2DF])
;; The VALL_F16 modes except the 128-bit 2-element ones.
(define_mode_iterator VALL_F16_NO_V2Q [V8QI V16QI V4HI V8HI V2SI V4SI
V4HF V8HF V2SF V4SF])
;; All vector modes barring HF modes, plus DI. ;; All vector modes barring HF modes, plus DI.
(define_mode_iterator VALLDI [V8QI V16QI V4HI V8HI V2SI V4SI V2DI V2SF V4SF V2DF DI]) (define_mode_iterator VALLDI [V8QI V16QI V4HI V8HI V2SI V4SI V2DI V2SF V4SF V2DF DI])
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment