summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorJiong Wang <jiwang@tilera.com>2019-02-28 19:22:34 +0000
committerJiong Wang <jiwang@tilera.com>2019-02-28 19:22:34 +0000
commit0a039660fa85f725f693b5de3bf207df22bcca3d (patch)
tree9619af3b29f9f6a98d23ef3b3e89eb611dd463ba /llvm/lib
parent3da8bcd0a06d54cc53f7fcae998fe829a6fec094 (diff)
downloadbcm5719-llvm-0a039660fa85f725f693b5de3bf207df22bcca3d.tar.gz
bcm5719-llvm-0a039660fa85f725f693b5de3bf207df22bcca3d.zip
bpf: disassembler support for XADD under sub-register mode
Like the other load/store instructions, "w" register is preferred when disassembling BPF_STX | BPF_W | BPF_XADD. v1 -> v2: - Updated testcase insn-unit.s (Yonghong) Acked-by: Yonghong Song <yhs@fb.com> Signed-off-by: Jiong Wang <jiong.wang@netronome.com> llvm-svn: 355127
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/BPF/Disassembler/BPFDisassembler.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Target/BPF/Disassembler/BPFDisassembler.cpp b/llvm/lib/Target/BPF/Disassembler/BPFDisassembler.cpp
index ed09e446e73..c5be7cb1a4e 100644
--- a/llvm/lib/Target/BPF/Disassembler/BPFDisassembler.cpp
+++ b/llvm/lib/Target/BPF/Disassembler/BPFDisassembler.cpp
@@ -171,9 +171,10 @@ DecodeStatus BPFDisassembler::getInstruction(MCInst &Instr, uint64_t &Size,
if (Result == MCDisassembler::Fail) return MCDisassembler::Fail;
uint8_t InstClass = getInstClass(Insn);
+ uint8_t InstMode = getInstMode(Insn);
if ((InstClass == BPF_LDX || InstClass == BPF_STX) &&
getInstSize(Insn) != BPF_DW &&
- getInstMode(Insn) == BPF_MEM &&
+ (InstMode == BPF_MEM || InstMode == BPF_XADD) &&
STI.getFeatureBits()[BPF::ALU32])
Result = decodeInstruction(DecoderTableBPFALU3264, Instr, Insn, Address,
this, STI);
OpenPOWER on IntegriCloud