Skip to content

Commit ffbed74

Browse files
authored
ValueTracking: Add more tests for computeKnownFPClass canonicalize (#173164)
1 parent 0d29efb commit ffbed74

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

llvm/test/Transforms/Attributor/nofpclass-canonicalize.ll

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -503,5 +503,95 @@ define float @ret_canonicalize_dynamic_constant_snan() "denormal-fp-math"="dynam
503503
ret float %call
504504
}
505505

506+
define float @ret_canonicalize_daz_not_nzero_not_nsub(float nofpclass(nzero nsub) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
507+
; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_nzero_not_nsub
508+
; CHECK-SAME: (float nofpclass(nzero nsub) [[X:%.*]]) #[[ATTR10]] {
509+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(nzero nsub) [[X]]) #[[ATTR12]]
510+
; CHECK-NEXT: ret float [[CALL]]
511+
;
512+
%call = call float @llvm.canonicalize.f32(float %x)
513+
ret float %call
514+
}
515+
516+
define float @ret_canonicalize_daz_not_nsub(float nofpclass(nsub) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
517+
; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_nsub
518+
; CHECK-SAME: (float nofpclass(nsub) [[X:%.*]]) #[[ATTR10]] {
519+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(nsub) [[X]]) #[[ATTR12]]
520+
; CHECK-NEXT: ret float [[CALL]]
521+
;
522+
%call = call float @llvm.canonicalize.f32(float %x)
523+
ret float %call
524+
}
525+
526+
define float @ret_canonicalize_daz_not_nzero(float nofpclass(nzero) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
527+
; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_nzero
528+
; CHECK-SAME: (float nofpclass(nzero) [[X:%.*]]) #[[ATTR10]] {
529+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(nzero) [[X]]) #[[ATTR12]]
530+
; CHECK-NEXT: ret float [[CALL]]
531+
;
532+
%call = call float @llvm.canonicalize.f32(float %x)
533+
ret float %call
534+
}
535+
536+
define float @ret_canonicalize_daz_not_pzero_not_psub(float nofpclass(pzero psub) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
537+
; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_pzero_not_psub
538+
; CHECK-SAME: (float nofpclass(pzero psub) [[X:%.*]]) #[[ATTR10]] {
539+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(pzero psub) [[X]]) #[[ATTR12]]
540+
; CHECK-NEXT: ret float [[CALL]]
541+
;
542+
%call = call float @llvm.canonicalize.f32(float %x)
543+
ret float %call
544+
}
545+
546+
define float @ret_canonicalize_daz_not_psub(float nofpclass(psub) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
547+
; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_psub
548+
; CHECK-SAME: (float nofpclass(psub) [[X:%.*]]) #[[ATTR10]] {
549+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(psub) [[X]]) #[[ATTR12]]
550+
; CHECK-NEXT: ret float [[CALL]]
551+
;
552+
%call = call float @llvm.canonicalize.f32(float %x)
553+
ret float %call
554+
}
555+
556+
define float @ret_canonicalize_daz_not_pzero(float nofpclass(pzero) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
557+
; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_pzero
558+
; CHECK-SAME: (float nofpclass(pzero) [[X:%.*]]) #[[ATTR10]] {
559+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(pzero) [[X]]) #[[ATTR12]]
560+
; CHECK-NEXT: ret float [[CALL]]
561+
;
562+
%call = call float @llvm.canonicalize.f32(float %x)
563+
ret float %call
564+
}
565+
566+
define float @ret_canonicalize_daz_not_zero(float nofpclass(zero) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
567+
; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_zero
568+
; CHECK-SAME: (float nofpclass(zero) [[X:%.*]]) #[[ATTR10]] {
569+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(zero) [[X]]) #[[ATTR12]]
570+
; CHECK-NEXT: ret float [[CALL]]
571+
;
572+
%call = call float @llvm.canonicalize.f32(float %x)
573+
ret float %call
574+
}
575+
576+
define float @ret_canonicalize_daz_not_sub(float nofpclass(sub) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
577+
; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_sub
578+
; CHECK-SAME: (float nofpclass(sub) [[X:%.*]]) #[[ATTR10]] {
579+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(sub) [[X]]) #[[ATTR12]]
580+
; CHECK-NEXT: ret float [[CALL]]
581+
;
582+
%call = call float @llvm.canonicalize.f32(float %x)
583+
ret float %call
584+
}
585+
586+
define float @ret_canonicalize_daz_not_sub_not_nzero(float nofpclass(sub nzero) %x) "denormal-fp-math"="preserve-sign,preserve-sign" {
587+
; CHECK-LABEL: define nofpclass(snan sub) float @ret_canonicalize_daz_not_sub_not_nzero
588+
; CHECK-SAME: (float nofpclass(nzero sub) [[X:%.*]]) #[[ATTR10]] {
589+
; CHECK-NEXT: [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.canonicalize.f32(float nofpclass(nzero sub) [[X]]) #[[ATTR12]]
590+
; CHECK-NEXT: ret float [[CALL]]
591+
;
592+
%call = call float @llvm.canonicalize.f32(float %x)
593+
ret float %call
594+
}
595+
506596
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
507597
; TUNIT: {{.*}}

0 commit comments

Comments
 (0)