summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2017-10-31 16:47:38 +0000
committerReid Kleckner <rnk@google.com>2017-10-31 16:47:38 +0000
commit39970069b1087395b89e9d3bb66434c81bd49dd8 (patch)
tree6b97947b5c5e3900ccf4be6b347021feee2b1ae7
parent05c988473f508a1c37ab739898ed95b5456c47cf (diff)
downloadbcm5719-llvm-39970069b1087395b89e9d3bb66434c81bd49dd8.tar.gz
bcm5719-llvm-39970069b1087395b89e9d3bb66434c81bd49dd8.zip
[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 llvm-svn: 317011
-rw-r--r--llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp1
-rw-r--r--llvm/test/MC/X86/intel-syntax-bitwise-ops.s7
2 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
index 16fd506f0a4..b8ea2f01133 100644
--- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
+++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
@@ -1470,6 +1470,7 @@ bool X86AsmParser::ParseIntelExpression(IntelExprStateMachine &SM, SMLoc &End) {
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;
diff --git a/llvm/test/MC/X86/intel-syntax-bitwise-ops.s b/llvm/test/MC/X86/intel-syntax-bitwise-ops.s
index a0b25800f97..2ebad7c2115 100644
--- a/llvm/test/MC/X86/intel-syntax-bitwise-ops.s
+++ b/llvm/test/MC/X86/intel-syntax-bitwise-ops.s
@@ -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
OpenPOWER on IntegriCloud