+2011-02-07 Steve Ellcey <sje@cup.hp.com>
+
+ PR target/46997
+ * vect.md (vec_interleave_highv2sf): Change fmix for TARGET_BIG_ENDIAN.
+ (vec_interleave_lowv2sf): Ditto.
+ (vec_extract_evenv2sf): Add TARGET_BIG_ENDIAN check.
+ (vec_extract_oddv2sf): Ditto.
+
2011-02-07 Mike Stump <mikestump@comcast.net>
PR target/42333
{
/* Recall that vector elements are numbered in memory order. */
if (TARGET_BIG_ENDIAN)
- return "%,fmix.r %0 = %F1, %F2";
+ return "%,fmix.l %0 = %F1, %F2";
else
return "%,fmix.l %0 = %F2, %F1";
}
{
/* Recall that vector elements are numbered in memory order. */
if (TARGET_BIG_ENDIAN)
- return "%,fmix.l %0 = %F1, %F2";
+ return "%,fmix.r %0 = %F1, %F2";
else
return "%,fmix.r %0 = %F2, %F1";
}
[(match_operand:V2SF 0 "gr_register_operand" "")
(match_operand:V2SF 1 "gr_register_operand" "")
(match_operand:V2SF 2 "gr_register_operand" "")]
- "!TARGET_BIG_ENDIAN"
+ ""
{
- emit_insn (gen_vec_interleave_lowv2sf (operands[0], operands[1],
- operands[2]));
+ if (TARGET_BIG_ENDIAN)
+ emit_insn (gen_vec_interleave_highv2sf (operands[0], operands[1],
+ operands[2]));
+ else
+ emit_insn (gen_vec_interleave_lowv2sf (operands[0], operands[1],
+ operands[2]));
DONE;
})
[(match_operand:V2SF 0 "gr_register_operand" "")
(match_operand:V2SF 1 "gr_register_operand" "")
(match_operand:V2SF 2 "gr_register_operand" "")]
- "!TARGET_BIG_ENDIAN"
+ ""
{
- emit_insn (gen_vec_interleave_highv2sf (operands[0], operands[1],
- operands[2]));
+ if (TARGET_BIG_ENDIAN)
+ emit_insn (gen_vec_interleave_lowv2sf (operands[0], operands[1],
+ operands[2]));
+ else
+ emit_insn (gen_vec_interleave_highv2sf (operands[0], operands[1],
+ operands[2]));
DONE;
})