diff options
author | Bill Schmidt <wschmidt@linux.ibm.com> | 2013-07-25 01:24:14 +0000 |
---|---|---|
committer | William Schmidt <wschmidt@gcc.gnu.org> | 2013-07-25 01:24:14 +0000 |
commit | a4ad093b026e5224b4bacedcee34b434e7af7ffc (patch) | |
tree | 50144ec9e0a920008055c6f68f076ec1d21ec1c4 /gcc/config/rs6000 | |
parent | 484b502a41c3c247e88c2c1d11ce79b23ddfb47e (diff) | |
download | gcc-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.md | 40 |
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>" |