From: Jan Hubicka Date: Wed, 15 Mar 2000 12:34:40 +0000 (+0100) Subject: i386.md (movhi_1): Promote movw imm... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=369e59b1c16871040601d6d8671c7877777f32e3;p=gcc.git i386.md (movhi_1): Promote movw imm... * i386.md (movhi_1): Promote movw imm, reg to movl imm, reg and movw reg, reg to movzwl reg, reg on PARTIAL_REGISTER_STALL machines. * i386.c (pentiumpro_cost): Set mul cost to 4. (x86_use_movx): Set for PPro. From-SVN: r32560 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5e62675589f..ca7070e609f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Wed Mar 15 13:26:58 MET 2000 Jan Hubicka + + * i386.md (movhi_1): Promote movw imm, reg to movl imm, reg and + movw reg, reg to movzwl reg, reg on PARTIAL_REGISTER_STALL machines. + * i386.c (pentiumpro_cost): Set mul cost to 4. + (x86_use_movx): Set for PPro. + Wed Mar 15 13:07:05 MET 2000 Jan Hubicka * i386.md (ix86_compute_frame_size): stack_alignment_needed is diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index e3038fd4961..c2eadf13bd2 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -124,7 +124,7 @@ struct processor_costs pentiumpro_cost = { 1, /* cost of a lea instruction */ 1, /* variable shift costs */ 1, /* constant shift costs */ - 1, /* cost of starting a multiply */ + 4, /* cost of starting a multiply */ 0, /* cost of multiply per each bit set */ 17, /* cost of a divide/mod */ 8, /* "large" insn */ @@ -195,7 +195,7 @@ struct processor_costs *ix86_cost = &pentium_cost; const int x86_use_leave = m_386 | m_K6 | m_ATHLON; const int x86_push_memory = m_386 | m_K6 | m_ATHLON; const int x86_zero_extend_with_and = m_486 | m_PENT; -const int x86_movx = m_ATHLON /* m_386 | m_PPRO | m_K6 */; +const int x86_movx = m_ATHLON | m_PPRO /* m_386 | m_K6 */; const int x86_double_with_add = ~m_386; const int x86_use_bit_test = m_386; const int x86_unroll_strlen = m_486 | m_PENT | m_PPRO | m_ATHLON | m_K6; diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index be2b035b94d..925473952ac 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1379,8 +1379,8 @@ [(set_attr "type" "pop")]) (define_insn "*movhi_1" - [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,m") - (match_operand:HI 1 "general_operand" "rn,rm,rn"))] + [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,r,m") + (match_operand:HI 1 "general_operand" "r,rn,rm,rn"))] "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" "* { @@ -1398,22 +1398,28 @@ } }" [(set (attr "type") - (cond [(and (eq_attr "alternative" "0,1") + (cond [(and (eq_attr "alternative" "0") + (eq (symbol_ref "TARGET_PARTIAL_REG_STALL") + (const_int 0))) + (const_string "imov") + (and (eq_attr "alternative" "1,2") (match_operand:HI 1 "aligned_operand" "")) (const_string "imov") (and (ne (symbol_ref "TARGET_MOVX") (const_int 0)) - (eq_attr "alternative" "1")) + (eq_attr "alternative" "0,2")) (const_string "imovx") ] (const_string "imov"))) (set (attr "length_prefix") (cond [(eq_attr "type" "imovx") (const_string "0") - (and (eq_attr "alternative" "0,1") - (and (match_operand:HI 1 "aligned_operand" "") - (eq (symbol_ref "TARGET_PARTIAL_REG_STALL") - (const_int 0)))) + (and (eq_attr "alternative" "1,2") + (match_operand:HI 1 "aligned_operand" "")) + (const_string "0") + (and (eq_attr "alternative" "0") + (eq (symbol_ref "TARGET_PARTIAL_REG_STALL") + (const_int 0))) (const_string "0") ] (const_string "1")))