diff options
author | hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-06-21 21:56:47 +0000 |
---|---|---|
committer | hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-06-21 21:56:47 +0000 |
commit | 0408fd5bfc40508a29d85e92afe0075d271c33f6 (patch) | |
tree | ebf152f2e86bd4364b0513da3280d3c96e87dd9a /gcc/config/i386/atom.md | |
parent | ab3da48abc88c227d860858253b27ab73d1aabe2 (diff) | |
download | gcc-0408fd5bfc40508a29d85e92afe0075d271c33f6.tar.gz |
Properly handle psrldq when optimizing for Atom.
gcc/
2010-06-21 H.J. Lu <hongjiu.lu@intel.com>
PR target/44615
* config/i386/atom.md (atom_sseishft_2): Also check sseishft1.
* config/i386/i386.md (type): Add sseishft1
* config/i386/ppro_insn (ppro_insn): Also check sseishft1.
(ppro_insn_load): Likewise.
(ppro_insn_store): Likewise.
(ppro_insn_both): Likewise.
* config/i386/sse.md (sse2_lshrv1ti3): Add atom_unit.
(*vec_extractv2di_1_rex64_avx): Replace sseishft with sseishft1
for type.
(*vec_extractv2di_1_avx): Likewise.
(*vec_extractv2di_1_rex64): Replace sseishft with sseishft1 for
type. Remove atom_unit.
(*vec_extractv2di_1_sse2): Likewise.
gcc/testsuite/
2010-06-21 H.J. Lu <hongjiu.lu@intel.com>
PR target/44615
* gcc.target/i386/sse2-vec-2a.c: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@161118 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386/atom.md')
-rw-r--r-- | gcc/config/i386/atom.md | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/config/i386/atom.md b/gcc/config/i386/atom.md index a9c4c5d0576..1664269bac0 100644 --- a/gcc/config/i386/atom.md +++ b/gcc/config/i386/atom.md @@ -501,9 +501,10 @@ ;; if palignr or psrldq (define_insn_reservation "atom_sseishft_2" 1 (and (eq_attr "cpu" "atom") - (and (eq_attr "type" "sseishft") - (and (eq_attr "atom_unit" "sishuf") - (match_operand 2 "immediate_operand")))) + (ior (eq_attr "type" "sseishft1") + (and (eq_attr "type" "sseishft") + (and (eq_attr "atom_unit" "sishuf") + (match_operand 2 "immediate_operand"))))) "atom-simple-0") ;; if reg/mem op |