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.

With that fixed, patches 1-5:

Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>


     }
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

Reply via email to