diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-07-19 05:44:09 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-07-19 05:44:09 +0000 |
commit | eefe8616bed788845ddd6264d15e90fe913a63c4 (patch) | |
tree | 7019cf332e00956de2b256df7c9751278ac20a10 /llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | |
parent | 8d72f2aa3aea41a041ccc9c83fdf54d6df43337f (diff) | |
download | bcm5719-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.cpp | 16 |
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); |