VMINAQ_M_S
])
+(define_int_iterator MVE_VMLxDAVQ [
+ VMLADAVQ_S VMLADAVQ_U
+ VMLADAVXQ_S
+ VMLSDAVQ_S
+ VMLSDAVXQ_S
+ ])
+
+(define_int_iterator MVE_VMLxDAVQ_P [
+ VMLADAVQ_P_S VMLADAVQ_P_U
+ VMLADAVXQ_P_S
+ VMLSDAVQ_P_S
+ VMLSDAVXQ_P_S
+ ])
+
+(define_int_iterator MVE_VMLxDAVAQ [
+ VMLADAVAQ_S VMLADAVAQ_U
+ VMLSDAVAXQ_S
+ VMLSDAVAQ_S
+ VMLADAVAXQ_S
+ ])
+
+(define_int_iterator MVE_VMLxDAVAQ_P [
+ VMLADAVAQ_P_S VMLADAVAQ_P_U
+ VMLSDAVAXQ_P_S
+ VMLSDAVAQ_P_S
+ VMLADAVAXQ_P_S
+ ])
+
(define_int_iterator MVE_MOVN [
VMOVNBQ_S VMOVNBQ_U
VMOVNTQ_S VMOVNTQ_U
(VMINQ_M_S "vmin") (VMINQ_M_U "vmin")
(VMINVQ_P_S "vminv") (VMINVQ_P_U "vminv")
(VMINVQ_S "vminv") (VMINVQ_U "vminv")
+ (VMLADAVAQ_P_S "vmladava") (VMLADAVAQ_P_U "vmladava")
+ (VMLADAVAQ_S "vmladava") (VMLADAVAQ_U "vmladava")
+ (VMLADAVAXQ_P_S "vmladavax")
+ (VMLADAVAXQ_S "vmladavax")
+ (VMLADAVQ_P_S "vmladav") (VMLADAVQ_P_U "vmladav")
+ (VMLADAVQ_S "vmladav") (VMLADAVQ_U "vmladav")
+ (VMLADAVXQ_P_S "vmladavx")
+ (VMLADAVXQ_S "vmladavx")
(VMLAQ_M_N_S "vmla") (VMLAQ_M_N_U "vmla")
(VMLASQ_M_N_S "vmlas") (VMLASQ_M_N_U "vmlas")
+ (VMLSDAVAQ_P_S "vmlsdava")
+ (VMLSDAVAQ_S "vmlsdava")
+ (VMLSDAVAXQ_P_S "vmlsdavax")
+ (VMLSDAVAXQ_S "vmlsdavax")
+ (VMLSDAVQ_P_S "vmlsdav")
+ (VMLSDAVQ_S "vmlsdav")
+ (VMLSDAVXQ_P_S "vmlsdavx")
+ (VMLSDAVXQ_S "vmlsdavx")
(VMOVLBQ_M_S "vmovlb") (VMOVLBQ_M_U "vmovlb")
(VMOVLBQ_S "vmovlb") (VMOVLBQ_U "vmovlb")
(VMOVLTQ_M_S "vmovlt") (VMOVLTQ_M_U "vmovlt")
(VCMPLTQ_M_S "s")
(VCMPNEQ_M_N_S "s") (VCMPNEQ_M_N_U "u")
(VCMPNEQ_M_S "s") (VCMPNEQ_M_U "u")
+ (VMLADAVAXQ_P_S "s")
+ (VMLADAVAXQ_S "s")
+ (VMLADAVXQ_P_S "s")
+ (VMLADAVXQ_S "s")
+ (VMLSDAVAQ_P_S "s")
+ (VMLSDAVAQ_S "s")
+ (VMLSDAVAXQ_P_S "s")
+ (VMLSDAVAXQ_S "s")
+ (VMLSDAVQ_P_S "s")
+ (VMLSDAVQ_S "s")
+ (VMLSDAVXQ_P_S "s")
+ (VMLSDAVXQ_S "s")
])
;; Both kinds of return insn.
])
;;
-;; [vmladavq_u, vmladavq_s])
+;; [vmladavq_u, vmladavq_s]
+;; [vmladavxq_s]
+;; [vmlsdavq_s]
+;; [vmlsdavxq_s]
;;
-(define_insn "mve_vmladavq_<supf><mode>"
- [
- (set (match_operand:SI 0 "s_register_operand" "=Te")
- (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
- (match_operand:MVE_2 2 "s_register_operand" "w")]
- VMLADAVQ))
- ]
- "TARGET_HAVE_MVE"
- "vmladav.<supf>%#<V_sz_elem>\t%0, %q1, %q2"
- [(set_attr "type" "mve_move")
-])
-
-;;
-;; [vmladavxq_s])
-;;
-(define_insn "mve_vmladavxq_s<mode>"
- [
- (set (match_operand:SI 0 "s_register_operand" "=Te")
- (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
- (match_operand:MVE_2 2 "s_register_operand" "w")]
- VMLADAVXQ_S))
- ]
- "TARGET_HAVE_MVE"
- "vmladavx.s%#<V_sz_elem>\t%0, %q1, %q2"
- [(set_attr "type" "mve_move")
-])
-
-;;
-;; [vmlsdavq_s])
-;;
-(define_insn "mve_vmlsdavq_s<mode>"
- [
- (set (match_operand:SI 0 "s_register_operand" "=Te")
- (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
- (match_operand:MVE_2 2 "s_register_operand" "w")]
- VMLSDAVQ_S))
- ]
- "TARGET_HAVE_MVE"
- "vmlsdav.s%#<V_sz_elem>\t%0, %q1, %q2"
- [(set_attr "type" "mve_move")
-])
-
-;;
-;; [vmlsdavxq_s])
-;;
-(define_insn "mve_vmlsdavxq_s<mode>"
+(define_insn "@mve_<mve_insn>q_<supf><mode>"
[
(set (match_operand:SI 0 "s_register_operand" "=Te")
(unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
(match_operand:MVE_2 2 "s_register_operand" "w")]
- VMLSDAVXQ_S))
+ MVE_VMLxDAVQ))
]
"TARGET_HAVE_MVE"
- "vmlsdavx.s%#<V_sz_elem>\t%0, %q1, %q2"
+ "<mve_insn>.<supf>%#<V_sz_elem>\t%0, %q1, %q2"
[(set_attr "type" "mve_move")
])
(set_attr "length""8")])
;;
-;; [vmladavaq_u, vmladavaq_s])
+;; [vmladavaq_u, vmladavaq_s]
+;; [vmladavaxq_s]
+;; [vmlsdavaq_s]
+;; [vmlsdavaxq_s]
;;
-(define_insn "mve_vmladavaq_<supf><mode>"
+(define_insn "@mve_<mve_insn>q_<supf><mode>"
[
(set (match_operand:SI 0 "s_register_operand" "=Te")
(unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
(match_operand:MVE_2 2 "s_register_operand" "w")
(match_operand:MVE_2 3 "s_register_operand" "w")]
- VMLADAVAQ))
+ MVE_VMLxDAVAQ))
]
"TARGET_HAVE_MVE"
- "vmladava.<supf>%#<V_sz_elem> %0, %q2, %q3"
+ "<mve_insn>.<supf>%#<V_sz_elem>\t%0, %q2, %q3"
[(set_attr "type" "mve_move")
])
;;
-;; [vmladavq_p_u, vmladavq_p_s])
-;;
-(define_insn "mve_vmladavq_p_<supf><mode>"
- [
- (set (match_operand:SI 0 "s_register_operand" "=Te")
- (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
- (match_operand:MVE_2 2 "s_register_operand" "w")
- (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
- VMLADAVQ_P))
- ]
- "TARGET_HAVE_MVE"
- "vpst\;vmladavt.<supf>%#<V_sz_elem>\t%0, %q1, %q2"
- [(set_attr "type" "mve_move")
- (set_attr "length""8")])
-
-;;
-;; [vmladavxq_p_s])
+;; [vmladavq_p_u, vmladavq_p_s]
+;; [vmladavxq_p_s]
+;; [vmlsdavq_p_s]
+;; [vmlsdavxq_p_s]
;;
-(define_insn "mve_vmladavxq_p_s<mode>"
+(define_insn "@mve_<mve_insn>q_p_<supf><mode>"
[
(set (match_operand:SI 0 "s_register_operand" "=Te")
(unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
(match_operand:MVE_2 2 "s_register_operand" "w")
(match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
- VMLADAVXQ_P_S))
+ MVE_VMLxDAVQ_P))
]
"TARGET_HAVE_MVE"
- "vpst\;vmladavxt.s%#<V_sz_elem>\t%0, %q1, %q2"
+ "vpst\;<mve_insn>t.<supf>%#<V_sz_elem>\t%0, %q1, %q2"
[(set_attr "type" "mve_move")
(set_attr "length""8")])
[(set_attr "type" "mve_move")
])
-;;
-;; [vmlsdavq_p_s])
-;;
-(define_insn "mve_vmlsdavq_p_s<mode>"
- [
- (set (match_operand:SI 0 "s_register_operand" "=Te")
- (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
- (match_operand:MVE_2 2 "s_register_operand" "w")
- (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
- VMLSDAVQ_P_S))
- ]
- "TARGET_HAVE_MVE"
- "vpst\;vmlsdavt.s%#<V_sz_elem> %0, %q1, %q2"
- [(set_attr "type" "mve_move")
- (set_attr "length""8")])
-
-;;
-;; [vmlsdavxq_p_s])
-;;
-(define_insn "mve_vmlsdavxq_p_s<mode>"
- [
- (set (match_operand:SI 0 "s_register_operand" "=Te")
- (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
- (match_operand:MVE_2 2 "s_register_operand" "w")
- (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
- VMLSDAVXQ_P_S))
- ]
- "TARGET_HAVE_MVE"
- "vpst\;vmlsdavxt.s%#<V_sz_elem> %0, %q1, %q2"
- [(set_attr "type" "mve_move")
- (set_attr "length""8")])
-
;;
;; [vmvnq_m_s, vmvnq_m_u])
;;
[(set_attr "type" "mve_move")
])
-;;
-;; [vmlsdavaxq_s])
-;;
-(define_insn "mve_vmlsdavaxq_s<mode>"
- [
- (set (match_operand:SI 0 "s_register_operand" "=Te")
- (unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
- (match_operand:MVE_2 2 "s_register_operand" "w")
- (match_operand:MVE_2 3 "s_register_operand" "w")]
- VMLSDAVAXQ_S))
- ]
- "TARGET_HAVE_MVE"
- "vmlsdavax.s%#<V_sz_elem>\t%0, %q2, %q3"
- [(set_attr "type" "mve_move")
-])
-
-;;
-;; [vmlsdavaq_s])
-;;
-(define_insn "mve_vmlsdavaq_s<mode>"
- [
- (set (match_operand:SI 0 "s_register_operand" "=Te")
- (unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
- (match_operand:MVE_2 2 "s_register_operand" "w")
- (match_operand:MVE_2 3 "s_register_operand" "w")]
- VMLSDAVAQ_S))
- ]
- "TARGET_HAVE_MVE"
- "vmlsdava.s%#<V_sz_elem>\t%0, %q2, %q3"
- [(set_attr "type" "mve_move")
-])
-
-;;
-;; [vmladavaxq_s])
-;;
-(define_insn "mve_vmladavaxq_s<mode>"
- [
- (set (match_operand:SI 0 "s_register_operand" "=Te")
- (unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
- (match_operand:MVE_2 2 "s_register_operand" "w")
- (match_operand:MVE_2 3 "s_register_operand" "w")]
- VMLADAVAXQ_S))
- ]
- "TARGET_HAVE_MVE"
- "vmladavax.s%#<V_sz_elem>\t%0, %q2, %q3"
- [(set_attr "type" "mve_move")
-])
-
;;
;; [vabsq_m_f]
;; [vnegq_m_f]
;;
;;
-;; [vmladavaq_p_u, vmladavaq_p_s])
+;; [vmladavaq_p_u, vmladavaq_p_s]
+;; [vmladavaxq_p_s]
+;; [vmlsdavaq_p_s]
+;; [vmlsdavaxq_p_s]
;;
-(define_insn "mve_vmladavaq_p_<supf><mode>"
+(define_insn "@mve_<mve_insn>q_p_<supf><mode>"
[
(set (match_operand:SI 0 "s_register_operand" "=Te")
(unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
(match_operand:MVE_2 2 "s_register_operand" "w")
(match_operand:MVE_2 3 "s_register_operand" "w")
(match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
- VMLADAVAQ_P))
+ MVE_VMLxDAVAQ_P))
]
"TARGET_HAVE_MVE"
- "vpst\;vmladavat.<supf>%#<V_sz_elem> %0, %q2, %q3"
+ "vpst\;<mve_insn>t.<supf>%#<V_sz_elem>\t%0, %q2, %q3"
[(set_attr "type" "mve_move")
(set_attr "length""8")])
[(set_attr "type" "mve_move")
(set_attr "length""8")])
-;;
-;; [vmladavaxq_p_s])
-;;
-(define_insn "mve_vmladavaxq_p_s<mode>"
- [
- (set (match_operand:SI 0 "s_register_operand" "=Te")
- (unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
- (match_operand:MVE_2 2 "s_register_operand" "w")
- (match_operand:MVE_2 3 "s_register_operand" "w")
- (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
- VMLADAVAXQ_P_S))
- ]
- "TARGET_HAVE_MVE"
- "vpst\;vmladavaxt.s%#<V_sz_elem>\t%0, %q2, %q3"
- [(set_attr "type" "mve_move")
- (set_attr "length""8")])
-
-;;
-;; [vmlsdavaq_p_s])
-;;
-(define_insn "mve_vmlsdavaq_p_s<mode>"
- [
- (set (match_operand:SI 0 "s_register_operand" "=Te")
- (unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
- (match_operand:MVE_2 2 "s_register_operand" "w")
- (match_operand:MVE_2 3 "s_register_operand" "w")
- (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
- VMLSDAVAQ_P_S))
- ]
- "TARGET_HAVE_MVE"
- "vpst\;vmlsdavat.s%#<V_sz_elem>\t%0, %q2, %q3"
- [(set_attr "type" "mve_move")
- (set_attr "length""8")])
-
-;;
-;; [vmlsdavaxq_p_s])
-;;
-(define_insn "mve_vmlsdavaxq_p_s<mode>"
- [
- (set (match_operand:SI 0 "s_register_operand" "=Te")
- (unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
- (match_operand:MVE_2 2 "s_register_operand" "w")
- (match_operand:MVE_2 3 "s_register_operand" "w")
- (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
- VMLSDAVAXQ_P_S))
- ]
- "TARGET_HAVE_MVE"
- "vpst\;vmlsdavaxt.s%#<V_sz_elem>\t%0, %q2, %q3"
- [(set_attr "type" "mve_move")
- (set_attr "length""8")])
-
;;
;; [vmlaldavaq_p_u, vmlaldavaq_p_s])
;;