Commit 369e59b1 by Jan Hubicka Committed by Jan Hubicka

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
parent 5f677a9e
Wed Mar 15 13:26:58 MET 2000 Jan Hubicka <jh@suse.cz>
* 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 <jh@suse.cz> Wed Mar 15 13:07:05 MET 2000 Jan Hubicka <jh@suse.cz>
* i386.md (ix86_compute_frame_size): stack_alignment_needed is * i386.md (ix86_compute_frame_size): stack_alignment_needed is
......
...@@ -124,7 +124,7 @@ struct processor_costs pentiumpro_cost = { ...@@ -124,7 +124,7 @@ struct processor_costs pentiumpro_cost = {
1, /* cost of a lea instruction */ 1, /* cost of a lea instruction */
1, /* variable shift costs */ 1, /* variable shift costs */
1, /* constant 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 */ 0, /* cost of multiply per each bit set */
17, /* cost of a divide/mod */ 17, /* cost of a divide/mod */
8, /* "large" insn */ 8, /* "large" insn */
...@@ -195,7 +195,7 @@ struct processor_costs *ix86_cost = &pentium_cost; ...@@ -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_use_leave = m_386 | m_K6 | m_ATHLON;
const int x86_push_memory = 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_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_double_with_add = ~m_386;
const int x86_use_bit_test = 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; const int x86_unroll_strlen = m_486 | m_PENT | m_PPRO | m_ATHLON | m_K6;
......
...@@ -1379,8 +1379,8 @@ ...@@ -1379,8 +1379,8 @@
[(set_attr "type" "pop")]) [(set_attr "type" "pop")])
(define_insn "*movhi_1" (define_insn "*movhi_1"
[(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,m") [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,r,m")
(match_operand:HI 1 "general_operand" "rn,rm,rn"))] (match_operand:HI 1 "general_operand" "r,rn,rm,rn"))]
"GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
"* "*
{ {
...@@ -1398,22 +1398,28 @@ ...@@ -1398,22 +1398,28 @@
} }
}" }"
[(set (attr "type") [(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" "")) (match_operand:HI 1 "aligned_operand" ""))
(const_string "imov") (const_string "imov")
(and (ne (symbol_ref "TARGET_MOVX") (and (ne (symbol_ref "TARGET_MOVX")
(const_int 0)) (const_int 0))
(eq_attr "alternative" "1")) (eq_attr "alternative" "0,2"))
(const_string "imovx") (const_string "imovx")
] ]
(const_string "imov"))) (const_string "imov")))
(set (attr "length_prefix") (set (attr "length_prefix")
(cond [(eq_attr "type" "imovx") (cond [(eq_attr "type" "imovx")
(const_string "0") (const_string "0")
(and (eq_attr "alternative" "0,1") (and (eq_attr "alternative" "1,2")
(and (match_operand:HI 1 "aligned_operand" "") (match_operand:HI 1 "aligned_operand" ""))
(const_string "0")
(and (eq_attr "alternative" "0")
(eq (symbol_ref "TARGET_PARTIAL_REG_STALL") (eq (symbol_ref "TARGET_PARTIAL_REG_STALL")
(const_int 0)))) (const_int 0)))
(const_string "0") (const_string "0")
] ]
(const_string "1"))) (const_string "1")))
......
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