aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rs6000
diff options
context:
space:
mode:
authorBill Schmidt <wschmidt@linux.ibm.com>2013-07-25 01:24:14 +0000
committerWilliam Schmidt <wschmidt@gcc.gnu.org>2013-07-25 01:24:14 +0000
commita4ad093b026e5224b4bacedcee34b434e7af7ffc (patch)
tree50144ec9e0a920008055c6f68f076ec1d21ec1c4 /gcc/config/rs6000
parent484b502a41c3c247e88c2c1d11ce79b23ddfb47e (diff)
downloadgcc-a4ad093b026e5224b4bacedcee34b434e7af7ffc.zip
gcc-a4ad093b026e5224b4bacedcee34b434e7af7ffc.tar.gz
gcc-a4ad093b026e5224b4bacedcee34b434e7af7ffc.tar.bz2
altivec.md (altivec_vpkpx): Handle little endian.
2013-07-24 Bill Schmidt <wschmidt@linux.ibm.com> Anton Blanchard <anton@au1.ibm.com> * config/rs6000/altivec.md (altivec_vpkpx): Handle little endian. (altivec_vpks<VI_char>ss): Likewise. (altivec_vpks<VI_char>us): Likewise. (altivec_vpku<VI_char>us): Likewise. (altivec_vpku<VI_char>um): Likewise. Co-Authored-By: Anton Blanchard <anton@au1.ibm.com> From-SVN: r201235
Diffstat (limited to 'gcc/config/rs6000')
-rw-r--r--gcc/config/rs6000/altivec.md40
1 files changed, 35 insertions, 5 deletions
diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md
index db2e93a..47a3a689 100644
--- a/gcc/config/rs6000/altivec.md
+++ b/gcc/config/rs6000/altivec.md
@@ -1047,7 +1047,13 @@
(match_operand:V4SI 2 "register_operand" "v")]
UNSPEC_VPKPX))]
"TARGET_ALTIVEC"
- "vpkpx %0,%1,%2"
+ "*
+ {
+ if (BYTES_BIG_ENDIAN)
+ return \"vpkpx %0,%1,%2\";
+ else
+ return \"vpkpx %0,%2,%1\";
+ }"
[(set_attr "type" "vecperm")])
(define_insn "altivec_vpks<VI_char>ss"
@@ -1056,7 +1062,13 @@
(match_operand:VP 2 "register_operand" "v")]
UNSPEC_VPACK_SIGN_SIGN_SAT))]
"<VI_unit>"
- "vpks<VI_char>ss %0,%1,%2"
+ "*
+ {
+ if (BYTES_BIG_ENDIAN)
+ return \"vpks<VI_char>ss %0,%1,%2\";
+ else
+ return \"vpks<VI_char>ss %0,%2,%1\";
+ }"
[(set_attr "type" "vecperm")])
(define_insn "altivec_vpks<VI_char>us"
@@ -1065,7 +1077,13 @@
(match_operand:VP 2 "register_operand" "v")]
UNSPEC_VPACK_SIGN_UNS_SAT))]
"<VI_unit>"
- "vpks<VI_char>us %0,%1,%2"
+ "*
+ {
+ if (BYTES_BIG_ENDIAN)
+ return \"vpks<VI_char>us %0,%1,%2\";
+ else
+ return \"vpks<VI_char>us %0,%2,%1\";
+ }"
[(set_attr "type" "vecperm")])
(define_insn "altivec_vpku<VI_char>us"
@@ -1074,7 +1092,13 @@
(match_operand:VP 2 "register_operand" "v")]
UNSPEC_VPACK_UNS_UNS_SAT))]
"<VI_unit>"
- "vpku<VI_char>us %0,%1,%2"
+ "*
+ {
+ if (BYTES_BIG_ENDIAN)
+ return \"vpku<VI_char>us %0,%1,%2\";
+ else
+ return \"vpku<VI_char>us %0,%2,%1\";
+ }"
[(set_attr "type" "vecperm")])
(define_insn "altivec_vpku<VI_char>um"
@@ -1083,7 +1107,13 @@
(match_operand:VP 2 "register_operand" "v")]
UNSPEC_VPACK_UNS_UNS_MOD))]
"<VI_unit>"
- "vpku<VI_char>um %0,%1,%2"
+ "*
+ {
+ if (BYTES_BIG_ENDIAN)
+ return \"vpku<VI_char>um %0,%1,%2\";
+ else
+ return \"vpku<VI_char>um %0,%2,%1\";
+ }"
[(set_attr "type" "vecperm")])
(define_insn "*altivec_vrl<VI_char>"