[Hexagon] Adding functionality for duplexing. Duplexing is a way to compress commonl...
authorColin LeMahieu <colinl@codeaurora.org>
Thu, 4 Jun 2015 21:16:16 +0000 (21:16 +0000)
committerColin LeMahieu <colinl@codeaurora.org>
Thu, 4 Jun 2015 21:16:16 +0000 (21:16 +0000)
commit60b4c7fc306e3d0584749f461f0dbb309d96f6b2
tree922b1571057d3a9f0c924842deca718714a20d54
parent7c65b1bfb266a5f6e260b8e4ec685b171db81906
[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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239095 91177308-0d34-0410-b5e6-96231b3b80d8
16 files changed:
lib/Target/Hexagon/Disassembler/HexagonDisassembler.cpp
lib/Target/Hexagon/HexagonAsmPrinter.cpp
lib/Target/Hexagon/HexagonInstrFormatsV4.td
lib/Target/Hexagon/HexagonInstrInfoV4.td
lib/Target/Hexagon/HexagonIsetDx.td [new file with mode: 0644]
lib/Target/Hexagon/HexagonOperands.td
lib/Target/Hexagon/MCTargetDesc/CMakeLists.txt
lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp
lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h
lib/Target/Hexagon/MCTargetDesc/HexagonInstPrinter.cpp
lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp
lib/Target/Hexagon/MCTargetDesc/HexagonMCDuplexInfo.cpp [new file with mode: 0644]
lib/Target/Hexagon/MCTargetDesc/HexagonMCInstrInfo.cpp
lib/Target/Hexagon/MCTargetDesc/HexagonMCInstrInfo.h
lib/Target/Hexagon/MCTargetDesc/HexagonMCShuffler.cpp
test/CodeGen/Hexagon/duplex.ll [new file with mode: 0644]