[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