Commit cd3fe55a by Uros Bizjak

predicates.md (general_gr_operand): New predicate.

	* config/i386/predicates.md (general_gr_operand): New predicate.
	* config/i386/i386.md (TImode and DImode push_operand splitter):
	Use general_gr_operand.  Macroize using DWI mode macro.
	(TImode and DImode nonimmediate_operand splitter): Use
	nonimmediate_gr_operand and general_gr_operand.  Macroize using
	DWI mode macro.
	(TF/XF/DFmode push_operand splitter): Use general_gr_operand.
	(TFmode nonimmediate_operand splitter): Use nonimmediate_gr_operand
	and general_gr_operand.
	(XFmode nonimmediate_operand splitter): Ditto.
	(DFmode nonimmediate_operand splitter): Ditto.
	* config/i386/mmx.md (MMXMODE nonimmediate_operand splitter): Ditto.

From-SVN: r243315
parent f68963c0
2016-12-06 Uros Bizjak <ubizjak@gmail.com>
* config/i386/predicates.md (general_gr_operand): New predicate.
* config/i386/i386.md (TImode and DImode push_operand splitter):
Use general_gr_operand. Macroize using DWI mode macro.
(TImode and DImode nonimmediate_operand splitter): Use
nonimmediate_gr_operand and general_gr_operand. Macroize using
DWI mode macro.
(TF/XF/DFmode push_operand splitter): Use general_gr_operand.
(TFmode nonimmediate_operand splitter): Use nonimmediate_gr_operand
and general_gr_operand.
(XFmode nonimmediate_operand splitter): Ditto.
(DFmode nonimmediate_operand splitter): Ditto.
* config/i386/mmx.md (MMXMODE nonimmediate_operand splitter): Ditto.
2016-12-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com> 2016-12-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/arm-cores.def (cortex-m23, cortex-m33): Move into * config/arm/arm-cores.def (cortex-m23, cortex-m33): Move into
...@@ -138,8 +153,7 @@ ...@@ -138,8 +153,7 @@
* diagnostic.c (diagnostic_check_max_errors): New, broken out of ... * diagnostic.c (diagnostic_check_max_errors): New, broken out of ...
(diagnostic_action_after_output): ... here. (diagnostic_action_after_output): ... here.
(diagnostic_report_diagnostic): Call it for non-notes. (diagnostic_report_diagnostic): Call it for non-notes.
* diagnostic.h (struct diagnostic_context): Make max_errors signed * diagnostic.h (struct diagnostic_context): Make max_errors signed int.
int.
(diagnostic_check_max_errors): Declare. (diagnostic_check_max_errors): Declare.
2016-12-05 Cupertino Miranda <cmiranda@synopsys.com> 2016-12-05 Cupertino Miranda <cmiranda@synopsys.com>
...@@ -1749,10 +1749,9 @@ ...@@ -1749,10 +1749,9 @@
(set_attr "mode" "<MODE>")]) (set_attr "mode" "<MODE>")])
(define_split (define_split
[(set (match_operand:TI 0 "push_operand") [(set (match_operand:DWI 0 "push_operand")
(match_operand:TI 1 "general_operand"))] (match_operand:DWI 1 "general_gr_operand"))]
"TARGET_64BIT && reload_completed "reload_completed"
&& !SSE_REG_P (operands[1])"
[(const_int 0)] [(const_int 0)]
"ix86_split_long_move (operands); DONE;") "ix86_split_long_move (operands); DONE;")
...@@ -1814,14 +1813,6 @@ ...@@ -1814,14 +1813,6 @@
GEN_INT (4))); GEN_INT (4)));
}) })
(define_split
[(set (match_operand:DI 0 "push_operand")
(match_operand:DI 1 "general_operand"))]
"!TARGET_64BIT && reload_completed
&& !(MMX_REG_P (operands[1]) || SSE_REG_P (operands[1]))"
[(const_int 0)]
"ix86_split_long_move (operands); DONE;")
(define_insn "*pushsi2" (define_insn "*pushsi2"
[(set (match_operand:SI 0 "push_operand" "=<") [(set (match_operand:SI 0 "push_operand" "=<")
(match_operand:SI 1 "general_no_elim_operand" "ri*m"))] (match_operand:SI 1 "general_no_elim_operand" "ri*m"))]
...@@ -2150,14 +2141,6 @@ ...@@ -2150,14 +2141,6 @@
] ]
(const_string "TI")))]) (const_string "TI")))])
(define_split
[(set (match_operand:TI 0 "nonimmediate_operand")
(match_operand:TI 1 "general_operand"))]
"reload_completed
&& !SSE_REG_P (operands[0]) && !SSE_REG_P (operands[1])"
[(const_int 0)]
"ix86_split_long_move (operands); DONE;")
(define_insn "*movdi_internal" (define_insn "*movdi_internal"
[(set (match_operand:DI 0 "nonimmediate_operand" [(set (match_operand:DI 0 "nonimmediate_operand"
"=r ,o ,r,r ,r,m ,*y,*y,?*y,?m,?r ,?*Ym,*v,*v,*v,m ,m,?r ,?r,?*Yi,?*Ym,?*Yi,*k,*k ,*r,*m") "=r ,o ,r,r ,r,m ,*y,*y,?*y,?m,?r ,?*Ym,*v,*v,*v,m ,m,?r ,?r,?*Yi,?*Ym,?*Yi,*k,*k ,*r,*m")
...@@ -2333,15 +2316,9 @@ ...@@ -2333,15 +2316,9 @@
(const_string "*")))]) (const_string "*")))])
(define_split (define_split
[(set (match_operand:DI 0 "nonimmediate_operand") [(set (match_operand:DWI 0 "nonimmediate_gr_operand")
(match_operand:DI 1 "general_operand"))] (match_operand:DWI 1 "general_gr_operand"))]
"!TARGET_64BIT && reload_completed "reload_completed"
&& !(MMX_REG_P (operands[0])
|| SSE_REG_P (operands[0])
|| MASK_REG_P (operands[0]))
&& !(MMX_REG_P (operands[1])
|| SSE_REG_P (operands[1])
|| MASK_REG_P (operands[1]))"
[(const_int 0)] [(const_int 0)]
"ix86_split_long_move (operands); DONE;") "ix86_split_long_move (operands); DONE;")
...@@ -3098,12 +3075,11 @@ ...@@ -3098,12 +3075,11 @@
(define_split (define_split
[(set (match_operand 0 "push_operand") [(set (match_operand 0 "push_operand")
(match_operand 1 "general_operand"))] (match_operand 1 "general_gr_operand"))]
"reload_completed "reload_completed
&& (GET_MODE (operands[0]) == TFmode && (GET_MODE (operands[0]) == TFmode
|| GET_MODE (operands[0]) == XFmode || GET_MODE (operands[0]) == XFmode
|| GET_MODE (operands[0]) == DFmode) || GET_MODE (operands[0]) == DFmode)"
&& !ANY_FP_REG_P (operands[1])"
[(const_int 0)] [(const_int 0)]
"ix86_split_long_move (operands); DONE;") "ix86_split_long_move (operands); DONE;")
...@@ -3197,10 +3173,9 @@ ...@@ -3197,10 +3173,9 @@
(const_string "TI")))]) (const_string "TI")))])
(define_split (define_split
[(set (match_operand:TF 0 "nonimmediate_operand") [(set (match_operand:TF 0 "nonimmediate_gr_operand")
(match_operand:TF 1 "general_operand"))] (match_operand:TF 1 "general_gr_operand"))]
"reload_completed "reload_completed"
&& !(ANY_FP_REG_P (operands[0]) || ANY_FP_REG_P (operands[1]))"
[(const_int 0)] [(const_int 0)]
"ix86_split_long_move (operands); DONE;") "ix86_split_long_move (operands); DONE;")
...@@ -3271,10 +3246,9 @@ ...@@ -3271,10 +3246,9 @@
(const_string "*")))]) (const_string "*")))])
(define_split (define_split
[(set (match_operand:XF 0 "nonimmediate_operand") [(set (match_operand:XF 0 "nonimmediate_gr_operand")
(match_operand:XF 1 "general_operand"))] (match_operand:XF 1 "general_gr_operand"))]
"reload_completed "reload_completed"
&& !(ANY_FP_REG_P (operands[0]) || ANY_FP_REG_P (operands[1]))"
[(const_int 0)] [(const_int 0)]
"ix86_split_long_move (operands); DONE;") "ix86_split_long_move (operands); DONE;")
...@@ -3474,10 +3448,9 @@ ...@@ -3474,10 +3448,9 @@
(const_string "*")))]) (const_string "*")))])
(define_split (define_split
[(set (match_operand:DF 0 "nonimmediate_operand") [(set (match_operand:DF 0 "nonimmediate_gr_operand")
(match_operand:DF 1 "general_operand"))] (match_operand:DF 1 "general_gr_operand"))]
"!TARGET_64BIT && reload_completed "!TARGET_64BIT && reload_completed"
&& !(ANY_FP_REG_P (operands[0]) || ANY_FP_REG_P (operands[1]))"
[(const_int 0)] [(const_int 0)]
"ix86_split_long_move (operands); DONE;") "ix86_split_long_move (operands); DONE;")
......
...@@ -205,11 +205,9 @@ ...@@ -205,11 +205,9 @@
(const_string "DI")))]) (const_string "DI")))])
(define_split (define_split
[(set (match_operand:MMXMODE 0 "nonimmediate_operand") [(set (match_operand:MMXMODE 0 "nonimmediate_gr_operand")
(match_operand:MMXMODE 1 "general_operand"))] (match_operand:MMXMODE 1 "general_gr_operand"))]
"!TARGET_64BIT && reload_completed "!TARGET_64BIT && reload_completed"
&& !(MMX_REG_P (operands[0]) || SSE_REG_P (operands[0]))
&& !(MMX_REG_P (operands[1]) || SSE_REG_P (operands[1]))"
[(const_int 0)] [(const_int 0)]
"ix86_split_long_move (operands); DONE;") "ix86_split_long_move (operands); DONE;")
......
...@@ -38,6 +38,12 @@ ...@@ -38,6 +38,12 @@
(match_test "GENERAL_REGNO_P (REGNO (op))") (match_test "GENERAL_REGNO_P (REGNO (op))")
(match_operand 0 "nonimmediate_operand"))) (match_operand 0 "nonimmediate_operand")))
;; True if the operand is a general operand with GENERAL class register.
(define_predicate "general_gr_operand"
(if_then_else (match_code "reg")
(match_test "GENERAL_REGNO_P (REGNO (op))")
(match_operand 0 "general_operand")))
;; True if the operand is an MMX register. ;; True if the operand is an MMX register.
(define_predicate "mmx_reg_operand" (define_predicate "mmx_reg_operand"
(and (match_code "reg") (and (match_code "reg")
......
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