LLVM backend for 6502
Go to file
Benjamin Kramer 611afc0620 Cache the hash value of the operands in the MDNode.
FoldingSet is implemented as a chained hash table. When there is a hash
collision during insertion, which is common as we fill the table until a
load factor of 2.0 is hit, we walk the chained elements, comparing every
operand with the new element's operands. This can be very expensive if the
MDNode has many operands.

We sacrifice a word of space in MDNode to cache the full hash value, reducing
compares on collision to a minimum. MDNode grows from 28 to 32 bytes + operands
on x86. On x86_64 the new bits fit nicely into existing padding, not growing
the struct at all.

The actual speedup depends a lot on the test case and is typically between
1% and 2% for C++ code with clang -c -O0 -g.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154497 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-11 14:06:54 +00:00
autoconf Fix a problem in the target detection for Debian GNU/HURD 2012-04-05 19:34:15 +00:00
bindings [python] Add negative MemoryBuffer testcase 2012-03-22 11:23:52 +00:00
cmake Add InitializeNativeTargetDisassembler function. 2012-03-26 21:56:56 +00:00
docs Express the number of ULPs in fpaccuracy metadata as a real rather than a 2012-04-10 08:22:43 +00:00
examples
include Cache the hash value of the operands in the MDNode. 2012-04-11 14:06:54 +00:00
lib Cache the hash value of the operands in the MDNode. 2012-04-11 14:06:54 +00:00
projects Fix a problem in the target detection for Debian GNU/HURD 2012-04-05 19:34:15 +00:00
runtime Use the correct filename for the error message. 2012-03-28 02:39:06 +00:00
test Add more fused mul+add/sub patterns. rdar://10139676 2012-04-11 06:59:47 +00:00
tools llvm-stress: stop abusing ConstantFP::get() 2012-04-10 22:44:51 +00:00
unittests Add YAML parser to Support. 2012-04-03 23:09:22 +00:00
utils Tablegen'd regpressure: emit the weighted pressure limit. 2012-04-11 04:31:33 +00:00
.gitignore
CMakeLists.txt Add YAML parser to Support. 2012-04-03 23:09:22 +00:00
configure Fix a problem in the target detection for Debian GNU/HURD 2012-04-05 19:34:15 +00:00
CREDITS.TXT
LICENSE.TXT Add YAML parser to Support. 2012-04-03 23:09:22 +00:00
llvm.spec.in
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in
Makefile.rules
README.txt test commit 2012-03-20 13:12:38 +00:00

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level
Virtual Machine, a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the HTML documentation provided in docs/index.html for further
assistance with LLVM.

If you're writing a package for LLVM, see docs/Packaging.html for our
suggestions.