From: Jin K. S. <jin...@in...> - 2013-08-22 02:30:18
|
When a memory reference operand is a destination, this could have an opmask decorator as well. Signed-off-by: Jin Kyu Song <jin...@in...> --- parser.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/parser.c b/parser.c index ccbce49..585abe2 100644 --- a/parser.c +++ b/parser.c @@ -758,17 +758,20 @@ is_expression: recover = true; } else { /* we got the required ] */ i = stdscan(NULL, &tokval); - if (i == TOKEN_DECORATOR) { + if ((i == TOKEN_DECORATOR) || (i == TOKEN_OPMASK)) { /* - * according to AVX512 spec, only broacast decorator is - * expected for memory reference operands + * according to AVX512 spec, broacast or opmask decorator + * is expected for memory reference operands */ if (tokval.t_flag & TFLAG_BRDCAST) { brace_flags |= GEN_BRDCAST(0); i = stdscan(NULL, &tokval); + } else if (i == TOKEN_OPMASK) { + brace_flags |= VAL_OPMASK(nasm_regvals[tokval.t_integer]); + i = stdscan(NULL, &tokval); } else { - nasm_error(ERR_NONFATAL, "broadcast decorator" - "expected inside braces"); + nasm_error(ERR_NONFATAL, "broadcast or opmask " + "decorator expected inside braces"); recover = true; } } -- 1.7.9.5 |