[Mesa-dev] [PATCH v3 05/10] tgsi/text: parse _PRECISE modifier

Karol Herbst karolherbst at gmail.com
Tue Jun 20 11:00:25 UTC 2017


On Tue, Jun 20, 2017 at 12:22 PM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
> On 16.06.2017 21:08, Karol Herbst wrote:
>>
>> v2: use str_match_no_case to fix _SAT_PRECISE detection
>>
>> Signed-off-by: Karol Herbst <karolherbst at gmail.com>
>> ---
>>   src/gallium/auxiliary/tgsi/tgsi_text.c | 17 ++++++++++++++---
>>   1 file changed, 14 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c
>> b/src/gallium/auxiliary/tgsi/tgsi_text.c
>> index 93a05568f4..70ec0e4bc9 100644
>> --- a/src/gallium/auxiliary/tgsi/tgsi_text.c
>> +++ b/src/gallium/auxiliary/tgsi/tgsi_text.c
>> @@ -999,6 +999,7 @@ parse_texoffset_operand(
>>   static boolean
>>   match_inst(const char **pcur,
>>              unsigned *saturate,
>> +           unsigned *precise,
>>              const struct tgsi_opcode_info *info)
>>   {
>>      const char *cur = *pcur;
>> @@ -1007,16 +1008,24 @@ match_inst(const char **pcur,
>>      if (str_match_nocase_whole(&cur, info->mnemonic)) {
>>         *pcur = cur;
>>         *saturate = 0;
>> +      *precise = 0;
>>         return TRUE;
>>      }
>>        if (str_match_no_case(&cur, info->mnemonic)) {
>>         /* the instruction has a suffix, figure it out */
>> -      if (str_match_nocase_whole(&cur, "_SAT")) {
>> +      if (str_match_no_case(&cur, "_SAT")) {
>>            *pcur = cur;
>>            *saturate = 1;
>> -         return TRUE;
>>         }
>> +
>> +      if (str_match_no_case(&cur, "_PRECISE")) {
>> +         *pcur = cur;
>> +         *precise = 1;
>> +      }
>> +
>> +      if (*precise || *saturate)
>> +         return TRUE;
>
>
> I think this should instead be
>
> if (!is_digit_alpha_underscore(cur))
>    return TRUE;
>
> to mirror what str_match_nocase_whole does. Otherwise, we wouldn't flag
> garbage after the suffixes.
>

actually there is a check somewhere that after the instructions there
has to be a whitespace, but I didn't investigate it. But I'll see if I
can change it in a way so that we don't depend on later checks.

> With that fixed, patches 1-5:
>
> Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>
>

thanks for reviewing!

>
>>      }
>>        return FALSE;
>> @@ -1029,6 +1038,7 @@ parse_instruction(
>>   {
>>      uint i;
>>      uint saturate = 0;
>> +   uint precise = 0;
>>      const struct tgsi_opcode_info *info;
>>      struct tgsi_full_instruction inst;
>>      const char *cur;
>> @@ -1043,7 +1053,7 @@ parse_instruction(
>>         cur = ctx->cur;
>>           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) {
>>               ctx->cur = cur;
>>               break;
>> @@ -1064,6 +1074,7 @@ parse_instruction(
>>        inst.Instruction.Opcode = i;
>>      inst.Instruction.Saturate = saturate;
>> +   inst.Instruction.Precise = precise;
>>      inst.Instruction.NumDstRegs = info->num_dst;
>>      inst.Instruction.NumSrcRegs = info->num_src;
>>
>
>
>
> --
> Lerne, wie die Welt wirklich ist,
> Aber vergiss niemals, wie sie sein sollte.


More information about the mesa-dev mailing list