summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/Disassembler
diff options
context:
space:
mode:
authorOliver Stannard <oliver.stannard@linaro.org>2019-09-09 08:50:28 +0000
committerOliver Stannard <oliver.stannard@linaro.org>2019-09-09 08:50:28 +0000
commit6b9aedaec6815b819c626c5ba8d6fbbff9c6028c (patch)
tree8678fa46611e8e84ffead2d512539a9d115a0567 /llvm/lib/Target/ARM/Disassembler
parentad3841fcae6392cb315e2ab39e6d49887d5ef449 (diff)
downloadbcm5719-llvm-6b9aedaec6815b819c626c5ba8d6fbbff9c6028c.tar.gz
bcm5719-llvm-6b9aedaec6815b819c626c5ba8d6fbbff9c6028c.zip
[ARM][MVE] Decoding of uqrshl and sqrshl accepts unpredictable encodings
Specify the Unpredictable bits, and return softfails when appropriate. Patch by Mark Murray! Differential revision: https://reviews.llvm.org/D66939 llvm-svn: 371374
Diffstat (limited to 'llvm/lib/Target/ARM/Disassembler')
-rw-r--r--llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp b/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
index e027fd6906e..eabc26d05f4 100644
--- a/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
+++ b/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
@@ -6483,6 +6483,12 @@ static DecodeStatus DecodeMVEOverlappingLongShift(
if (!Check(S, DecoderGPRRegisterClass(Inst, Rm, Address, Decoder)))
return MCDisassembler::Fail;
+ if (fieldFromInstruction (Insn, 6, 3) != 4)
+ return MCDisassembler::SoftFail;
+
+ if (Rda == Rm)
+ return MCDisassembler::SoftFail;
+
return S;
}
OpenPOWER on IntegriCloud