https://gcc.gnu.org/g:9f2f108a8a68c7b7b2de5350439a8ab8e17a54da

commit r15-4245-g9f2f108a8a68c7b7b2de5350439a8ab8e17a54da
Author: Hu, Lin1 <lin1...@intel.com>
Date:   Wed Oct 9 10:20:05 2024 +0800

    i386: Fix some patterns's mem attribute.
    
    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.

Diff:
---
 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 ccef3e063eca..a45b50ad7324 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -10995,7 +10995,7 @@
    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 @@
    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 @@
    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 @@
    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 @@
    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 @@
    #
    #"
   [(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 @@
              (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 @@
      (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 @@
      (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 @@
    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 @@
      (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")

Reply via email to