* [PATCH] Fixup PR78396 fix
@ 2016-11-24 12:50 Richard Biener
0 siblings, 0 replies; only message in thread
From: Richard Biener @ 2016-11-24 12:50 UTC (permalink / raw)
To: gcc-patches
I noticed a few failing SPEC benchs on a AVX2 machine which is because
when now doing BB vectorization on a failed-to-vectorize if-converted
loop body we can end up with unvectorized masked loads/stores. As
BB vectorization does not handle masked loads/stores at all the following
patch simply avoids doing BB vectorization.
Bootstrap / regtest in progress.
I'll try to isolate a testcase later.
Richard.
2016-11-24 Richard Biener <rguenther@suse.de>
PR tree-optimization/78396
* tree-vectorizer.c (vectorize_loops): When the if-converted
body contains masked loads or stores do not attempt to
basic-block-vectorize it.
Index: gcc/tree-vectorizer.c
===================================================================
--- gcc/tree-vectorizer.c (revision 242834)
+++ gcc/tree-vectorizer.c (working copy)
@@ -570,14 +570,22 @@ vectorize_epilogue:
&& ! loop->inner)
{
basic_block bb = loop->header;
+ bool has_mask_load_store = false;
for (gimple_stmt_iterator gsi = gsi_start_bb (bb);
!gsi_end_p (gsi); gsi_next (&gsi))
{
gimple *stmt = gsi_stmt (gsi);
+ if (gimple_call_internal_p (stmt)
+ && (gimple_call_internal_fn (stmt) == IFN_MASK_LOAD
+ || gimple_call_internal_fn (stmt) == IFN_MASK_STORE))
+ {
+ has_mask_load_store = true;
+ break;
+ }
gimple_set_uid (stmt, -1);
gimple_set_visited (stmt, false);
}
- if (vect_slp_bb (bb))
+ if (! has_mask_load_store && vect_slp_bb (bb))
{
dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location,
"basic block vectorized\n");
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2016-11-24 12:50 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-24 12:50 [PATCH] Fixup PR78396 fix Richard Biener
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).