17279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol/************************************************************************** 27279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * 37279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. 47279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * All Rights Reserved. 57279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * 67279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * Permission is hereby granted, free of charge, to any person obtaining a 77279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * copy of this software and associated documentation files (the 87279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * "Software"), to deal in the Software without restriction, including 97279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * without limitation the rights to use, copy, modify, merge, publish, 107279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * distribute, sub license, and/or sell copies of the Software, and to 117279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * permit persons to whom the Software is furnished to do so, subject to 127279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * the following conditions: 137279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * 147279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * The above copyright notice and this permission notice (including the 157279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * next paragraph) shall be included in all copies or substantial portions 167279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * of the Software. 177279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * 187279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 197279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 207279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 217279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 227279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 237279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 247279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 257279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol * 267279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol **************************************************************************/ 277279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol 287279d663e984ae8a243f56c010f175fee9ffccb3Michal Krol#ifndef TGSI_UTIL_H 29ffe58739da9eee2e99682747cc8f26e412c87430michal#define TGSI_UTIL_H 30ffe58739da9eee2e99682747cc8f26e412c87430michal 31ffe58739da9eee2e99682747cc8f26e412c87430michal#if defined __cplusplus 32ffe58739da9eee2e99682747cc8f26e412c87430michalextern "C" { 339a8a5d7c2fe7f32c8d15bc0a77f86e1f2f995ffeJosé Fonseca#endif 34ffe58739da9eee2e99682747cc8f26e412c87430michal 35848ab8be8c34b00b2afe6120882f8c29f047ced5Keith Whitwellstruct tgsi_src_register; 36848ab8be8c34b00b2afe6120882f8c29f047ced5Keith Whitwellstruct tgsi_full_src_register; 37abe4f3d1aa68aec70d329447abc890b3eaaba9cbJosé Fonsecastruct tgsi_full_instruction; 38848ab8be8c34b00b2afe6120882f8c29f047ced5Keith Whitwell 39ffe58739da9eee2e99682747cc8f26e412c87430michalvoid * 40ffe58739da9eee2e99682747cc8f26e412c87430michaltgsi_align_128bit( 41ffe58739da9eee2e99682747cc8f26e412c87430michal void *unaligned ); 42ffe58739da9eee2e99682747cc8f26e412c87430michal 4370af238b494ed1b6da4841c2065c33ee0f0f37c9Keith Whitwellunsigned 44ffe58739da9eee2e99682747cc8f26e412c87430michaltgsi_util_get_src_register_swizzle( 45ffe58739da9eee2e99682747cc8f26e412c87430michal const struct tgsi_src_register *reg, 4670af238b494ed1b6da4841c2065c33ee0f0f37c9Keith Whitwell unsigned component ); 47ffe58739da9eee2e99682747cc8f26e412c87430michal 48ffe58739da9eee2e99682747cc8f26e412c87430michal 4970af238b494ed1b6da4841c2065c33ee0f0f37c9Keith Whitwellunsigned 50b9cb74c7f826dfd320f5e5b54aa933898f7ddd3dKeith Whitwelltgsi_util_get_full_src_register_swizzle( 51ffe58739da9eee2e99682747cc8f26e412c87430michal const struct tgsi_full_src_register *reg, 5270af238b494ed1b6da4841c2065c33ee0f0f37c9Keith Whitwell unsigned component ); 53ffe58739da9eee2e99682747cc8f26e412c87430michal 54ffe58739da9eee2e99682747cc8f26e412c87430michalvoid 55ffe58739da9eee2e99682747cc8f26e412c87430michaltgsi_util_set_src_register_swizzle( 56ffe58739da9eee2e99682747cc8f26e412c87430michal struct tgsi_src_register *reg, 5770af238b494ed1b6da4841c2065c33ee0f0f37c9Keith Whitwell unsigned swizzle, 5870af238b494ed1b6da4841c2065c33ee0f0f37c9Keith Whitwell unsigned component ); 59ffe58739da9eee2e99682747cc8f26e412c87430michal 60ffe58739da9eee2e99682747cc8f26e412c87430michal#define TGSI_UTIL_SIGN_CLEAR 0 /* Force positive */ 61ffe58739da9eee2e99682747cc8f26e412c87430michal#define TGSI_UTIL_SIGN_SET 1 /* Force negative */ 62ffe58739da9eee2e99682747cc8f26e412c87430michal#define TGSI_UTIL_SIGN_TOGGLE 2 /* Negate */ 63ffe58739da9eee2e99682747cc8f26e412c87430michal#define TGSI_UTIL_SIGN_KEEP 3 /* No change */ 64ffe58739da9eee2e99682747cc8f26e412c87430michal 6570af238b494ed1b6da4841c2065c33ee0f0f37c9Keith Whitwellunsigned 66ffe58739da9eee2e99682747cc8f26e412c87430michaltgsi_util_get_full_src_register_sign_mode( 67ffe58739da9eee2e99682747cc8f26e412c87430michal const struct tgsi_full_src_register *reg, 6870af238b494ed1b6da4841c2065c33ee0f0f37c9Keith Whitwell unsigned component ); 69ffe58739da9eee2e99682747cc8f26e412c87430michal 70ffe58739da9eee2e99682747cc8f26e412c87430michalvoid 71ffe58739da9eee2e99682747cc8f26e412c87430michaltgsi_util_set_full_src_register_sign_mode( 72ffe58739da9eee2e99682747cc8f26e412c87430michal struct tgsi_full_src_register *reg, 7370af238b494ed1b6da4841c2065c33ee0f0f37c9Keith Whitwell unsigned sign_mode ); 74ffe58739da9eee2e99682747cc8f26e412c87430michal 75abe4f3d1aa68aec70d329447abc890b3eaaba9cbJosé Fonsecaunsigned 76abe4f3d1aa68aec70d329447abc890b3eaaba9cbJosé Fonsecatgsi_util_get_inst_usage_mask(const struct tgsi_full_instruction *inst, 77abe4f3d1aa68aec70d329447abc890b3eaaba9cbJosé Fonseca unsigned src_idx); 78abe4f3d1aa68aec70d329447abc890b3eaaba9cbJosé Fonseca 79ffe58739da9eee2e99682747cc8f26e412c87430michal#if defined __cplusplus 809a8a5d7c2fe7f32c8d15bc0a77f86e1f2f995ffeJosé Fonseca} 819a8a5d7c2fe7f32c8d15bc0a77f86e1f2f995ffeJosé Fonseca#endif 82ffe58739da9eee2e99682747cc8f26e412c87430michal 839a8a5d7c2fe7f32c8d15bc0a77f86e1f2f995ffeJosé Fonseca#endif /* TGSI_UTIL_H */ 84