aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorliuhongt <hongtao.liu@intel.com>2023-07-03 18:19:19 +0800
committerliuhongt <hongtao.liu@intel.com>2023-07-10 09:06:24 +0800
commitd41a57c46df6f8f7dae0c0a8b349e734806a837b (patch)
treeed9ee22f29d6bef05e99bc4e64a63a820132d982 /libgcc
parent361a6fc4bc5d3073e8e19fba0af51380720e677a (diff)
downloadgcc-d41a57c46df6f8f7dae0c0a8b349e734806a837b.zip
gcc-d41a57c46df6f8f7dae0c0a8b349e734806a837b.tar.gz
gcc-d41a57c46df6f8f7dae0c0a8b349e734806a837b.tar.bz2
Add pre_reload splitter to detect fp min/max pattern.
We have ix86_expand_sse_fp_minmax to detect min/max sematics, but it requires rtx_equal_p for cmp_op0/cmp_op1 and if_true/if_false, for the testcase in the PR, there's an extra move from cmp_op0 to if_true, and it failed ix86_expand_sse_fp_minmax. This patch adds pre_reload splitter to detect the min/max pattern. Operands order in MINSS matters for signed zero and NANs, since the instruction always returns second operand when any operand is NAN or both operands are zero. gcc/ChangeLog: PR target/110170 * config/i386/i386.md (*ieee_max<mode>3_1): New pre_reload splitter to detect fp max pattern. (*ieee_min<mode>3_1): Ditto, but for fp min pattern. gcc/testsuite/ChangeLog: * g++.target/i386/pr110170.C: New test. * gcc.target/i386/pr110170.c: New test.
Diffstat (limited to 'libgcc')
0 files changed, 0 insertions, 0 deletions