From: Weiming Zhao Date: Fri, 4 Dec 2015 22:00:47 +0000 (+0000) Subject: [SimplifyLibCalls] Optimization for pow(x, n) where n is some constant X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=cc87069c319aed2f95394a76dccfcd6360c08b80;hp=cc87069c319aed2f95394a76dccfcd6360c08b80;p=oota-llvm.git [SimplifyLibCalls] Optimization for pow(x, n) where n is some constant Summary: In order to avoid calling pow function we generate repeated fmul when n is a positive or negative whole number. For each exponent we pre-compute Addition Chains in order to minimize the no. of fmuls. Refer: http://wwwhomes.uni-bielefeld.de/achim/addition_chain.html We pre-compute addition chains for exponents upto 32 (which results in a max of 7 fmuls). For eg: 4 = 2+2 5 = 2+3 6 = 3+3 and so on Hence, pow(x, 4.0) ==> y = fmul x, x x = fmul y, y ret x For negative exponents, we simply compute the reciprocal of the final result. Note: This transformation is only enabled under fast-math. Patch by Mandeep Singh Grang Reviewers: weimingz, majnemer, escha, davide, scanon, joerg Subscribers: probinson, escha, llvm-commits Differential Revision: http://reviews.llvm.org/D13994 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254776 91177308-0d34-0410-b5e6-96231b3b80d8 ---