i386: Handle V4HI and V2SImode in ix86_widen_mult_cost [PR109807]
Checks
Commit Message
Do not crash when asking ix86_widen_mult_cost for the cost of
a widening mul operation to V4HI or V2SImode.
gcc/ChangeLog:
PR target/109807
* config/i386/i386.cc (ix86_widen_mult_cost):
Handle V4HImode and V2SImode.
gcc/testsuite/ChangeLog:
PR target/109807
* gcc.target/i386/pr109807.c: New test.
Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.
Pushed to master.
Uros.
@@ -20417,12 +20417,14 @@ ix86_widen_mult_cost (const struct processor_costs *cost,
int basic_cost = 0;
switch (mode)
{
+ case V4HImode:
case V8HImode:
case V16HImode:
if (!uns_p || mode == V16HImode)
extra_cost = cost->sse_op * 2;
basic_cost = cost->mulss * 2 + cost->sse_op * 4;
break;
+ case V2SImode:
case V4SImode:
case V8SImode:
/* pmulhw/pmullw can be used. */
new file mode 100644
@@ -0,0 +1,4 @@
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-O2 -msse4" } */
+
+#include "sse2-mmx-pmaddwd.c"