summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-07-19 05:44:09 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-07-19 05:44:09 +0000
commiteefe8616bed788845ddd6264d15e90fe913a63c4 (patch)
tree7019cf332e00956de2b256df7c9751278ac20a10 /llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
parent8d72f2aa3aea41a041ccc9c83fdf54d6df43337f (diff)
downloadbcm5719-llvm-eefe8616bed788845ddd6264d15e90fe913a63c4.tar.gz
bcm5719-llvm-eefe8616bed788845ddd6264d15e90fe913a63c4.zip
TblGen/AsmMatcher: Add support for honoring instruction Requires<[]> attributes as part of the matcher.
- Currently includes a hack to limit ourselves to "In32BitMode" and "In64BitMode", because we don't have the other infrastructure to properly deal with setting SSE, etc. features on X86. llvm-svn: 108677
Diffstat (limited to 'llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp')
-rw-r--r--llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
index 9b1ef197429..c33678cb262 100644
--- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
+++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
@@ -9,6 +9,7 @@
#include "llvm/Target/TargetAsmParser.h"
#include "X86.h"
+#include "X86Subtarget.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/Twine.h"
@@ -51,12 +52,14 @@ private:
void InstructionCleanup(MCInst &Inst);
- /// @name Auto-generated Match Functions
- /// {
-
bool MatchInstruction(const SmallVectorImpl<MCParsedAsmOperand*> &Operands,
MCInst &Inst);
+ /// @name Auto-generated Matcher Functions
+ /// {
+
+ unsigned ComputeAvailableFeatures(const X86Subtarget *Subtarget) const;
+
bool MatchInstructionImpl(
const SmallVectorImpl<MCParsedAsmOperand*> &Operands, MCInst &Inst);
@@ -64,7 +67,12 @@ private:
public:
X86ATTAsmParser(const Target &T, MCAsmParser &_Parser, TargetMachine &TM)
- : TargetAsmParser(T), Parser(_Parser), TM(TM) {}
+ : TargetAsmParser(T), Parser(_Parser), TM(TM) {
+
+ // Initialize the set of available features.
+ setAvailableFeatures(ComputeAvailableFeatures(
+ &TM.getSubtarget<X86Subtarget>()));
+ }
virtual bool ParseInstruction(StringRef Name, SMLoc NameLoc,
SmallVectorImpl<MCParsedAsmOperand*> &Operands);
OpenPOWER on IntegriCloud