llvm/test
Colin LeMahieu e7bc8f5cad [Hexagon] Adding relocation for code size, cold path optimization allowing a 23-bit 4-byte aligned relocation to be a valid instruction encoding.
The usual way to get a 32-bit relocation is to use a constant extender which doubles the size of the instruction, 4 bytes to 8 bytes.

Another way is to put a .word32 and mix code and data within a function.  The disadvantage is it's not a valid instruction encoding and jumping over it causes prefetch stalls inside the hardware.

This relocation packs a 23-bit value in to an "r0 = add(rX, #a)" instruction by overwriting the source register bits.  Since r0 is the return value register, if this instruction is placed after a function call which return void, r0 will be filled with an undefined value, the prefetch won't be confused, and the callee can access the constant value by way of the link register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261006 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-16 20:38:17 +00:00
..
Analysis [attrs] Move the norecurse deduction to operate on the node set rather 2016-02-13 08:47:51 +00:00
Assembler Fix constant folding of constant vector GEPs with undef or null as pointer argument. 2016-01-19 16:34:31 +00:00
Bindings Make sure the functions' range is empty before going through it in the LLVM C API test 2016-02-16 08:37:01 +00:00
Bitcode Restore "[ThinLTO] Use MD5 hash in function index." with fix 2016-02-10 21:55:02 +00:00
BugPoint
CodeGen [AArch64] Add pass to remove redundant copy after RA 2016-02-16 20:02:39 +00:00
DebugInfo [llvm-pdbdump] Start to decode some streams 2016-02-12 22:27:44 +00:00
Examples
ExecutionEngine Disable the new Orc lazy JIT tests on Windows, they do not pass 2016-02-10 18:46:42 +00:00
Feature [GMR/OperandBundles] Teach getModRefBehavior about operand bundles 2016-02-09 02:31:47 +00:00
FileCheck
Instrumentation [msan] Put msan constructor in a comdat. 2016-02-12 00:37:52 +00:00
Integer
JitListener
LibDriver
Linker [ThinLTO] Remove imported available externally defs from comdats. 2016-02-08 18:47:20 +00:00
LTO [LTO] Restore original linkage of externals prior to splitting 2016-01-18 23:24:54 +00:00
MC [Hexagon] Adding relocation for code size, cold path optimization allowing a 23-bit 4-byte aligned relocation to be a valid instruction encoding. 2016-02-16 20:38:17 +00:00
Object Reapply r260489. 2016-02-16 15:16:00 +00:00
Other [PM/AA] Wire BasicAA's new pass manager class up to the pass registry. 2016-02-13 23:46:24 +00:00
SymbolRewriter
TableGen SelectionDAG: Make Properties a field of SDPatternOperator 2016-02-10 18:40:04 +00:00
tools This reverts commit r260488 and r260489. 2016-02-16 14:17:48 +00:00
Transforms Revert 260705, it appears to be causing pr26628 2016-02-16 17:14:30 +00:00
Unit
Verifier Add a "gc-transition" operand bundle 2016-01-20 19:50:25 +00:00
YAMLParser
.clang-format
CMakeLists.txt Introduce sanstats tool and llvm::CreateSanitizerStatReport function. 2016-01-16 00:31:11 +00:00
lit.cfg Introduce sanstats tool and llvm::CreateSanitizerStatReport function. 2016-01-16 00:31:11 +00:00
lit.site.cfg.in
TestRunner.sh