p_shader_tokens.h revision 130b3154544701be2a57ac1c57432f153e363572
1abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#if !defined TGSI_TOKEN_H 2abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_H 3abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 494c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#ifdef __cplusplus 5abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolextern "C" { 694c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#endif 7abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 84339744c1676f925d42251bd32795bba9928cd5fKeith Whitwell#include "p_compiler.h" 94339744c1676f925d42251bd32795bba9928cd5fKeith Whitwell 10abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_version 11abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 12abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned MajorVersion : 8; 13abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned MinorVersion : 8; 14abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 16; 15abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 16abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 17abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_header 18abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 19abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned HeaderSize : 8; 20abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned BodySize : 24; 21abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 22abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 23abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PROCESSOR_FRAGMENT 0 24abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PROCESSOR_VERTEX 1 25abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PROCESSOR_GEOMETRY 2 26abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 27abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_processor 28abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 29abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Processor : 4; /* TGSI_PROCESSOR_ */ 30abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 28; 31abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 32abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 33abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_TYPE_DECLARATION 0 34abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_TYPE_IMMEDIATE 1 35abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_TYPE_INSTRUCTION 2 36abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 37abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_token 38abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 39abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_TOKEN_TYPE_ */ 40abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Size : 8; /* UINT */ 41abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 19; 42abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 43abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 44abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 45e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusinenum tgsi_file_type { 46e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin TGSI_FILE_NULL =0, 47e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin TGSI_FILE_CONSTANT =1, 48e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin TGSI_FILE_INPUT =2, 49e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin TGSI_FILE_OUTPUT =3, 50e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin TGSI_FILE_TEMPORARY =4, 51e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin TGSI_FILE_SAMPLER =5, 52e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin TGSI_FILE_ADDRESS =6, 53e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin TGSI_FILE_IMMEDIATE =7, 54e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin TGSI_FILE_COUNT /**< how many TGSI_FILE_ types */ 55e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin}; 5635ca45daba3906ac94fb879d2374d476ba2dac47Brian 57abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 58abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_DECLARE_RANGE 0 59abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_DECLARE_MASK 1 60abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 61abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_NONE 0x00 62abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_X 0x01 63abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_Y 0x02 64abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XY 0x03 65abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_Z 0x04 66abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XZ 0x05 67abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_YZ 0x06 68abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XYZ 0x07 69abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_W 0x08 70abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XW 0x09 71abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_YW 0x0A 72abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XYW 0x0B 73abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_ZW 0x0C 74abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XZW 0x0D 75abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_YZW 0x0E 76abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XYZW 0x0F 77abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 78abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration 79abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 80abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_TOKEN_TYPE_DECLARATION */ 81abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Size : 8; /* UINT */ 82abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned File : 4; /* one of TGSI_FILE_x */ 83abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Declare : 4; /* one of TGSI_DECLARE_x */ 84abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned UsageMask : 4; /* bitmask of TGSI_WRITEMASK_x flags */ 85abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Interpolate : 1; /* BOOL, any interpolation info? */ 86abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Semantic : 1; /* BOOL, any semantic info? */ 87abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 5; 88abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 89abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 90abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 91abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration_range 92abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 93abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned First : 16; /* UINT */ 94abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Last : 16; /* UINT */ 95abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 96abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 97abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration_mask 98abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 99abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Mask : 32; /* UINT */ 100abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 101abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 102abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INTERPOLATE_CONSTANT 0 103abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INTERPOLATE_LINEAR 1 104abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INTERPOLATE_PERSPECTIVE 2 105abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 106abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration_interpolation 107abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 108abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Interpolate : 4; /* TGSI_INTERPOLATE_ */ 109abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 28; 110abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 111abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 112abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_POSITION 0 113abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_COLOR 1 114abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_BCOLOR 2 /**< back-face color */ 115abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_FOG 3 116abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_PSIZE 4 117abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_GENERIC 5 118271f9dac79a9247de9a57f4d248e404bf1652a13José Fonseca#define TGSI_SEMANTIC_NORMAL 6 119271f9dac79a9247de9a57f4d248e404bf1652a13José Fonseca#define TGSI_SEMANTIC_COUNT 7 /**< number of semantic values */ 120abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 121abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration_semantic 122abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 123abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned SemanticName : 8; /* one of TGSI_SEMANTIC_ */ 124abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned SemanticIndex : 16; /* UINT */ 125abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 8; 126abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 127abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 128abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_IMM_FLOAT32 0 129abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 130abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_immediate 131abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 132abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_TOKEN_TYPE_IMMEDIATE */ 133abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Size : 8; /* UINT */ 134abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned DataType : 4; /* TGSI_IMM_ */ 135abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 15; 136abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 137abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 138abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 139abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_immediate_float32 140abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 141abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol float Float; 142abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 143abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 144abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 145abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program 146abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 147abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ARL 0 148abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MOV 1 149abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LIT 2 150abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RCP 3 151abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RSQ 4 152abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_EXP 5 153abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LOG 6 154abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MUL 7 155abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ADD 8 156abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DP3 9 157abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DP4 10 158abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DST 11 159abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MIN 12 160abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MAX 13 161abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SLT 14 162abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SGE 15 163abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MAD 16 164abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 165abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 166abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_ATI_fragment_shader 167abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 168abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SUB 17 169abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DOT3 TGSI_OPCODE_DP3 170abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DOT4 TGSI_OPCODE_DP4 171abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LERP 18 172abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CND 19 173abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CND0 20 174abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DOT2ADD 21 175abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 176abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 177abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_EXT_vertex_shader 178abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 179abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_INDEX 22 180abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NEGATE 23 181abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MADD TGSI_OPCODE_MAD 182abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_FRAC 24 183abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SETGE TGSI_OPCODE_SGE 184abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SETLT TGSI_OPCODE_SLT 185abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CLAMP 25 186abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_FLOOR 26 187abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ROUND 27 188abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_EXPBASE2 28 189abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LOGBASE2 29 190abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_POWER 30 191abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RECIP TGSI_OPCODE_RCP 192abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RECIPSQRT TGSI_OPCODE_RSQ 193abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CROSSPRODUCT 31 194abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MULTIPLYMATRIX 32 195abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 196abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 197abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program1_1 198abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 199abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ABS 33 200abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RCC 34 201abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DPH 35 202abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 203abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 204abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_fragment_program 205abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 206abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_COS 36 207abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DDX 37 208abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DDY 38 209abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_EX2 TGSI_OPCODE_EXPBASE2 210abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_FLR TGSI_OPCODE_FLOOR 211abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_FRC TGSI_OPCODE_FRAC 212abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_KILP 39 /* predicated kill */ 213abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LG2 TGSI_OPCODE_LOGBASE2 214abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LRP TGSI_OPCODE_LERP 215abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK2H 40 216abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK2US 41 217abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK4B 42 218abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK4UB 43 219abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_POW TGSI_OPCODE_POWER 220abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RFL 44 221abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SEQ 45 222abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SFL 46 223abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SGT 47 224abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SIN 48 225abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SLE 49 226abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SNE 50 227abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_STR 51 228abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEX 52 229abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TXD 53 230abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_UP2H 54 231abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_UP2US 55 232abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_UP4B 56 233abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_UP4UB 57 234abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_X2D 58 235abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 236abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 237abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program2 238abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 239abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ARA 59 240abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ARR 60 241abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_BRA 61 242abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CAL 62 243abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RET 63 244abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SSG 64 245abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 246abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 247abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_ARB_vertex_program 248abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 249abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SWZ TGSI_OPCODE_MOV 250abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_XPD TGSI_OPCODE_CROSSPRODUCT 251abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 252abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 253abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_ARB_fragment_program 254abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 255abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CMP 65 256abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SCS 66 257abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TXB 67 258abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 259abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 260abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_fragment_program_option 261abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 262abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* No new opcode */ 263abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 264abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 265abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_fragment_program2 266abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 267abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NRM 68 268abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DIV 69 269abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DP2 70 270abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DP2A TGSI_OPCODE_DOT2ADD 271abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TXL 71 272abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_BRK 72 273abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_IF 73 274abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LOOP 74 275abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_REP 75 276abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ELSE 76 277abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ENDIF 77 278abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ENDLOOP 78 279abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ENDREP 79 280abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 281abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 282abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program2_option 283abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 284abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 285abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 286abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program3 287abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 288abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PUSHA 80 289abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_POPA 81 290abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 291abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 292abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_gpu_program4 293abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 294abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CEIL 82 295abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_I2F 83 296abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NOT 84 297abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TRUNC 85 298abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SHL 86 299abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SHR 87 300abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_AND 88 301abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_OR 89 302abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MOD 90 303abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_XOR 91 304abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SAD 92 305abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TXF 93 306abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TXQ 94 307abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CONT 95 308abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 309abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 310abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program4 311abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 312abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* Same as GL_NV_gpu_program4 */ 313abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 314abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 315abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_fragment_program4 316abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 317abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* Same as GL_NV_gpu_program4 */ 318abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 319abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 320abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_geometry_program4 321abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 322abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* Same as GL_NV_gpu_program4 */ 323abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_EMIT 96 324abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ENDPRIM 97 325abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 326abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 327abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GLSL 328abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 329abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_BGNLOOP2 98 330abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_BGNSUB 99 331abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ENDLOOP2 100 332abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ENDSUB 101 333abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_INT TGSI_OPCODE_TRUNC 334abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NOISE1 102 335abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NOISE2 103 336abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NOISE3 104 337abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NOISE4 105 338abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NOP 106 339abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 340abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 341abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_1_1 342abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 343abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXCOORD TGSI_OPCODE_NOP 344130b3154544701be2a57ac1c57432f153e363572Michal Krol#define TGSI_OPCODE_TEXKILL TGSI_OPCODE_KILP 345abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXBEM 107 346abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXBEML 108 347abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXREG2AR 109 348abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXM3X2PAD 110 349abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXM3X2TEX 111 350abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXM3X3PAD 112 351abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXM3X3TEX 113 352abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXM3X3SPEC 114 353abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXM3X3VSPEC 115 354abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 355abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 356abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_1_2 357abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 358abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXREG2GB 116 359abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXREG2RGB 117 360abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXDP3TEX 118 361abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXDP3 119 362abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXM3X3 120 363abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* CMP - use TGSI_OPCODE_CND0 */ 364abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 365abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 366abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_1_3 367abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 368abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXM3X2DEPTH 121 369abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* CMP - use TGSI_OPCODE_CND0 */ 370abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 371abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 372abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_1_4 373abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 374abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXCRD TGSI_OPCODE_TEXCOORD 375abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXLD TGSI_OPCODE_TEX 376abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXDEPTH 122 377abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_BEM 123 378abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 379abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 380abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_2_0 381abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 382abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_M4X4 TGSI_OPCODE_MULTIPLYMATRIX 383abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_M4X3 124 384abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_M3X4 125 385abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_M3X3 126 386abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_M3X2 127 387abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CRS TGSI_OPCODE_XPD 388abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NRM4 128 389abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SINCOS TGSI_OPCODE_SCS 390abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXLDB TGSI_OPCODE_TXB 391abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DP2ADD TGSI_OPCODE_DP2A 392abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 393abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 394abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_2_x 395abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 396abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CALL TGSI_OPCODE_CAL 397abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CALLNZ 129 398abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_IFC 130 399abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_BREAK TGSI_OPCODE_BRK 400abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_BREAKC 131 401abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DSX TGSI_OPCODE_DDX 402abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DSY TGSI_OPCODE_DDY 403abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXLDD TGSI_OPCODE_TXD 404abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 405abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 406abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * vs_1_1 407abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 408abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_EXPP TGSI_OPCODE_EXP 409abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LOGP TGSI_OPCODE_LG2 410abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 411abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 412abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * vs_2_0 413abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 414abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SGN TGSI_OPCODE_SSG 415abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MOVA TGSI_OPCODE_ARR 416abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 417abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 418abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * vs_2_x 419abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 420abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 421abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_KIL 132 /* unpredicated kill */ 422abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_END 133 /* aka HALT */ 423abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 424abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LAST 134 425abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 426abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SAT_NONE 0 /* do not saturate */ 427abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SAT_ZERO_ONE 1 /* clamp to [0,1] */ 428abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SAT_MINUS_PLUS_ONE 2 /* clamp to [-1,1] */ 429abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 430abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 431abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Opcode is the operation code to execute. A given operation defines the 432abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * semantics how the source registers (if any) are interpreted and what is 433abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * written to the destination registers (if any) as a result of execution. 434abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 435abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * NumDstRegs and NumSrcRegs is the number of destination and source registers, 436abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * respectively. For a given operation code, those numbers are fixed and are 437abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * present here only for convenience. 438abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 439abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Extended is TRUE, it is now executed. 440abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 441abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Saturate controls how are final results in destination registers modified. 442abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 443abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 444abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction 445abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 446abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_TOKEN_TYPE_INSTRUCTION */ 447abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Size : 8; /* UINT */ 448abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Opcode : 8; /* TGSI_OPCODE_ */ 449abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Saturate : 2; /* TGSI_SAT_ */ 450abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned NumDstRegs : 2; /* UINT */ 451abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned NumSrcRegs : 4; /* UINT */ 452abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 3; 453abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 454abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 455abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 456abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 457abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction::Extended is TRUE, tgsi_instruction_ext follows. 458abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 459abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, tgsi_instruction::NumDstRegs of tgsi_dst_register follow. 460abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 461abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, tgsi_instruction::NumSrcRegs of tgsi_src_register follow. 462abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 463abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * tgsi_instruction::Size contains the total number of words that make the 464abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * instruction, including the instruction word. 465abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 466abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 467abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INSTRUCTION_EXT_TYPE_NV 0 468abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INSTRUCTION_EXT_TYPE_LABEL 1 469abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INSTRUCTION_EXT_TYPE_TEXTURE 2 470abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INSTRUCTION_EXT_TYPE_PREDICATE 3 471abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 472abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction_ext 473abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 474abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_INSTRUCTION_EXT_TYPE_ */ 475abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 27; 476abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 477abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 478abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 479abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 480abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_NV, it should 481abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * be cast to tgsi_instruction_ext_nv. 482abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 483abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_LABEL, it 484abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * should be cast to tgsi_instruction_ext_label. 485abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 486abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_TEXTURE, it 487abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * should be cast to tgsi_instruction_ext_texture. 488abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 489abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_PREDICATE, it 490abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * should be cast to tgsi_instruction_ext_predicate. 491abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 492abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction_ext::Extended is TRUE, another tgsi_instruction_ext 493abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * follows. 494abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 495abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 496abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PRECISION_DEFAULT 0 497abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PRECISION_FLOAT32 1 498abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PRECISION_FLOAT16 2 499abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PRECISION_FIXED12 3 500abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 501abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_GT 0 502abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_EQ 1 503abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_LT 2 504abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_UN 3 505abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_GE 4 506abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_LE 5 507abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_NE 6 508abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_TR 7 509abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_FL 8 510abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 511abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_X 0 512abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_Y 1 513abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_Z 2 514abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_W 3 515abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 516abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 517abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Precision controls the precision at which the operation should be executed. 518abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 519abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * CondDstUpdate enables condition code register writes. When this field is 520abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * TRUE, CondDstIndex specifies the index of the condition code register to 521abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * update. 522abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 523abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * CondFlowEnable enables conditional execution of the operation. When this 524abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * field is TRUE, CondFlowIndex specifies the index of the condition code 525abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * register to test against CondMask with component swizzle controled by 526abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * CondSwizzleX, CondSwizzleY, CondSwizzleZ and CondSwizzleW. If the test fails, 527abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * the operation is not executed. 528abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 529abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 530abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction_ext_nv 531abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 532abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_INSTRUCTION_EXT_TYPE_NV */ 533abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Precision : 4; /* TGSI_PRECISION_ */ 534abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned CondDstIndex : 4; /* UINT */ 535abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned CondFlowIndex : 4; /* UINT */ 536abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned CondMask : 4; /* TGSI_CC_ */ 537abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned CondSwizzleX : 2; /* TGSI_SWIZZLE_ */ 538abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned CondSwizzleY : 2; /* TGSI_SWIZZLE_ */ 539abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned CondSwizzleZ : 2; /* TGSI_SWIZZLE_ */ 540abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned CondSwizzleW : 2; /* TGSI_SWIZZLE_ */ 541abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned CondDstUpdate : 1; /* BOOL */ 542abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned CondFlowEnable : 1; /* BOOL */ 543abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 1; 544abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 545abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 546abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 547abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction_ext_label 548abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 549abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_INSTRUCTION_EXT_TYPE_LABEL */ 550abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Label : 24; /* UINT */ 551abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 3; 552abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 553abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 554abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 555abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_UNKNOWN 0 556abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_1D 1 557abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_2D 2 558abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_3D 3 559abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_CUBE 4 560abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_RECT 5 561abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_SHADOW1D 6 562abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_SHADOW2D 7 563abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_SHADOWRECT 8 564abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 565abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction_ext_texture 566abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 567abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_INSTRUCTION_EXT_TYPE_TEXTURE */ 568abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Texture : 8; /* TGSI_TEXTURE_ */ 569abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 19; 570abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 571abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 572abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 573abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction_ext_predicate 574abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 575abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_INSTRUCTION_EXT_TYPE_PREDICATE */ 576abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned PredDstIndex : 4; /* UINT */ 577abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned PredWriteMask : 4; /* TGSI_WRITEMASK_ */ 578abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 19; 579abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 580abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 581abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 582abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 583abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * File specifies the register array to access. 584abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 585abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Index specifies the element number of a register in the register file. 586abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 587abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Indirect is TRUE, Index should be offset by the X component of a source 588abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * register that follows. The register can be now fetched into local storage 589abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * for further processing. 590abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 591abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Negate is TRUE, all components of the fetched register are negated. 592abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 593abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * The fetched register components are swizzled according to SwizzleX, SwizzleY, 594abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * SwizzleZ and SwizzleW. 595abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 596abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Extended is TRUE, any further modifications to the source register are 597abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * made to this temporary storage. 598abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 599abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 600abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_src_register 601abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 602abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned File : 4; /* TGSI_FILE_ */ 603abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned SwizzleX : 2; /* TGSI_SWIZZLE_ */ 604abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned SwizzleY : 2; /* TGSI_SWIZZLE_ */ 605abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned SwizzleZ : 2; /* TGSI_SWIZZLE_ */ 606abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned SwizzleW : 2; /* TGSI_SWIZZLE_ */ 607abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Negate : 1; /* BOOL */ 608abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Indirect : 1; /* BOOL */ 609abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Dimension : 1; /* BOOL */ 610abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol int Index : 16; /* SINT */ 611abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 612abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 613abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 614abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 615abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_src_register::Extended is TRUE, tgsi_src_register_ext follows. 616abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 617abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, if tgsi_src_register::Indirect is TRUE, another tgsi_src_register 618abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * follows. 619abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 620abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, if tgsi_src_register::Dimension is TRUE, tgsi_dimension follows. 621abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 622abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 623abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SRC_REGISTER_EXT_TYPE_SWZ 0 624abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SRC_REGISTER_EXT_TYPE_MOD 1 625abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 626abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_src_register_ext 627abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 628abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_SRC_REGISTER_EXT_TYPE_ */ 629abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 27; 630abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 631abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 632abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 633abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 634abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_src_register_ext::Type is TGSI_SRC_REGISTER_EXT_TYPE_SWZ, 635635341ec5b06b3db453e88f44663d2ad711c3f7dBrian * it should be cast to tgsi_src_register_ext_swz. 636abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 637abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_src_register_ext::Type is TGSI_SRC_REGISTER_EXT_TYPE_MOD, 638abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * it should be cast to tgsi_src_register_ext_mod. 639abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 640abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register_ext::Extended is TRUE, another tgsi_dst_register_ext 641abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * follows. 642abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 643abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 644abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_X TGSI_SWIZZLE_X 645abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_Y TGSI_SWIZZLE_Y 646abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_Z TGSI_SWIZZLE_Z 647abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_W TGSI_SWIZZLE_W 648abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_ZERO 4 649abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_ONE 5 650abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 651abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 652abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ExtSwizzleX, ExtSwizzleY, ExtSwizzleZ and ExtSwizzleW swizzle the source 653abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * register in an extended manner. 654abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 655abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * NegateX, NegateY, NegateZ and NegateW negate individual components of the 656abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * source register. 657abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 658abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ExtDivide specifies which component is used to divide all components of the 659abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * source register. 660abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 661abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 662abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_src_register_ext_swz 663abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 664abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_SRC_REGISTER_EXT_TYPE_SWZ */ 665abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned ExtSwizzleX : 4; /* TGSI_EXTSWIZZLE_ */ 666abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned ExtSwizzleY : 4; /* TGSI_EXTSWIZZLE_ */ 667abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned ExtSwizzleZ : 4; /* TGSI_EXTSWIZZLE_ */ 668abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned ExtSwizzleW : 4; /* TGSI_EXTSWIZZLE_ */ 669abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned NegateX : 1; /* BOOL */ 670abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned NegateY : 1; /* BOOL */ 671abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned NegateZ : 1; /* BOOL */ 672abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned NegateW : 1; /* BOOL */ 673abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned ExtDivide : 4; /* TGSI_EXTSWIZZLE_ */ 674abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 3; 675abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 676abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 677abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 678abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/** 679abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Extra src register modifiers 680abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 681abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Complement is TRUE, the source register is modified by subtracting it 682abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * from 1.0. 683abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 684abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Bias is TRUE, the source register is modified by subtracting 0.5 from it. 685abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 686abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Scale2X is TRUE, the source register is modified by multiplying it by 2.0. 687abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 688abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Absolute is TRUE, the source register is modified by removing the sign. 689abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 690abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Negate is TRUE, the source register is modified by negating it. 691abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 692abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 693abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_src_register_ext_mod 694abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 695abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_SRC_REGISTER_EXT_TYPE_MOD */ 696abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Complement : 1; /* BOOL */ 697abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Bias : 1; /* BOOL */ 698abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Scale2X : 1; /* BOOL */ 699abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Absolute : 1; /* BOOL */ 700abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Negate : 1; /* BOOL */ 701abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 22; 702abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 703abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 704abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 705abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dimension 706abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 707abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Indirect : 1; /* BOOL */ 708abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Dimension : 1; /* BOOL */ 709abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 13; 710abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol int Index : 16; /* SINT */ 711abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 712abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 713abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 714abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dst_register 715abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 716abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned File : 4; /* TGSI_FILE_ */ 717abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned WriteMask : 4; /* TGSI_WRITEMASK_ */ 718abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Indirect : 1; /* BOOL */ 719abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Dimension : 1; /* BOOL */ 720abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol int Index : 16; /* SINT */ 721abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 5; 722abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 723abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 724abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 725abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 726abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register::Extended is TRUE, tgsi_dst_register_ext follows. 727abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 728abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, if tgsi_dst_register::Indirect is TRUE, tgsi_src_register follows. 729abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 730abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 731abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_DST_REGISTER_EXT_TYPE_CONDCODE 0 732abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_DST_REGISTER_EXT_TYPE_MODULATE 1 733abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_DST_REGISTER_EXT_TYPE_PREDICATE 2 734abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 735abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dst_register_ext 736abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 737abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_DST_REGISTER_EXT_TYPE_ */ 738abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 27; 739abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 740abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 741abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 742abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/** 743abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Extra destination register modifiers 744abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 745abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register_ext::Type is TGSI_DST_REGISTER_EXT_TYPE_CONDCODE, 746abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * it should be cast to tgsi_dst_register_ext_condcode. 747abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 748abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register_ext::Type is TGSI_DST_REGISTER_EXT_TYPE_MODULATE, 749abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * it should be cast to tgsi_dst_register_ext_modulate. 750abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 751abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register_ext::Type is TGSI_DST_REGISTER_EXT_TYPE_PREDICATE, 752abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * it should be cast to tgsi_dst_register_ext_predicate. 753abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 754abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register_ext::Extended is TRUE, another tgsi_dst_register_ext 755abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * follows. 756abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 757abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dst_register_ext_concode 758abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 759abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_DST_REGISTER_EXT_TYPE_CONDCODE */ 760abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned CondMask : 4; /* TGSI_CC_ */ 761abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned CondSwizzleX : 2; /* TGSI_SWIZZLE_ */ 762abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned CondSwizzleY : 2; /* TGSI_SWIZZLE_ */ 763abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned CondSwizzleZ : 2; /* TGSI_SWIZZLE_ */ 764abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned CondSwizzleW : 2; /* TGSI_SWIZZLE_ */ 765abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned CondSrcIndex : 4; /* UINT */ 766abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 11; 767abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 768abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 769abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 770abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_1X 0 771abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_2X 1 772abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_4X 2 773abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_8X 3 774abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_HALF 4 775abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_QUARTER 5 776abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_EIGHTH 6 777abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 778abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dst_register_ext_modulate 779abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 780abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_DST_REGISTER_EXT_TYPE_MODULATE */ 781abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Modulate : 4; /* TGSI_MODULATE_ */ 782abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 23; 783abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 784abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 785abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 786abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 787abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Currently, the following constraints apply. 788abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 789abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * - PredSwizzleXYZW is either set to identity or replicate. 790abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * - PredSrcIndex is 0. 791abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 792abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 793abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dst_register_ext_predicate 794abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 795abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_DST_REGISTER_EXT_TYPE_PREDICATE */ 796abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned PredSwizzleX : 2; /* TGSI_SWIZZLE_ */ 797abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned PredSwizzleY : 2; /* TGSI_SWIZZLE_ */ 798abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned PredSwizzleZ : 2; /* TGSI_SWIZZLE_ */ 799abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned PredSwizzleW : 2; /* TGSI_SWIZZLE_ */ 800abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned PredSrcIndex : 4; /* UINT */ 801abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Negate : 1; /* BOOL */ 802abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 14; 803abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Extended : 1; /* BOOL */ 804abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 805abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 806abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 80794c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#ifdef __cplusplus 80894c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca} 80994c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#endif 810abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 81194c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#endif /* TGSI_TOKEN_H */ 812abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 813