i386.c (print_operand_address, case REG): Do not use ESI addressing mode for the K6.

* i386.c (print_operand_address, case REG): Do not use ESI addressing
        mode for the K6.
        * i386.c (print_operand_address, case MULT): Use more efficient
        encoding (mult (reg) (const_int 2)).

From-SVN: r26116
This commit is contained in:
Jan Hubicka 1999-04-02 12:44:02 +02:00 committed by Jeff Law
parent 57b1ca433d
commit 69a8af4360
2 changed files with 23 additions and 2 deletions

View File

@ -1,3 +1,11 @@
Fri Apr 2 11:36:12 1999 Jan Hubicka (hubicka@paru.cas.cz)
* i386.c (print_operand_address, case REG): Do not use ESI addressing
mode for the K6.
* i386.c (print_operand_address, case MULT): Use more efficient
encoding (mult (reg) (const_int 2)).
Thu Apr 1 17:01:50 1999 Richard Henderson <rth@cygnus.com>
Move over patch from Bernd Schmidt from GC branch:

View File

@ -3772,6 +3772,11 @@ print_operand_address (file, addr)
switch (GET_CODE (addr))
{
case REG:
/* ESI addressing makes instruction vector decoded on the K6. We can
avoid this by ESI+0 addressing. */
if (REGNO_REG_CLASS (REGNO (addr)) == SIREG
&& ix86_cpu == PROCESSOR_K6 && !optimize_size)
output_addr_const (file, const0_rtx);
ADDR_BEG (file);
fprintf (file, "%se", RP);
fputs (hi_reg_name[REGNO (addr)], file);
@ -3887,8 +3892,16 @@ print_operand_address (file, addr)
ireg = XEXP (addr, 0);
}
output_addr_const (file, const0_rtx);
PRINT_B_I_S (NULL_RTX, ireg, scale, file);
/* (reg,reg,) is shorter than (,reg,2). */
if(scale == 2)
{
PRINT_B_I_S (ireg, ireg, 1, file);
}
else
{
output_addr_const (file, const0_rtx);
PRINT_B_I_S (NULL_RTX, ireg, scale, file);
}
}
break;