194f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol/**************************************************************************
294f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol *
394f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
494f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * All Rights Reserved.
594f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol *
694f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * Permission is hereby granted, free of charge, to any person obtaining a
794f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * copy of this software and associated documentation files (the
894f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * "Software"), to deal in the Software without restriction, including
994f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * without limitation the rights to use, copy, modify, merge, publish,
1094f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * distribute, sub license, and/or sell copies of the Software, and to
1194f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * permit persons to whom the Software is furnished to do so, subject to
1294f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * the following conditions:
1394f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol *
1494f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * The above copyright notice and this permission notice (including the
1594f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * next paragraph) shall be included in all copies or substantial portions
1694f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * of the Software.
1794f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol *
1894f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
1994f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
2094f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
2194f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
2294f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
2394f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
2494f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2594f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol *
2694f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol **************************************************************************/
2794f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol
28ea4bf267e4b023b08043f91ac44592fed1736e7fJosé Fonseca#include "util/u_debug.h"
29ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#include "util/u_memory.h"
3094f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol#include "tgsi_info.h"
3194f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol
32df169457909e1985c65e8a19c245133d2f5f013dTom Stellard#define NONE TGSI_OUTPUT_NONE
33df169457909e1985c65e8a19c245133d2f5f013dTom Stellard#define COMP TGSI_OUTPUT_COMPONENTWISE
34df169457909e1985c65e8a19c245133d2f5f013dTom Stellard#define REPL TGSI_OUTPUT_REPLICATE
35df169457909e1985c65e8a19c245133d2f5f013dTom Stellard#define CHAN TGSI_OUTPUT_CHAN_DEPENDENT
36df169457909e1985c65e8a19c245133d2f5f013dTom Stellard#define OTHR TGSI_OUTPUT_OTHER
37df169457909e1985c65e8a19c245133d2f5f013dTom Stellard
3894f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krolstatic const struct tgsi_opcode_info opcode_info[TGSI_OPCODE_LAST] =
3994f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol{
40df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "ARL", TGSI_OPCODE_ARL },
41df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "MOV", TGSI_OPCODE_MOV },
42df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, CHAN, "LIT", TGSI_OPCODE_LIT },
43df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, REPL, "RCP", TGSI_OPCODE_RCP },
44df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, REPL, "RSQ", TGSI_OPCODE_RSQ },
45df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, CHAN, "EXP", TGSI_OPCODE_EXP },
46df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, CHAN, "LOG", TGSI_OPCODE_LOG },
47df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "MUL", TGSI_OPCODE_MUL },
48df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "ADD", TGSI_OPCODE_ADD },
49df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, REPL, "DP3", TGSI_OPCODE_DP3 },
50df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, REPL, "DP4", TGSI_OPCODE_DP4 },
51df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, CHAN, "DST", TGSI_OPCODE_DST },
52df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "MIN", TGSI_OPCODE_MIN },
53df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "MAX", TGSI_OPCODE_MAX },
54df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "SLT", TGSI_OPCODE_SLT },
55df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "SGE", TGSI_OPCODE_SGE },
56df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 3, 0, 0, 0, 0, COMP, "MAD", TGSI_OPCODE_MAD },
57df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "SUB", TGSI_OPCODE_SUB },
58df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 3, 0, 0, 0, 0, COMP, "LRP", TGSI_OPCODE_LRP },
59df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 3, 0, 0, 0, 0, COMP, "CND", TGSI_OPCODE_CND },
60df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "", 20 },      /* removed */
61df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 3, 0, 0, 0, 0, REPL, "DP2A", TGSI_OPCODE_DP2A },
62df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "", 22 },      /* removed */
63df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "", 23 },      /* removed */
64df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "FRC", TGSI_OPCODE_FRC },
65df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 3, 0, 0, 0, 0, COMP, "CLAMP", TGSI_OPCODE_CLAMP },
66df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "FLR", TGSI_OPCODE_FLR },
67df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "ROUND", TGSI_OPCODE_ROUND },
68df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, REPL, "EX2", TGSI_OPCODE_EX2 },
69df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, REPL, "LG2", TGSI_OPCODE_LG2 },
70df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, REPL, "POW", TGSI_OPCODE_POW },
71df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "XPD", TGSI_OPCODE_XPD },
72df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "", 32 },      /* removed */
73df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "ABS", TGSI_OPCODE_ABS },
74df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, REPL, "RCC", TGSI_OPCODE_RCC },
75df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, REPL, "DPH", TGSI_OPCODE_DPH },
76df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, REPL, "COS", TGSI_OPCODE_COS },
77df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "DDX", TGSI_OPCODE_DDX },
78df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "DDY", TGSI_OPCODE_DDY },
79df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "KILP", TGSI_OPCODE_KILP },
80df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "PK2H", TGSI_OPCODE_PK2H },
81df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "PK2US", TGSI_OPCODE_PK2US },
82df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "PK4B", TGSI_OPCODE_PK4B },
83df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "PK4UB", TGSI_OPCODE_PK4UB },
84df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "RFL", TGSI_OPCODE_RFL },
85df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "SEQ", TGSI_OPCODE_SEQ },
86df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, REPL, "SFL", TGSI_OPCODE_SFL },
87df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "SGT", TGSI_OPCODE_SGT },
88df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, REPL, "SIN", TGSI_OPCODE_SIN },
89df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "SLE", TGSI_OPCODE_SLE },
90df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "SNE", TGSI_OPCODE_SNE },
91df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, REPL, "STR", TGSI_OPCODE_STR },
92df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 1, 0, 0, 0, OTHR, "TEX", TGSI_OPCODE_TEX },
93df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 4, 1, 0, 0, 0, OTHR, "TXD", TGSI_OPCODE_TXD },
94df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 1, 0, 0, 0, OTHR, "TXP", TGSI_OPCODE_TXP },
95df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "UP2H", TGSI_OPCODE_UP2H },
96df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "UP2US", TGSI_OPCODE_UP2US },
97df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "UP4B", TGSI_OPCODE_UP4B },
98df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "UP4UB", TGSI_OPCODE_UP4UB },
99df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 3, 0, 0, 0, 0, COMP, "X2D", TGSI_OPCODE_X2D },
100df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "ARA", TGSI_OPCODE_ARA },
101df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "ARR", TGSI_OPCODE_ARR },
102df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 1, 0, 0, 0, 0, NONE, "BRA", TGSI_OPCODE_BRA },
103df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 1, 0, 0, NONE, "CAL", TGSI_OPCODE_CAL },
104df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "RET", TGSI_OPCODE_RET },
105df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "SSG", TGSI_OPCODE_SSG },
106df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 3, 0, 0, 0, 0, COMP, "CMP", TGSI_OPCODE_CMP },
107df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, CHAN, "SCS", TGSI_OPCODE_SCS },
108df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 1, 0, 0, 0, OTHR, "TXB", TGSI_OPCODE_TXB },
109df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "NRM", TGSI_OPCODE_NRM },
110df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "DIV", TGSI_OPCODE_DIV },
111df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, REPL, "DP2", TGSI_OPCODE_DP2 },
112df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 1, 0, 0, 0, OTHR, "TXL", TGSI_OPCODE_TXL },
113df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "BRK", TGSI_OPCODE_BRK },
114df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 1, 0, 1, 0, 1, NONE, "IF", TGSI_OPCODE_IF },
115df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 1, NONE, "", 75 },      /* removed */
116df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 1, 0, 0, 0, 1, NONE, "", 76 },      /* removed */
117df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 1, 1, 1, NONE, "ELSE", TGSI_OPCODE_ELSE },
118df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 1, 0, NONE, "ENDIF", TGSI_OPCODE_ENDIF },
119df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 0, 0, 0, 1, 0, NONE, "", 79 },      /* removed */
120df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 1, 0, NONE, "", 80 },      /* removed */
121df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 1, 0, 0, 0, 0, NONE, "PUSHA", TGSI_OPCODE_PUSHA },
122df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 0, 0, 0, 0, 0, NONE, "POPA", TGSI_OPCODE_POPA },
123df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "CEIL", TGSI_OPCODE_CEIL },
124df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "I2F", TGSI_OPCODE_I2F },
125df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "NOT", TGSI_OPCODE_NOT },
126df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "TRUNC", TGSI_OPCODE_TRUNC },
127df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "SHL", TGSI_OPCODE_SHL },
128df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "", 88 },      /* removed */
129df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "AND", TGSI_OPCODE_AND },
130df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "OR", TGSI_OPCODE_OR },
131df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "MOD", TGSI_OPCODE_MOD },
132df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "XOR", TGSI_OPCODE_XOR },
133df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 3, 0, 0, 0, 0, COMP, "SAD", TGSI_OPCODE_SAD },
134df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 1, 0, 0, 0, OTHR, "TXF", TGSI_OPCODE_TXF },
135df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 1, 0, 0, 0, OTHR, "TXQ", TGSI_OPCODE_TXQ },
136df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "CONT", TGSI_OPCODE_CONT },
137df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "EMIT", TGSI_OPCODE_EMIT },
138df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "ENDPRIM", TGSI_OPCODE_ENDPRIM },
139df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 1, 0, 1, NONE, "BGNLOOP", TGSI_OPCODE_BGNLOOP },
140df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 1, NONE, "BGNSUB", TGSI_OPCODE_BGNSUB },
141df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 1, 1, 0, NONE, "ENDLOOP", TGSI_OPCODE_ENDLOOP },
142df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 1, 0, NONE, "ENDSUB", TGSI_OPCODE_ENDSUB },
143dacf5dc9ac1a700b86e0dc385513afaff41e7aeaMarek Olšák   { 1, 1, 1, 0, 0, 0, OTHR, "TXQ_LZ", TGSI_OPCODE_TXQ_LZ },
144df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "", 104 },     /* removed */
145df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "", 105 },     /* removed */
146df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "", 106 },     /* removed */
147df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "NOP", TGSI_OPCODE_NOP },
148df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "", 108 },     /* removed */
149df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "", 109 },     /* removed */
150df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "", 110 },     /* removed */
151df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "", 111 },     /* removed */
152df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, REPL, "NRM4", TGSI_OPCODE_NRM4 },
153df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 1, 0, 0, 0, 0, NONE, "CALLNZ", TGSI_OPCODE_CALLNZ },
154df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 1, 0, 0, 0, 0, NONE, "IFC", TGSI_OPCODE_IFC },
155df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 1, 0, 0, 0, 0, NONE, "BREAKC", TGSI_OPCODE_BREAKC },
156df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 1, 0, 0, 0, 0, NONE, "KIL", TGSI_OPCODE_KIL },
157df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "END", TGSI_OPCODE_END },
158df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "", 118 },     /* removed */
159df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "F2I", TGSI_OPCODE_F2I },
160df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "IDIV", TGSI_OPCODE_IDIV },
161df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "IMAX", TGSI_OPCODE_IMAX },
162df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "IMIN", TGSI_OPCODE_IMIN },
163df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "INEG", TGSI_OPCODE_INEG },
164df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "ISGE", TGSI_OPCODE_ISGE },
165df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "ISHR", TGSI_OPCODE_ISHR },
166df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "ISLT", TGSI_OPCODE_ISLT },
167df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "F2U", TGSI_OPCODE_F2U },
168df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "U2F", TGSI_OPCODE_U2F },
169df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "UADD", TGSI_OPCODE_UADD },
170df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "UDIV", TGSI_OPCODE_UDIV },
171df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 3, 0, 0, 0, 0, COMP, "UMAD", TGSI_OPCODE_UMAD },
172df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "UMAX", TGSI_OPCODE_UMAX },
173df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "UMIN", TGSI_OPCODE_UMIN },
174df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "UMOD", TGSI_OPCODE_UMOD },
175df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "UMUL", TGSI_OPCODE_UMUL },
176df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "USEQ", TGSI_OPCODE_USEQ },
177df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "USGE", TGSI_OPCODE_USGE },
178df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "USHR", TGSI_OPCODE_USHR },
179df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "USLT", TGSI_OPCODE_USLT },
180df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, COMP, "USNE", TGSI_OPCODE_USNE },
181df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 1, 0, 0, 0, 0, NONE, "SWITCH", TGSI_OPCODE_SWITCH },
182df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 1, 0, 0, 0, 0, NONE, "CASE", TGSI_OPCODE_CASE },
183df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "DEFAULT", TGSI_OPCODE_DEFAULT },
184df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 0, 0, 0, 0, 0, 0, NONE, "ENDSWITCH", TGSI_OPCODE_ENDSWITCH },
185bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin
186df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 3, 0, 0, 0, 0, OTHR, "SAMPLE",      TGSI_OPCODE_SAMPLE },
187a5f44cc8c2ce0916809ce5da5a2490ad000ef099Francisco Jerez   { 1, 2, 0, 0, 0, 0, OTHR, "SAMPLE_I",    TGSI_OPCODE_SAMPLE_I },
188a5f44cc8c2ce0916809ce5da5a2490ad000ef099Francisco Jerez   { 1, 2, 0, 0, 0, 0, OTHR, "SAMPLE_I_MS", TGSI_OPCODE_SAMPLE_I_MS },
189df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 4, 0, 0, 0, 0, OTHR, "SAMPLE_B",    TGSI_OPCODE_SAMPLE_B },
190df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 4, 0, 0, 0, 0, OTHR, "SAMPLE_C",    TGSI_OPCODE_SAMPLE_C },
191df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 4, 0, 0, 0, 0, OTHR, "SAMPLE_C_LZ", TGSI_OPCODE_SAMPLE_C_LZ },
192df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 5, 0, 0, 0, 0, OTHR, "SAMPLE_D",    TGSI_OPCODE_SAMPLE_D },
193df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 3, 0, 0, 0, 0, OTHR, "SAMPLE_L",    TGSI_OPCODE_SAMPLE_L },
194df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 3, 0, 0, 0, 0, OTHR, "GATHER4",     TGSI_OPCODE_GATHER4 },
195a5f44cc8c2ce0916809ce5da5a2490ad000ef099Francisco Jerez   { 1, 2, 0, 0, 0, 0, OTHR, "SVIEWINFO",   TGSI_OPCODE_SVIEWINFO },
196df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, OTHR, "SAMPLE_POS",  TGSI_OPCODE_SAMPLE_POS },
197df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 2, 0, 0, 0, 0, OTHR, "SAMPLE_INFO", TGSI_OPCODE_SAMPLE_INFO },
198df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "UARL", TGSI_OPCODE_UARL },
199df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 3, 0, 0, 0, 0, COMP, "UCMP", TGSI_OPCODE_UCMP },
200df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "IABS", TGSI_OPCODE_IABS },
201df169457909e1985c65e8a19c245133d2f5f013dTom Stellard   { 1, 1, 0, 0, 0, 0, COMP, "ISSG", TGSI_OPCODE_ISSG },
202a5f44cc8c2ce0916809ce5da5a2490ad000ef099Francisco Jerez   { 1, 2, 0, 0, 0, 0, OTHR, "LOAD", TGSI_OPCODE_LOAD },
203b8e808f1ef9462af8545999df514fddbbff34345Francisco Jerez   { 1, 2, 0, 0, 0, 0, OTHR, "STORE", TGSI_OPCODE_STORE },
2049e550c34237898385c07af2cbb2da76670ed994eFrancisco Jerez   { 1, 0, 0, 0, 0, 0, OTHR, "MFENCE", TGSI_OPCODE_MFENCE },
2059e550c34237898385c07af2cbb2da76670ed994eFrancisco Jerez   { 1, 0, 0, 0, 0, 0, OTHR, "LFENCE", TGSI_OPCODE_LFENCE },
2069e550c34237898385c07af2cbb2da76670ed994eFrancisco Jerez   { 1, 0, 0, 0, 0, 0, OTHR, "SFENCE", TGSI_OPCODE_SFENCE },
207c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez   { 0, 0, 0, 0, 0, 0, OTHR, "BARRIER", TGSI_OPCODE_BARRIER },
208c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez
209c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez   { 1, 3, 0, 0, 0, 0, OTHR, "ATOMUADD", TGSI_OPCODE_ATOMUADD },
210c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez   { 1, 3, 0, 0, 0, 0, OTHR, "ATOMXCHG", TGSI_OPCODE_ATOMXCHG },
211c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez   { 1, 4, 0, 0, 0, 0, OTHR, "ATOMCAS", TGSI_OPCODE_ATOMCAS },
212c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez   { 1, 3, 0, 0, 0, 0, OTHR, "ATOMAND", TGSI_OPCODE_ATOMAND },
213c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez   { 1, 3, 0, 0, 0, 0, OTHR, "ATOMOR", TGSI_OPCODE_ATOMOR },
214c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez   { 1, 3, 0, 0, 0, 0, OTHR, "ATOMXOR", TGSI_OPCODE_ATOMXOR },
215c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez   { 1, 3, 0, 0, 0, 0, OTHR, "ATOMUMIN", TGSI_OPCODE_ATOMUMIN },
216c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez   { 1, 3, 0, 0, 0, 0, OTHR, "ATOMUMAX", TGSI_OPCODE_ATOMUMAX },
217c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez   { 1, 3, 0, 0, 0, 0, OTHR, "ATOMIMIN", TGSI_OPCODE_ATOMIMIN },
218c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez   { 1, 3, 0, 0, 0, 0, OTHR, "ATOMIMAX", TGSI_OPCODE_ATOMIMAX }
21994f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol};
22094f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol
22194f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krolconst struct tgsi_opcode_info *
22294f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Kroltgsi_get_opcode_info( uint opcode )
22394f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol{
224ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell   static boolean firsttime = 1;
225ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell
226ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell   if (firsttime) {
227ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell      unsigned i;
228ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell      firsttime = 0;
229ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell      for (i = 0; i < Elements(opcode_info); i++)
230ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell         assert(opcode_info[i].opcode == i);
231ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell   }
232ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell
23394f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol   if (opcode < TGSI_OPCODE_LAST)
23494f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol      return &opcode_info[opcode];
235ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell
23694f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol   assert( 0 );
23794f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol   return NULL;
23894f9faab31f7fbf5f14d23d993f9830fa51ce076Michal Krol}
239c3c90c2dd95ba4f714c6d5fdf5793e1db1a191caBrian Paul
240c3c90c2dd95ba4f714c6d5fdf5793e1db1a191caBrian Paul
241c3c90c2dd95ba4f714c6d5fdf5793e1db1a191caBrian Paulconst char *
242c3c90c2dd95ba4f714c6d5fdf5793e1db1a191caBrian Paultgsi_get_opcode_name( uint opcode )
243c3c90c2dd95ba4f714c6d5fdf5793e1db1a191caBrian Paul{
244c3c90c2dd95ba4f714c6d5fdf5793e1db1a191caBrian Paul   const struct tgsi_opcode_info *info = tgsi_get_opcode_info(opcode);
245c3c90c2dd95ba4f714c6d5fdf5793e1db1a191caBrian Paul   return info->mnemonic;
246c3c90c2dd95ba4f714c6d5fdf5793e1db1a191caBrian Paul}
247c3c90c2dd95ba4f714c6d5fdf5793e1db1a191caBrian Paul
24892d88ccd9a3f68584453ba548df4fb5496a7dbf9Brian Paul
24992d88ccd9a3f68584453ba548df4fb5496a7dbf9Brian Paulconst char *
25092d88ccd9a3f68584453ba548df4fb5496a7dbf9Brian Paultgsi_get_processor_name( uint processor )
25192d88ccd9a3f68584453ba548df4fb5496a7dbf9Brian Paul{
25292d88ccd9a3f68584453ba548df4fb5496a7dbf9Brian Paul   switch (processor) {
25392d88ccd9a3f68584453ba548df4fb5496a7dbf9Brian Paul   case TGSI_PROCESSOR_VERTEX:
25492d88ccd9a3f68584453ba548df4fb5496a7dbf9Brian Paul      return "vertex shader";
25592d88ccd9a3f68584453ba548df4fb5496a7dbf9Brian Paul   case TGSI_PROCESSOR_FRAGMENT:
25692d88ccd9a3f68584453ba548df4fb5496a7dbf9Brian Paul      return "fragment shader";
25792d88ccd9a3f68584453ba548df4fb5496a7dbf9Brian Paul   case TGSI_PROCESSOR_GEOMETRY:
25892d88ccd9a3f68584453ba548df4fb5496a7dbf9Brian Paul      return "geometry shader";
25992d88ccd9a3f68584453ba548df4fb5496a7dbf9Brian Paul   default:
26092d88ccd9a3f68584453ba548df4fb5496a7dbf9Brian Paul      return "unknown shader type!";
26192d88ccd9a3f68584453ba548df4fb5496a7dbf9Brian Paul   }
26292d88ccd9a3f68584453ba548df4fb5496a7dbf9Brian Paul}
26313e2e51f7058dff01281050db1b64639ad3b399eDave Airlie
26413e2e51f7058dff01281050db1b64639ad3b399eDave Airlie/*
26513e2e51f7058dff01281050db1b64639ad3b399eDave Airlie * infer the source type of a TGSI opcode.
26613e2e51f7058dff01281050db1b64639ad3b399eDave Airlie * MOV is special so return VOID
26713e2e51f7058dff01281050db1b64639ad3b399eDave Airlie */
26813e2e51f7058dff01281050db1b64639ad3b399eDave Airlieenum tgsi_opcode_type
26913e2e51f7058dff01281050db1b64639ad3b399eDave Airlietgsi_opcode_infer_src_type( uint opcode )
27013e2e51f7058dff01281050db1b64639ad3b399eDave Airlie{
27113e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   switch (opcode) {
27213e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_MOV:
27313e2e51f7058dff01281050db1b64639ad3b399eDave Airlie      return TGSI_TYPE_UNTYPED;
27413e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_AND:
27513e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_OR:
27613e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_XOR:
27713e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_SAD:
27813e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_U2F:
27913e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_UADD:
28013e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_UDIV:
28113e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_UMOD:
28213e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_UMAD:
28313e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_UMUL:
28413e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_UMAX:
28513e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_UMIN:
28613e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_USEQ:
28713e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_USGE:
28813e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_USLT:
28913e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_USNE:
29013e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_USHR:
29113e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_SHL:
29213e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_TXQ:
29313e2e51f7058dff01281050db1b64639ad3b399eDave Airlie      return TGSI_TYPE_UNSIGNED;
29413e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_MOD:
29513e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_I2F:
29613e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_IDIV:
29713e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_IMAX:
29813e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_IMIN:
29913e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_INEG:
30013e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_ISGE:
30113e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_ISHR:
30213e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_ISLT:
30313e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_IABS:
30413e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_ISSG:
30513e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_UARL:
30613e2e51f7058dff01281050db1b64639ad3b399eDave Airlie      return TGSI_TYPE_SIGNED;
30713e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   default:
30813e2e51f7058dff01281050db1b64639ad3b399eDave Airlie      return TGSI_TYPE_FLOAT;
30913e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   }
31013e2e51f7058dff01281050db1b64639ad3b399eDave Airlie}
31113e2e51f7058dff01281050db1b64639ad3b399eDave Airlie
31213e2e51f7058dff01281050db1b64639ad3b399eDave Airlie/*
31313e2e51f7058dff01281050db1b64639ad3b399eDave Airlie * infer the destination type of a TGSI opcode.
31413e2e51f7058dff01281050db1b64639ad3b399eDave Airlie * MOV is special so return VOID
31513e2e51f7058dff01281050db1b64639ad3b399eDave Airlie */
31613e2e51f7058dff01281050db1b64639ad3b399eDave Airlieenum tgsi_opcode_type
31713e2e51f7058dff01281050db1b64639ad3b399eDave Airlietgsi_opcode_infer_dst_type( uint opcode )
31813e2e51f7058dff01281050db1b64639ad3b399eDave Airlie{
31913e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   switch (opcode) {
32013e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_MOV:
32113e2e51f7058dff01281050db1b64639ad3b399eDave Airlie      return TGSI_TYPE_UNTYPED;
32213e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_F2U:
32313e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_AND:
32413e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_OR:
32513e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_XOR:
32613e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_SAD:
32713e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_UADD:
32813e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_UDIV:
32913e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_UMOD:
33013e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_UMAD:
33113e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_UMUL:
33213e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_UMAX:
33313e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_UMIN:
33413e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_USEQ:
33513e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_USGE:
33613e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_USLT:
33713e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_USNE:
33813e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_USHR:
33913e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_SHL:
34013e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_TXQ:
341dacf5dc9ac1a700b86e0dc385513afaff41e7aeaMarek Olšák   case TGSI_OPCODE_TXQ_LZ:
34213e2e51f7058dff01281050db1b64639ad3b399eDave Airlie      return TGSI_TYPE_UNSIGNED;
34313e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_F2I:
34413e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_IDIV:
34513e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_IMAX:
34613e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_IMIN:
34713e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_INEG:
34813e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_ISGE:
34913e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_ISHR:
35013e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_ISLT:
35113e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_MOD:
35213e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_UARL:
35313e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_ARL:
354a206c4cd69a881bf3f8d960607d604b6d53e3a26José Fonseca   case TGSI_OPCODE_ARR:
35513e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_IABS:
35613e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   case TGSI_OPCODE_ISSG:
35713e2e51f7058dff01281050db1b64639ad3b399eDave Airlie      return TGSI_TYPE_SIGNED;
35813e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   default:
35913e2e51f7058dff01281050db1b64639ad3b399eDave Airlie      return TGSI_TYPE_FLOAT;
36013e2e51f7058dff01281050db1b64639ad3b399eDave Airlie   }
36113e2e51f7058dff01281050db1b64639ad3b399eDave Airlie}
362