[LLVMdev] llvm.powi intrinsic

Chris Lattner sabre at nondot.org
Mon Nov 26 19:50:36 PST 2007

> The purpose of the llvm.powi intrinsic isn't clear to me.  Why is
> llvm.powi preferable to multiplication and division for small constant
> powers (e.g., 1/x, x*x, etc.)?  Why is it preferable to llvm.pow for
> large variable powers?  I'm also curious about the time bound.  I'm
> assuming that powi(x,1000000) doesn't do a million multiplications...
> Do any architectures have an integer power instruction of some sort?

The purpose of this is to capture this information at a higher level, 
allowing the code generator top (eventually) lower it into an optimal 
sequence of multiplies.  for example, powi(x, 9) can be lowered to:

t = x*x;
t2 = t*t
result = t2*t2*x

The code generator doesn't currently do any smart lowering, if you're 
interested in this, it would be a great place to dive in



More information about the llvm-dev mailing list