From 1a1ecc9f3c2684249bd765d1299302d629aaf4fe Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 30 Oct 2010 18:13:10 +0000 Subject: [PATCH] fix an encoding mismatch where "sal %eax, 1" was not using the short encoding for shl. Caught by inspection. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117820 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/AsmParser/X86AsmParser.cpp | 2 +- test/MC/X86/x86-32.s | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp index 8a7cdc788ab..e92441682cf 100644 --- a/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -783,7 +783,7 @@ ParseInstruction(StringRef Name, SMLoc NameLoc, // FIXME: Hack to handle recognize s{hr,ar,hl} $1, . Canonicalize to // "shift ". if ((Name.startswith("shr") || Name.startswith("sar") || - Name.startswith("shl")) && + Name.startswith("shl") || Name.startswith("sal")) && Operands.size() == 3) { X86Operand *Op1 = static_cast(Operands[1]); if (Op1->isImm() && isa(Op1->getImm()) && diff --git a/test/MC/X86/x86-32.s b/test/MC/X86/x86-32.s index 7407767f7a5..41876333a6b 100644 --- a/test/MC/X86/x86-32.s +++ b/test/MC/X86/x86-32.s @@ -57,6 +57,11 @@ rdtscp // CHECK: shrl %eax # encoding: [0xd1,0xe8] shrl $1, %eax +// CHECK: shll %eax # encoding: [0xd1,0xe0] + sall $1, %eax +// CHECK: shll %eax # encoding: [0xd1,0xe0] + sal $1, %eax + // moffset forms of moves, rdar://7947184 movb 0, %al // CHECK: movb 0, %al # encoding: [0xa0,A,A,A,A] movw 0, %ax // CHECK: movw 0, %ax # encoding: [0x66,0xa1,A,A,A,A] -- 2.34.1