From a4ad093b026e5224b4bacedcee34b434e7af7ffc Mon Sep 17 00:00:00 2001 From: Bill Schmidt Date: Thu, 25 Jul 2013 01:24:14 +0000 Subject: [PATCH] altivec.md (altivec_vpkpx): Handle little endian. 2013-07-24 Bill Schmidt Anton Blanchard * config/rs6000/altivec.md (altivec_vpkpx): Handle little endian. (altivec_vpksss): Likewise. (altivec_vpksus): Likewise. (altivec_vpkuus): Likewise. (altivec_vpkuum): Likewise. Co-Authored-By: Anton Blanchard From-SVN: r201235 --- gcc/ChangeLog | 9 +++++++++ gcc/config/rs6000/altivec.md | 40 +++++++++++++++++++++++++++++++++++----- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 36bfbe9..0aed48d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2013-07-24 Bill Schmidt + Anton Blanchard + + * config/rs6000/altivec.md (altivec_vpkpx): Handle little endian. + (altivec_vpksss): Likewise. + (altivec_vpksus): Likewise. + (altivec_vpkuus): Likewise. + (altivec_vpkuum): Likewise. + 2013-07-24 David Malcolm Introduce context class. diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md index db2e93a..47a3a68 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_vpksss" @@ -1056,7 +1062,13 @@ (match_operand:VP 2 "register_operand" "v")] UNSPEC_VPACK_SIGN_SIGN_SAT))] "" - "vpksss %0,%1,%2" + "* + { + if (BYTES_BIG_ENDIAN) + return \"vpksss %0,%1,%2\"; + else + return \"vpksss %0,%2,%1\"; + }" [(set_attr "type" "vecperm")]) (define_insn "altivec_vpksus" @@ -1065,7 +1077,13 @@ (match_operand:VP 2 "register_operand" "v")] UNSPEC_VPACK_SIGN_UNS_SAT))] "" - "vpksus %0,%1,%2" + "* + { + if (BYTES_BIG_ENDIAN) + return \"vpksus %0,%1,%2\"; + else + return \"vpksus %0,%2,%1\"; + }" [(set_attr "type" "vecperm")]) (define_insn "altivec_vpkuus" @@ -1074,7 +1092,13 @@ (match_operand:VP 2 "register_operand" "v")] UNSPEC_VPACK_UNS_UNS_SAT))] "" - "vpkuus %0,%1,%2" + "* + { + if (BYTES_BIG_ENDIAN) + return \"vpkuus %0,%1,%2\"; + else + return \"vpkuus %0,%2,%1\"; + }" [(set_attr "type" "vecperm")]) (define_insn "altivec_vpkuum" @@ -1083,7 +1107,13 @@ (match_operand:VP 2 "register_operand" "v")] UNSPEC_VPACK_UNS_UNS_MOD))] "" - "vpkuum %0,%1,%2" + "* + { + if (BYTES_BIG_ENDIAN) + return \"vpkuum %0,%1,%2\"; + else + return \"vpkuum %0,%2,%1\"; + }" [(set_attr "type" "vecperm")]) (define_insn "*altivec_vrl" -- 2.7.4