diff options
author | Jan Beulich <jbeulich@suse.com> | 2017-05-02 08:19:26 +0000 |
---|---|---|
committer | Jan Beulich <jbeulich@gcc.gnu.org> | 2017-05-02 08:19:26 +0000 |
commit | 26de50b098414b0322acad162a1797fe06bd261b (patch) | |
tree | 09e39f74a3cc49a589fcd529b8bd06ba69f66c6e /gcc/config/i386 | |
parent | 2132d92e271aed11587bafa5beadb1ee09c005cd (diff) | |
download | gcc-26de50b098414b0322acad162a1797fe06bd261b.zip gcc-26de50b098414b0322acad162a1797fe06bd261b.tar.gz gcc-26de50b098414b0322acad162a1797fe06bd261b.tar.bz2 |
x86: vpermil2p{s,d} have no commutative operands
While either of the last two operands can be in memory, they can't be
swapped.
gcc/
2017-05-01 Jan Beulich <jbeulich@suse.com>
* config/i386/sse.md (xop_vpermil2<mode>3): Do not allow operand
swapping, add (x,x,m,x,n) alternative.
From-SVN: r247464
Diffstat (limited to 'gcc/config/i386')
-rw-r--r-- | gcc/config/i386/sse.md | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index e8ccb1e..beb155d0 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -17092,12 +17092,12 @@ (set_attr "mode" "TI")]) (define_insn "xop_vpermil2<mode>3" - [(set (match_operand:VF_128_256 0 "register_operand" "=x") + [(set (match_operand:VF_128_256 0 "register_operand" "=x,x") (unspec:VF_128_256 - [(match_operand:VF_128_256 1 "register_operand" "x") - (match_operand:VF_128_256 2 "nonimmediate_operand" "%x") - (match_operand:<sseintvecmode> 3 "nonimmediate_operand" "xm") - (match_operand:SI 4 "const_0_to_3_operand" "n")] + [(match_operand:VF_128_256 1 "register_operand" "x,x") + (match_operand:VF_128_256 2 "nonimmediate_operand" "x,m") + (match_operand:<sseintvecmode> 3 "nonimmediate_operand" "xm,x") + (match_operand:SI 4 "const_0_to_3_operand" "n,n")] UNSPEC_VPERMIL2))] "TARGET_XOP" "vpermil2<ssemodesuffix>\t{%4, %3, %2, %1, %0|%0, %1, %2, %3, %4}" |