Krzysztof Parzyszek
e737b86f8c
[Hexagon] Handle double-vector registers as new-value producers
...
Patch by Colin LeMahieu.
llvm-svn: 267897
2016-04-28 15:54:48 +00:00
Krzysztof Parzyszek
c6f1e1a709
[Hexagon] Properly encode registers in duplex instructions
...
llvm-svn: 263980
2016-03-21 20:13:33 +00:00
Chad Rosier
c00ab4f27d
[Hexagon] Remove redundant check.
...
llvm-svn: 261232
2016-02-18 17:49:57 +00:00
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
Colin LeMahieu
98c8e070b9
[Hexagon] Wrapping all MCExprs inside MCOperands within HexagonMCExpr to simplify handling and allow flags on the expression.
...
llvm-svn: 260902
2016-02-15 18:42:07 +00:00
Colin LeMahieu
0e05192d49
[MC] Merge VK_PPC_TPREL in to generic VK_TPREL.
...
Differential Revision: http://reviews.llvm.org/D17038
llvm-svn: 260401
2016-02-10 18:32:01 +00:00
Colin LeMahieu
1c79d9be6e
[Hexagon] Fixing relocation generation and adding tests.
...
llvm-svn: 260259
2016-02-09 19:18:02 +00:00
Krzysztof Parzyszek
bc17b68a47
[Hexagon] Add check for nullptr in getFixupNoBits
...
llvm-svn: 257338
2016-01-11 15:51:53 +00:00
Craig Topper
e5e035a3a8
Replace uint16_t with the MCPhysReg typedef in many places. A lot of physical register arrays already use this typedef.
...
llvm-svn: 254843
2015-12-05 07:13:35 +00:00
Tilmann Scheller
bfd7ce01ea
[Hexagon] Remove redundant local variable.
...
Identified by the Clang static analyzer.
llvm-svn: 253660
2015-11-20 12:10:17 +00:00
Colin LeMahieu
13cc3ab785
[Hexagon] Fixing compound register printing and reenabling more tests.
...
llvm-svn: 252574
2015-11-10 00:51:56 +00:00
Alexander Kornienko
f00654e31b
Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC)
...
Apparently, the style needs to be agreed upon first.
llvm-svn: 240390
2015-06-23 09:49:53 +00:00
Alexander Kornienko
70bc5f1398
Fixed/added namespace ending comments using clang-tidy. NFC
...
The patch is generated using this command:
tools/clang/tools/extra/clang-tidy/tool/run-clang-tidy.py -fix \
-checks=-*,llvm-namespace-comment -header-filter='llvm/.*|clang/.*' \
llvm/lib/
Thanks to Eugene Kosov for the original patch!
llvm-svn: 240137
2015-06-19 15:57:42 +00:00
Colin LeMahieu
a071a8e5b6
[Hexagon] PC-relative offsets are relative to packet start rather than the offset of the relocation. Set relocation addend and check it's correct in the ELF.
...
llvm-svn: 239769
2015-06-15 21:52:13 +00:00
Colin LeMahieu
be8c453d58
[Hexagon] Reapply r239097 with tests corrected for shuffling and duplexing.
...
llvm-svn: 239161
2015-06-05 16:00:11 +00:00
Colin LeMahieu
c40be85adc
Revert r239095 incorrect test tree.
...
llvm-svn: 239102
2015-06-04 21:32:42 +00:00
Colin LeMahieu
fc52c11d80
[Hexagon] Adding functionality for duplexing. Duplexing is a way to compress commonly used pairs of instructions in order to reduce code size. The test case duplex.ll normally would be 8 bytes, assign register to 0 and jump to link register. After duplexing this is only 4 bytes. This also tests the HexagonMCShuffler code path which is used to make sure duplexed instructions still follow slot requirements.
...
llvm-svn: 239095
2015-06-04 21:16:16 +00:00
Benjamin Kramer
50e2a29385
Replace custom fixed endian to raw_ostream emission with EndianStream.
...
Less code, clearer and more efficient. No functionality change intended.
llvm-svn: 239040
2015-06-04 15:03:02 +00:00
Jim Grosbach
13760bd152
MC: Clean up MCExpr naming. NFC.
...
llvm-svn: 238634
2015-05-30 01:25:56 +00:00
Colin LeMahieu
68d967d92e
[Hexagon] Disassembling, printing, and emitting instructions a whole-bundle at a time which is the semantic unit for Hexagon. Fixing tests to use the new format. Disabling tests in the direct object emission path for a followup patch.
...
llvm-svn: 238556
2015-05-29 14:44:13 +00:00
Jim Grosbach
91df21f740
MC: Update MCCodeEmitter naming. NFC.
...
s/EncodeInstruction/encodeInstruction/
llvm-svn: 237469
2015-05-15 19:13:16 +00:00
Jim Grosbach
63661f8d73
MC: Update MCFixup naming. NFC.
...
s/MCFixup::Create/MCFixup::create/
llvm-svn: 237468
2015-05-15 19:13:05 +00:00
Colin LeMahieu
6efd273a61
[Hexagon] Removing variable unused in release.
...
llvm-svn: 236351
2015-05-01 21:30:22 +00:00
Colin LeMahieu
b662565475
[Hexagon] Adding expression MC emission and removing XFAIL from test that hits this code path.
...
llvm-svn: 236348
2015-05-01 21:14:21 +00:00
Eric Christopher
0169e42c3b
Remove the use of the subtarget in MCCodeEmitter creation and
...
update all ports accordingly. Required a couple of small rewrites
in handling subtarget features during creation in PPC.
llvm-svn: 231861
2015-03-10 22:03:14 +00:00
NAKAMURA Takumi
3d61760bd6
Fix a warning on HexagonMCCodeEmitter::MCII. [-Wunused-private-field]
...
llvm-svn: 230170
2015-02-22 09:58:29 +00:00
Colin LeMahieu
1174fea31c
[Hexagon] Moving remaining methods off of HexagonMCInst in to HexagonMCInstrInfo and eliminating HexagonMCInst class.
...
llvm-svn: 229914
2015-02-19 21:10:50 +00:00
Colin LeMahieu
af304e5192
[Hexagon] Creating HexagonMCInstrInfo namespace as landing zone for static functions detached from HexagonMCInst.
...
llvm-svn: 229885
2015-02-19 19:00:00 +00:00
Chandler Carruth
d9903888d9
[cleanup] Re-sort all the #include lines in LLVM using
...
utils/sort_includes.py.
I clearly haven't done this in a while, so more changed than usual. This
even uncovered a missing include from the InstrProf library that I've
added. No functionality changed here, just mechanical cleanup of the
include order.
llvm-svn: 225974
2015-01-14 11:23:27 +00:00
Colin LeMahieu
5691eb5ee7
Reverting 225045 and 225043 and XFAIL multiline.ll on hexagon
...
llvm-svn: 225047
2014-12-31 17:14:35 +00:00
Colin LeMahieu
79e8ebada2
[Hexagon] Removing assertion to appease buildbot until I can reproduce the problem
...
llvm-svn: 225045
2014-12-31 16:20:00 +00:00
Colin LeMahieu
94272611ac
[Hexagon] Changing an llvm_unreachable to an assertion and returning 0. Relocations aren't implemented yet but we don't need to abort for this in release builds.
...
llvm-svn: 225043
2014-12-31 15:57:38 +00:00
Colin LeMahieu
5241881bbc
[Hexagon] Reverting 220584 to address ASAN errors.
...
llvm-svn: 221210
2014-11-04 00:14:36 +00:00
Colin LeMahieu
838307b31f
[Hexagon] Resubmission of 220427
...
Modified library structure to deal with circular dependency between HexagonInstPrinter and HexagonMCInst.
Adding encoding bits for add opcode.
Adding llvm-mc tests.
Removing unit tests.
http://reviews.llvm.org/D5624
llvm-svn: 220584
2014-10-24 19:00:32 +00:00
NAKAMURA Takumi
504bbf91cd
Revert r220427, "[Hexagon] Adding encoding bits for add opcode."
...
It brought cyclic dependecy between HexagonAsmPrinter and HexagonDesc.
llvm-svn: 220478
2014-10-23 11:31:22 +00:00
Colin LeMahieu
73a51a1a68
[Hexagon] Adding encoding bits for add opcode.
...
Adding llvm-mc tests.
Removing unit tests.
http://reviews.llvm.org/D5624
llvm-svn: 220427
2014-10-22 20:58:35 +00:00
NAKAMURA Takumi
2a295fd337
HexagonMCCodeEmitter.cpp: Prune 2nd redundant \brief. [-Wdocumentation]
...
llvm-svn: 219073
2014-10-05 04:54:54 +00:00
Sid Manning
7da3f9acba
Adding skeleton for unit testing Hexagon Code Emission
...
Adding and modifying CMakeLists.txt files to run unit tests under
unittests/Target/* if the directory exists. Adding basic unit test to check
that code emitter object can be retrieved.
Differential Revision: http://reviews.llvm.org/D5523
Change by: Colin LeMahieu
llvm-svn: 218986
2014-10-03 13:18:11 +00:00