-
Notifications
You must be signed in to change notification settings - Fork 15.6k
ValueTracking: Add more tests for computeKnownFPClass canonicalize #173164
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ValueTracking: Add more tests for computeKnownFPClass canonicalize #173164
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
|
@llvm/pr-subscribers-llvm-transforms Author: Matt Arsenault (arsenm) ChangesFull diff: https://github.com/llvm/llvm-project/pull/173164.diff 1 Files Affected:
diff --git a/llvm/test/Transforms/Attributor/nofpclass-canonicalize.ll b/llvm/test/Transforms/Attributor/nofpclass-canonicalize.ll
index 35f8456828ca5..8a31bef83b68e 100644
--- a/llvm/test/Transforms/Attributor/nofpclass-canonicalize.ll
+++ b/llvm/test/Transforms/Attributor/nofpclass-canonicalize.ll
@@ -503,5 +503,95 @@ define float @ret_canonicalize_dynamic_constant_snan() "denormal-fp-math"="dynam
ret float %call
}
+define float @ret_canonicalize_daz_not_nzero_not_nsub(float nofpclass(nzero nsub) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
+; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_nzero_not_nsub
+; CHECK-SAME: (float nofpclass(nzero nsub) [[X:%.*]]) #[[ATTR10]] {
+; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(nzero nsub) [[X]]) #[[ATTR12]]
+; CHECK-NEXT: ret float [[CALL]]
+;
+ %call = call float @llvm.canonicalize.f32(float %x)
+ ret float %call
+}
+
+define float @ret_canonicalize_daz_not_nsub(float nofpclass(nsub) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
+; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_nsub
+; CHECK-SAME: (float nofpclass(nsub) [[X:%.*]]) #[[ATTR10]] {
+; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(nsub) [[X]]) #[[ATTR12]]
+; CHECK-NEXT: ret float [[CALL]]
+;
+ %call = call float @llvm.canonicalize.f32(float %x)
+ ret float %call
+}
+
+define float @ret_canonicalize_daz_not_nzero(float nofpclass(nzero) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
+; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_nzero
+; CHECK-SAME: (float nofpclass(nzero) [[X:%.*]]) #[[ATTR10]] {
+; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(nzero) [[X]]) #[[ATTR12]]
+; CHECK-NEXT: ret float [[CALL]]
+;
+ %call = call float @llvm.canonicalize.f32(float %x)
+ ret float %call
+}
+
+define float @ret_canonicalize_daz_not_pzero_not_psub(float nofpclass(pzero psub) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
+; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_pzero_not_psub
+; CHECK-SAME: (float nofpclass(pzero psub) [[X:%.*]]) #[[ATTR10]] {
+; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(pzero psub) [[X]]) #[[ATTR12]]
+; CHECK-NEXT: ret float [[CALL]]
+;
+ %call = call float @llvm.canonicalize.f32(float %x)
+ ret float %call
+}
+
+define float @ret_canonicalize_daz_not_psub(float nofpclass(psub) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
+; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_psub
+; CHECK-SAME: (float nofpclass(psub) [[X:%.*]]) #[[ATTR10]] {
+; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(psub) [[X]]) #[[ATTR12]]
+; CHECK-NEXT: ret float [[CALL]]
+;
+ %call = call float @llvm.canonicalize.f32(float %x)
+ ret float %call
+}
+
+define float @ret_canonicalize_daz_not_pzero(float nofpclass(pzero) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
+; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_pzero
+; CHECK-SAME: (float nofpclass(pzero) [[X:%.*]]) #[[ATTR10]] {
+; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(pzero) [[X]]) #[[ATTR12]]
+; CHECK-NEXT: ret float [[CALL]]
+;
+ %call = call float @llvm.canonicalize.f32(float %x)
+ ret float %call
+}
+
+define float @ret_canonicalize_daz_not_zero(float nofpclass(zero) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
+; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_zero
+; CHECK-SAME: (float nofpclass(zero) [[X:%.*]]) #[[ATTR10]] {
+; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(zero) [[X]]) #[[ATTR12]]
+; CHECK-NEXT: ret float [[CALL]]
+;
+ %call = call float @llvm.canonicalize.f32(float %x)
+ ret float %call
+}
+
+define float @ret_canonicalize_daz_not_sub(float nofpclass(sub) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
+; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_sub
+; CHECK-SAME: (float nofpclass(sub) [[X:%.*]]) #[[ATTR10]] {
+; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(sub) [[X]]) #[[ATTR12]]
+; CHECK-NEXT: ret float [[CALL]]
+;
+ %call = call float @llvm.canonicalize.f32(float %x)
+ ret float %call
+}
+
+define float @ret_canonicalize_daz_not_sub_not_nzero(float nofpclass(sub nzero) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
+; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_sub_not_nzero
+; CHECK-SAME: (float nofpclass(nzero sub) [[X:%.*]]) #[[ATTR10]] {
+; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(nzero sub) [[X]]) #[[ATTR12]]
+; CHECK-NEXT: ret float [[CALL]]
+;
+ %call = call float @llvm.canonicalize.f32(float %x)
+ ret float %call
+}
+
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
; TUNIT: {{.*}}
|
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/51/builds/29057 Here is the relevant piece of the build log for the reference |

No description provided.