rs6000.c (rs6000_rtx_costs): Fix mask_operand and mask64_operand thinkos.
* config/rs6000/rs6000.c (rs6000_rtx_costs): Fix mask_operand and mask64_operand thinkos. Handle ZERO_EXTRACT. Handle SIGN_EXTEND / ZERO_EXTEND of MEM. Handle rlwinm patterns. From-SVN: r85604
This commit is contained in:
parent
0a2b72a6ec
commit
d5861a7ae0
@ -1,3 +1,9 @@
|
||||
2004-08-05 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
* config/rs6000/rs6000.c (rs6000_rtx_costs): Fix mask_operand
|
||||
and mask64_operand thinkos. Handle ZERO_EXTRACT. Handle
|
||||
SIGN_EXTEND / ZERO_EXTEND of MEM. Handle rlwinm patterns.
|
||||
|
||||
2004-08-05 Joseph S. Myers <jsm@polyomino.org.uk>
|
||||
|
||||
* config/linux.h, config/i386/linux.h, config/sparc/linux.h:
|
||||
@ -286,7 +292,7 @@
|
||||
* config/i386/xmmintrin.h: Include <mm_malloc.h>.
|
||||
|
||||
2004-08-03 H.J. Lu <hongjiu.lu@intel.com>
|
||||
Tanguy Fautrà <tfautre@pandora.be>
|
||||
Tanguy Fautrà <tfautre@pandora.be>
|
||||
|
||||
* config/i386/pmm_malloc.h: New file.
|
||||
|
||||
|
@ -16533,12 +16533,13 @@ rs6000_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED,
|
||||
|| (outer_code == AND
|
||||
&& (CONST_OK_FOR_LETTER_P (INTVAL (x), 'K')
|
||||
|| CONST_OK_FOR_LETTER_P (INTVAL (x), 'L')
|
||||
|| CONST_OK_FOR_LETTER_P (INTVAL (x), 'T')))
|
||||
|| mask_operand (x, VOIDmode)))
|
||||
|| outer_code == ASHIFT
|
||||
|| outer_code == ASHIFTRT
|
||||
|| outer_code == LSHIFTRT
|
||||
|| outer_code == ROTATE
|
||||
|| outer_code == ROTATERT
|
||||
|| outer_code == ZERO_EXTRACT
|
||||
|| (outer_code == MULT
|
||||
&& CONST_OK_FOR_LETTER_P (INTVAL (x), 'I'))
|
||||
|| (outer_code == COMPARE
|
||||
@ -16568,7 +16569,7 @@ rs6000_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED,
|
||||
&& ((outer_code == AND
|
||||
&& (CONST_OK_FOR_LETTER_P (INTVAL (x), 'K')
|
||||
|| CONST_OK_FOR_LETTER_P (INTVAL (x), 'L')
|
||||
|| CONST_OK_FOR_LETTER_P (INTVAL (x), 'S')))
|
||||
|| mask64_operand (x, DImode)))
|
||||
|| ((outer_code == IOR || outer_code == XOR)
|
||||
&& CONST_DOUBLE_HIGH (x) == 0
|
||||
&& (CONST_DOUBLE_LOW (x)
|
||||
@ -16728,13 +16729,16 @@ rs6000_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED,
|
||||
case AND:
|
||||
case IOR:
|
||||
case XOR:
|
||||
case ZERO_EXTRACT:
|
||||
*total = COSTS_N_INSNS (1);
|
||||
return false;
|
||||
|
||||
case ASHIFT:
|
||||
case ASHIFTRT:
|
||||
case LSHIFTRT:
|
||||
case ROTATE:
|
||||
case ROTATERT:
|
||||
case SIGN_EXTEND:
|
||||
case ZERO_EXTEND:
|
||||
/* Handle mul_highpart. */
|
||||
if (outer_code == TRUNCATE
|
||||
&& GET_CODE (XEXP (x, 0)) == MULT)
|
||||
{
|
||||
@ -16744,7 +16748,18 @@ rs6000_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED,
|
||||
*total = rs6000_cost->mulsi;
|
||||
return true;
|
||||
}
|
||||
*total = COSTS_N_INSNS (1);
|
||||
else if (outer_code == AND)
|
||||
*total = 0;
|
||||
else
|
||||
*total = COSTS_N_INSNS (1);
|
||||
return false;
|
||||
|
||||
case SIGN_EXTEND:
|
||||
case ZERO_EXTEND:
|
||||
if (GET_CODE (XEXP (x, 0)) == MEM)
|
||||
*total = 0;
|
||||
else
|
||||
*total = COSTS_N_INSNS (1);
|
||||
return false;
|
||||
|
||||
case COMPARE:
|
||||
|
Loading…
Reference in New Issue
Block a user