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; })
