https://gcc.gnu.org/g:0a1f6acb90e27ac0b2984ad6841186ca54bc5725
commit r17-4646-g0a1f6acb90e27ac0b2984ad6841186ca54bc5725 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. 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. 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 32021d263cc9..881f262f62fa 100644 --- a/gcc/config/gcn/gcn-valu.md +++ b/gcc/config/gcn/gcn-valu.md @@ -2320,8 +2320,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; }) @@ -2351,8 +2349,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; }) @@ -2399,8 +2395,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; }) @@ -2449,8 +2443,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; })
