tree-vect-stmts.c (vectorizable_operation): Check both VEC_WIDEN_MULT_LO_EXPR and VEC_WIDEN_MULT_HI_EXPR optabs.
* tree-vect-stmts.c (vectorizable_operation): Check both VEC_WIDEN_MULT_LO_EXPR and VEC_WIDEN_MULT_HI_EXPR optabs. Verify that operand[0]'s mode is TYPE_MODE (wide_vectype). From-SVN: r189064
This commit is contained in:
parent
90686faa40
commit
2b5bb7da8f
|
@ -1,3 +1,9 @@
|
||||||
|
2012-06-29 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* tree-vect-stmts.c (vectorizable_operation): Check both
|
||||||
|
VEC_WIDEN_MULT_LO_EXPR and VEC_WIDEN_MULT_HI_EXPR optabs.
|
||||||
|
Verify that operand[0]'s mode is TYPE_MODE (wide_vectype).
|
||||||
|
|
||||||
2012-06-28 Richard Henderson <rth@redhat.com>
|
2012-06-28 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
* doc/generic.texi (MULT_HIGHPART_EXPR): Document it.
|
* doc/generic.texi (MULT_HIGHPART_EXPR): Document it.
|
||||||
|
|
|
@ -3504,14 +3504,19 @@ vectorizable_operation (gimple stmt, gimple_stmt_iterator *gsi,
|
||||||
{
|
{
|
||||||
decl1 = NULL_TREE;
|
decl1 = NULL_TREE;
|
||||||
decl2 = NULL_TREE;
|
decl2 = NULL_TREE;
|
||||||
optab = optab_for_tree_code (VEC_WIDEN_MULT_HI_EXPR,
|
optab = optab_for_tree_code (VEC_WIDEN_MULT_LO_EXPR,
|
||||||
vectype, optab_default);
|
vectype, optab_default);
|
||||||
optab2 = optab_for_tree_code (VEC_WIDEN_MULT_HI_EXPR,
|
optab2 = optab_for_tree_code (VEC_WIDEN_MULT_HI_EXPR,
|
||||||
vectype, optab_default);
|
vectype, optab_default);
|
||||||
if (optab != NULL
|
if (optab != NULL
|
||||||
&& optab2 != NULL
|
&& optab2 != NULL
|
||||||
&& optab_handler (optab, vec_mode) != CODE_FOR_nothing
|
&& optab_handler (optab, vec_mode) != CODE_FOR_nothing
|
||||||
&& optab_handler (optab2, vec_mode) != CODE_FOR_nothing)
|
&& optab_handler (optab2, vec_mode) != CODE_FOR_nothing
|
||||||
|
&& insn_data[optab_handler (optab, vec_mode)].operand[0].mode
|
||||||
|
== TYPE_MODE (wide_vectype)
|
||||||
|
&& insn_data[optab_handler (optab2,
|
||||||
|
vec_mode)].operand[0].mode
|
||||||
|
== TYPE_MODE (wide_vectype))
|
||||||
{
|
{
|
||||||
for (i = 0; i < nunits_in; i++)
|
for (i = 0; i < nunits_in; i++)
|
||||||
sel[i] = !BYTES_BIG_ENDIAN + 2 * i;
|
sel[i] = !BYTES_BIG_ENDIAN + 2 * i;
|
||||||
|
|
Loading…
Reference in New Issue