Commit a6056198 by Bill Schmidt Committed by William Schmidt

rs6000.c (altivec_expand_vec_perm_const): Correct selection of field for vector…

rs6000.c (altivec_expand_vec_perm_const): Correct selection of field for vector splat in little endian mode.

2013-07-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
	    Anton Blanchard <anton@au1.ibm.com>

	* config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Correct
	selection of field for vector splat in little endian mode.


Co-Authored-By: Anton Blanchard <anton@au1.ibm.com>

From-SVN: r201193
parent 9d824f6c
2013-07-23 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Anton Blanchard <anton@au1.ibm.com>
* config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Correct
selection of field for vector splat in little endian mode.
2013-07-23 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/vector.md (xor<mode>3): Move 128-bit boolean
......
......@@ -28460,9 +28460,10 @@ altivec_expand_vec_perm_const (rtx operands[4])
break;
if (i == 16)
{
int field = BYTES_BIG_ENDIAN ? elt / 2 : 7 - elt / 2;
x = gen_reg_rtx (V8HImode);
emit_insn (gen_altivec_vsplth (x, gen_lowpart (V8HImode, op0),
GEN_INT (elt / 2)));
GEN_INT (field)));
emit_move_insn (target, gen_lowpart (V16QImode, x));
return true;
}
......@@ -28478,9 +28479,10 @@ altivec_expand_vec_perm_const (rtx operands[4])
break;
if (i == 16)
{
int field = BYTES_BIG_ENDIAN ? elt / 4 : 3 - elt / 4;
x = gen_reg_rtx (V4SImode);
emit_insn (gen_altivec_vspltw (x, gen_lowpart (V4SImode, op0),
GEN_INT (elt / 4)));
GEN_INT (field)));
emit_move_insn (target, gen_lowpart (V16QImode, x));
return true;
}
......
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