diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 050dee7d43a..876220d57f9 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -5730,9 +5730,10 @@ (match_operand: 1 "nonimmediate_operand" "%0,0") (match_operand: 2 "x86_64_hilo_general_operand" "r,o"))) (clobber (reg:CC FLAGS_REG))] - "ix86_binary_operator_ok (PLUS, mode, operands)" + "ix86_binary_operator_ok (PLUS, mode, operands) + && ix86_pre_reload_split ()" "#" - "&& reload_completed" + "&& 1" [(parallel [(set (reg:CCC FLAGS_REG) (compare:CCC (plus:DWIH (match_dup 1) (match_dup 2)) @@ -5750,6 +5751,7 @@ split_double_mode (mode, &operands[0], 3, &operands[0], &operands[3]); if (operands[2] == const0_rtx) { + emit_move_insn (operands[0], operands[1]); ix86_expand_binary_operator (PLUS, mode, &operands[3]); DONE; } @@ -6539,9 +6541,10 @@ (plus: (match_dup 1) (match_dup 2))))) (set (match_operand: 0 "nonimmediate_operand" "=ro,r") (plus: (match_dup 1) (match_dup 2)))] - "ix86_binary_operator_ok (PLUS, mode, operands)" + "ix86_binary_operator_ok (PLUS, mode, operands) + && ix86_pre_reload_split ()" "#" - "&& reload_completed" + "&& 1" [(parallel [(set (reg:CCC FLAGS_REG) (compare:CCC (plus:DWIH (match_dup 1) (match_dup 2)) @@ -6567,9 +6570,7 @@ (ltu:DWIH (reg:CC FLAGS_REG) (const_int 0)) (match_dup 4)) (match_dup 5)))])] -{ - split_double_mode (mode, &operands[0], 3, &operands[0], &operands[3]); -}) + "split_double_mode (mode, &operands[0], 3, &operands[0], &operands[3]);") (define_insn_and_split "*addv4_doubleword_1" [(set (reg:CCO FLAGS_REG) @@ -6586,9 +6587,10 @@ (plus: (match_dup 1) (match_dup 2)))] "ix86_binary_operator_ok (PLUS, mode, operands) && CONST_SCALAR_INT_P (operands[2]) - && rtx_equal_p (operands[2], operands[3])" + && rtx_equal_p (operands[2], operands[3]) + && ix86_pre_reload_split ()" "#" - "&& reload_completed" + "&& 1" [(parallel [(set (reg:CCC FLAGS_REG) (compare:CCC (plus:DWIH (match_dup 1) (match_dup 2)) @@ -6618,6 +6620,7 @@ split_double_mode (mode, &operands[0], 3, &operands[0], &operands[3]); if (operands[2] == const0_rtx) { + emit_move_insn (operands[0], operands[1]); emit_insn (gen_addv4_1 (operands[3], operands[4], operands[5], operands[5])); DONE; @@ -6880,9 +6883,10 @@ (match_operand: 1 "nonimmediate_operand" "0,0") (match_operand: 2 "x86_64_hilo_general_operand" "r,o"))) (clobber (reg:CC FLAGS_REG))] - "ix86_binary_operator_ok (MINUS, mode, operands)" + "ix86_binary_operator_ok (MINUS, mode, operands) + && ix86_pre_reload_split ()" "#" - "&& reload_completed" + "&& 1" [(parallel [(set (reg:CC FLAGS_REG) (compare:CC (match_dup 1) (match_dup 2))) (set (match_dup 0) @@ -6898,6 +6902,7 @@ split_double_mode (mode, &operands[0], 3, &operands[0], &operands[3]); if (operands[2] == const0_rtx) { + emit_move_insn (operands[0], operands[1]); ix86_expand_binary_operator (MINUS, mode, &operands[3]); DONE; } @@ -7080,9 +7085,10 @@ (minus: (match_dup 1) (match_dup 2))))) (set (match_operand: 0 "nonimmediate_operand" "=ro,r") (minus: (match_dup 1) (match_dup 2)))] - "ix86_binary_operator_ok (MINUS, mode, operands)" + "ix86_binary_operator_ok (MINUS, mode, operands) + && ix86_pre_reload_split ()" "#" - "&& reload_completed" + "&& 1" [(parallel [(set (reg:CC FLAGS_REG) (compare:CC (match_dup 1) (match_dup 2))) (set (match_dup 0) @@ -7106,9 +7112,7 @@ (match_dup 4) (ltu:DWIH (reg:CC FLAGS_REG) (const_int 0))) (match_dup 5)))])] -{ - split_double_mode (mode, &operands[0], 3, &operands[0], &operands[3]); -}) + "split_double_mode (mode, &operands[0], 3, &operands[0], &operands[3]);") (define_insn_and_split "*subv4_doubleword_1" [(set (reg:CCO FLAGS_REG) @@ -7125,9 +7129,10 @@ (minus: (match_dup 1) (match_dup 2)))] "ix86_binary_operator_ok (MINUS, mode, operands) && CONST_SCALAR_INT_P (operands[2]) - && rtx_equal_p (operands[2], operands[3])" + && rtx_equal_p (operands[2], operands[3]) + && ix86_pre_reload_split ()" "#" - "&& reload_completed" + "&& 1" [(parallel [(set (reg:CC FLAGS_REG) (compare:CC (match_dup 1) (match_dup 2))) (set (match_dup 0) @@ -7155,6 +7160,7 @@ split_double_mode (mode, &operands[0], 3, &operands[0], &operands[3]); if (operands[2] == const0_rtx) { + emit_move_insn (operands[0], operands[1]); emit_insn (gen_subv4_1 (operands[3], operands[4], operands[5], operands[5])); DONE; @@ -7805,9 +7811,10 @@ (match_dup 1))) (set (match_operand: 0 "nonimmediate_operand" "=ro,r") (plus: (match_dup 1) (match_dup 2)))] - "ix86_binary_operator_ok (PLUS, mode, operands)" + "ix86_binary_operator_ok (PLUS, mode, operands) + && ix86_pre_reload_split ()" "#" - "&& reload_completed" + "&& 1" [(parallel [(set (reg:CCC FLAGS_REG) (compare:CCC (plus:DWIH (match_dup 1) (match_dup 2)) @@ -7834,6 +7841,7 @@ split_double_mode (mode, &operands[0], 3, &operands[0], &operands[3]); if (operands[2] == const0_rtx) { + emit_move_insn (operands[0], operands[1]); emit_insn (gen_addcarry_0 (operands[3], operands[4], operands[5])); DONE; } @@ -10977,9 +10985,10 @@ [(set (match_operand: 0 "nonimmediate_operand" "=ro") (neg: (match_operand: 1 "nonimmediate_operand" "0"))) (clobber (reg:CC FLAGS_REG))] - "ix86_unary_operator_ok (NEG, mode, operands)" + "ix86_unary_operator_ok (NEG, mode, operands) + && ix86_pre_reload_split ()" "#" - "&& reload_completed" + "&& 1" [(parallel [(set (reg:CCC FLAGS_REG) (ne:CCC (match_dup 1) (const_int 0)))