llvm-project
4846e3a4 - InstCombine: Fold absorbing fmul of compared 0 into select (#172381)

Commit
14 days ago
InstCombine: Fold absorbing fmul of compared 0 into select (#172381) This is similar to the select-bin-op identity case, except in this case we are looking for the absorbing value for the binary operator. If the compared value is a floating-point 0, and the fmul is implied to return a +0, put the 0 directly into the select operand. This pattern appears in scale-if-denormal sequences after optimizations assume denormals are treated as 0. Fold: ``` %fabs.x = call float @llvm.fabs.f32(float %x) %mul.fabs.x = fmul float %fabs.x, known_positive %x.is.zero = fcmp oeq float %x, 0.0 %select = select i1 %x.is.zero, float %mul.fabs.x, float %fabs.x ``` To: ``` %fabs.x = call float @llvm.fabs.f32(float %x) %mul.fabs.x = fmul float %fabs.x,known_positive %x.is.zero = fcmp oeq float %x, 0.0 %select = select i1 %x.is.zero, float 0.0, float %fabs.x ``` https://alive2.llvm.org/ce/z/Qcy56Z
Author
Parents
Loading