spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized SUBREG of multi-word hard register.
* config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized SUBREG of multi-word hard register. * config/spu/spu.c (valid_subreg): Likewise. (adjust_operand): Handle SUBREGs of multi-word hard registers. From-SVN: r138711
This commit is contained in:
parent
21f560ba8e
commit
9e071d06df
3 changed files with 14 additions and 3 deletions
|
@ -1,3 +1,10 @@
|
|||
2008-08-05 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
|
||||
|
||||
* config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
|
||||
SUBREG of multi-word hard register.
|
||||
* config/spu/spu.c (valid_subreg): Likewise.
|
||||
(adjust_operand): Handle SUBREGs of multi-word hard registers.
|
||||
|
||||
2008-08-04 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
|
||||
|
|
|
@ -419,7 +419,8 @@ valid_subreg (rtx op)
|
|||
enum machine_mode im = GET_MODE (SUBREG_REG (op));
|
||||
return om != VOIDmode && im != VOIDmode
|
||||
&& (GET_MODE_SIZE (im) == GET_MODE_SIZE (om)
|
||||
|| (GET_MODE_SIZE (im) <= 4 && GET_MODE_SIZE (om) <= 4));
|
||||
|| (GET_MODE_SIZE (im) <= 4 && GET_MODE_SIZE (om) <= 4)
|
||||
|| (GET_MODE_SIZE (im) >= 16 && GET_MODE_SIZE (om) >= 16));
|
||||
}
|
||||
|
||||
/* When insv and ext[sz]v ar passed a TI SUBREG, we want to strip it off
|
||||
|
@ -429,8 +430,10 @@ adjust_operand (rtx op, HOST_WIDE_INT * start)
|
|||
{
|
||||
enum machine_mode mode;
|
||||
int op_size;
|
||||
/* Strip any SUBREG */
|
||||
if (GET_CODE (op) == SUBREG)
|
||||
/* Strip any paradoxical SUBREG. */
|
||||
if (GET_CODE (op) == SUBREG
|
||||
&& (GET_MODE_BITSIZE (GET_MODE (op))
|
||||
> GET_MODE_BITSIZE (GET_MODE (SUBREG_REG (op)))))
|
||||
{
|
||||
if (start)
|
||||
*start -=
|
||||
|
|
|
@ -263,6 +263,7 @@ enum reg_class {
|
|||
only true for SPU. */
|
||||
#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \
|
||||
((GET_MODE_SIZE (FROM) > 4 || GET_MODE_SIZE (TO) > 4) \
|
||||
&& (GET_MODE_SIZE (FROM) < 16 || GET_MODE_SIZE (TO) < 16) \
|
||||
&& GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO))
|
||||
|
||||
#define REGISTER_TARGET_PRAGMAS() do { \
|
||||
|
|
Loading…
Add table
Reference in a new issue