diff options
author | Konstantina Mitropoulou <Konstantina.Mitropoulou@amd.com> | 2023-08-08 21:33:23 -0700 |
---|---|---|
committer | Konstantina Mitropoulou <Konstantina.Mitropoulou@amd.com> | 2023-08-24 10:48:56 -0700 |
commit | 5ec13535235d07eafd64058551bc495f87c283b1 (patch) | |
tree | 02d097a777b050fce0aebb02545c288c4b71361c /llvm/lib/CodeGen/MachineTraceMetrics.cpp | |
parent | b49bb7bdec067a1d48a4502399961667d2525444 (diff) | |
download | llvm-5ec13535235d07eafd64058551bc495f87c283b1.zip llvm-5ec13535235d07eafd64058551bc495f87c283b1.tar.gz llvm-5ec13535235d07eafd64058551bc495f87c283b1.tar.bz2 |
[DAGCombiner] Change foldAndOrOfSETCC() to optimize and/or patterns with floating points.
CMP(A,C)||CMP(B,C) => CMP(MIN/MAX(A,B), C)
CMP(A,C)&&CMP(B,C) => CMP(MIN/MAX(A,B), C)
If the operands are proven to be non NaN, then the optimization can be applied
for all predicates.
We can apply the optimization for the following predicates for FMINNUM/FMAXNUM
(for quiet and signaling NaNs) and for FMINNUM_IEEE/FMAXNUM_IEEE if we can prove
that the operands are not signaling NaNs.
- ordered lt/le and ||
- ordered gt/ge and ||
- unordered lt/le and &&
- unordered gt/ge and &&
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D155267
Diffstat (limited to 'llvm/lib/CodeGen/MachineTraceMetrics.cpp')
0 files changed, 0 insertions, 0 deletions