From ce519b06319c6a396f39df1157bfdcd979c93bca Mon Sep 17 00:00:00 2001 From: sje Date: Mon, 7 Feb 2011 21:06:42 +0000 Subject: [PATCH] 2011-02-07 Steve Ellcey 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@169904 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/config/ia64/vect.md | 24 ++++++++++++++++-------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2f90f080589..fd78ff55b9b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2011-02-07 Steve Ellcey + + 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 PR target/42333 diff --git a/gcc/config/ia64/vect.md b/gcc/config/ia64/vect.md index ad367214d9d..1684c8092c2 100644 --- a/gcc/config/ia64/vect.md +++ b/gcc/config/ia64/vect.md @@ -1490,7 +1490,7 @@ { /* 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"; } @@ -1507,7 +1507,7 @@ { /* 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"; } @@ -1534,10 +1534,14 @@ [(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; }) @@ -1545,10 +1549,14 @@ [(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; }) -- 2.11.4.GIT