pan/bi: Specify comparison op for BI_CMP
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 10 Mar 2020 12:47:20 +0000 (08:47 -0400)
committerMarge Bot <eric+marge@anholt.net>
Tue, 10 Mar 2020 19:26:00 +0000 (19:26 +0000)
...and adjust printing so we can use it as an op name.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4139>

src/panfrost/bifrost/bi_print.c
src/panfrost/bifrost/compiler.h

index 06b4a034cfc00e7362cde318fae4d8ae2452545b..a91bb5e8af4122140119588720627d7b2131a21c 100644 (file)
@@ -264,13 +264,13 @@ static const char *
 bi_cond_name(enum bi_cond cond)
 {
         switch (cond) {
-        case BI_COND_ALWAYS: return ".always";
-        case BI_COND_LT: return ".lt";
-        case BI_COND_LE: return ".le";
-        case BI_COND_GE: return ".ge";
-        case BI_COND_GT: return ".gt";
-        case BI_COND_EQ: return ".eq";
-        case BI_COND_NE: return ".ne";
+        case BI_COND_ALWAYS: return "always";
+        case BI_COND_LT: return "lt";
+        case BI_COND_LE: return "le";
+        case BI_COND_GE: return "ge";
+        case BI_COND_GT: return "gt";
+        case BI_COND_EQ: return "eq";
+        case BI_COND_NE: return "ne";
         default: return "invalid";
         }
 }
@@ -278,7 +278,7 @@ bi_cond_name(enum bi_cond cond)
 static void
 bi_print_branch(struct bi_branch *branch, FILE *fp)
 {
-        fprintf(fp, "%s", bi_cond_name(branch->cond));
+        fprintf(fp, ".%s", bi_cond_name(branch->cond));
 }
 
 static void
@@ -313,6 +313,8 @@ bi_print_instruction(bi_instruction *ins, FILE *fp)
                 fprintf(fp, ins->op.round == BI_ROUND_MODE ? "roundMode": "round");
         else if (ins->type == BI_SPECIAL)
                 fprintf(fp, "%s", bi_special_op_name(ins->op.special));
+        else if (ins->type == BI_CMP)
+                fprintf(fp, "%s", bi_cond_name(ins->op.compare));
         else
                 fprintf(fp, "%s", bi_class_name(ins->type));
 
@@ -323,7 +325,7 @@ bi_print_instruction(bi_instruction *ins, FILE *fp)
         else if (ins->type == BI_BRANCH)
                 bi_print_branch(&ins->branch, fp);
         else if (ins->type == BI_CSEL)
-                fprintf(fp, "%s", bi_cond_name(ins->csel_cond));
+                fprintf(fp, ".%s", bi_cond_name(ins->csel_cond));
         else if (ins->type == BI_BLEND)
                 fprintf(fp, ".loc%u", ins->blend_location);
 
index ec1a6f3768cf544f00e85028d61b2a2be6c97c3b..cd0408b6119d04a1c0168ce05107adae9be69653 100644 (file)
@@ -236,6 +236,7 @@ typedef struct {
                 enum bi_bitwise_op bitwise;
                 enum bi_round_op round;
                 enum bi_special_op special;
+                enum bi_cond compare;
         } op;
 
         /* Union for class-specific information */