summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2018-04-06 14:26:03 +0000
committerpatrick <patrick@openbsd.org>2018-04-06 14:26:03 +0000
commitbdabc2f19ffb9e20600dad6e8a300842a7bda50e (patch)
treec50e7b2e5449b074651bb82a58517a8ebc4a8cf7 /gnu/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
parentPrint a 'p' flag for file descriptors that were opened after pledge(2). (diff)
downloadwireguard-openbsd-bdabc2f19ffb9e20600dad6e8a300842a7bda50e.tar.xz
wireguard-openbsd-bdabc2f19ffb9e20600dad6e8a300842a7bda50e.zip
Import LLVM 6.0.1 release including clang, lld and lldb.
"where is the kaboom?" deraadt@
Diffstat (limited to 'gnu/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h')
-rw-r--r--gnu/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h20
1 files changed, 13 insertions, 7 deletions
diff --git a/gnu/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h b/gnu/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
index b07fd0b17d3..ecd9d8dccaf 100644
--- a/gnu/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
+++ b/gnu/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
@@ -546,24 +546,26 @@ struct InternalInstruction {
// Prefix state
- // 1 if the prefix byte corresponding to the entry is present; 0 if not
- uint8_t prefixPresent[0x100];
- // contains the location (for use with the reader) of the prefix byte
- uint64_t prefixLocations[0x100];
+ // The possible mandatory prefix
+ uint8_t mandatoryPrefix;
// The value of the vector extension prefix(EVEX/VEX/XOP), if present
uint8_t vectorExtensionPrefix[4];
// The type of the vector extension prefix
VectorExtensionType vectorExtensionType;
// The value of the REX prefix, if present
uint8_t rexPrefix;
- // The location where a mandatory prefix would have to be (i.e., right before
- // the opcode, or right before the REX prefix if one is present).
- uint64_t necessaryPrefixLocation;
// The segment override type
SegmentOverride segmentOverride;
// 1 if the prefix byte, 0xf2 or 0xf3 is xacquire or xrelease
bool xAcquireRelease;
+ // Address-size override
+ bool hasAdSize;
+ // Operand-size override
+ bool hasOpSize;
+ // The repeat prefix if any
+ uint8_t repeatPrefix;
+
// Sizes of various critical pieces of data, in bytes
uint8_t registerSize;
uint8_t addressSize;
@@ -637,10 +639,14 @@ struct InternalInstruction {
Reg reg;
// SIB state
+ SIBIndex sibIndexBase;
SIBIndex sibIndex;
uint8_t sibScale;
SIBBase sibBase;
+ // Embedded rounding control.
+ uint8_t RC;
+
ArrayRef<OperandSpecifier> operands;
};