[ValueTracking] improve analysis for fdiv with same operands
authorSanjay Patel <spatel@rotateright.com>
Sun, 21 Jun 2020 12:50:29 +0000 (08:50 -0400)
committerSanjay Patel <spatel@rotateright.com>
Sun, 21 Jun 2020 13:07:59 +0000 (09:07 -0400)
commit2ad42c2653ce31ca93dd2c9fdbd561d1d846d983
treed3a9cff4be225359f6c42ade96aa789976873da5
parent97c0232621a474b91d39a5882c5875be32f21640
[ValueTracking] improve analysis for fdiv with same operands

(The 'nnan' variant of this pattern is already tested to produce '1.0'.)

https://alive2.llvm.org/ce/z/D4hPBy

define i1 @src(float %x, i32 %y) {
%0:
  %d = fdiv float %x, %x
  %uge = fcmp uge float %d, 0.000000
  ret i1 %uge
}
=>
define i1 @tgt(float %x, i32 %y) {
%0:
  ret i1 1
}
Transformation seems to be correct!
llvm/lib/Analysis/ValueTracking.cpp
llvm/test/Transforms/InstSimplify/floating-point-compare.ll