#
ecef1d9c |
| 16-Feb-2016 |
Colin LeMahieu <colinl@codeaurora.org> |
[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
[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
show more ...
|
#
986a49b0 |
| 16-Feb-2016 |
Benjamin Kramer <benny.kra@googlemail.com> |
[Hexagon] Hoist nonnull assert up.
Once a pointer is turned into a reference it cannot be nullptr, clang rightfully warns about this assert being a tautology. Put the assert before the reference is
[Hexagon] Hoist nonnull assert up.
Once a pointer is turned into a reference it cannot be nullptr, clang rightfully warns about this assert being a tautology. Put the assert before the reference is created.
llvm-svn: 260949
show more ...
|
#
c7b2124d |
| 15-Feb-2016 |
Colin LeMahieu <colinl@codeaurora.org> |
[NFC] Fixing naming convention, lowercase start of function name.
llvm-svn: 260903
|
#
98c8e070 |
| 15-Feb-2016 |
Colin LeMahieu <colinl@codeaurora.org> |
[Hexagon] Wrapping all MCExprs inside MCOperands within HexagonMCExpr to simplify handling and allow flags on the expression.
llvm-svn: 260902
|
Revision tags: llvmorg-3.8.0-rc2 |
|
#
3ef74f59 |
| 31-Jan-2016 |
Craig Topper <craig.topper@gmail.com> |
Replace usages of llvm::utostr_32 with just llvm::utostr. While this is less efficient, its unclear the few places that were using the _32 version were doing so for efficiency.
llvm-svn: 259330
|
#
b3e8a6d2 |
| 27-Jan-2016 |
Benjamin Kramer <benny.kra@googlemail.com> |
Move MCTargetAsmParser.h to llvm/MC/MCParser where it belongs.
llvm-svn: 258917
|
Revision tags: llvmorg-3.8.0-rc1 |
|
#
e4b9f507 |
| 07-Dec-2015 |
Sanjay Patel <spatel@rotateright.com> |
fix 'the the '; NFC
llvm-svn: 254928
|
#
4c606e66 |
| 04-Dec-2015 |
Colin LeMahieu <colinl@codeaurora.org> |
[Hexagon] Using multiply instead of shift on signed number which can be UB
llvm-svn: 254719
|
#
44ff204f |
| 02-Dec-2015 |
Alexey Samsonov <vonosmas@gmail.com> |
Fixup for r254547: use format_hex() to simplify code.
llvm-svn: 254560
|
#
bcfabaa0 |
| 02-Dec-2015 |
Alexey Samsonov <vonosmas@gmail.com> |
[Hexagon] Remove std::hex in favor of format().
std::hex is not used anywhere in LLVM code base except for this place, and it has a known undefined behavior (at least in libstdc++ 4.9.3): https://ll
[Hexagon] Remove std::hex in favor of format().
std::hex is not used anywhere in LLVM code base except for this place, and it has a known undefined behavior (at least in libstdc++ 4.9.3): https://llvm.org/bugs/show_bug.cgi?id=18156, which fires in UBSan bootstrap of LLVM.
llvm-svn: 254547
show more ...
|
Revision tags: llvmorg-3.7.1, llvmorg-3.7.1-rc2, llvmorg-3.7.1-rc1 |
|
#
b11ef089 |
| 14-Nov-2015 |
Akira Hatanaka <ahatanaka@apple.com> |
Reduce the size of MCRelaxableFragment.
MCRelaxableFragment previously kept a copy of MCSubtargetInfo and MCInst to enable re-encoding the MCInst later during relaxation. A copy of MCSubtargetInfo (
Reduce the size of MCRelaxableFragment.
MCRelaxableFragment previously kept a copy of MCSubtargetInfo and MCInst to enable re-encoding the MCInst later during relaxation. A copy of MCSubtargetInfo (instead of a reference or pointer) was needed because the feature bits could be modified by the parser.
This commit replaces the MCSubtargetInfo copy in MCRelaxableFragment with a constant reference to MCSubtargetInfo. The copies of MCSubtargetInfo are kept in MCContext, and the target parsers are now responsible for asking MCContext to provide a copy whenever the feature bits of MCSubtargetInfo have to be toggled. With this patch, I saw a 4% reduction in peak memory usage when I compiled verify-uselistorder.lto.bc using llc.
rdar://problem/21736951
Differential Revision: http://reviews.llvm.org/D14346
llvm-svn: 253127
show more ...
|
#
bd9fc284 |
| 14-Nov-2015 |
Akira Hatanaka <ahatanaka@apple.com> |
[MCTargetAsmParser] Move the member varialbes that reference MCSubtargetInfo in the subclasses into MCTargetAsmParser and define a member function getSTI.
This is done in preparation for making chan
[MCTargetAsmParser] Move the member varialbes that reference MCSubtargetInfo in the subclasses into MCTargetAsmParser and define a member function getSTI.
This is done in preparation for making changes to shrink the size of MCRelaxableFragment. (see http://reviews.llvm.org/D14346).
llvm-svn: 253124
show more ...
|
#
f0af6e52 |
| 13-Nov-2015 |
Colin LeMahieu <colinl@codeaurora.org> |
[Hexagon] Factoring bundle creation in to a utility function.
llvm-svn: 253056
|
#
7c576d8b |
| 12-Nov-2015 |
Benjamin Kramer <benny.kra@googlemail.com> |
[Hexagon] Allocate MCInst in the MCContext to avoid leaking it.
Found by leaksanitizer.
llvm-svn: 252931
|
#
9d851f04 |
| 09-Nov-2015 |
Colin LeMahieu <colinl@codeaurora.org> |
[Hexagon] Separating statement to match what clang-format would do.
llvm-svn: 252513
|
#
9ea507ed |
| 09-Nov-2015 |
Colin LeMahieu <colinl@codeaurora.org> |
[Hexagon] Adding override to methods.
llvm-svn: 252453
|
#
775d7ad6 |
| 09-Nov-2015 |
Colin LeMahieu <colinl@codeaurora.org> |
[Hexagon] Fixing warnings.
llvm-svn: 252448
|
#
7cd08927 |
| 09-Nov-2015 |
Colin LeMahieu <colinl@codeaurora.org> |
[Hexagon] Enabling ASM parsing on Hexagon backend and adding instruction parsing tests. General updating of the code emission.
llvm-svn: 252443
|