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