On 11/9/23 09:24, Stefan Schulze Frielinghaus wrote: > 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. > > Bootstrapped and regtested on s390. Ok for mainline? > > 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.
Ok, thanks! Andreas