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
This commit is contained in:
Jan Hubicka 2000-03-15 13:34:40 +01:00 committed by Jan Hubicka
parent 5f677a9ee7
commit 369e59b1c1
3 changed files with 23 additions and 10 deletions

View File

@ -1,3 +1,10 @@
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>
* i386.md (ix86_compute_frame_size): stack_alignment_needed is

View File

@ -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;

View File

@ -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")))