tree-optimization/103641 - improve vect_synth_mult_by_constant
The following happens to improve compile-time of the PR103641 testcase on aarch64 significantly. I did not investigate the effect on the generated code but at least in theory choose_mult_variant should do a better job when we tell it the actual mode we are going to use for the operations it synthesizes. 2022-02-04 Richard Biener <rguenther@suse.de> PR tree-optimization/103641 * tree-vect-patterns.cc (vect_synth_mult_by_constant): Pass the vector mode to choose_mult_variant.
This commit is contained in:
parent
49365d511a
commit
876e70d468
@ -3041,6 +3041,9 @@ vect_synth_mult_by_constant (vec_info *vinfo, tree op, tree val,
|
||||
bool cast_to_unsigned_p = !TYPE_OVERFLOW_WRAPS (itype);
|
||||
|
||||
tree multtype = cast_to_unsigned_p ? unsigned_type_for (itype) : itype;
|
||||
tree vectype = get_vectype_for_scalar_type (vinfo, multtype);
|
||||
if (!vectype)
|
||||
return NULL;
|
||||
|
||||
/* Targets that don't support vector shifts but support vector additions
|
||||
can synthesize shifts that way. */
|
||||
@ -3050,16 +3053,13 @@ vect_synth_mult_by_constant (vec_info *vinfo, tree op, tree val,
|
||||
/* Use MAX_COST here as we don't want to limit the sequence on rtx costs.
|
||||
The vectorizer's benefit analysis will decide whether it's beneficial
|
||||
to do this. */
|
||||
bool possible = choose_mult_variant (mode, hwval, &alg,
|
||||
&variant, MAX_COST);
|
||||
bool possible = choose_mult_variant (VECTOR_MODE_P (TYPE_MODE (vectype))
|
||||
? TYPE_MODE (vectype) : mode,
|
||||
hwval, &alg, &variant, MAX_COST);
|
||||
if (!possible)
|
||||
return NULL;
|
||||
|
||||
tree vectype = get_vectype_for_scalar_type (vinfo, multtype);
|
||||
|
||||
if (!vectype
|
||||
|| !target_supports_mult_synth_alg (&alg, variant,
|
||||
vectype, synth_shift_p))
|
||||
if (!target_supports_mult_synth_alg (&alg, variant, vectype, synth_shift_p))
|
||||
return NULL;
|
||||
|
||||
tree accumulator;
|
||||
|
Loading…
Reference in New Issue
Block a user