https://gcc.gnu.org/g:724dbdad0d23e2d460ca49aea3be5673e7ad80d1
commit r13-9201-g724dbdad0d23e2d460ca49aea3be5673e7ad80d1 Author: Uros Bizjak <ubiz...@gmail.com> Date: Mon Nov 18 22:38:46 2024 +0100 i386: Enable *rsqrtsf2_sse without TARGET_SSE_MATH [PR117357] __builtin_ia32_rsqrtsf2 expander generates UNSPEC_RSQRT insn pattern also when TARGET_SSE_MATH is not set. Enable *rsqrtsf2_sse without TARGET_SSE_MATH to avoid ICE with unrecognizable insn. PR target/117357 gcc/ChangeLog: * config/i386/i386.md (*rsqrtsf2_sse): Also enable for !TARGET_SSE_MATH. gcc/testsuite/ChangeLog: * gcc.target/i386/pr117357.c: New test. (cherry picked from commit 344356f781ddb7bf0abb11edf9bdd13f6802dea8) Diff: --- gcc/config/i386/i386.md | 2 +- gcc/testsuite/gcc.target/i386/pr117357.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index ccff90209c11..c78cfca88148 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -19371,7 +19371,7 @@ [(set (match_operand:SF 0 "register_operand" "=x,x,x") (unspec:SF [(match_operand:SF 1 "nonimmediate_operand" "0,x,m")] UNSPEC_RSQRT))] - "TARGET_SSE && TARGET_SSE_MATH" + "TARGET_SSE" "@ %vrsqrtss\t{%d1, %0|%0, %d1} %vrsqrtss\t{%d1, %0|%0, %d1} diff --git a/gcc/testsuite/gcc.target/i386/pr117357.c b/gcc/testsuite/gcc.target/i386/pr117357.c new file mode 100644 index 000000000000..7a27691a9776 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr117357.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-options "-msse -mfpmath=387" } */ + +float foo (float f) +{ + return __builtin_ia32_rsqrtf (f); +}