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