https://gcc.gnu.org/g:dbdb8e58df3686b2d55af155aafdc97ccfa5f7bb

commit dbdb8e58df3686b2d55af155aafdc97ccfa5f7bb
Author: Andrew Stubbs <[email protected]>
Date:   Thu Sep 24 12:55:42 2026 +0000

    amdgcn: Fix 64-bit vector multiply
    
    Fix an old maths bug with DImode vector multiply.
    
    Backport from mainline.
    
    gcc/ChangeLog:
    
            * config/gcn/gcn-valu.md (mul<mode>3): Remove erroneous hi*hi step.
            (mul<mode>3_dup): Likewise.
            (mul<mode>3_exec): Likewise.
            (mul<mode>3_dup_exec): Likewise.
    
    (cherry picked from commit 0a1f6acb90e27ac0b2984ad6841186ca54bc5725)

Diff:
---
 gcc/config/gcn/gcn-valu.md | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/gcc/config/gcn/gcn-valu.md b/gcc/config/gcn/gcn-valu.md
index 6a2f0cb923e8..b83ff7e39041 100644
--- a/gcc/config/gcn/gcn-valu.md
+++ b/gcc/config/gcn/gcn-valu.md
@@ -2307,8 +2307,6 @@
     emit_insn (gen_add<vnsi>3 (out_hi, out_hi, tmp));
     emit_insn (gen_mul<vnsi>3 (tmp, left_lo, right_hi));
     emit_insn (gen_add<vnsi>3 (out_hi, out_hi, tmp));
-    emit_insn (gen_mul<vnsi>3 (tmp, left_hi, right_hi));
-    emit_insn (gen_add<vnsi>3 (out_hi, out_hi, tmp));
     DONE;
   })
 
@@ -2338,8 +2336,6 @@
     emit_insn (gen_add<vnsi>3 (out_hi, out_hi, tmp));
     emit_insn (gen_mul<vnsi>3_dup (tmp, left_lo, right_hi));
     emit_insn (gen_add<vnsi>3 (out_hi, out_hi, tmp));
-    emit_insn (gen_mul<vnsi>3_dup (tmp, left_hi, right_hi));
-    emit_insn (gen_add<vnsi>3 (out_hi, out_hi, tmp));
     DONE;
   })
 
@@ -2386,8 +2382,6 @@
     emit_insn (gen_add<vnsi>3_exec (out_hi, out_hi, tmp, out_hi, exec));
     emit_insn (gen_mul<vnsi>3_exec (tmp, left_lo, right_hi, undef, exec));
     emit_insn (gen_add<vnsi>3_exec (out_hi, out_hi, tmp, out_hi, exec));
-    emit_insn (gen_mul<vnsi>3_exec (tmp, left_hi, right_hi, undef, exec));
-    emit_insn (gen_add<vnsi>3_exec (out_hi, out_hi, tmp, out_hi, exec));
     DONE;
   })
 
@@ -2436,8 +2430,6 @@
     emit_insn (gen_add<vnsi>3_exec (out_hi, out_hi, tmp, out_hi, exec));
     emit_insn (gen_mul<vnsi>3_dup_exec (tmp, left_lo, right_hi, undef, exec));
     emit_insn (gen_add<vnsi>3_exec (out_hi, out_hi, tmp, out_hi, exec));
-    emit_insn (gen_mul<vnsi>3_dup_exec (tmp, left_hi, right_hi, undef, exec));
-    emit_insn (gen_add<vnsi>3_exec (out_hi, out_hi, tmp, out_hi, exec));
     DONE;
   })

Reply via email to