summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2017-10-21 20:03:20 +0000
committerCraig Topper <craig.topper@intel.com>2017-10-21 20:03:20 +0000
commitca2382d8097b5cee4dfbeb30f7b791aa242f313a (patch)
tree84efed07d62027bcc306035487154d0e68b861d3 /llvm/utils/TableGen
parentcb028c73214c0ce18ed1fe76e2417c961f0389c9 (diff)
downloadbcm5719-llvm-ca2382d8097b5cee4dfbeb30f7b791aa242f313a.tar.gz
bcm5719-llvm-ca2382d8097b5cee4dfbeb30f7b791aa242f313a.zip
[X86] Fix disassembling of EVEX instructions to stop accidentally decoding the SIB index register as an XMM/YMM/ZMM register.
This introduces a new operand type to encode the whether the index register should be XMM/YMM/ZMM. And new code to fixup the results created by readSIB. This has the nice effect of removing a bunch of code that hard coded the name of every GATHER and SCATTER instruction to map the index type. This fixes PR32807. llvm-svn: 316273
Diffstat (limited to 'llvm/utils/TableGen')
-rw-r--r--llvm/utils/TableGen/X86RecognizableInstr.cpp26
1 files changed, 13 insertions, 13 deletions
diff --git a/llvm/utils/TableGen/X86RecognizableInstr.cpp b/llvm/utils/TableGen/X86RecognizableInstr.cpp
index 202a71ae4dc..0bb26f71162 100644
--- a/llvm/utils/TableGen/X86RecognizableInstr.cpp
+++ b/llvm/utils/TableGen/X86RecognizableInstr.cpp
@@ -929,19 +929,19 @@ OperandType RecognizableInstr::typeFromString(const std::string &s,
TYPE("VK64", TYPE_VK)
TYPE("VK64WM", TYPE_VK)
TYPE("GR32_NOAX", TYPE_Rv)
- TYPE("vx64mem", TYPE_M)
- TYPE("vx128mem", TYPE_M)
- TYPE("vx256mem", TYPE_M)
- TYPE("vy128mem", TYPE_M)
- TYPE("vy256mem", TYPE_M)
- TYPE("vx64xmem", TYPE_M)
- TYPE("vx128xmem", TYPE_M)
- TYPE("vx256xmem", TYPE_M)
- TYPE("vy128xmem", TYPE_M)
- TYPE("vy256xmem", TYPE_M)
- TYPE("vy512mem", TYPE_M)
- TYPE("vz256xmem", TYPE_M)
- TYPE("vz512mem", TYPE_M)
+ TYPE("vx64mem", TYPE_MVSIBX)
+ TYPE("vx128mem", TYPE_MVSIBX)
+ TYPE("vx256mem", TYPE_MVSIBX)
+ TYPE("vy128mem", TYPE_MVSIBY)
+ TYPE("vy256mem", TYPE_MVSIBY)
+ TYPE("vx64xmem", TYPE_MVSIBX)
+ TYPE("vx128xmem", TYPE_MVSIBX)
+ TYPE("vx256xmem", TYPE_MVSIBX)
+ TYPE("vy128xmem", TYPE_MVSIBY)
+ TYPE("vy256xmem", TYPE_MVSIBY)
+ TYPE("vy512mem", TYPE_MVSIBY)
+ TYPE("vz256xmem", TYPE_MVSIBZ)
+ TYPE("vz512mem", TYPE_MVSIBZ)
TYPE("BNDR", TYPE_BNDR)
errs() << "Unhandled type string " << s << "\n";
llvm_unreachable("Unhandled type string");
OpenPOWER on IntegriCloud