diff options
author | Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> | 2023-11-09 09:30:45 +0100 |
---|---|---|
committer | Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> | 2023-11-09 09:30:45 +0100 |
commit | fa4dde85af5f08baed60bbb3f8455733edae6afb (patch) | |
tree | 317d1e8f9a29d32c8130891a78c3de967c57db79 /gcc/tree-vect-generic.cc | |
parent | f172b9d38db426d2b102c0f9c1fd58672acc6c9b (diff) | |
download | gcc-fa4dde85af5f08baed60bbb3f8455733edae6afb.zip gcc-fa4dde85af5f08baed60bbb3f8455733edae6afb.tar.gz gcc-fa4dde85af5f08baed60bbb3f8455733edae6afb.tar.bz2 |
s390: Reduce number of patterns where the condition is false anyway
For patterns which make use of two modes, do not build the cross product
and then exclude illegal combinations via conditions but rather do not
create those in the first place. Here we are following the idea of the
attribute TOINTVEC/tointvec and introduce TOINT/toint.
gcc/ChangeLog:
* config/s390/s390.md (VX_CONV_INT): Remove iterator.
(gf): Add float mappings.
(TOINT, toint): New attribute.
(*fixuns_trunc<VX_CONV_BFP:mode><VX_CONV_INT:mode>2_z13):
Remove.
(*fixuns_trunc<mode><toint>2_z13): Add.
(*fix_trunc<VX_CONV_BFP:mode><VX_CONV_INT:mode>2_bfp_z13):
Remove.
(*fix_trunc<mode><toint>2_bfp_z13): Add.
(*floatuns<VX_CONV_INT:mode><VX_CONV_BFP:mode>2_z13): Remove.
(*floatuns<toint><mode>2_z13): Add.
* config/s390/vector.md (VX_VEC_CONV_INT): Remove iterator.
(float<VX_VEC_CONV_INT:mode><VX_VEC_CONV_BFP:mode>2): Remove.
(float<tointvec><mode>2): Add.
(floatuns<VX_VEC_CONV_INT:mode><VX_VEC_CONV_BFP:mode>2): Remove.
(floatuns<tointvec><mode>2): Add.
(fix_trunc<VX_VEC_CONV_BFP:mode><VX_VEC_CONV_INT:mode>2):
Remove.
(fix_trunc<mode><tointvec>2): Add.
(fixuns_trunc<VX_VEC_CONV_BFP:mode><VX_VEC_CONV_INT:mode>2):
Remove.
(fixuns_trunc<VX_VEC_CONV_BFP:mode><tointvec>2): Add.
Diffstat (limited to 'gcc/tree-vect-generic.cc')
0 files changed, 0 insertions, 0 deletions