diff options
| author | Coby Tayree <coby.tayree@intel.com> | 2017-08-13 12:03:00 +0000 |
|---|---|---|
| committer | Coby Tayree <coby.tayree@intel.com> | 2017-08-13 12:03:00 +0000 |
| commit | 799fa2c76e1c6c718571e6725920af34b9e74a8f (patch) | |
| tree | 5ba3e37a6ad7e7011cc6fcb8c95ace20b8258483 /llvm/lib | |
| parent | 808ce128781aa535127743d46393781e37f3b723 (diff) | |
| download | bcm5719-llvm-799fa2c76e1c6c718571e6725920af34b9e74a8f.tar.gz bcm5719-llvm-799fa2c76e1c6c718571e6725920af34b9e74a8f.zip | |
[X86][AsmParser][AVX512] Error appropriately when K0 is tried as a write-mask
K0 isn't expected as a write-mask, so provide a detailed error here, instead of the more generic one (invalid op for insn)
Conforms with gas
Differential Revision: https://reviews.llvm.org/D36570
llvm-svn: 310789
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index fd083b09366..881d35eb892 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -2088,8 +2088,11 @@ bool X86AsmParser::HandleAVX512Operand(OperandVector &Operands, // Parse an op-mask register mark ({%k<NUM>}), which is now to be // expected unsigned RegNo; - if (!ParseRegister(RegNo, StartLoc, StartLoc) && + SMLoc RegLoc; + if (!ParseRegister(RegNo, RegLoc, StartLoc) && X86MCRegisterClasses[X86::VK1RegClassID].contains(RegNo)) { + if (RegNo == X86::K0) + return Error(RegLoc, "Register k0 can't be used as write mask"); if (!getLexer().is(AsmToken::RCurly)) return Error(getLexer().getLoc(), "Expected } at this point"); Operands.push_back(X86Operand::CreateToken("{", StartLoc)); |

