Add APFloat::getExactInverse.
authorBenjamin Kramer <benny.kra@googlemail.com>
Wed, 30 Mar 2011 15:42:27 +0000 (15:42 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Wed, 30 Mar 2011 15:42:27 +0000 (15:42 +0000)
commit2746000f4fa54e6ad00cf96910ea5772803624ed
treebd6513967e2f459833124c1834762d983bf7b3b0
parentd01f2633b9aab6281c936da04226b46a0dde7ba9
Add APFloat::getExactInverse.

The idea is, that if an ieee 754 float is divided by a power of two, we can
turn the division into a cheaper multiplication. This function sees if we can
get an exact multiplicative inverse for a divisor and returns it if possible.

This is the hard part of PR9587.

I tested many inputs against llvm-gcc's frotend implementation of this
optimization and didn't find any difference. However, floating point is the
land of weird edge cases, so any review would be appreciated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128545 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/ADT/APFloat.h
lib/Support/APFloat.cpp
unittests/ADT/APFloatTest.cpp