Commit 78796ad5 by Fariborz Jahanian Committed by Fariborz Jahanian

config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Check for vector...

config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Check for
vector types if to use base reg for misaligned non-word ld/std.
OKed by David Edelsohn.

From-SVN: r95529
parent 3b47d0f4
2005-02-24 Fariborz Jahanian <fjahanian@apple.com>
* config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Check for
vector types if to use base reg for misaligned non-word ld/std.
2005-02-24 Hans-Peter Nilsson <hp@axis.com>
PR target/14619
......
......@@ -3881,6 +3881,7 @@ rs6000_legitimize_reload_address (rtx x, enum machine_mode mode,
&& REG_MODE_OK_FOR_BASE_P (XEXP (x, 0), mode)
&& GET_CODE (XEXP (x, 1)) == CONST_INT
&& (INTVAL (XEXP (x, 1)) & 3) != 0
&& !ALTIVEC_VECTOR_MODE (mode)
&& GET_MODE_SIZE (mode) >= UNITS_PER_WORD
&& TARGET_POWERPC64)
{
......
/* { dg-do compile { target powerpc*-*-* } } */
/* { dg-options "-maltivec -mcpu=G5 -O2" } */
#include <altivec.h>
void foo( float scalar)
{
unsigned long width;
unsigned long x;
vector float vColor;
vector unsigned int selectMask;
vColor = vec_perm( vec_ld( 0, &scalar), vec_ld( 3, &scalar), vec_lvsl( 0, &scalar) );
float *destRow;
vector float store, load0;
for( ; x < width; x++)
{
load0 = vec_sel( vColor, load0, selectMask );
vec_st( store, 0, destRow );
store = load0;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment