llvm/llvm-project

Missing FP optimization opportunities for fcmp ord operations

Chiusa

#49.175 aperta il 4 apr 2021

 (4 commenti) (1 reazione) (1 assegnatario)C++ (10.782 fork)batch import
bugzillafloating-pointgood first issuellvm:optimizationsmissed-optimization

Metriche repository

Star
 (26.378 stelle)
Metriche merge PR
 (Merge medio 1g 2h) (1000 PR mergiate in 30 g)

Descrizione

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

Guida contributor