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