From dfb918047b32e57b5cf4840021ccc0c03b4685f9 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Tue, 20 May 2008 11:43:53 -0700 Subject: Add DY, YWORD, and the SY instruction flag Add the DY instruction, YWORD keyword, and an SY marker for instruction sizes. Add a few more AVX sample instructions. --- parser.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'parser.c') diff --git a/parser.c b/parser.c index 9172fb1c..72e4e6c9 100644 --- a/parser.c +++ b/parser.c @@ -322,6 +322,7 @@ restart_parse: if (result->opcode == I_RESB || result->opcode == I_RESW || result->opcode == I_RESD || result->opcode == I_RESQ || result->opcode == I_REST || result->opcode == I_RESO || + result->opcode == I_RESY || result->opcode == I_EQU || result->opcode == I_INCBIN) { critical = (pass0 < 2 ? 1 : 2); @@ -331,7 +332,7 @@ restart_parse: if (result->opcode == I_DB || result->opcode == I_DW || result->opcode == I_DD || result->opcode == I_DQ || result->opcode == I_DT || result->opcode == I_DO || - result->opcode == I_INCBIN) { + result->opcode == I_DY || result->opcode == I_INCBIN) { extop *eop, **tail = &result->eops, **fixptr; int oper_num = 0; @@ -560,6 +561,11 @@ restart_parse: result->oprs[operand].type |= BITS128; setsize = 1; break; + case S_YWORD: + if (!setsize) + result->oprs[operand].type |= BITS256; + setsize = 1; + break; case S_TO: result->oprs[operand].type |= TO; break; @@ -857,7 +863,7 @@ while (operand < MAX_OPERANDS) result->oprs[operand++].type = 0; /* - * Transform RESW, RESD, RESQ, REST, RESO into RESB. + * Transform RESW, RESD, RESQ, REST, RESO, RESY into RESB. */ switch (result->opcode) { case I_RESW: @@ -880,6 +886,10 @@ while (operand < MAX_OPERANDS) result->opcode = I_RESB; result->oprs[0].offset *= 16; break; + case I_RESY: + result->opcode = I_RESB; + result->oprs[0].offset *= 32; + break; default: break; } -- cgit v1.2.1