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.
---
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 32021d263cc..881f262f62f 100644
--- a/gcc/config/gcn/gcn-valu.md
+++ b/gcc/config/gcn/gcn-valu.md
@@ -2320,8 +2320,6 @@ (define_insn_and_split "mul<mode>3"
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 @@ (define_insn_and_split "mul<mode>3_dup"
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 @@ (define_insn_and_split "mul<mode>3_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_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 @@ (define_insn_and_split "mul<mode>3_dup_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_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;
})
--
2.54.0