summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorDavid Woodhouse <dwmw2@infradead.org>2014-01-22 15:08:21 +0000
committerDavid Woodhouse <dwmw2@infradead.org>2014-01-22 15:08:21 +0000
commitccbfd5b18a79a07229f11af478843eae16ac9b26 (patch)
tree066cfdd534b8461087353f7b9beff9c3493571ad /utils
parentdb9fa461d7d9643a1b25f13df73638be9c36cafb (diff)
downloadllvm-ccbfd5b18a79a07229f11af478843eae16ac9b26.tar.gz
llvm-ccbfd5b18a79a07229f11af478843eae16ac9b26.tar.bz2
llvm-ccbfd5b18a79a07229f11af478843eae16ac9b26.tar.xz
[x86] Allow address-size overrides for STOS[BWLQ] (PR9385)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199804 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rw-r--r--utils/TableGen/X86RecognizableInstr.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/utils/TableGen/X86RecognizableInstr.cpp b/utils/TableGen/X86RecognizableInstr.cpp
index 1530c42f76..1295051844 100644
--- a/utils/TableGen/X86RecognizableInstr.cpp
+++ b/utils/TableGen/X86RecognizableInstr.cpp
@@ -61,6 +61,7 @@ namespace X86Local {
MRMSrcMem = 6,
RawFrmMemOffs = 7,
RawFrmSrc = 8,
+ RawFrmDst = 9,
MRM0r = 16, MRM1r = 17, MRM2r = 18, MRM3r = 19,
MRM4r = 20, MRM5r = 21, MRM6r = 22, MRM7r = 23,
MRM0m = 24, MRM1m = 25, MRM2m = 26, MRM3m = 27,
@@ -634,6 +635,9 @@ void RecognizableInstr::emitInstructionSpecifier() {
case X86Local::RawFrmSrc:
HANDLE_OPERAND(relocation);
return;
+ case X86Local::RawFrmDst:
+ HANDLE_OPERAND(relocation);
+ return;
case X86Local::RawFrm:
// Operand 1 (optional) is an address or immediate.
// Operand 2 (optional) is an immediate.
@@ -1270,6 +1274,10 @@ OperandType RecognizableInstr::typeFromString(const std::string &s,
TYPE("srcidx16", TYPE_SRCIDX16)
TYPE("srcidx32", TYPE_SRCIDX32)
TYPE("srcidx64", TYPE_SRCIDX64)
+ TYPE("dstidx8", TYPE_DSTIDX8)
+ TYPE("dstidx16", TYPE_DSTIDX16)
+ TYPE("dstidx32", TYPE_DSTIDX32)
+ TYPE("dstidx64", TYPE_DSTIDX64)
TYPE("offset8", TYPE_MOFFS8)
TYPE("offset16", TYPE_MOFFS16)
TYPE("offset32", TYPE_MOFFS32)
@@ -1486,6 +1494,10 @@ OperandEncoding RecognizableInstr::relocationEncodingFromString
ENCODING("srcidx16", ENCODING_SI)
ENCODING("srcidx32", ENCODING_SI)
ENCODING("srcidx64", ENCODING_SI)
+ ENCODING("dstidx8", ENCODING_DI)
+ ENCODING("dstidx16", ENCODING_DI)
+ ENCODING("dstidx32", ENCODING_DI)
+ ENCODING("dstidx64", ENCODING_DI)
errs() << "Unhandled relocation encoding " << s << "\n";
llvm_unreachable("Unhandled relocation encoding");
}