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