[llvm] ffbed74 - ValueTracking: Add more tests for computeKnownFPClass canonicalize (#173164)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Dec 21 02:32:44 PST 2025
Author: Matt Arsenault
Date: 2025-12-21T11:32:40+01:00
New Revision: ffbed74c752c360321889102645481c0c23a9f59
URL: https://github.com/llvm/llvm-project/commit/ffbed74c752c360321889102645481c0c23a9f59
DIFF: https://github.com/llvm/llvm-project/commit/ffbed74c752c360321889102645481c0c23a9f59.diff
LOG: ValueTracking: Add more tests for computeKnownFPClass canonicalize (#173164)
Added:
Modified:
llvm/test/Transforms/Attributor/nofpclass-canonicalize.ll
Removed:
################################################################################
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: {{.*}}
More information about the llvm-commits
mailing list