neon.md (neon_vget_lanev2di): Handle big-endian targets.
2015-08-04 Christophe Lyon <christophe.lyon@linaro.org> * config/arm/neon.md (neon_vget_lanev2di): Handle big-endian targets. From-SVN: r226574
This commit is contained in:
parent
c56df3e924
commit
69b23ad67f
@ -1,3 +1,8 @@
|
||||
2015-08-04 Christophe Lyon <christophe.lyon@linaro.org>
|
||||
|
||||
* config/arm/neon.md (neon_vget_lanev2di): Handle big-endian
|
||||
targets.
|
||||
|
||||
2015-08-04 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* config/nvptx/nvptx.h (struct nvptx_pseudo_info): Delete.
|
||||
|
@ -2731,7 +2731,22 @@
|
||||
(match_operand:SI 2 "immediate_operand" "")]
|
||||
"TARGET_NEON"
|
||||
{
|
||||
int lane = INTVAL (operands[2]);
|
||||
int lane;
|
||||
|
||||
if (BYTES_BIG_ENDIAN)
|
||||
{
|
||||
/* The intrinsics are defined in terms of a model where the
|
||||
element ordering in memory is vldm order, whereas the generic
|
||||
RTL is defined in terms of a model where the element ordering
|
||||
in memory is array order. Convert the lane number to conform
|
||||
to this model. */
|
||||
unsigned int elt = INTVAL (operands[2]);
|
||||
unsigned int reg_nelts = 2;
|
||||
elt ^= reg_nelts - 1;
|
||||
operands[2] = GEN_INT (elt);
|
||||
}
|
||||
|
||||
lane = INTVAL (operands[2]);
|
||||
gcc_assert ((lane ==0) || (lane == 1));
|
||||
emit_move_insn (operands[0], lane == 0
|
||||
? gen_lowpart (DImode, operands[1])
|
||||
|
Loading…
Reference in New Issue
Block a user