https://gcc.gnu.org/g:130edabae09e18064e0bdcb12656e4f4f9a51ff3

commit r13-8927-g130edabae09e18064e0bdcb12656e4f4f9a51ff3
Author: Stefan Schulze Frielinghaus <stefa...@gcc.gnu.org>
Date:   Sat Jul 20 16:05:41 2024 +0200

    s390: Fix unresolved iterators bhfgq and xdee
    
    Code attribute bhfgq is missing a mapping for TF.  This results in
    unresolved iterators in assembler templates for *bswaptf.
    
    With the TF mapping added the base mnemonics vlbr and vstbr are not
    "used" anymore but only the extended mnemonics (vlbr<bhfgq> was
    interpreted as vlbr; likewise for vstbr).  Therefore, remove the base
    mnemonics from the scheduling description, otherwise, genattrtab would
    error about unknown mnemonics.
    
    Likewise, for movtf_vr only the extended mnemonics for vrepi are used,
    now, which means the base mnemonic is "unused" and has to be removed
    from the scheduling description.
    
    Similarly, we end up with unresolved iterators in assembler templates
    for mulfprx23 since code attribute xdee is missing a mapping for FPRX2.
    
    Note, this is basically a cherry pick of commit r15-2060-ga4abda934aa426
    with the addition that vrepi is removed from the scheduling description,
    too.
    
    gcc/ChangeLog:
    
            * config/s390/3931.md (vlbr, vstbr, vrepi): Remove.
            * config/s390/s390.md (xdee): Add FPRX2 mapping.
            * config/s390/vector.md (bhfgq): Add TF mapping.

Diff:
---
 gcc/config/s390/3931.md   | 7 -------
 gcc/config/s390/s390.md   | 2 +-
 gcc/config/s390/vector.md | 2 +-
 3 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/gcc/config/s390/3931.md b/gcc/config/s390/3931.md
index bed1f6c21f1f..9cb11b72bba3 100644
--- a/gcc/config/s390/3931.md
+++ b/gcc/config/s390/3931.md
@@ -404,7 +404,6 @@ vlvgg,
 vlvgh,
 vlvgp,
 vst,
-vstbr,
 vstbrf,
 vstbrg,
 vstbrh,
@@ -627,7 +626,6 @@ tm,
 tmy,
 vl,
 vlbb,
-vlbr,
 vlbrf,
 vlbrg,
 vlbrh,
@@ -661,7 +659,6 @@ vlreph,
 vlrl,
 vlrlr,
 vst,
-vstbr,
 vstbrf,
 vstbrg,
 vstbrh,
@@ -1077,7 +1074,6 @@ vrepb,
 vrepf,
 vrepg,
 vreph,
-vrepi,
 vrepib,
 vrepif,
 vrepig,
@@ -1930,7 +1926,6 @@ vrepb,
 vrepf,
 vrepg,
 vreph,
-vrepi,
 vrepib,
 vrepif,
 vrepig,
@@ -2156,7 +2151,6 @@ vistrfs,
 vistrhs,
 vl,
 vlbb,
-vlbr,
 vlbrf,
 vlbrg,
 vlbrh,
@@ -2248,7 +2242,6 @@ tbegin,
 tbeginc,
 tend,
 vst,
-vstbr,
 vstbrf,
 vstbrg,
 vstbrh,
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 50a828f2bbba..8edc1261c381 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -744,7 +744,7 @@
 ;; In FP templates, a <dee> in "m<dee><bt>r" will expand to "mx<bt>r" in
 ;; TF/TDmode, "md<bt>r" in DF/DDmode, "mee<bt>r" in SFmode and "me<bt>r in
 ;; SDmode.
-(define_mode_attr xdee [(TF "x") (DF "d") (SF "ee") (TD "x") (DD "d") (SD 
"e")])
+(define_mode_attr xdee [(TF "x") (FPRX2 "x") (DF "d") (SF "ee") (TD "x") (DD 
"d") (SD "e")])
 
 ;; The decimal floating point variants of add, sub, div and mul support 3
 ;; fp register operands.  The following attributes allow to merge the bfp and
diff --git a/gcc/config/s390/vector.md b/gcc/config/s390/vector.md
index 1bae1056951c..f88e8b655fa8 100644
--- a/gcc/config/s390/vector.md
+++ b/gcc/config/s390/vector.md
@@ -134,7 +134,7 @@
                        (V1TI "q") (TI "q")
                        (V1SF "f") (V2SF "f") (V4SF "f")
                        (V1DF "g") (V2DF "g")
-                       (V1TF "q")])
+                       (V1TF "q") (TF "q")])
 
 ; This is for vmalhw. It gets an 'w' attached to avoid confusion with
 ; multiply and add logical high vmalh.

Reply via email to