altivec.md (altivec_vpkpx): Handle little endian.
authorBill Schmidt <wschmidt@linux.ibm.com>
Thu, 25 Jul 2013 01:24:14 +0000 (01:24 +0000)
committerWilliam Schmidt <wschmidt@gcc.gnu.org>
Thu, 25 Jul 2013 01:24:14 +0000 (01:24 +0000)
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

gcc/ChangeLog
gcc/config/rs6000/altivec.md

index 36bfbe976db867812893b5894aa442a24d076dd6..0aed48dc1fb44d5ad49bf7c07b032f95a98afdcd 100644 (file)
@@ -1,3 +1,12 @@
+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.
+
 2013-07-24  David Malcolm  <dmalcolm@redhat.com>
 
        Introduce context class.
index db2e93a168a51d1be1e23cf6421a5b2747ced376..47a3a6894e15ef17e2775bc889b1ff74ddeace48 100644 (file)
                       (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"
                            (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"
                            (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"
                            (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"
                            (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>"