Speedup Function::getIntrinsicID() with caching of result

Jean-Luc Duprat jduprat at apple.com
Wed Feb 27 17:16:23 PST 2013


The attached patch caches the result of Function::getIntrinsicID() in a DenseMap attached to the LLVMContext.  This reduces the time actually spent doing string to ID conversion and shows a 10% improvement in compile time for a particularly bad case that involves ARM Neon intrinsics (these have many overloads).

This changes passes the regression tests and the nightly tests suite.

Before:
$ time ./Release+Asserts/bin/llc  -march=arm -mattr=+neon /Users/jduprat/src/LLVM/llvm/test/CodeGen/ARM/vsub_JLD2.ll -O0
real	0m6.859s

$ time ./Release+Asserts/bin/llc  -march=arm -mattr=+neon  /Users/jduprat/src/LLVM/llvm/test/CodeGen/ARM/vsub_JLD2.ll -O2
real	0m7.490s

After:
$ time ./Release+Asserts/bin/llc  -march=arm -mattr=+neon  /Users/jduprat/src/LLVM/llvm/test/CodeGen/ARM/vsub_JLD2.ll -O0
real	0m6.139s

$ time ./Release+Asserts/bin/llc  -march=arm -mattr=+neon  /Users/jduprat/src/LLVM/llvm/test/CodeGen/ARM/vsub_JLD2.ll -O2
real	0m6.712s

Speedup -O0: 10.5%
Speedup -O2: 10.4%

JL



-------------- next part --------------
A non-text attachment was scrubbed...
Name: getIntrinsicID.patch
Type: application/octet-stream
Size: 5451 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130227/7b554127/attachment.obj>
-------------- next part --------------





More information about the llvm-commits mailing list