On Tue, Jun 20, 2017 at 12:22 PM, Nicolai Hähnle <nhaeh...@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 <karolher...@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.haeh...@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. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev