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:
parent
5f677a9ee7
commit
369e59b1c1
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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")))
|
||||
|
Loading…
x
Reference in New Issue
Block a user