Alex S
2014-Nov-10 18:13 UTC
[LLVMdev] About inlining the modulo function in ARM architecture
Hi all, Sorry for bothering those not interested. I found that ARM backend will insert a modulo function (like __modsi3) instead of the modulo instruction. I wonder how we can inline the modulo function into the program. Is there any OPTION we can use in the opt or llc? Thanks, Ray -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141110/8ded710d/attachment.html>
Tim Northover
2014-Nov-10 18:26 UTC
[LLVMdev] About inlining the modulo function in ARM architecture
Hi Ray, On 10 November 2014 10:13, Alex S <alexmountain13 at gmail.com> wrote:> Sorry for bothering those not interested. I found that ARM backend will > insert a modulo function > (like __modsi3) instead of the modulo instruction. I wonder how we can > inline the modulo function > into the program. Is there any OPTION we can use in the opt or llc?It depends on whether the CPU actually supports integer division. Surprisingly modern CPUs don't (the Cortex-A9 for example), and LLVM doesn't synthesise an entire divide loop. Oddly, it also seems to call the library at -O0, because that's what the FastISel decides to do. That strikes me as a bug, or at least an oddity. Cheers. Tim.
Alex S
2014-Nov-10 19:30 UTC
[LLVMdev] About inlining the modulo function in ARM architecture
Hi Tim, Thanks for your reply. On Mon, Nov 10, 2014 at 1:26 PM, Tim Northover <t.p.northover at gmail.com> wrote:> Hi Ray, > > On 10 November 2014 10:13, Alex S <alexmountain13 at gmail.com> wrote: > > Sorry for bothering those not interested. I found that ARM backend will > > insert a modulo function > > (like __modsi3) instead of the modulo instruction. I wonder how we can > > inline the modulo function > > into the program. Is there any OPTION we can use in the opt or llc? > > It depends on whether the CPU actually supports integer division. > Surprisingly modern CPUs don't (the Cortex-A9 for example), and LLVM > doesn't synthesise an entire divide loop. >I know this may degrade the performance. I wonder whether there is any easy way to inline these functions into the callsite? Thanks again!> > Oddly, it also seems to call the library at -O0, because that's what > the FastISel decides to do. That strikes me as a bug, or at least an > oddity. > > Cheers. > > Tim. >Ray -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141110/9b1a02a4/attachment.html>