mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-14 23:48:56 +00:00
[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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310789 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
699d609dfd
commit
b554ed7380
@ -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));
|
||||
|
@ -1,7 +1,6 @@
|
||||
// RUN: not llvm-mc -triple x86_64-unknown-unknown -mcpu=knl -mattr=+avx512dq -mattr=+avx512f --show-encoding %s 2> %t.err
|
||||
// RUN: FileCheck --check-prefix=ERR < %t.err %s
|
||||
// RUN: not llvm-mc %s -triple x86_64-unknown-unknown -mcpu=knl -mattr=+avx512dq -mattr=+avx512f --show-encoding -o /dev/null 2>&1 | FileCheck --check-prefix=ERR %s
|
||||
|
||||
// ERR: invalid operand for instruction
|
||||
// ERR: Register k0 can't be used as write mask
|
||||
vpcmpd $1, %zmm24, %zmm7, %k5{%k0}
|
||||
|
||||
// ERR: Expected a {z} mark at this point
|
||||
|
@ -7,3 +7,6 @@
|
||||
// CHECK: error: Expected a {z} mark at this point
|
||||
vfmsub213ps zmm8{rn-sae}, zmm8, zmm8
|
||||
// CHECK: error: Expected an op-mask register at this point
|
||||
vpcmpltd k5{k0}, zmm7, zmm24
|
||||
// CHECK: error: Register k0 can't be used as write mask
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user