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

Reply via email to