llvm/llvm-project

Missing FP optimization opportunities for fcmp ord operations

Geschlossen

#49.175 geöffnet am 04.04.2021

 (4 Kommentare) (1 Reaktion) (1 zugewiesene Person)C++ (10.782 Forks)batch import
bugzillafloating-pointgood first issuellvm:optimizationsmissed-optimization

Repository-Metriken

Stars
 (26.378 Sterne)
PR-Merge-Metriken
 (Durchschn. Merge 1T 2h) (1.000 gemergte PRs in 30 T)

Beschreibung

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

Contributor Guide