Commit 2eed94cb by Richard Biener

tree-optimization/95487 - use a truth type for scatter masks

This makes sure to get a truth type for scatter masks even when they
are invariant.

2020-06-03  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/95487
	* tree-vect-stmts.c (vectorizable_store): Use a truth type
	for the scatter mask.

	* g++.dg/vect/pr95487.cc: New testcase.
parent 7e64ef0d
// { dg-do compile }
// { dg-additional-options "-O3" }
// { dg-additional-options "-march=skylake-avx512" { target x86_64-*-* i?86-*-* } }
int a;
bool d;
char e;
extern short f[];
extern int g[];
short j;
void h() {
for (short b = j; b < 0; b += 2) {
f[b] = 0;
if (d) {
for (char c = 0; c < a; c += 3)
e = 0;
g[b] = 0;
}
}
}
......@@ -7643,8 +7643,12 @@ vectorizable_store (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
op = vec_oprnd0 = vect_get_vec_def_for_operand (gs_info.offset,
stmt_info);
if (mask)
mask_op = vec_mask = vect_get_vec_def_for_operand (mask,
stmt_info);
{
tree mask_vectype = truth_type_for (vectype);
mask_op = vec_mask
= vect_get_vec_def_for_operand (mask,
stmt_info, mask_vectype);
}
}
else if (modifier != NONE && (j & 1))
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment