[llvm] [KnownFPClass] Propagate sign information through atan (PR #229902)

Youssef W. Abdallah via llvm-commits llvm-commits at lists.llvm.org
Sat Oct 10 13:36:34 PDT 2026


https://github.com/Wael-06 updated https://github.com/llvm/llvm-project/pull/229902

>From e180f91dc86acfe475983c6cef62a864a3eb00d7 Mon Sep 17 00:00:00 2001
From: Youssef Wael <youssefwael.work at gmail.com>
Date: Wed, 7 Oct 2026 23:22:39 +0300
Subject: [PATCH 1/4] [KnownFPClass] Propagate sign information through atan

---
 llvm/lib/Support/KnownFPClass.cpp             | 16 +++++--
 .../Transforms/Attributor/nofpclass-trig.ll   | 45 ++++++++++++++-----
 2 files changed, 46 insertions(+), 15 deletions(-)

diff --git a/llvm/lib/Support/KnownFPClass.cpp b/llvm/lib/Support/KnownFPClass.cpp
index 4a91675450be2..97110a0fcd870 100644
--- a/llvm/lib/Support/KnownFPClass.cpp
+++ b/llvm/lib/Support/KnownFPClass.cpp
@@ -950,9 +950,19 @@ KnownFPClass KnownFPClass::atan(const KnownFPClass &KnownSrc) {
   // atan is bounded to (-pi/2, pi/2), never Inf. atan(+-Inf) = +-pi/2 (finite).
   Known.knownNot(fcInf);
 
-  // atan is sign-preserving: atan(x) < 0 iff x < 0.
-  if (KnownSrc.isKnownNever(fcNegative))
-    Known.knownNot(fcNegative);
+  // For non-zero numeric inputs, atan preserves the sign.
+  if (KnownSrc.isKnownNever(fcNegSubnormal | fcNegNormal | fcNegInf))
+    Known.knownNot(fcNegSubnormal | fcNegNormal);
+
+  if (KnownSrc.isKnownNever(fcPosSubnormal | fcPosNormal | fcPosInf))
+    Known.knownNot(fcPosSubnormal | fcPosNormal);
+
+  // atan(-0.0) = -0.0 and atan(+0.0) = +0.0.
+  if (KnownSrc.isKnownNever(fcNegZero))
+    Known.knownNot(fcNegZero);
+
+  if (KnownSrc.isKnownNever(fcPosZero))
+    Known.knownNot(fcPosZero);
 
   Known.propagateNonNaN(KnownSrc);
 
diff --git a/llvm/test/Transforms/Attributor/nofpclass-trig.ll b/llvm/test/Transforms/Attributor/nofpclass-trig.ll
index e2e2196092dea..475277435b3ff 100644
--- a/llvm/test/Transforms/Attributor/nofpclass-trig.ll
+++ b/llvm/test/Transforms/Attributor/nofpclass-trig.ll
@@ -418,6 +418,27 @@ define float @ret_atan_nonneg(float nofpclass(ninf nzero nsub nnorm) %arg) {
   ret float %call
 }
 
+; atan preserves the sign of non-zero finite inputs.
+define float @ret_atan_no_negative_nonzero(float nofpclass(ninf nsub nnorm) %arg) {
+; CHECK-LABEL: define nofpclass(inf nsub nnorm) float @ret_atan_no_negative_nonzero
+; CHECK-SAME: (float nofpclass(ninf nsub nnorm) [[ARG:%.*]]) #[[ATTR1]] {
+; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(inf nsub nnorm) float @llvm.atan.f32(float nofpclass(ninf nsub nnorm) [[ARG]]) #[[ATTR4]]
+; CHECK-NEXT:    ret float [[CALL]]
+;
+  %call = call float @llvm.atan.f32(float %arg)
+  ret float %call
+}
+
+define float @ret_atan_no_positive_nonzero(float nofpclass(pinf psub pnorm) %arg) {
+; CHECK-LABEL: define nofpclass(inf psub pnorm) float @ret_atan_no_positive_nonzero
+; CHECK-SAME: (float nofpclass(pinf psub pnorm) [[ARG:%.*]]) #[[ATTR1]] {
+; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(inf psub pnorm) float @llvm.atan.f32(float nofpclass(pinf psub pnorm) [[ARG]]) #[[ATTR4]]
+; CHECK-NEXT:    ret float [[CALL]]
+;
+  %call = call float @llvm.atan.f32(float %arg)
+  ret float %call
+}
+
 define float @ret_atan_nonan(float nofpclass(nan) %arg) {
 ; CHECK-LABEL: define nofpclass(nan inf) float @ret_atan_nonan
 ; CHECK-SAME: (float nofpclass(nan) [[ARG:%.*]]) #[[ATTR1]] {
@@ -440,9 +461,9 @@ define float @ret_tan_nosnan(float nofpclass(snan) %arg) {
 }
 
 define float @ret_atan_negnormal_negsubnormal_mode_dynamic_dynamic(float nofpclass(nan inf zero psub pnorm) %arg) #0 {
-; CHECK-LABEL: define nofpclass(nan inf) float @ret_atan_negnormal_negsubnormal_mode_dynamic_dynamic
+; CHECK-LABEL: define nofpclass(nan inf zero psub pnorm) float @ret_atan_negnormal_negsubnormal_mode_dynamic_dynamic
 ; CHECK-SAME: (float nofpclass(nan inf zero psub pnorm) [[ARG:%.*]]) #[[ATTR2]] {
-; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf) float @llvm.atan.f32(float nofpclass(nan inf zero psub pnorm) [[ARG]]) #[[ATTR4]]
+; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf zero psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero psub pnorm) [[ARG]]) #[[ATTR4]]
 ; CHECK-NEXT:    ret float [[CALL]]
 ;
   %call = call float @llvm.atan.f32(float %arg)
@@ -450,9 +471,9 @@ define float @ret_atan_negnormal_negsubnormal_mode_dynamic_dynamic(float nofpcla
 }
 
 define float @ret_atan_negnormal_negsubnormal_mode_ftpz_dapz(float nofpclass(nan inf zero psub pnorm) %arg) #1 {
-; CHECK-LABEL: define nofpclass(nan inf) float @ret_atan_negnormal_negsubnormal_mode_ftpz_dapz
+; CHECK-LABEL: define nofpclass(nan inf zero psub pnorm) float @ret_atan_negnormal_negsubnormal_mode_ftpz_dapz
 ; CHECK-SAME: (float nofpclass(nan inf zero psub pnorm) [[ARG:%.*]]) #[[ATTR3]] {
-; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf) float @llvm.atan.f32(float nofpclass(nan inf zero psub pnorm) [[ARG]]) #[[ATTR4]]
+; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf zero psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero psub pnorm) [[ARG]]) #[[ATTR4]]
 ; CHECK-NEXT:    ret float [[CALL]]
 ;
   %call = call float @llvm.atan.f32(float %arg)
@@ -460,9 +481,9 @@ define float @ret_atan_negnormal_negsubnormal_mode_ftpz_dapz(float nofpclass(nan
 }
 
 define float @ret_atan_negnormal_mode_dynamic_dynamic(float nofpclass(nan inf zero sub pnorm) %arg) #0 {
-; CHECK-LABEL: define nofpclass(nan inf) float @ret_atan_negnormal_mode_dynamic_dynamic
+; CHECK-LABEL: define nofpclass(nan inf zero psub pnorm) float @ret_atan_negnormal_mode_dynamic_dynamic
 ; CHECK-SAME: (float nofpclass(nan inf zero sub pnorm) [[ARG:%.*]]) #[[ATTR2]] {
-; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf) float @llvm.atan.f32(float nofpclass(nan inf zero sub pnorm) [[ARG]]) #[[ATTR4]]
+; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf zero psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero sub pnorm) [[ARG]]) #[[ATTR4]]
 ; CHECK-NEXT:    ret float [[CALL]]
 ;
   %call = call float @llvm.atan.f32(float %arg)
@@ -470,9 +491,9 @@ define float @ret_atan_negnormal_mode_dynamic_dynamic(float nofpclass(nan inf ze
 }
 
 define float @ret_atan_negnormal_mode_ftpz_dapz(float nofpclass(nan inf zero sub pnorm) %arg) #1 {
-; CHECK-LABEL: define nofpclass(nan inf) float @ret_atan_negnormal_mode_ftpz_dapz
+; CHECK-LABEL: define nofpclass(nan inf zero psub pnorm) float @ret_atan_negnormal_mode_ftpz_dapz
 ; CHECK-SAME: (float nofpclass(nan inf zero sub pnorm) [[ARG:%.*]]) #[[ATTR3]] {
-; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf) float @llvm.atan.f32(float nofpclass(nan inf zero sub pnorm) [[ARG]]) #[[ATTR4]]
+; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf zero psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero sub pnorm) [[ARG]]) #[[ATTR4]]
 ; CHECK-NEXT:    ret float [[CALL]]
 ;
   %call = call float @llvm.atan.f32(float %arg)
@@ -480,9 +501,9 @@ define float @ret_atan_negnormal_mode_ftpz_dapz(float nofpclass(nan inf zero sub
 }
 
 define float @ret_atan_negsubnormal_mode_dynamic_dynamic(float nofpclass(nan inf zero psub norm) %arg) #0 {
-; CHECK-LABEL: define nofpclass(nan inf) float @ret_atan_negsubnormal_mode_dynamic_dynamic
+; CHECK-LABEL: define nofpclass(nan inf zero psub pnorm) float @ret_atan_negsubnormal_mode_dynamic_dynamic
 ; CHECK-SAME: (float nofpclass(nan inf zero psub norm) [[ARG:%.*]]) #[[ATTR2]] {
-; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf) float @llvm.atan.f32(float nofpclass(nan inf zero psub norm) [[ARG]]) #[[ATTR4]]
+; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf zero psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero psub norm) [[ARG]]) #[[ATTR4]]
 ; CHECK-NEXT:    ret float [[CALL]]
 ;
   %call = call float @llvm.atan.f32(float %arg)
@@ -490,9 +511,9 @@ define float @ret_atan_negsubnormal_mode_dynamic_dynamic(float nofpclass(nan inf
 }
 
 define float @ret_atan_negsubnormal_mode_ftpz_dapz(float nofpclass(nan inf zero psub norm) %arg) #1 {
-; CHECK-LABEL: define nofpclass(nan inf) float @ret_atan_negsubnormal_mode_ftpz_dapz
+; CHECK-LABEL: define nofpclass(nan inf zero psub pnorm) float @ret_atan_negsubnormal_mode_ftpz_dapz
 ; CHECK-SAME: (float nofpclass(nan inf zero psub norm) [[ARG:%.*]]) #[[ATTR3]] {
-; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf) float @llvm.atan.f32(float nofpclass(nan inf zero psub norm) [[ARG]]) #[[ATTR4]]
+; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf zero psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero psub norm) [[ARG]]) #[[ATTR4]]
 ; CHECK-NEXT:    ret float [[CALL]]
 ;
   %call = call float @llvm.atan.f32(float %arg)

>From a332ea07ae847883874f558e02876f46af43b5f4 Mon Sep 17 00:00:00 2001
From: Youssef Wael <youssefwael.work at gmail.com>
Date: Thu, 8 Oct 2026 23:05:27 +0300
Subject: [PATCH 2/4] considering that subnormal can round to zeros

---
 llvm/lib/Support/KnownFPClass.cpp | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/llvm/lib/Support/KnownFPClass.cpp b/llvm/lib/Support/KnownFPClass.cpp
index 97110a0fcd870..0fba42f287b12 100644
--- a/llvm/lib/Support/KnownFPClass.cpp
+++ b/llvm/lib/Support/KnownFPClass.cpp
@@ -951,17 +951,27 @@ KnownFPClass KnownFPClass::atan(const KnownFPClass &KnownSrc) {
   Known.knownNot(fcInf);
 
   // For non-zero numeric inputs, atan preserves the sign.
+  // A normal result can become normal or subnormal,
+  // and a subnormal result can become normal or subnormal 
+  // or round to signed zero.
   if (KnownSrc.isKnownNever(fcNegSubnormal | fcNegNormal | fcNegInf))
     Known.knownNot(fcNegSubnormal | fcNegNormal);
 
   if (KnownSrc.isKnownNever(fcPosSubnormal | fcPosNormal | fcPosInf))
     Known.knownNot(fcPosSubnormal | fcPosNormal);
 
-  // atan(-0.0) = -0.0 and atan(+0.0) = +0.0.
-  if (KnownSrc.isKnownNever(fcNegZero))
+  // atan(-0.0) = -0.0.
+  // A negative subnormal can also round to -0.0, so -0.0 can only
+  // be ruled out when both negative zero and negative subnormal
+  // are impossible.
+  if (KnownSrc.isKnownNever(fcNegZero | fcNegSubnormal))
     Known.knownNot(fcNegZero);
 
-  if (KnownSrc.isKnownNever(fcPosZero))
+  // atan(+0.0) = +0.0.
+  // A positive subnormal can also round to +0.0, so +0.0 can only
+  // be ruled out when both positive zero and positive subnormal
+  // are impossible.
+  if (KnownSrc.isKnownNever(fcPosZero | fcPosSubnormal))
     Known.knownNot(fcPosZero);
 
   Known.propagateNonNaN(KnownSrc);

>From 000439d98792d192f83f94d1bf7140916af048cb Mon Sep 17 00:00:00 2001
From: Youssef Wael <youssefwael.work at gmail.com>
Date: Sat, 10 Oct 2026 19:09:37 +0300
Subject: [PATCH 3/4] [KnownFPClass] Add atan sign-preserving known-class
 deduction

---
 llvm/lib/Support/KnownFPClass.cpp | 23 +++++++----------------
 1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/llvm/lib/Support/KnownFPClass.cpp b/llvm/lib/Support/KnownFPClass.cpp
index 0fba42f287b12..08b946ad5a82a 100644
--- a/llvm/lib/Support/KnownFPClass.cpp
+++ b/llvm/lib/Support/KnownFPClass.cpp
@@ -950,30 +950,21 @@ KnownFPClass KnownFPClass::atan(const KnownFPClass &KnownSrc) {
   // atan is bounded to (-pi/2, pi/2), never Inf. atan(+-Inf) = +-pi/2 (finite).
   Known.knownNot(fcInf);
 
-  // For non-zero numeric inputs, atan preserves the sign.
-  // A normal result can become normal or subnormal,
-  // and a subnormal result can become normal or subnormal 
-  // or round to signed zero.
+  // Ruling out Subnormal/Normal from the result requires the
+  // input to never be finite-nonzero and never inf, since
+  // atan(+-inf) = +-pi/2
   if (KnownSrc.isKnownNever(fcNegSubnormal | fcNegNormal | fcNegInf))
     Known.knownNot(fcNegSubnormal | fcNegNormal);
 
   if (KnownSrc.isKnownNever(fcPosSubnormal | fcPosNormal | fcPosInf))
     Known.knownNot(fcPosSubnormal | fcPosNormal);
 
-  // atan(-0.0) = -0.0.
-  // A negative subnormal can also round to -0.0, so -0.0 can only
-  // be ruled out when both negative zero and negative subnormal
-  // are impossible.
-  if (KnownSrc.isKnownNever(fcNegZero | fcNegSubnormal))
+  // -0.0 only ever arises from a negative-finite input (atan(-0.0) = -0.0,
+  // and a flushed negative subnormal may become -0.0). atan(-inf) is never
+  // -0.0, so this check does not need to exclude fcNegInf.
+  if (KnownSrc.isKnownNever(fcNegSubnormal | fcNegNormal | fcNegZero))
     Known.knownNot(fcNegZero);
 
-  // atan(+0.0) = +0.0.
-  // A positive subnormal can also round to +0.0, so +0.0 can only
-  // be ruled out when both positive zero and positive subnormal
-  // are impossible.
-  if (KnownSrc.isKnownNever(fcPosZero | fcPosSubnormal))
-    Known.knownNot(fcPosZero);
-
   Known.propagateNonNaN(KnownSrc);
 
   return Known;

>From 4f4b772ea65163a61764a6a3fdbe646634e8d6b4 Mon Sep 17 00:00:00 2001
From: Youssef Wael <youssefwael.work at gmail.com>
Date: Sat, 10 Oct 2026 23:33:10 +0300
Subject: [PATCH 4/4] Improve atan negative zero inference

---
 llvm/lib/Support/KnownFPClass.cpp             |  7 +++---
 .../Transforms/Attributor/nofpclass-trig.ll   | 24 +++++++++----------
 2 files changed, 15 insertions(+), 16 deletions(-)

diff --git a/llvm/lib/Support/KnownFPClass.cpp b/llvm/lib/Support/KnownFPClass.cpp
index 08b946ad5a82a..ccae3621f1e0c 100644
--- a/llvm/lib/Support/KnownFPClass.cpp
+++ b/llvm/lib/Support/KnownFPClass.cpp
@@ -959,10 +959,9 @@ KnownFPClass KnownFPClass::atan(const KnownFPClass &KnownSrc) {
   if (KnownSrc.isKnownNever(fcPosSubnormal | fcPosNormal | fcPosInf))
     Known.knownNot(fcPosSubnormal | fcPosNormal);
 
-  // -0.0 only ever arises from a negative-finite input (atan(-0.0) = -0.0,
-  // and a flushed negative subnormal may become -0.0). atan(-inf) is never
-  // -0.0, so this check does not need to exclude fcNegInf.
-  if (KnownSrc.isKnownNever(fcNegSubnormal | fcNegNormal | fcNegZero))
+  // atan(-0.0) = -0.0, and a negative subnormal may be flushed to -0.0.
+  // Negative normal values and -inf cannot produce -0.0.
+  if (KnownSrc.isKnownNever(fcNegSubnormal | fcNegZero))
     Known.knownNot(fcNegZero);
 
   Known.propagateNonNaN(KnownSrc);
diff --git a/llvm/test/Transforms/Attributor/nofpclass-trig.ll b/llvm/test/Transforms/Attributor/nofpclass-trig.ll
index 475277435b3ff..df38971402d9b 100644
--- a/llvm/test/Transforms/Attributor/nofpclass-trig.ll
+++ b/llvm/test/Transforms/Attributor/nofpclass-trig.ll
@@ -461,9 +461,9 @@ define float @ret_tan_nosnan(float nofpclass(snan) %arg) {
 }
 
 define float @ret_atan_negnormal_negsubnormal_mode_dynamic_dynamic(float nofpclass(nan inf zero psub pnorm) %arg) #0 {
-; CHECK-LABEL: define nofpclass(nan inf zero psub pnorm) float @ret_atan_negnormal_negsubnormal_mode_dynamic_dynamic
+; CHECK-LABEL: define nofpclass(nan inf psub pnorm) float @ret_atan_negnormal_negsubnormal_mode_dynamic_dynamic
 ; CHECK-SAME: (float nofpclass(nan inf zero psub pnorm) [[ARG:%.*]]) #[[ATTR2]] {
-; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf zero psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero psub pnorm) [[ARG]]) #[[ATTR4]]
+; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero psub pnorm) [[ARG]]) #[[ATTR4]]
 ; CHECK-NEXT:    ret float [[CALL]]
 ;
   %call = call float @llvm.atan.f32(float %arg)
@@ -471,9 +471,9 @@ define float @ret_atan_negnormal_negsubnormal_mode_dynamic_dynamic(float nofpcla
 }
 
 define float @ret_atan_negnormal_negsubnormal_mode_ftpz_dapz(float nofpclass(nan inf zero psub pnorm) %arg) #1 {
-; CHECK-LABEL: define nofpclass(nan inf zero psub pnorm) float @ret_atan_negnormal_negsubnormal_mode_ftpz_dapz
+; CHECK-LABEL: define nofpclass(nan inf psub pnorm) float @ret_atan_negnormal_negsubnormal_mode_ftpz_dapz
 ; CHECK-SAME: (float nofpclass(nan inf zero psub pnorm) [[ARG:%.*]]) #[[ATTR3]] {
-; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf zero psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero psub pnorm) [[ARG]]) #[[ATTR4]]
+; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero psub pnorm) [[ARG]]) #[[ATTR4]]
 ; CHECK-NEXT:    ret float [[CALL]]
 ;
   %call = call float @llvm.atan.f32(float %arg)
@@ -481,9 +481,9 @@ define float @ret_atan_negnormal_negsubnormal_mode_ftpz_dapz(float nofpclass(nan
 }
 
 define float @ret_atan_negnormal_mode_dynamic_dynamic(float nofpclass(nan inf zero sub pnorm) %arg) #0 {
-; CHECK-LABEL: define nofpclass(nan inf zero psub pnorm) float @ret_atan_negnormal_mode_dynamic_dynamic
+; CHECK-LABEL: define nofpclass(nan inf nzero psub pnorm) float @ret_atan_negnormal_mode_dynamic_dynamic
 ; CHECK-SAME: (float nofpclass(nan inf zero sub pnorm) [[ARG:%.*]]) #[[ATTR2]] {
-; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf zero psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero sub pnorm) [[ARG]]) #[[ATTR4]]
+; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf nzero psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero sub pnorm) [[ARG]]) #[[ATTR4]]
 ; CHECK-NEXT:    ret float [[CALL]]
 ;
   %call = call float @llvm.atan.f32(float %arg)
@@ -491,9 +491,9 @@ define float @ret_atan_negnormal_mode_dynamic_dynamic(float nofpclass(nan inf ze
 }
 
 define float @ret_atan_negnormal_mode_ftpz_dapz(float nofpclass(nan inf zero sub pnorm) %arg) #1 {
-; CHECK-LABEL: define nofpclass(nan inf zero psub pnorm) float @ret_atan_negnormal_mode_ftpz_dapz
+; CHECK-LABEL: define nofpclass(nan inf nzero psub pnorm) float @ret_atan_negnormal_mode_ftpz_dapz
 ; CHECK-SAME: (float nofpclass(nan inf zero sub pnorm) [[ARG:%.*]]) #[[ATTR3]] {
-; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf zero psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero sub pnorm) [[ARG]]) #[[ATTR4]]
+; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf nzero psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero sub pnorm) [[ARG]]) #[[ATTR4]]
 ; CHECK-NEXT:    ret float [[CALL]]
 ;
   %call = call float @llvm.atan.f32(float %arg)
@@ -501,9 +501,9 @@ define float @ret_atan_negnormal_mode_ftpz_dapz(float nofpclass(nan inf zero sub
 }
 
 define float @ret_atan_negsubnormal_mode_dynamic_dynamic(float nofpclass(nan inf zero psub norm) %arg) #0 {
-; CHECK-LABEL: define nofpclass(nan inf zero psub pnorm) float @ret_atan_negsubnormal_mode_dynamic_dynamic
+; CHECK-LABEL: define nofpclass(nan inf psub pnorm) float @ret_atan_negsubnormal_mode_dynamic_dynamic
 ; CHECK-SAME: (float nofpclass(nan inf zero psub norm) [[ARG:%.*]]) #[[ATTR2]] {
-; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf zero psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero psub norm) [[ARG]]) #[[ATTR4]]
+; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero psub norm) [[ARG]]) #[[ATTR4]]
 ; CHECK-NEXT:    ret float [[CALL]]
 ;
   %call = call float @llvm.atan.f32(float %arg)
@@ -511,9 +511,9 @@ define float @ret_atan_negsubnormal_mode_dynamic_dynamic(float nofpclass(nan inf
 }
 
 define float @ret_atan_negsubnormal_mode_ftpz_dapz(float nofpclass(nan inf zero psub norm) %arg) #1 {
-; CHECK-LABEL: define nofpclass(nan inf zero psub pnorm) float @ret_atan_negsubnormal_mode_ftpz_dapz
+; CHECK-LABEL: define nofpclass(nan inf psub pnorm) float @ret_atan_negsubnormal_mode_ftpz_dapz
 ; CHECK-SAME: (float nofpclass(nan inf zero psub norm) [[ARG:%.*]]) #[[ATTR3]] {
-; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf zero psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero psub norm) [[ARG]]) #[[ATTR4]]
+; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan inf psub pnorm) float @llvm.atan.f32(float nofpclass(nan inf zero psub norm) [[ARG]]) #[[ATTR4]]
 ; CHECK-NEXT:    ret float [[CALL]]
 ;
   %call = call float @llvm.atan.f32(float %arg)



More information about the llvm-commits mailing list