llvm-project/llvm/lib
Colin LeMahieu ecef1d9cbc [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.

llvm-svn: 261006
2016-02-16 20:38:17 +00:00
..
Analysis Revert 260705, it appears to be causing pr26628 2016-02-16 17:14:30 +00:00
AsmParser Remove autoconf support 2016-01-26 21:29:08 +00:00
Bitcode Restore "[ThinLTO] Use MD5 hash in function index." with fix 2016-02-10 21:55:02 +00:00
CodeGen [GlobalISel] Re-apply r260922-260923 with MSVC-friendly code. 2016-02-16 19:26:02 +00:00
DebugInfo [DebugInfo] Eliminate compilation warning about used variable LSDA 2016-02-05 09:24:34 +00:00
ExecutionEngine Support: Fix incremental build when re-configuring targets 2016-02-13 22:58:43 +00:00
Fuzzer [libFuzzer] remove std::vector operations from hot paths, NFC 2016-02-13 17:56:51 +00:00
IR Deprecate LLVMGetDataLayout and replace it by LLVMGetDataLayoutStr 2016-02-16 00:23:52 +00:00
IRReader Remove autoconf support 2016-01-26 21:29:08 +00:00
LTO Move MCTargetAsmParser.h to llvm/MC/MCParser where it belongs. 2016-01-27 10:01:28 +00:00
LibDriver Remove autoconf support 2016-01-26 21:29:08 +00:00
LineEditor Remove autoconf support 2016-01-26 21:29:08 +00:00
Linker Pass a std::unique_ptr to IRMover::move. 2016-02-16 18:50:12 +00:00
MC [MC] Fixed parsing of macro arguments where expressions with spaces are present. 2016-02-11 13:48:49 +00:00
Object Simplify users of StringRef::{l,r}trim (NFC) 2016-02-16 02:06:01 +00:00
Option Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
Passes [PM/AA] Wire BasicAA's new pass manager class up to the pass registry. 2016-02-13 23:46:24 +00:00
ProfileData [PGO] Add another interface for annotateValueSite 2016-02-12 21:36:17 +00:00
Support Simplify users of StringRef::{l,r}trim (NFC) 2016-02-16 02:06:01 +00:00
TableGen Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
Target [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
Transforms [SCEVExpander] Make findExistingExpansion smarter 2016-02-16 06:46:58 +00:00
CMakeLists.txt LibDriver, llvm-lib: introduce. 2015-06-09 21:50:22 +00:00
LLVMBuild.txt Wrap some long lines in LLVMBuild files. NFC 2015-06-12 18:44:57 +00:00