diff options
| -rw-r--r-- | llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 6 | ||||
| -rw-r--r-- | llvm/test/MC/X86/intel-syntax-encoding.s | 3 | 
2 files changed, 7 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index 0e8ab298220..fd6efa63276 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -981,10 +981,9 @@ ParseInstruction(StringRef Name, SMLoc NameLoc,    Operands.push_back(X86Operand::CreateToken(PatchedName, NameLoc)); -  if (ExtraImmOp) +  if (ExtraImmOp && !isParsingIntelSyntax())      Operands.push_back(X86Operand::CreateImm(ExtraImmOp, NameLoc, NameLoc)); -    // Determine whether this is an instruction prefix.    bool isPrefix =      Name == "lock" || Name == "rep" || @@ -1038,6 +1037,9 @@ ParseInstruction(StringRef Name, SMLoc NameLoc,    else if (isPrefix && getLexer().is(AsmToken::Slash))      Parser.Lex(); // Consume the prefix separator Slash +  if (ExtraImmOp && isParsingIntelSyntax()) +    Operands.push_back(X86Operand::CreateImm(ExtraImmOp, NameLoc, NameLoc)); +    // This is a terrible hack to handle "out[bwl]? %al, (%dx)" ->    // "outb %al, %dx".  Out doesn't take a memory form, but this is a widely    // documented form in various unofficial manuals, so a lot of code uses it. diff --git a/llvm/test/MC/X86/intel-syntax-encoding.s b/llvm/test/MC/X86/intel-syntax-encoding.s index 3e7ad355f46..8891126475b 100644 --- a/llvm/test/MC/X86/intel-syntax-encoding.s +++ b/llvm/test/MC/X86/intel-syntax-encoding.s @@ -39,3 +39,6 @@ LBB0_3:  // CHECK: encoding: [0xd1,0xe7]  	shl	EDI, 1 + +// CHECK: encoding: [0x0f,0xc2,0xd1,0x01] +	cmpltps XMM2, XMM1  | 

