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);
+}

Reply via email to