[llvm] r317011 - [X86][AsmParser] Treat '%' as the modulo operator under Intel syntax

Reid Kleckner via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 31 09:47:38 PDT 2017


Author: rnk
Date: Tue Oct 31 09:47:38 2017
New Revision: 317011

URL: http://llvm.org/viewvc/llvm-project?rev=317011&view=rev
Log:
[X86][AsmParser] Treat '%' as the modulo operator under Intel syntax

It can't be a register prefix, anyway. This is consistent with the masm
docs on MSDN: https://msdn.microsoft.com/en-us/library/t4ax90d2.aspx

This is a straight-forward extension of our support for "MOD"
implemented in https://reviews.llvm.org/D33876 / r306425

Modified:
    llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp
    llvm/trunk/test/MC/X86/intel-syntax-bitwise-ops.s

Modified: llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp?rev=317011&r1=317010&r2=317011&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp (original)
+++ llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp Tue Oct 31 09:47:38 2017
@@ -1470,6 +1470,7 @@ bool X86AsmParser::ParseIntelExpression(
     case AsmToken::Tilde:   SM.onNot(); break;
     case AsmToken::Star:    SM.onStar(); break;
     case AsmToken::Slash:   SM.onDivide(); break;
+    case AsmToken::Percent: SM.onMod(); break;
     case AsmToken::Pipe:    SM.onOr(); break;
     case AsmToken::Caret:   SM.onXor(); break;
     case AsmToken::Amp:     SM.onAnd(); break;

Modified: llvm/trunk/test/MC/X86/intel-syntax-bitwise-ops.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/X86/intel-syntax-bitwise-ops.s?rev=317011&r1=317010&r2=317011&view=diff
==============================================================================
--- llvm/trunk/test/MC/X86/intel-syntax-bitwise-ops.s (original)
+++ llvm/trunk/test/MC/X86/intel-syntax-bitwise-ops.s Tue Oct 31 09:47:38 2017
@@ -72,4 +72,9 @@
     mov eax, ~(5 mod 3)
 // CHECK: movl  $-2, %eax
     mov eax, (-5 mod 3)
-
+// CHECK: movl  $-3, %eax
+    mov eax, ~(5 % 3)
+// CHECK: movl  $-2, %eax
+    mov eax, (-5 % 3)
+// CHECK: movl  $-2, %eax
+    mov eax, -5 % 3




More information about the llvm-commits mailing list