[Mesa-dev] [PATCH 4/9] gallium-tgsi: add TGSI_OPCODE_{FMA-POPCNT-MSB-LSB} description

Maxence Le Doré maxence.ledore at gmail.com
Sat Jan 4 15:42:39 PST 2014


From: Maxence Le Doré <Maxence Le Doré>

---
 src/gallium/auxiliary/tgsi/tgsi_info.c       | 16 ++++++++++++++++
 src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h |  6 ++++++
 src/gallium/include/pipe/p_shader_tokens.h   |  9 ++++++++-
 3 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_info.c b/src/gallium/auxiliary/tgsi/tgsi_info.c
index 0beef44..ed55940 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_info.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_info.c
@@ -221,6 +221,12 @@ static const struct tgsi_opcode_info opcode_info[TGSI_OPCODE_LAST] =
    { 1, 3, 1, 0, 0, 0, OTHR, "TXL2", TGSI_OPCODE_TXL2 },
    { 1, 2, 0, 0, 0, 0, COMP, "IMUL_HI", TGSI_OPCODE_IMUL_HI },
    { 1, 2, 0, 0, 0, 0, COMP, "UMUL_HI", TGSI_OPCODE_UMUL_HI },
+   { 1, 3, 0, 0, 0, 0, COMP, "FMA", TGSI_OPCODE_FMA },
+   { 1, 1, 0, 0, 0, 0, COMP, "POPCNT", TGSI_OPCODE_POPCNT },
+   { 1, 1, 0, 0, 0, 0, COMP, "IMSB", TGSI_OPCODE_IMSB },
+   { 1, 1, 0, 0, 0, 0, COMP, "ILSB", TGSI_OPCODE_ILSB },
+   { 1, 1, 0, 0, 0, 0, COMP, "UMSB", TGSI_OPCODE_UMSB },
+   { 1, 1, 0, 0, 0, 0, COMP, "ULSB", TGSI_OPCODE_ULSB },
 };
 
 const struct tgsi_opcode_info *
@@ -321,6 +327,11 @@ tgsi_opcode_infer_type( uint opcode )
    case TGSI_OPCODE_IABS:
    case TGSI_OPCODE_ISSG:
    case TGSI_OPCODE_IMUL_HI:
+   case TGSI_OPCODE_POPCNT:
+   case TGSI_OPCODE_ILSB:
+   case TGSI_OPCODE_IMSB:
+   case TGSI_OPCODE_ULSB:
+   case TGSI_OPCODE_UMSB:
       return TGSI_TYPE_SIGNED;
    default:
       return TGSI_TYPE_FLOAT;
@@ -344,9 +355,14 @@ tgsi_opcode_infer_src_type( uint opcode )
    case TGSI_OPCODE_SAMPLE_I:
    case TGSI_OPCODE_SAMPLE_I_MS:
    case TGSI_OPCODE_UMUL_HI:
+   case TGSI_OPCODE_POPCNT:
+   case TGSI_OPCODE_ULSB:
+   case TGSI_OPCODE_UMSB:
       return TGSI_TYPE_UNSIGNED;
    case TGSI_OPCODE_IMUL_HI:
    case TGSI_OPCODE_I2F:
+   case TGSI_OPCODE_ILSB:
+   case TGSI_OPCODE_IMSB:
       return TGSI_TYPE_SIGNED;
    case TGSI_OPCODE_ARL:
    case TGSI_OPCODE_ARR:
diff --git a/src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h b/src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h
index 1ef78dd..cba0975 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h
@@ -206,6 +206,12 @@ OP13(UCMP)
 
 OP12(IMUL_HI)
 OP12(UMUL_HI)
+OP13(FMA)
+OP11(POPCNT)
+OP11(IMSB)
+OP11(ILSB)
+OP11(UMSB)
+OP11(ULSB)
 
 #undef OP00
 #undef OP01
diff --git a/src/gallium/include/pipe/p_shader_tokens.h b/src/gallium/include/pipe/p_shader_tokens.h
index 8010902..5ed0c34 100644
--- a/src/gallium/include/pipe/p_shader_tokens.h
+++ b/src/gallium/include/pipe/p_shader_tokens.h
@@ -453,7 +453,14 @@ struct tgsi_property_data {
 #define TGSI_OPCODE_IMUL_HI             180
 #define TGSI_OPCODE_UMUL_HI             181
 
-#define TGSI_OPCODE_LAST                182
+#define TGSI_OPCODE_FMA                 182
+#define TGSI_OPCODE_POPCNT              183
+#define TGSI_OPCODE_IMSB                184
+#define TGSI_OPCODE_ILSB                185
+#define TGSI_OPCODE_UMSB                186
+#define TGSI_OPCODE_ULSB                187
+
+#define TGSI_OPCODE_LAST                188
 
 #define TGSI_SAT_NONE            0  /* do not saturate */
 #define TGSI_SAT_ZERO_ONE        1  /* clamp to [0,1] */
-- 
1.8.5.2



More information about the mesa-dev mailing list