[ms-inline asm] We only need one bit to represent the AsmDialect in the
authorChad Rosier <mcrosier@apple.com>
Wed, 5 Sep 2012 22:17:43 +0000 (22:17 +0000)
committerChad Rosier <mcrosier@apple.com>
Wed, 5 Sep 2012 22:17:43 +0000 (22:17 +0000)
MachineInstr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163257 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/InlineAsm.h
lib/CodeGen/MachineInstr.cpp
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp

index 5de38e8f101bcfa8e745e510c84e918e8387c079..53ceca551b6fc27b2ff4db385156c9f6a52f6941 100644 (file)
@@ -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
index dad6840015da0219df3e82877038069940079e91..362d99a8a45a29499593e3f9d4989cddeb6d5396 100644 (file)
@@ -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;
index c26a3d41b486d2216aad953e4a19e6f3a0b5a75f..d81c376fe129fb3bc6e19a6109a5dfc7df5f92fd 100644 (file)
@@ -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()));