2014-01-13 Jakub Jelinek <jakub@redhat.com>
+ PR target/59617
+ * config/i386/i386.c (ix86_vectorize_builtin_gather): Uncomment
+ AVX512F gather builtins.
+ * tree-vect-stmts.c (vectorizable_mask_load_store): For now punt
+ on gather decls with INTEGER_TYPE masktype.
+ (vectorizable_load): For INTEGER_TYPE masktype, put the INTEGER_CST
+ directly into the builtin rather than hoisting it before loop.
+
PR tree-optimization/59387
* tree-scalar-evolution.c: Include gimple-fold.h and gimplify-me.h.
(scev_const_prop): If folded_casts and type has undefined overflow,
"gather index use not simple.");
return false;
}
+
+ tree arglist = TYPE_ARG_TYPES (TREE_TYPE (gather_decl));
+ tree masktype
+ = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (arglist))));
+ if (TREE_CODE (masktype) == INTEGER_TYPE)
+ {
+ if (dump_enabled_p ())
+ dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+ "masked gather with integer mask not supported.");
+ return false;
+ }
}
else if (tree_int_cst_compare (nested_in_vect_loop
? STMT_VINFO_DR_STEP (stmt_info)
{
mask = build_int_cst (TREE_TYPE (masktype), -1);
mask = build_vector_from_val (masktype, mask);
+ mask = vect_init_vector (stmt, mask, masktype, NULL);
}
else if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (masktype)))
{
real_from_target (&r, tmp, TYPE_MODE (TREE_TYPE (masktype)));
mask = build_real (TREE_TYPE (masktype), r);
mask = build_vector_from_val (masktype, mask);
+ mask = vect_init_vector (stmt, mask, masktype, NULL);
}
else
gcc_unreachable ();
- mask = vect_init_vector (stmt, mask, masktype, NULL);
scale = build_int_cst (scaletype, gather_scale);