summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Target/X86/AsmParser/X86AsmParser.cpp6
-rw-r--r--test/MC/AsmParser/X86/x86_instructions.s5
2 files changed, 11 insertions, 0 deletions
diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp
index 81967183ed..4c51ed674e 100644
--- a/lib/Target/X86/AsmParser/X86AsmParser.cpp
+++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp
@@ -1009,6 +1009,12 @@ ParseInstruction(StringRef Name, SMLoc NameLoc,
NameLoc);
}
+ // movsd -> movsl (when no operands are specified).
+ if (Name == "movsd" && Operands.size() == 1) {
+ delete Operands[0];
+ Operands[0] = X86Operand::CreateToken("movsl", NameLoc);
+ }
+
return false;
}
diff --git a/test/MC/AsmParser/X86/x86_instructions.s b/test/MC/AsmParser/X86/x86_instructions.s
index d0f6dbfc1a..7f8a401c07 100644
--- a/test/MC/AsmParser/X86/x86_instructions.s
+++ b/test/MC/AsmParser/X86/x86_instructions.s
@@ -83,6 +83,11 @@
// CHECK: movsb
rep;movsb
+// rdar://8456361
+// CHECK: rep
+// CHECK: movsl
+ rep movsd
+
// CHECK: rep
// CHECK: lodsb
rep;lodsb