diff options
author | Chad Rosier <mcrosier@apple.com> | 2012-09-05 21:00:58 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2012-09-05 21:00:58 +0000 |
commit | 576cd11ab8035d4240f7e6ea8d7c6c2e45154f86 (patch) | |
tree | 813cef92b22706b8f93e5c436b6342a415d33757 /lib/CodeGen/MachineInstr.cpp | |
parent | a759eb3bb9fe50832289fec522d5d0b5dd171af2 (diff) |
[ms-inline asm] Propagate the asm dialect into the MachineInstr representation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163243 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/MachineInstr.cpp')
-rw-r--r-- | lib/CodeGen/MachineInstr.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/CodeGen/MachineInstr.cpp b/lib/CodeGen/MachineInstr.cpp index 5e5ed0b01f..dad6840015 100644 --- a/lib/CodeGen/MachineInstr.cpp +++ b/lib/CodeGen/MachineInstr.cpp @@ -967,6 +967,16 @@ bool MachineInstr::isStackAligningInlineAsm() const { return false; } +InlineAsm::AsmDialect MachineInstr::getInlineAsmDialect() const { + assert(isInlineAsm() && "getInlineAsmDialect() only works for inline asms!"); + unsigned ExtraInfo = getOperand(InlineAsm::MIOp_ExtraInfo).getImm(); + if (ExtraInfo & InlineAsm::Extra_IntelDialect) + return InlineAsm::AD_Intel; + + assert((ExtraInfo & InlineAsm::Extra_ATTDialect) && "Expected AT&T dialect!"); + return InlineAsm::AD_ATT; // The default. +} + int MachineInstr::findInlineAsmFlagIdx(unsigned OpIdx, unsigned *GroupNo) const { assert(isInlineAsm() && "Expected an inline asm instruction"); @@ -1569,6 +1579,10 @@ void MachineInstr::print(raw_ostream &OS, const TargetMachine *TM) const { OS << " [sideeffect]"; if (ExtraInfo & InlineAsm::Extra_IsAlignStack) OS << " [alignstack]"; + if (ExtraInfo & InlineAsm::Extra_ATTDialect) + OS << " [attdialect]"; + if (ExtraInfo & InlineAsm::Extra_IntelDialect) + OS << " [inteldialect]"; StartOp = AsmDescOp = InlineAsm::MIOp_FirstOperand; FirstOp = false; |