aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/Hexagon/Disassembler/HexagonDisassembler.cpp
diff options
context:
space:
mode:
authorquic-akaryaki <123192073+quic-akaryaki@users.noreply.github.com>2024-01-18 15:04:32 -0600
committerGitHub <noreply@github.com>2024-01-18 15:04:32 -0600
commit96542c018f75b54b35aa3e08f184a4909f8c0c04 (patch)
treea8a540ac87d54847e916a5961a7a051bb67b18e6 /llvm/lib/Target/Hexagon/Disassembler/HexagonDisassembler.cpp
parenta9ca820529c69674e01d2e90cadc69e361ecf339 (diff)
downloadllvm-96542c018f75b54b35aa3e08f184a4909f8c0c04.zip
llvm-96542c018f75b54b35aa3e08f184a4909f8c0c04.tar.gz
llvm-96542c018f75b54b35aa3e08f184a4909f8c0c04.tar.bz2
[Hexagon] Flip subreg bit for reverse pairs hvx .new (#75873)
In .new instructions, the upper vector of a reverse pair (e.g. V4 in V4:5) should be referenced with an odd sss value.
Diffstat (limited to 'llvm/lib/Target/Hexagon/Disassembler/HexagonDisassembler.cpp')
-rw-r--r--llvm/lib/Target/Hexagon/Disassembler/HexagonDisassembler.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Target/Hexagon/Disassembler/HexagonDisassembler.cpp b/llvm/lib/Target/Hexagon/Disassembler/HexagonDisassembler.cpp
index c7e22d7..44a5cd7 100644
--- a/llvm/lib/Target/Hexagon/Disassembler/HexagonDisassembler.cpp
+++ b/llvm/lib/Target/Hexagon/Disassembler/HexagonDisassembler.cpp
@@ -512,6 +512,8 @@ DecodeStatus HexagonDisassembler::getSingleInstruction(MCInst &MI, MCInst &MCB,
const bool Rev = HexagonMCInstrInfo::IsReverseVecRegPair(Producer);
const unsigned ProdPairIndex =
Rev ? Producer - Hexagon::WR0 : Producer - Hexagon::W0;
+ if (Rev)
+ SubregBit = !SubregBit;
Producer = (ProdPairIndex << 1) + SubregBit + Hexagon::V0;
} else if (SubregBit)
// Hexagon PRM 10.11 New-value operands