@ -986,6 +986,7 @@ parse_texoffset_operand(
static boolean
static boolean
match_inst ( const char * * pcur ,
match_inst ( const char * * pcur ,
unsigned * saturate ,
unsigned * saturate ,
unsigned * precise ,
const struct tgsi_opcode_info * info )
const struct tgsi_opcode_info * info )
{
{
const char * cur = * pcur ;
const char * cur = * pcur ;
@ -994,16 +995,24 @@ match_inst(const char **pcur,
if ( str_match_nocase_whole ( & cur , info - > mnemonic ) ) {
if ( str_match_nocase_whole ( & cur , info - > mnemonic ) ) {
* pcur = cur ;
* pcur = cur ;
* saturate = 0 ;
* saturate = 0 ;
* precise = 0 ;
return TRUE ;
return TRUE ;
}
}
if ( str_match_no_case ( & cur , info - > mnemonic ) ) {
if ( str_match_no_case ( & cur , info - > mnemonic ) ) {
/* the instruction has a suffix, figure it out */
/* the instruction has a suffix, figure it out */
if ( str_match_nocase_whol e ( & cur , " _SAT " ) ) {
if ( str_match_no_ case ( & cur , " _SAT " ) ) {
* pcur = cur ;
* pcur = cur ;
* saturate = 1 ;
* saturate = 1 ;
return TRUE ;
}
}
if ( str_match_no_case ( & cur , " _PRECISE " ) ) {
* pcur = cur ;
* precise = 1 ;
}
if ( ! is_digit_alpha_underscore ( cur ) )
return TRUE ;
}
}
return FALSE ;
return FALSE ;
@ -1016,6 +1025,7 @@ parse_instruction(
{
{
uint i ;
uint i ;
uint saturate = 0 ;
uint saturate = 0 ;
uint precise = 0 ;
const struct tgsi_opcode_info * info ;
const struct tgsi_opcode_info * info ;
struct tgsi_full_instruction inst ;
struct tgsi_full_instruction inst ;
const char * cur ;
const char * cur ;
@ -1030,7 +1040,7 @@ parse_instruction(
cur = ctx - > cur ;
cur = ctx - > cur ;
info = tgsi_get_opcode_info ( i ) ;
info = tgsi_get_opcode_info ( i ) ;
if ( match_inst ( & cur , & saturate , info ) ) {
if ( match_inst ( & cur , & saturate , & precise , info ) ) {
if ( info - > num_dst + info - > num_src + info - > is_tex = = 0 ) {
if ( info - > num_dst + info - > num_src + info - > is_tex = = 0 ) {
ctx - > cur = cur ;
ctx - > cur = cur ;
break ;
break ;
@ -1051,6 +1061,7 @@ parse_instruction(
inst . Instruction . Opcode = i ;
inst . Instruction . Opcode = i ;
inst . Instruction . Saturate = saturate ;
inst . Instruction . Saturate = saturate ;
inst . Instruction . Precise = precise ;
inst . Instruction . NumDstRegs = info - > num_dst ;
inst . Instruction . NumDstRegs = info - > num_dst ;
inst . Instruction . NumSrcRegs = info - > num_src ;
inst . Instruction . NumSrcRegs = info - > num_src ;