diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2024-12-30 12:50:54 +0000 |
---|---|---|
committer | Richard Sandiford <richard.sandiford@arm.com> | 2024-12-30 12:50:54 +0000 |
commit | a7d974136239adf62010f56fc0ad26a88928af46 (patch) | |
tree | 98220500daa502b6078f4acfc3a6c5022ce18a25 /gcc/tree-ssa-loop-prefetch.cc | |
parent | c86e1c54c6f8771d08a8c070717b80607f990f8a (diff) | |
download | gcc-a7d974136239adf62010f56fc0ad26a88928af46.zip gcc-a7d974136239adf62010f56fc0ad26a88928af46.tar.gz gcc-a7d974136239adf62010f56fc0ad26a88928af46.tar.bz2 |
Don't include subst attributes in "@" md helpers
In a later patch, I need to add "@" to a pattern that uses subst
attributes. This combination is problematic for two reasons:
(1) define_substs are applied and filtered at a later stage than the
handling of "@" patterns, so that the handling of "@" patterns
doesn't know which subst variants are valid and which will later be
dropped. Just adding a "@" therefore triggers a build error due to
references to non-existent patterns.
(2) Currently, the code will treat a single "@" pattern as contributing
to a single set of overloaded functions. These overloaded functions
will have an integer argument for every subst attribute. For example,
the vczle and vczbe in:
"@aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>"
are subst attributes, and so currently we'd try to generate a
single set of overloads that take four arguments: one for rev_op,
one for the mode, one for vczle, and one for vczbe. The gen_*
and maybe_gen_* functions will also have one rtx argument for
each operand in the original pattern.
This model doesn't really make sense for define_substs, since
define_substs are allowed to add extra operands to an instruction.
The number of rtx operands to the generators would then be
incorrect.
I think a more sensible way of handling define_substs would be to
apply them first (and thus expand things like <vczle> and <vczbe>
above) and then apply "@". However, that's a relatively invasive
change and not suitable for stage 3.
This patch instead skips over subst attributes and restricts "@"
overload handling to the cases where no define_subst is applied.
I looked through all uses of "@" names in target code and there
seemed to be only one current use of "@" with define_substs,
in x86 vector code. The current behaviour seemed to be unwanted there,
and the x86 code was having to work around it.
gcc/
* read-rtl.cc (md_reader::handle_overloaded_name): Don't add
arguments for uses of subst attributes.
(apply_iterators): Only add instructions to an overloaded helper
if they use the default subst iterator values.
* doc/md.texi: Update documentation accordingly.
* config/i386/i386-expand.cc (expand_vec_perm_broadcast_1): Update
accordingly.
Diffstat (limited to 'gcc/tree-ssa-loop-prefetch.cc')
0 files changed, 0 insertions, 0 deletions