tgsi: Fix parsing an instruction with no operands.

This commit is contained in:
Michal Krol 2008-07-17 20:40:13 +02:00
parent 10d1dc68a4
commit f2053cfa1a

View file

@ -758,13 +758,20 @@ parse_instruction(
for (i = 0; i < TGSI_OPCODE_LAST; i++) {
const char *cur = ctx->cur;
if (str_match_no_case( &cur, opcode_info[i].mnemonic )) {
info = &opcode_info[i];
if (str_match_no_case( &cur, info->mnemonic )) {
if (str_match_no_case( &cur, "_SATNV" ))
saturate = TGSI_SAT_MINUS_PLUS_ONE;
else if (str_match_no_case( &cur, "_SAT" ))
saturate = TGSI_SAT_ZERO_ONE;
if (*cur == '\0' || eat_white( &cur )) {
if (info->num_dst + info->num_src + info->is_tex == 0) {
if (!is_digit_alpha_underscore( cur )) {
ctx->cur = cur;
break;
}
}
else if (*cur == '\0' || eat_white( &cur )) {
ctx->cur = cur;
break;
}
@ -777,7 +784,6 @@ parse_instruction(
report_error( ctx, "Expected `DCL', `IMM' or a label" );
return FALSE;
}
info = &opcode_info[i];
inst = tgsi_default_full_instruction();
inst.Instruction.Opcode = i;
@ -1031,6 +1037,9 @@ static boolean translate( struct translate_ctx *ctx )
return FALSE;
}
if (*ctx->cur == '\0')
break;
if (parse_label( ctx, &label_val )) {
if (!parse_instruction( ctx, TRUE ))
return FALSE;