Index: lib/Target/X86/AsmParser/X86AsmParser.cpp =================================================================== --- lib/Target/X86/AsmParser/X86AsmParser.cpp +++ lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -2229,8 +2229,8 @@ (Name == "insb" || Name == "insw" || Name == "insl" || Name == "insd" )) { if (isParsingIntelSyntax()) { + Operands.push_back(DefaultMemDIOperand(NameLoc)); Operands.push_back(X86Operand::CreateReg(X86::DX, NameLoc, NameLoc)); - Operands.push_back(DefaultMemDIOperand(NameLoc)); } else { Operands.push_back(X86Operand::CreateReg(X86::DX, NameLoc, NameLoc)); Operands.push_back(DefaultMemDIOperand(NameLoc)); @@ -2242,8 +2242,8 @@ (Name == "outsb" || Name == "outsw" || Name == "outsl" || Name == "outsd" )) { if (isParsingIntelSyntax()) { + Operands.push_back(X86Operand::CreateReg(X86::DX, NameLoc, NameLoc)); Operands.push_back(DefaultMemSIOperand(NameLoc)); - Operands.push_back(X86Operand::CreateReg(X86::DX, NameLoc, NameLoc)); } else { Operands.push_back(DefaultMemSIOperand(NameLoc)); Operands.push_back(X86Operand::CreateReg(X86::DX, NameLoc, NameLoc)); Index: test/MC/X86/intel-syntax.s =================================================================== --- test/MC/X86/intel-syntax.s +++ test/MC/X86/intel-syntax.s @@ -665,3 +665,17 @@ // CHECK: cmpnless %xmm1, %xmm0 cmpnless xmm0, xmm1 + +insb +insw +insd +// CHECK: insb %dx, %es:(%rdi) +// CHECK: insw %dx, %es:(%rdi) +// CHECK: insl %dx, %es:(%rdi) + +outsb +outsw +outsd +// CHECK: outsb (%rsi), %dx +// CHECK: outsw (%rsi), %dx +// CHECK: outsl (%rsi), %dx \ No newline at end of file