Do you have plans to add other intrinsics? I'm curious as to why there is an llvm.sin intrinsic and an llvm.cos intrinsic, but no llvm.atan intrinsic. Why is there an llvm.pow intrinsic but no llvm.log intrinsic? Also, have you thought about integer intrinsics like multiprecision multiply (u32xu32->u64) and multiprecision divide (u64/u32->(dividend:u32,remainder:u32))? Regards, Jon
> Do you have plans to add other intrinsics? I'm curious as to why there > is an llvm.sin intrinsic and an llvm.cos intrinsic, but no llvm.atan > intrinsic. Why is there an llvm.pow intrinsic but no llvm.log > intrinsic? Also, have you thought about integer intrinsics like > multiprecision multiply (u32xu32->u64) and multiprecision divide > (u64/u32->(dividend:u32,remainder:u32))?It would be good if intrinsics could be added via a library approach. This would be good for supporting new platform and language requirements. Although describing or adding optimization code/phases maybe an issue. Aaron
On Tue, 27 Nov 2007, Jon Sargeant wrote:> Do you have plans to add other intrinsics? I'm curious as to why there > is an llvm.sin intrinsic and an llvm.cos intrinsic, but no llvm.atan > intrinsic. Why is there an llvm.pow intrinsic but no llvm.log > intrinsic?Intrinsics get added on demand. Generally there has to be a good reason to add them. llvm.sin was implemented (for example) to allow generation of code that uses vector sin operations. To be honest, I'm not sure I understand why it exists anymore. Maybe Dan can comment on that.> Also, have you thought about integer intrinsics like > multiprecision multiply (u32xu32->u64) and multiprecision divide > (u64/u32->(dividend:u32,remainder:u32))?We don't need anything fancy for these, see this recent thread: http://lists.cs.uiuc.edu/pipermail/llvmdev/2007-November/011435.html http://lists.cs.uiuc.edu/pipermail/llvmdev/2007-November/011440.html -Chris -- http://nondot.org/sabre/ http://llvm.org/