From: Alyssa Rosenzweig Date: Tue, 10 Mar 2020 01:20:03 +0000 (-0400) Subject: pan/bi: Add BI_SPECIAL_* enum X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b674e39d7224e228aacaa16beee718f059c31f09;p=mesa.git pan/bi: Add BI_SPECIAL_* enum To disambiguate the different special ops from each other. Signed-off-by: Alyssa Rosenzweig Part-of: --- diff --git a/src/panfrost/bifrost/bi_print.c b/src/panfrost/bifrost/bi_print.c index d1b2feec465..daccf91a98f 100644 --- a/src/panfrost/bifrost/bi_print.c +++ b/src/panfrost/bifrost/bi_print.c @@ -231,6 +231,22 @@ bi_bitwise_op_name(enum bi_bitwise_op op) } } +static const char * +bi_special_op_name(enum bi_special_op op) +{ + switch (op) { + case BI_SPECIAL_FRCP: return "frcp"; + case BI_SPECIAL_FRSQ: return "frsq"; + case BI_SPECIAL_FATAN: return "fatan"; + case BI_SPECIAL_FSIN: return "fsin"; + case BI_SPECIAL_FCOS: return "fcos"; + case BI_SPECIAL_FEXP: return "fexp"; + case BI_SPECIAL_FLOG2: return "flog2"; + case BI_SPECIAL_FLOGE: return "flog"; + default: return "invalid"; + } +} + static void bi_print_load_vary(struct bi_load_vary *load, FILE *fp) { @@ -294,6 +310,8 @@ bi_print_instruction(bi_instruction *ins, FILE *fp) fprintf(fp, "%s", bi_bitwise_op_name(ins->op.bitwise)); else if (ins->type == BI_ROUND) 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 fprintf(fp, "%s", bi_class_name(ins->type)); diff --git a/src/panfrost/bifrost/compiler.h b/src/panfrost/bifrost/compiler.h index c99943fead3..c1c8d695be3 100644 --- a/src/panfrost/bifrost/compiler.h +++ b/src/panfrost/bifrost/compiler.h @@ -167,6 +167,17 @@ enum bi_round_op { BI_ROUND_ROUND /* i.e.: fround() */ }; +enum bi_special_op { + BI_SPECIAL_FRCP, + BI_SPECIAL_FRSQ, + BI_SPECIAL_FATAN, + BI_SPECIAL_FSIN, + BI_SPECIAL_FCOS, + BI_SPECIAL_FEXP, + BI_SPECIAL_FLOG2, + BI_SPECIAL_FLOGE +}; + typedef struct { struct list_head link; /* Must be first */ enum bi_class type; @@ -223,6 +234,7 @@ typedef struct { enum bi_minmax_op minmax; enum bi_bitwise_op bitwise; enum bi_round_op round; + enum bi_special_op special; } op; /* Union for class-specific information */