diff options
author | Chad Rosier <mcrosier@apple.com> | 2012-09-05 22:17:43 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2012-09-05 22:17:43 +0000 |
commit | 77fffa6fdd389ad6d70a42b36c1c36c768c2de41 (patch) | |
tree | dd32c3c2a5aef7c6157f5faa7d5f92c13de3b4c8 | |
parent | 2943e378048636691eda1b1b4e437eea9da4a839 (diff) | |
download | llvm-77fffa6fdd389ad6d70a42b36c1c36c768c2de41.tar.gz llvm-77fffa6fdd389ad6d70a42b36c1c36c768c2de41.tar.bz2 llvm-77fffa6fdd389ad6d70a42b36c1c36c768c2de41.tar.xz |
[ms-inline asm] We only need one bit to represent the AsmDialect in the
MachineInstr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163257 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/InlineAsm.h | 3 | ||||
-rw-r--r-- | lib/CodeGen/MachineInstr.cpp | 10 | ||||
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 6 |
3 files changed, 6 insertions, 13 deletions
diff --git a/include/llvm/InlineAsm.h b/include/llvm/InlineAsm.h index 5de38e8f10..53ceca551b 100644 --- a/include/llvm/InlineAsm.h +++ b/include/llvm/InlineAsm.h @@ -214,8 +214,7 @@ public: // Interpretation of the MIOp_ExtraInfo bit field. Extra_HasSideEffects = 1, Extra_IsAlignStack = 2, - Extra_ATTDialect = 3, // AT&T AsmDialect. - Extra_IntelDialect = 4, // Intel AsmDialect. + Extra_AsmDialect = 3, // Inline asm operands map to multiple SDNode / MachineInstr operands. // The first operand is an immediate describing the asm operand, the low diff --git a/lib/CodeGen/MachineInstr.cpp b/lib/CodeGen/MachineInstr.cpp index dad6840015..362d99a8a4 100644 --- a/lib/CodeGen/MachineInstr.cpp +++ b/lib/CodeGen/MachineInstr.cpp @@ -970,11 +970,7 @@ bool MachineInstr::isStackAligningInlineAsm() const { 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. + return InlineAsm::AsmDialect((ExtraInfo >> 2) & 1); } int MachineInstr::findInlineAsmFlagIdx(unsigned OpIdx, @@ -1579,9 +1575,9 @@ void MachineInstr::print(raw_ostream &OS, const TargetMachine *TM) const { OS << " [sideeffect]"; if (ExtraInfo & InlineAsm::Extra_IsAlignStack) OS << " [alignstack]"; - if (ExtraInfo & InlineAsm::Extra_ATTDialect) + if (getInlineAsmDialect() == InlineAsm::AD_ATT) OS << " [attdialect]"; - if (ExtraInfo & InlineAsm::Extra_IntelDialect) + if (getInlineAsmDialect() == InlineAsm::AD_Intel) OS << " [inteldialect]"; StartOp = AsmDescOp = InlineAsm::MIOp_FirstOperand; diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index c26a3d41b4..d81c376fe1 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -6084,10 +6084,8 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCallSite CS) { ExtraInfo |= InlineAsm::Extra_HasSideEffects; if (IA->isAlignStack()) ExtraInfo |= InlineAsm::Extra_IsAlignStack; - if (IA->getDialect() == InlineAsm::Extra_ATTDialect) - ExtraInfo |= InlineAsm::Extra_ATTDialect; - if (IA->getDialect() == InlineAsm::Extra_IntelDialect) - ExtraInfo |= InlineAsm::Extra_IntelDialect; + // Set the asm dialect. + ExtraInfo |= IA->getDialect() << 2; AsmNodeOperands.push_back(DAG.getTargetConstant(ExtraInfo, TLI.getPointerTy())); |