summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2012-09-05 22:17:43 +0000
committerChad Rosier <mcrosier@apple.com>2012-09-05 22:17:43 +0000
commit77fffa6fdd389ad6d70a42b36c1c36c768c2de41 (patch)
treedd32c3c2a5aef7c6157f5faa7d5f92c13de3b4c8
parent2943e378048636691eda1b1b4e437eea9da4a839 (diff)
downloadllvm-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.h3
-rw-r--r--lib/CodeGen/MachineInstr.cpp10
-rw-r--r--lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp6
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()));