[Bug target/104401] [x86] Failure to recognize min/max pattern using pcmp+pblendv
crazylht at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Feb 7 06:51:27 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104401
--- Comment #2 from Hongtao.liu <crazylht at gmail dot com> ---
(In reply to Andrew Pinski from comment #1)
> (set (reg:V16QI 93)
> (unspec:V16QI [
> (subreg:V16QI (reg/v:V2DI 92 [ input ]) 0)
> (subreg:V16QI (reg/v:V2DI 91 [ value ]) 0)
> (subreg:V16QI (gt:V4SI (subreg:V4SI (reg/v:V2DI 92 [ input ]) 0)
> (subreg:V4SI (reg/v:V2DI 91 [ value ]) 0)) 0)
> ] UNSPEC_BLENDV))
>
> blend uses unspec which makes this a little harder
I think it could be done in gimple level.
18 _10 = VIEW_CONVERT_EXPR<vector(4) int>(value_2(D));
19 _11 = VIEW_CONVERT_EXPR<vector(4) int>(input_3(D));
20 _12 = _10 < _11;
21 _13 = VIEW_CONVERT_EXPR<vector(4) int>(_12);
22 _5 = VIEW_CONVERT_EXPR<vector(16) char>(_13);
23 _4 = VIEW_CONVERT_EXPR<vector(16) char>(value_2(D));
24 _6 = VIEW_CONVERT_EXPR<vector(16) char>(input_3(D));
25 _8 = .VCOND (_5, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, _4,
_6, 108);
26 _9 = VIEW_CONVERT_EXPR<__m128i>(_8);
More information about the Gcc-bugs
mailing list