[ARM] PR target/79911: Invalid vec_select arguments
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Mon, 13 Mar 2017 10:58:48 +0000 (10:58 +0000)
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>
Mon, 13 Mar 2017 10:58:48 +0000 (10:58 +0000)
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

gcc/ChangeLog
gcc/config/arm/neon.md

index 82e8edb4a797ed011f0bdb7d780ce41767b9d01f..c001ae5a5e0195d57f4f34599fc11366f2921e07 100644 (file)
@@ -1,3 +1,17 @@
+2017-03-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       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.
+
 2017-03-13  Richard Biener  <rguenther@suse.de>
 
        PR other/79991
index cf281df0292d0f511d7d63e828886d860a3a8201..50d89eb7dbf56c95862dc8648029fb33ae7caad6 100644 (file)
   }
 )
 
-(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" :
 }
   [(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" :
   }
 )
 
-(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" :
 }
   [(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" :