llvm/llvm-project
Missing FP optimization opportunities for fcmp ord operations
Closed
#49,175 opened on Apr 4, 2021
bugzillafloating-pointgood first issuellvm:optimizationsmissed-optimization
Repository metrics
- Stars
- (26,378 stars)
- PR merge metrics
- (Avg merge 1d 2h) (1,000 merged PRs in 30d)
Description
| Bugzilla Link | 49831 |
| Version | trunk |
| OS | All |
| Blocks | llvm/llvm-project#49274 |
| CC | @RKSimon,@rotateright |
Extended Description
; Excerpted from llvm/test/Transforms/InstCombine/and-fcmp.ll
define i1 @_commute_logical(i1 %z, float %c, float %d) {
%ord1 = fcmp ninf ord float %c, 0.0
%and = select i1 %ord1, i1 %z, i1 false
%ord2 = fcmp ninf reassoc ord float %d, 0.0
%r = select i1 %ord2, i1 %and, i1 false
ret i1 %r
}
This can be optimized to
%c.fr = freeze float %c
%ord1 = fcmp ord float %c.fr, %d
%r = select i1 %ord1, i1 %z, i1 false
Alive2 link: https://alive2.llvm.org/ce/z/QfkJak