llvm/llvm-project

Missing FP optimization opportunities for fcmp ord operations

已关闭

#49,175 创建于 2021年4月4日

 (4 条评论) (1 个反应) (1 位负责人)C++ (10,782 个派生)batch import
bugzillafloating-pointgood first issuellvm:optimizationsmissed-optimization

仓库指标

星标
 (26,378 个星标)
PR 合并指标
 (平均合并 1天 2小时) (30 天内合并 1,000 个 PR)

描述

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

贡献者指南