altivec.md (vec_widen_umult_hi_v16qi): Swap arguments to merge instruction for little endian.

2013-11-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/altivec.md (vec_widen_umult_hi_v16qi): Swap
	arguments to merge instruction for little endian.
	(vec_widen_umult_lo_v16qi): Likewise.
	(vec_widen_smult_hi_v16qi): Likewise.
	(vec_widen_smult_lo_v16qi): Likewise.
	(vec_widen_umult_hi_v8hi): Likewise.
	(vec_widen_umult_lo_v8hi): Likewise.
	(vec_widen_smult_hi_v8hi): Likewise.
	(vec_widen_smult_lo_v8hi): Likewise.

From-SVN: r204363
This commit is contained in:
Bill Schmidt 2013-11-04 20:44:14 +00:00 committed by William Schmidt
parent 2a5145b0dd
commit 578acbf0f0
2 changed files with 44 additions and 8 deletions

View File

@ -1,3 +1,15 @@
2013-11-04 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/altivec.md (vec_widen_umult_hi_v16qi): Swap
arguments to merge instruction for little endian.
(vec_widen_umult_lo_v16qi): Likewise.
(vec_widen_smult_hi_v16qi): Likewise.
(vec_widen_smult_lo_v16qi): Likewise.
(vec_widen_umult_hi_v8hi): Likewise.
(vec_widen_umult_lo_v8hi): Likewise.
(vec_widen_smult_hi_v8hi): Likewise.
(vec_widen_smult_lo_v8hi): Likewise.
2013-11-04 Ian Lance Taylor <iant@google.com>
* builtins.def (ATTR_NOTHROWCALL_LEAF_LIST): Define.

View File

@ -2185,7 +2185,10 @@
emit_insn (gen_vec_widen_umult_even_v16qi (ve, operands[1], operands[2]));
emit_insn (gen_vec_widen_umult_odd_v16qi (vo, operands[1], operands[2]));
emit_insn (gen_altivec_vmrghh (operands[0], ve, vo));
if (BYTES_BIG_ENDIAN)
emit_insn (gen_altivec_vmrghh (operands[0], ve, vo));
else
emit_insn (gen_altivec_vmrghh (operands[0], vo, ve));
DONE;
}")
@ -2202,7 +2205,10 @@
emit_insn (gen_vec_widen_umult_even_v16qi (ve, operands[1], operands[2]));
emit_insn (gen_vec_widen_umult_odd_v16qi (vo, operands[1], operands[2]));
emit_insn (gen_altivec_vmrglh (operands[0], ve, vo));
if (BYTES_BIG_ENDIAN)
emit_insn (gen_altivec_vmrglh (operands[0], ve, vo));
else
emit_insn (gen_altivec_vmrglh (operands[0], vo, ve));
DONE;
}")
@ -2219,7 +2225,10 @@
emit_insn (gen_vec_widen_smult_even_v16qi (ve, operands[1], operands[2]));
emit_insn (gen_vec_widen_smult_odd_v16qi (vo, operands[1], operands[2]));
emit_insn (gen_altivec_vmrghh (operands[0], ve, vo));
if (BYTES_BIG_ENDIAN)
emit_insn (gen_altivec_vmrghh (operands[0], ve, vo));
else
emit_insn (gen_altivec_vmrghh (operands[0], vo, ve));
DONE;
}")
@ -2236,7 +2245,10 @@
emit_insn (gen_vec_widen_smult_even_v16qi (ve, operands[1], operands[2]));
emit_insn (gen_vec_widen_smult_odd_v16qi (vo, operands[1], operands[2]));
emit_insn (gen_altivec_vmrglh (operands[0], ve, vo));
if (BYTES_BIG_ENDIAN)
emit_insn (gen_altivec_vmrglh (operands[0], ve, vo));
else
emit_insn (gen_altivec_vmrglh (operands[0], vo, ve));
DONE;
}")
@ -2253,7 +2265,10 @@
emit_insn (gen_vec_widen_umult_even_v8hi (ve, operands[1], operands[2]));
emit_insn (gen_vec_widen_umult_odd_v8hi (vo, operands[1], operands[2]));
emit_insn (gen_altivec_vmrghw (operands[0], ve, vo));
if (BYTES_BIG_ENDIAN)
emit_insn (gen_altivec_vmrghw (operands[0], ve, vo));
else
emit_insn (gen_altivec_vmrghw (operands[0], vo, ve));
DONE;
}")
@ -2270,7 +2285,10 @@
emit_insn (gen_vec_widen_umult_even_v8hi (ve, operands[1], operands[2]));
emit_insn (gen_vec_widen_umult_odd_v8hi (vo, operands[1], operands[2]));
emit_insn (gen_altivec_vmrglw (operands[0], ve, vo));
if (BYTES_BIG_ENDIAN)
emit_insn (gen_altivec_vmrglw (operands[0], ve, vo));
else
emit_insn (gen_altivec_vmrglw (operands[0], vo, ve));
DONE;
}")
@ -2287,7 +2305,10 @@
emit_insn (gen_vec_widen_smult_even_v8hi (ve, operands[1], operands[2]));
emit_insn (gen_vec_widen_smult_odd_v8hi (vo, operands[1], operands[2]));
emit_insn (gen_altivec_vmrghw (operands[0], ve, vo));
if (BYTES_BIG_ENDIAN)
emit_insn (gen_altivec_vmrghw (operands[0], ve, vo));
else
emit_insn (gen_altivec_vmrghw (operands[0], vo, ve));
DONE;
}")
@ -2304,7 +2325,10 @@
emit_insn (gen_vec_widen_smult_even_v8hi (ve, operands[1], operands[2]));
emit_insn (gen_vec_widen_smult_odd_v8hi (vo, operands[1], operands[2]));
emit_insn (gen_altivec_vmrglw (operands[0], ve, vo));
if (BYTES_BIG_ENDIAN)
emit_insn (gen_altivec_vmrglw (operands[0], ve, vo));
else
emit_insn (gen_altivec_vmrglw (operands[0], vo, ve));
DONE;
}")