+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>
* config/arm/arm-cores.def (cortex-m23, cortex-m33): Move into
* diagnostic.c (diagnostic_check_max_errors): New, broken out of ...
(diagnostic_action_after_output): ... here.
(diagnostic_report_diagnostic): Call it for non-notes.
- * diagnostic.h (struct diagnostic_context): Make max_errors signed
- int.
+ * diagnostic.h (struct diagnostic_context): Make max_errors signed int.
(diagnostic_check_max_errors): Declare.
2016-12-05 Cupertino Miranda <cmiranda@synopsys.com>
(set_attr "mode" "<MODE>")])
(define_split
- [(set (match_operand:TI 0 "push_operand")
- (match_operand:TI 1 "general_operand"))]
- "TARGET_64BIT && reload_completed
- && !SSE_REG_P (operands[1])"
+ [(set (match_operand:DWI 0 "push_operand")
+ (match_operand:DWI 1 "general_gr_operand"))]
+ "reload_completed"
[(const_int 0)]
"ix86_split_long_move (operands); DONE;")
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"
[(set (match_operand:SI 0 "push_operand" "=<")
(match_operand:SI 1 "general_no_elim_operand" "ri*m"))]
]
(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"
[(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")
(const_string "*")))])
(define_split
- [(set (match_operand:DI 0 "nonimmediate_operand")
- (match_operand:DI 1 "general_operand"))]
- "!TARGET_64BIT && 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]))"
+ [(set (match_operand:DWI 0 "nonimmediate_gr_operand")
+ (match_operand:DWI 1 "general_gr_operand"))]
+ "reload_completed"
[(const_int 0)]
"ix86_split_long_move (operands); DONE;")
(define_split
[(set (match_operand 0 "push_operand")
- (match_operand 1 "general_operand"))]
+ (match_operand 1 "general_gr_operand"))]
"reload_completed
&& (GET_MODE (operands[0]) == TFmode
|| GET_MODE (operands[0]) == XFmode
- || GET_MODE (operands[0]) == DFmode)
- && !ANY_FP_REG_P (operands[1])"
+ || GET_MODE (operands[0]) == DFmode)"
[(const_int 0)]
"ix86_split_long_move (operands); DONE;")
\f
(const_string "TI")))])
(define_split
- [(set (match_operand:TF 0 "nonimmediate_operand")
- (match_operand:TF 1 "general_operand"))]
- "reload_completed
- && !(ANY_FP_REG_P (operands[0]) || ANY_FP_REG_P (operands[1]))"
+ [(set (match_operand:TF 0 "nonimmediate_gr_operand")
+ (match_operand:TF 1 "general_gr_operand"))]
+ "reload_completed"
[(const_int 0)]
"ix86_split_long_move (operands); DONE;")
(const_string "*")))])
(define_split
- [(set (match_operand:XF 0 "nonimmediate_operand")
- (match_operand:XF 1 "general_operand"))]
- "reload_completed
- && !(ANY_FP_REG_P (operands[0]) || ANY_FP_REG_P (operands[1]))"
+ [(set (match_operand:XF 0 "nonimmediate_gr_operand")
+ (match_operand:XF 1 "general_gr_operand"))]
+ "reload_completed"
[(const_int 0)]
"ix86_split_long_move (operands); DONE;")
(const_string "*")))])
(define_split
- [(set (match_operand:DF 0 "nonimmediate_operand")
- (match_operand:DF 1 "general_operand"))]
- "!TARGET_64BIT && reload_completed
- && !(ANY_FP_REG_P (operands[0]) || ANY_FP_REG_P (operands[1]))"
+ [(set (match_operand:DF 0 "nonimmediate_gr_operand")
+ (match_operand:DF 1 "general_gr_operand"))]
+ "!TARGET_64BIT && reload_completed"
[(const_int 0)]
"ix86_split_long_move (operands); DONE;")