[llvm-commits] [llvm] r171793 - in /llvm/trunk: lib/Transforms/InstCombine/InstCombine.h lib/Transforms/InstCombine/InstCombineMulDivRem.cpp test/Transforms/InstCombine/fast-math.ll
Shuxin Yang
shuxin.llvm at gmail.com
Mon Jan 7 14:18:54 PST 2013
Hi, Stephen:
Thank you so much for your feedback and expertise. I will fix this
problem along with other enhancement
to fmul.
Thanks
Shuixn
On 1/7/13 1:54 PM, Stephen Canon wrote:
> On Jan 7, 2013, at 4:39 PM, Shuxin Yang <shuxin.llvm at gmail.com> wrote:
>
>> Author: shuxin_yang
>> Date: Mon Jan 7 15:39:23 2013
>> New Revision: 171793
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=171793&view=rev
>> Log:
>> This change is to implement following rules:
>>
>> o. X/C1 * C2 => X * (C2/C1) (if C2/C1 is neither special FP nor denormal)
>> o. X/C1 * C2 -> X/(C1/C2) (if C2/C1 is either specical FP or denormal, but C1/C2 is a normal Fp)
> We should be able to avoid the divide by instead transforming this to (X * (SCALE^-1 * C2/C1)) * SCALE, where SCALE is a constant of the form 2^n chosen such that (SCALE^-1 * C2/C1) is a normal FP number. On nearly all modern architectures two multiplies are cheaper than a divide, and this will cover a much larger set of cases for which C2/C1 is not representable.
>
> - Steve
More information about the llvm-commits
mailing list