aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/arm
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2017-03-13 10:58:48 +0000
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>2017-03-13 10:58:48 +0000
commitb8c3660369aba863d8149c046863d4974f8c9f56 (patch)
treeb534bdbf1a9db313f2ea2e3d9c6cf31d527c1f2b /gcc/config/arm
parent91cd87db7e4a053f884f8e10e267e0f8913b988e (diff)
downloadgcc-b8c3660369aba863d8149c046863d4974f8c9f56.zip
gcc-b8c3660369aba863d8149c046863d4974f8c9f56.tar.gz
gcc-b8c3660369aba863d8149c046863d4974f8c9f56.tar.bz2
[ARM] PR target/79911: Invalid vec_select arguments
PR target/79911 * config/arm/neon.md (vec_sel_widen_ssum_lo<VQI:mode><VW:mode>3): Rename to... (vec_sel_widen_ssum_lo<mode><V_half>3): ... This. Avoid mismatch between vec_select and vector argument. (vec_sel_widen_ssum_hi<VQI:mode><VW:mode>3): Rename to... (vec_sel_widen_ssum_hi<mode><V_half>3): ... This. Likewise. (vec_sel_widen_usum_lo<VQI:mode><VW:mode>3): Rename to... (vec_sel_widen_usum_lo<mode><V_half>3): ... This. (vec_sel_widen_usum_hi<VQI:mode><VW:mode>3): Rename to... (vec_sel_widen_usum_hi<mode><V_half>3): ... This. From-SVN: r246084
Diffstat (limited to 'gcc/config/arm')
-rw-r--r--gcc/config/arm/neon.md50
1 files changed, 26 insertions, 24 deletions
diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md
index cf281df..50d89eb 100644
--- a/gcc/config/arm/neon.md
+++ b/gcc/config/arm/neon.md
@@ -1335,14 +1335,14 @@
}
)
-(define_insn "vec_sel_widen_ssum_lo<VQI:mode><VW:mode>3"
- [(set (match_operand:<VW:V_widen> 0 "s_register_operand" "=w")
- (plus:<VW:V_widen>
- (sign_extend:<VW:V_widen>
- (vec_select:VW
+(define_insn "vec_sel_widen_ssum_lo<mode><V_half>3"
+ [(set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
+ (plus:<V_double_width>
+ (sign_extend:<V_double_width>
+ (vec_select:<V_HALF>
(match_operand:VQI 1 "s_register_operand" "%w")
(match_operand:VQI 2 "vect_par_constant_low" "")))
- (match_operand:<VW:V_widen> 3 "s_register_operand" "0")))]
+ (match_operand:<V_double_width> 3 "s_register_operand" "0")))]
"TARGET_NEON"
{
return BYTES_BIG_ENDIAN ? "vaddw.<V_s_elem>\t%q0, %q3, %f1" :
@@ -1350,13 +1350,14 @@
}
[(set_attr "type" "neon_add_widen")])
-(define_insn "vec_sel_widen_ssum_hi<VQI:mode><VW:mode>3"
- [(set (match_operand:<VW:V_widen> 0 "s_register_operand" "=w")
- (plus:<VW:V_widen>
- (sign_extend:<VW:V_widen>
- (vec_select:VW (match_operand:VQI 1 "s_register_operand" "%w")
+(define_insn "vec_sel_widen_ssum_hi<mode><V_half>3"
+ [(set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
+ (plus:<V_double_width>
+ (sign_extend:<V_double_width>
+ (vec_select:<V_HALF>
+ (match_operand:VQI 1 "s_register_operand" "%w")
(match_operand:VQI 2 "vect_par_constant_high" "")))
- (match_operand:<VW:V_widen> 3 "s_register_operand" "0")))]
+ (match_operand:<V_double_width> 3 "s_register_operand" "0")))]
"TARGET_NEON"
{
return BYTES_BIG_ENDIAN ? "vaddw.<V_s_elem>\t%q0, %q3, %e1" :
@@ -1404,14 +1405,14 @@
}
)
-(define_insn "vec_sel_widen_usum_lo<VQI:mode><VW:mode>3"
- [(set (match_operand:<VW:V_widen> 0 "s_register_operand" "=w")
- (plus:<VW:V_widen>
- (zero_extend:<VW:V_widen>
- (vec_select:VW
+(define_insn "vec_sel_widen_usum_lo<mode><V_half>3"
+ [(set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
+ (plus:<V_double_width>
+ (zero_extend:<V_double_width>
+ (vec_select:<V_HALF>
(match_operand:VQI 1 "s_register_operand" "%w")
(match_operand:VQI 2 "vect_par_constant_low" "")))
- (match_operand:<VW:V_widen> 3 "s_register_operand" "0")))]
+ (match_operand:<V_double_width> 3 "s_register_operand" "0")))]
"TARGET_NEON"
{
return BYTES_BIG_ENDIAN ? "vaddw.<V_u_elem>\t%q0, %q3, %f1" :
@@ -1419,13 +1420,14 @@
}
[(set_attr "type" "neon_add_widen")])
-(define_insn "vec_sel_widen_usum_hi<VQI:mode><VW:mode>3"
- [(set (match_operand:<VW:V_widen> 0 "s_register_operand" "=w")
- (plus:<VW:V_widen>
- (zero_extend:<VW:V_widen>
- (vec_select:VW (match_operand:VQI 1 "s_register_operand" "%w")
+(define_insn "vec_sel_widen_usum_hi<mode><V_half>3"
+ [(set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
+ (plus:<V_double_width>
+ (zero_extend:<V_double_width>
+ (vec_select:<V_HALF>
+ (match_operand:VQI 1 "s_register_operand" "%w")
(match_operand:VQI 2 "vect_par_constant_high" "")))
- (match_operand:<VW:V_widen> 3 "s_register_operand" "0")))]
+ (match_operand:<V_double_width> 3 "s_register_operand" "0")))]
"TARGET_NEON"
{
return BYTES_BIG_ENDIAN ? "vaddw.<V_u_elem>\t%q0, %q3, %e1" :