diff options
| author | Reid Kleckner <rnk@google.com> | 2017-10-31 16:47:38 +0000 |
|---|---|---|
| committer | Reid Kleckner <rnk@google.com> | 2017-10-31 16:47:38 +0000 |
| commit | 39970069b1087395b89e9d3bb66434c81bd49dd8 (patch) | |
| tree | 6b97947b5c5e3900ccf4be6b347021feee2b1ae7 | |
| parent | 05c988473f508a1c37ab739898ed95b5456c47cf (diff) | |
| download | bcm5719-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.cpp | 1 | ||||
| -rw-r--r-- | llvm/test/MC/X86/intel-syntax-bitwise-ops.s | 7 |
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 |

