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_BUILD_H
29ffe58739da9eee2e99682747cc8f26e412c87430michal#define TGSI_BUILD_H
30ffe58739da9eee2e99682747cc8f26e412c87430michal
314f25420bdd834e81a3e22733304efc5261c2998aBrian Paul
324f25420bdd834e81a3e22733304efc5261c2998aBrian Paulstruct tgsi_token;
334f25420bdd834e81a3e22733304efc5261c2998aBrian Paul
344f25420bdd834e81a3e22733304efc5261c2998aBrian Paul
35ffe58739da9eee2e99682747cc8f26e412c87430michal#if defined __cplusplus
36ffe58739da9eee2e99682747cc8f26e412c87430michalextern "C" {
379a8a5d7c2fe7f32c8d15bc0a77f86e1f2f995ffeJosé Fonseca#endif
38ffe58739da9eee2e99682747cc8f26e412c87430michal
39ffe58739da9eee2e99682747cc8f26e412c87430michal
40ffe58739da9eee2e99682747cc8f26e412c87430michal/*
41ffe58739da9eee2e99682747cc8f26e412c87430michal * header
42ffe58739da9eee2e99682747cc8f26e412c87430michal */
43ffe58739da9eee2e99682747cc8f26e412c87430michal
44ffe58739da9eee2e99682747cc8f26e412c87430michalstruct tgsi_header
45ffe58739da9eee2e99682747cc8f26e412c87430michaltgsi_build_header( void );
46ffe58739da9eee2e99682747cc8f26e412c87430michal
47ffe58739da9eee2e99682747cc8f26e412c87430michalstruct tgsi_processor
48ffe58739da9eee2e99682747cc8f26e412c87430michaltgsi_build_processor(
4970af238b494ed1b6da4841c2065c33ee0f0f37c9Keith Whitwell   unsigned processor,
50ffe58739da9eee2e99682747cc8f26e412c87430michal   struct tgsi_header *header );
51ffe58739da9eee2e99682747cc8f26e412c87430michal
52ffe58739da9eee2e99682747cc8f26e412c87430michal/*
53ffe58739da9eee2e99682747cc8f26e412c87430michal * declaration
54ffe58739da9eee2e99682747cc8f26e412c87430michal */
55ffe58739da9eee2e99682747cc8f26e412c87430michal
56ffe58739da9eee2e99682747cc8f26e412c87430michalstruct tgsi_full_declaration
57ffe58739da9eee2e99682747cc8f26e412c87430michaltgsi_default_full_declaration( void );
58ffe58739da9eee2e99682747cc8f26e412c87430michal
5970af238b494ed1b6da4841c2065c33ee0f0f37c9Keith Whitwellunsigned
60ffe58739da9eee2e99682747cc8f26e412c87430michaltgsi_build_full_declaration(
61ffe58739da9eee2e99682747cc8f26e412c87430michal   const struct tgsi_full_declaration *full_decl,
62ffe58739da9eee2e99682747cc8f26e412c87430michal   struct tgsi_token *tokens,
63ffe58739da9eee2e99682747cc8f26e412c87430michal   struct tgsi_header *header,
6470af238b494ed1b6da4841c2065c33ee0f0f37c9Keith Whitwell   unsigned maxsize );
65ffe58739da9eee2e99682747cc8f26e412c87430michal
66ffe58739da9eee2e99682747cc8f26e412c87430michal/*
67ffe58739da9eee2e99682747cc8f26e412c87430michal * immediate
68ffe58739da9eee2e99682747cc8f26e412c87430michal */
69ffe58739da9eee2e99682747cc8f26e412c87430michal
70ffe58739da9eee2e99682747cc8f26e412c87430michalstruct tgsi_full_immediate
71ffe58739da9eee2e99682747cc8f26e412c87430michaltgsi_default_full_immediate( void );
72ffe58739da9eee2e99682747cc8f26e412c87430michal
7370af238b494ed1b6da4841c2065c33ee0f0f37c9Keith Whitwellunsigned
74ffe58739da9eee2e99682747cc8f26e412c87430michaltgsi_build_full_immediate(
75ffe58739da9eee2e99682747cc8f26e412c87430michal   const struct tgsi_full_immediate *full_imm,
76ffe58739da9eee2e99682747cc8f26e412c87430michal   struct tgsi_token *tokens,
77ffe58739da9eee2e99682747cc8f26e412c87430michal   struct tgsi_header *header,
7870af238b494ed1b6da4841c2065c33ee0f0f37c9Keith Whitwell   unsigned maxsize );
79ffe58739da9eee2e99682747cc8f26e412c87430michal
80ffe58739da9eee2e99682747cc8f26e412c87430michal/*
813ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin * properties
823ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin */
833ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin
843ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusinstruct tgsi_full_property
853ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusintgsi_default_full_property( void );
863ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin
873ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusinunsigned
883ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusintgsi_build_full_property(
893ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin   const struct tgsi_full_property *full_prop,
903ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin   struct tgsi_token *tokens,
913ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin   struct tgsi_header *header,
923ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin   unsigned maxsize );
933ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin
943ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin/*
95ffe58739da9eee2e99682747cc8f26e412c87430michal * instruction
96ffe58739da9eee2e99682747cc8f26e412c87430michal */
97ffe58739da9eee2e99682747cc8f26e412c87430michal
98ffe58739da9eee2e99682747cc8f26e412c87430michalstruct tgsi_instruction
99ffe58739da9eee2e99682747cc8f26e412c87430michaltgsi_default_instruction( void );
100ffe58739da9eee2e99682747cc8f26e412c87430michal
101ffe58739da9eee2e99682747cc8f26e412c87430michalstruct tgsi_full_instruction
102ffe58739da9eee2e99682747cc8f26e412c87430michaltgsi_default_full_instruction( void );
103ffe58739da9eee2e99682747cc8f26e412c87430michal
10470af238b494ed1b6da4841c2065c33ee0f0f37c9Keith Whitwellunsigned
105ffe58739da9eee2e99682747cc8f26e412c87430michaltgsi_build_full_instruction(
106ffe58739da9eee2e99682747cc8f26e412c87430michal   const struct tgsi_full_instruction *full_inst,
107ffe58739da9eee2e99682747cc8f26e412c87430michal   struct tgsi_token *tokens,
108ffe58739da9eee2e99682747cc8f26e412c87430michal   struct tgsi_header *header,
10970af238b494ed1b6da4841c2065c33ee0f0f37c9Keith Whitwell   unsigned maxsize );
110ffe58739da9eee2e99682747cc8f26e412c87430michal
1115ee0d9f632383339088cc33005b7794b0915d4e0Michal Krolstruct tgsi_instruction_predicate
1125ee0d9f632383339088cc33005b7794b0915d4e0Michal Kroltgsi_default_instruction_predicate(void);
1135ee0d9f632383339088cc33005b7794b0915d4e0Michal Krol
114ffe58739da9eee2e99682747cc8f26e412c87430michal#if defined __cplusplus
1159a8a5d7c2fe7f32c8d15bc0a77f86e1f2f995ffeJosé Fonseca}
1169a8a5d7c2fe7f32c8d15bc0a77f86e1f2f995ffeJosé Fonseca#endif
117ffe58739da9eee2e99682747cc8f26e412c87430michal
1189a8a5d7c2fe7f32c8d15bc0a77f86e1f2f995ffeJosé Fonseca#endif /* TGSI_BUILD_H */
119