diff options
author | Elena Demikhovsky <elena.demikhovsky@intel.com> | 2015-01-28 08:03:58 +0000 |
---|---|---|
committer | Elena Demikhovsky <elena.demikhovsky@intel.com> | 2015-01-28 08:03:58 +0000 |
commit | 45f0448081b922091a246c6e910566ac3cece09a (patch) | |
tree | 02996c5f67b9eeddbf275a0c78d33d90dac98483 /llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h | |
parent | 24ea09c20cb30715ad4e144b8368439515e903d0 (diff) | |
download | llvm-45f0448081b922091a246c6e910566ac3cece09a.zip llvm-45f0448081b922091a246c6e910566ac3cece09a.tar.gz llvm-45f0448081b922091a246c6e910566ac3cece09a.tar.bz2 |
Fold fcmp in cases where value is provably non-negative. By Arch Robison.
This patch folds fcmp in some cases of interest in Julia. The patch adds a function CannotBeOrderedLessThanZero that returns true if a value is provably not less than zero. I.e. the function returns true if the value is provably -0, +0, positive, or a NaN. The patch extends InstructionSimplify.cpp to fold instances of fcmp where:
- the predicate is olt or uge
- the first operand is provably not less than zero
- the second operand is zero
The motivation for handling these cases optimizing away domain checks for sqrt in Julia for common idioms such as sqrt(x*x+y*y)..
http://reviews.llvm.org/D6972
llvm-svn: 227298
Diffstat (limited to 'llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h')
0 files changed, 0 insertions, 0 deletions