Hi, all
This is another patch to modify some pattern's type attr from ssemov to
ssemov2.
Some ssemov pattern's mem attr should be load when their 2 operand is a memory
operand.
Bootstrapped and regtested on x86-64-linux-pc, OK for trunk?
BRs,
Lin
gcc/ChangeLog:
* config/i386/sse.md
(sse_movhlps): Change type attr from ssemov to ssemov2.
(sse_loadhps): Ditto.
(*vec_concat<mode>): Ditto.
(vec_setv2df_0): Ditto.
(sse_loadlps): Change attr from ssemov to ssemov2 except for 2, 3.
(sse2_loadhps): Change attr from ssemov to ssemov2 except for 0, 1.
(sse2_loadlpd): Change attr from ssemov to ssemov2 except for 0, 1,
2.
(sse2_movsd_<mode>): Change attr from ssemov to ssemov2 except for 5.
(vec_concatv2df): Change attr from ssemov to ssemov2 except for 0, 1,
2.
(*vec_concat<mode>): Change attr from ssemov to ssemov2 for 3, 4.
(vec_concatv2di): Change attr from ssemov to ssemov2 except for 0, 1,
2, 3, 4, 5.
---
gcc/config/i386/sse.md | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index ccef3e063ec..a45b50ad732 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -10995,7 +10995,7 @@ (define_insn "sse_movhlps"
vmovlps\t{%H2, %1, %0|%0, %1, %H2}
%vmovhps\t{%2, %0|%q0, %2}"
[(set_attr "isa" "noavx,avx,noavx,avx,*")
- (set_attr "type" "ssemov")
+ (set_attr "type" "ssemov2")
(set_attr "prefix" "orig,maybe_evex,orig,maybe_evex,maybe_vex")
(set_attr "mode" "V4SF,V4SF,V2SF,V2SF,V2SF")])
@@ -11557,7 +11557,7 @@ (define_insn "sse_loadhps"
vmovlhps\t{%2, %1, %0|%0, %1, %2}
%vmovlps\t{%2, %H0|%H0, %2}"
[(set_attr "isa" "noavx,avx,noavx,avx,*")
- (set_attr "type" "ssemov")
+ (set_attr "type" "ssemov2")
(set_attr "prefix" "orig,maybe_evex,orig,maybe_evex,maybe_vex")
(set_attr "mode" "V2SF,V2SF,V4SF,V4SF,V2SF")])
@@ -11610,7 +11610,7 @@ (define_insn "sse_loadlps"
vmovlps\t{%2, %1, %0|%0, %1, %q2}
%vmovlps\t{%2, %0|%q0, %2}"
[(set_attr "isa" "noavx,avx,noavx,avx,*")
- (set_attr "type" "sseshuf,sseshuf,ssemov,ssemov,ssemov")
+ (set_attr "type" "sseshuf,sseshuf,ssemov2,ssemov2,ssemov")
(set (attr "length_immediate")
(if_then_else (eq_attr "alternative" "0,1")
(const_string "1")
@@ -11766,7 +11766,7 @@ (define_insn "*vec_concat<mode>"
movhps\t{%2, %0|%0, %q2}
vmovhps\t{%2, %1, %0|%0, %1, %q2}"
[(set_attr "isa" "noavx,avx,noavx,avx")
- (set_attr "type" "ssemov")
+ (set_attr "type" "ssemov2")
(set_attr "prefix" "orig,maybe_evex,orig,maybe_evex")
(set_attr "mode" "V4SF,V4SF,V2SF,V2SF")])
@@ -12214,7 +12214,7 @@ (define_insn "vec_setv2df_0"
movlpd\t{%2, %0|%0, %2}
vmovlpd\t{%2, %1, %0|%0, %1, %2}"
[(set_attr "isa" "noavx,avx,noavx,avx")
- (set_attr "type" "ssemov")
+ (set_attr "type" "ssemov2")
(set_attr "mode" "DF")])
(define_expand "vec_set<mode>"
@@ -14665,7 +14665,7 @@ (define_insn "sse2_loadhpd"
#
#"
[(set_attr "isa" "noavx,avx,noavx,avx,*,*,*")
- (set_attr "type" "ssemov,ssemov,sselog,sselog,ssemov,fmov,imov")
+ (set_attr "type" "ssemov2,ssemov2,sselog,sselog,ssemov,fmov,imov")
(set (attr "prefix_data16")
(if_then_else (eq_attr "alternative" "0")
(const_string "1")
@@ -14735,6 +14735,8 @@ (define_insn "sse2_loadlpd"
(const_string "fmov")
(eq_attr "alternative" "10")
(const_string "imov")
+ (eq_attr "alternative" "0,1,2")
+ (const_string "ssemov2")
]
(const_string "ssemov")))
(set (attr "prefix_data16")
@@ -14787,7 +14789,7 @@ (define_insn "sse2_movsd_<mode>"
(if_then_else
(eq_attr "alternative" "5")
(const_string "sselog")
- (const_string "ssemov")))
+ (const_string "ssemov2")))
(set (attr "prefix_data16")
(if_then_else
(and (eq_attr "alternative" "2,4")
@@ -14859,7 +14861,7 @@ (define_insn "vec_concatv2df"
(if_then_else
(eq_attr "alternative" "0,1,2")
(const_string "sselog")
- (const_string "ssemov")))
+ (const_string "ssemov2")))
(set (attr "prefix_data16")
(if_then_else (eq_attr "alternative" "3")
(const_string "1")
@@ -21545,7 +21547,7 @@ (define_insn "*vec_concat<mode>"
movhps\t{%2, %0|%0, %q2}
vmovhps\t{%2, %1, %0|%0, %1, %q2}"
[(set_attr "isa" "sse2_noavx,avx,noavx,noavx,avx")
- (set_attr "type" "sselog,sselog,ssemov,ssemov,ssemov")
+ (set_attr "type" "sselog,sselog,ssemov,ssemov2,ssemov2")
(set_attr "prefix" "orig,maybe_evex,orig,orig,maybe_evex")
(set_attr "mode" "TI,TI,V4SF,V2SF,V2SF")])
@@ -21653,7 +21655,7 @@ (define_insn "vec_concatv2di"
(if_then_else
(eq_attr "alternative" "0,1,2,3,4,5")
(const_string "sselog")
- (const_string "ssemov")))
+ (const_string "ssemov2")))
(set (attr "addr")
(if_then_else (eq_attr "alternative" "0,1")
(const_string "gpr16")
--
2.31.1