mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-10 14:17:53 +08:00
alpha.md (beq): For registers and ints 0-255...
* alpha.md (beq): For registers and ints 0-255, use cmpeq+bne, since that pair will dual-issue on the 21164 and plus+beq won't. (bne): Likewise for cmpeq+beq. From-SVN: r15814
This commit is contained in:
parent
3f34faec1a
commit
e9d0757e5c
@ -1,3 +1,9 @@
|
||||
Tue Sep 30 23:06:43 1997 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* alpha.md (beq): For registers and ints 0-255, use cmpeq+bne, since
|
||||
that pair will dual-issue on the 21164 and plus+beq won't.
|
||||
(bne): Likewise for cmpeq+beq.
|
||||
|
||||
Tue Sep 30 16:07:58 1997 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* except.c (find_exception_handler_labels): Correct argument to free.
|
||||
|
@ -2478,16 +2478,23 @@
|
||||
"
|
||||
{
|
||||
enum machine_mode mode;
|
||||
enum rtx_code compare_code, branch_code;
|
||||
enum rtx_code compare_code = EQ, branch_code = NE;
|
||||
|
||||
if (alpha_compare_fp_p)
|
||||
mode = DFmode, compare_code = EQ, branch_code = NE;
|
||||
mode = DFmode;
|
||||
else
|
||||
{
|
||||
mode = DImode, compare_code = MINUS, branch_code = EQ;
|
||||
if (GET_CODE (alpha_compare_op1) == CONST_INT)
|
||||
mode = DImode;
|
||||
/* We want to use cmpeq/bne when we can, since there is a zero-delay
|
||||
bypass between logicals and br/cmov on the 21164. But we don't
|
||||
want to force valid immediate constants into registers needlessly. */
|
||||
if (GET_CODE (alpha_compare_op1) == CONST_INT
|
||||
&& ((INTVAL (alpha_compare_op1) >= -0x8000
|
||||
&& INTVAL (alpha_compare_op1) < 0)
|
||||
|| (INTVAL (alpha_compare_op1) > 0xff
|
||||
&& INTVAL (alpha_compare_op1) < 0x8000)))
|
||||
{
|
||||
compare_code = PLUS;
|
||||
compare_code = PLUS, branch_code = EQ;
|
||||
alpha_compare_op1 = GEN_INT (- INTVAL (alpha_compare_op1));
|
||||
}
|
||||
}
|
||||
@ -2509,16 +2516,23 @@
|
||||
"
|
||||
{
|
||||
enum machine_mode mode;
|
||||
enum rtx_code compare_code, branch_code;
|
||||
enum rtx_code compare_code = EQ, branch_code = EQ;
|
||||
|
||||
if (alpha_compare_fp_p)
|
||||
mode = DFmode, compare_code = EQ, branch_code = EQ;
|
||||
mode = DFmode;
|
||||
else
|
||||
{
|
||||
mode = DImode, compare_code = MINUS, branch_code = NE;
|
||||
if (GET_CODE (alpha_compare_op1) == CONST_INT)
|
||||
mode = DImode;
|
||||
/* We want to use cmpeq/bne when we can, since there is a zero-delay
|
||||
bypass between logicals and br/cmov on the 21164. But we don't
|
||||
want to force valid immediate constants into registers needlessly. */
|
||||
if (GET_CODE (alpha_compare_op1) == CONST_INT
|
||||
&& ((INTVAL (alpha_compare_op1) >= -0x8000
|
||||
&& INTVAL (alpha_compare_op1) < 0)
|
||||
|| (INTVAL (alpha_compare_op1) > 0xff
|
||||
&& INTVAL (alpha_compare_op1) < 0x8000)))
|
||||
{
|
||||
compare_code = PLUS;
|
||||
compare_code = PLUS, branch_code = NE;
|
||||
alpha_compare_op1 = GEN_INT (- INTVAL (alpha_compare_op1));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user