1b8e80941Smrg/* A Bison parser, made by GNU Bison 3.2.4. */ 2848b8605Smrg 3848b8605Smrg/* Bison implementation for Yacc-like parsers in C 4b8e80941Smrg 5b8e80941Smrg Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc. 6b8e80941Smrg 7848b8605Smrg This program is free software: you can redistribute it and/or modify 8848b8605Smrg it under the terms of the GNU General Public License as published by 9848b8605Smrg the Free Software Foundation, either version 3 of the License, or 10848b8605Smrg (at your option) any later version. 11b8e80941Smrg 12848b8605Smrg This program is distributed in the hope that it will be useful, 13848b8605Smrg but WITHOUT ANY WARRANTY; without even the implied warranty of 14848b8605Smrg MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15848b8605Smrg GNU General Public License for more details. 16b8e80941Smrg 17848b8605Smrg You should have received a copy of the GNU General Public License 18848b8605Smrg along with this program. If not, see <http://www.gnu.org/licenses/>. */ 19848b8605Smrg 20848b8605Smrg/* As a special exception, you may create a larger work that contains 21848b8605Smrg part or all of the Bison parser skeleton and distribute that work 22848b8605Smrg under terms of your choice, so long as that work isn't itself a 23848b8605Smrg parser generator using the skeleton or a modified version thereof 24848b8605Smrg as a parser skeleton. Alternatively, if you modify or redistribute 25848b8605Smrg the parser skeleton itself, you may (at your option) remove this 26848b8605Smrg special exception, which will cause the skeleton and the resulting 27848b8605Smrg Bison output files to be licensed under the GNU General Public 28848b8605Smrg License without this special exception. 29b8e80941Smrg 30848b8605Smrg This special exception was added by the Free Software Foundation in 31848b8605Smrg version 2.2 of Bison. */ 32848b8605Smrg 33848b8605Smrg/* C LALR(1) parser skeleton written by Richard Stallman, by 34848b8605Smrg simplifying the original so-called "semantic" parser. */ 35848b8605Smrg 36848b8605Smrg/* All symbols defined below should begin with yy or YY, to avoid 37848b8605Smrg infringing on user name space. This should be done even for local 38848b8605Smrg variables, as they might otherwise be expanded by user macros. 39848b8605Smrg There are some unavoidable exceptions within include files to 40848b8605Smrg define necessary library symbols; they are noted "INFRINGES ON 41848b8605Smrg USER NAME SPACE" below. */ 42848b8605Smrg 43b8e80941Smrg/* Undocumented macros, especially those whose name start with YY_, 44b8e80941Smrg are private implementation details. Do not rely on them. */ 45b8e80941Smrg 46848b8605Smrg/* Identify Bison output. */ 47848b8605Smrg#define YYBISON 1 48848b8605Smrg 49848b8605Smrg/* Bison version. */ 50b8e80941Smrg#define YYBISON_VERSION "3.2.4" 51848b8605Smrg 52848b8605Smrg/* Skeleton name. */ 53848b8605Smrg#define YYSKELETON_NAME "yacc.c" 54848b8605Smrg 55848b8605Smrg/* Pure parsers. */ 56848b8605Smrg#define YYPURE 1 57848b8605Smrg 58848b8605Smrg/* Push parsers. */ 59848b8605Smrg#define YYPUSH 0 60848b8605Smrg 61848b8605Smrg/* Pull parsers. */ 62848b8605Smrg#define YYPULL 1 63848b8605Smrg 64848b8605Smrg 65848b8605Smrg/* Substitute the variable and function names. */ 66848b8605Smrg#define yyparse _mesa_program_parse 67848b8605Smrg#define yylex _mesa_program_lex 68848b8605Smrg#define yyerror _mesa_program_error 69848b8605Smrg#define yydebug _mesa_program_debug 70848b8605Smrg#define yynerrs _mesa_program_nerrs 71848b8605Smrg 72b8e80941Smrg 73b8e80941Smrg/* First part of user prologue. */ 74b8e80941Smrg#line 1 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:338 */ 75848b8605Smrg 76848b8605Smrg/* 77848b8605Smrg * Copyright © 2009 Intel Corporation 78848b8605Smrg * 79848b8605Smrg * Permission is hereby granted, free of charge, to any person obtaining a 80848b8605Smrg * copy of this software and associated documentation files (the "Software"), 81848b8605Smrg * to deal in the Software without restriction, including without limitation 82848b8605Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 83848b8605Smrg * and/or sell copies of the Software, and to permit persons to whom the 84848b8605Smrg * Software is furnished to do so, subject to the following conditions: 85848b8605Smrg * 86848b8605Smrg * The above copyright notice and this permission notice (including the next 87848b8605Smrg * paragraph) shall be included in all copies or substantial portions of the 88848b8605Smrg * Software. 89848b8605Smrg * 90848b8605Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 91848b8605Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 92848b8605Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 93848b8605Smrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 94848b8605Smrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 95848b8605Smrg * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 96848b8605Smrg * DEALINGS IN THE SOFTWARE. 97848b8605Smrg */ 98b8e80941Smrg 99b8e80941Smrg#include <stdarg.h> 100848b8605Smrg#include <stdio.h> 101848b8605Smrg#include <stdlib.h> 102848b8605Smrg#include <string.h> 103848b8605Smrg 104b8e80941Smrg#include "main/errors.h" 105848b8605Smrg#include "main/mtypes.h" 106848b8605Smrg#include "main/imports.h" 107848b8605Smrg#include "program/program.h" 108848b8605Smrg#include "program/prog_parameter.h" 109848b8605Smrg#include "program/prog_parameter_layout.h" 110848b8605Smrg#include "program/prog_statevars.h" 111848b8605Smrg#include "program/prog_instruction.h" 112848b8605Smrg 113848b8605Smrg#include "program/symbol_table.h" 114848b8605Smrg#include "program/program_parser.h" 115848b8605Smrg 116b8e80941Smrg#include "util/u_math.h" 117b8e80941Smrg 118848b8605Smrgextern void *yy_scan_string(char *); 119848b8605Smrgextern void yy_delete_buffer(void *); 120848b8605Smrg 121848b8605Smrgstatic struct asm_symbol *declare_variable(struct asm_parser_state *state, 122848b8605Smrg char *name, enum asm_type t, struct YYLTYPE *locp); 123848b8605Smrg 124848b8605Smrgstatic int add_state_reference(struct gl_program_parameter_list *param_list, 125b8e80941Smrg const gl_state_index16 tokens[STATE_LENGTH]); 126848b8605Smrg 127848b8605Smrgstatic int initialize_symbol_from_state(struct gl_program *prog, 128b8e80941Smrg struct asm_symbol *param_var, const gl_state_index16 tokens[STATE_LENGTH]); 129848b8605Smrg 130848b8605Smrgstatic int initialize_symbol_from_param(struct gl_program *prog, 131b8e80941Smrg struct asm_symbol *param_var, const gl_state_index16 tokens[STATE_LENGTH]); 132848b8605Smrg 133848b8605Smrgstatic int initialize_symbol_from_const(struct gl_program *prog, 134848b8605Smrg struct asm_symbol *param_var, const struct asm_vector *vec, 135848b8605Smrg GLboolean allowSwizzle); 136848b8605Smrg 137848b8605Smrgstatic int yyparse(struct asm_parser_state *state); 138848b8605Smrg 139848b8605Smrgstatic char *make_error_string(const char *fmt, ...); 140848b8605Smrg 141848b8605Smrgstatic void yyerror(struct YYLTYPE *locp, struct asm_parser_state *state, 142848b8605Smrg const char *s); 143848b8605Smrg 144848b8605Smrgstatic int validate_inputs(struct YYLTYPE *locp, 145848b8605Smrg struct asm_parser_state *state); 146848b8605Smrg 147848b8605Smrgstatic void init_dst_reg(struct prog_dst_register *r); 148848b8605Smrg 149848b8605Smrgstatic void set_dst_reg(struct prog_dst_register *r, 150848b8605Smrg gl_register_file file, GLint index); 151848b8605Smrg 152848b8605Smrgstatic void init_src_reg(struct asm_src_register *r); 153848b8605Smrg 154848b8605Smrgstatic void set_src_reg(struct asm_src_register *r, 155848b8605Smrg gl_register_file file, GLint index); 156848b8605Smrg 157848b8605Smrgstatic void set_src_reg_swz(struct asm_src_register *r, 158848b8605Smrg gl_register_file file, GLint index, GLuint swizzle); 159848b8605Smrg 160848b8605Smrgstatic void asm_instruction_set_operands(struct asm_instruction *inst, 161848b8605Smrg const struct prog_dst_register *dst, const struct asm_src_register *src0, 162848b8605Smrg const struct asm_src_register *src1, const struct asm_src_register *src2); 163848b8605Smrg 164b8e80941Smrgstatic struct asm_instruction *asm_instruction_ctor(enum prog_opcode op, 165848b8605Smrg const struct prog_dst_register *dst, const struct asm_src_register *src0, 166848b8605Smrg const struct asm_src_register *src1, const struct asm_src_register *src2); 167848b8605Smrg 168848b8605Smrgstatic struct asm_instruction *asm_instruction_copy_ctor( 169848b8605Smrg const struct prog_instruction *base, const struct prog_dst_register *dst, 170848b8605Smrg const struct asm_src_register *src0, const struct asm_src_register *src1, 171848b8605Smrg const struct asm_src_register *src2); 172848b8605Smrg 173848b8605Smrg#ifndef FALSE 174848b8605Smrg#define FALSE 0 175848b8605Smrg#define TRUE (!FALSE) 176848b8605Smrg#endif 177848b8605Smrg 178848b8605Smrg#define YYLLOC_DEFAULT(Current, Rhs, N) \ 179848b8605Smrg do { \ 180848b8605Smrg if (N) { \ 181848b8605Smrg (Current).first_line = YYRHSLOC(Rhs, 1).first_line; \ 182848b8605Smrg (Current).first_column = YYRHSLOC(Rhs, 1).first_column; \ 183848b8605Smrg (Current).position = YYRHSLOC(Rhs, 1).position; \ 184848b8605Smrg (Current).last_line = YYRHSLOC(Rhs, N).last_line; \ 185848b8605Smrg (Current).last_column = YYRHSLOC(Rhs, N).last_column; \ 186848b8605Smrg } else { \ 187848b8605Smrg (Current).first_line = YYRHSLOC(Rhs, 0).last_line; \ 188848b8605Smrg (Current).last_line = (Current).first_line; \ 189848b8605Smrg (Current).first_column = YYRHSLOC(Rhs, 0).last_column; \ 190848b8605Smrg (Current).last_column = (Current).first_column; \ 191848b8605Smrg (Current).position = YYRHSLOC(Rhs, 0).position \ 192848b8605Smrg + (Current).first_column; \ 193848b8605Smrg } \ 194848b8605Smrg } while(0) 195848b8605Smrg 196b8e80941Smrg#line 197 "program_parse.tab.c" /* yacc.c:338 */ 197b8e80941Smrg# ifndef YY_NULLPTR 198b8e80941Smrg# if defined __cplusplus 199b8e80941Smrg# if 201103L <= __cplusplus 200b8e80941Smrg# define YY_NULLPTR nullptr 201b8e80941Smrg# else 202b8e80941Smrg# define YY_NULLPTR 0 203b8e80941Smrg# endif 204848b8605Smrg# else 205b8e80941Smrg# define YY_NULLPTR ((void*)0) 206848b8605Smrg# endif 207848b8605Smrg# endif 208848b8605Smrg 209848b8605Smrg/* Enabling verbose error messages. */ 210848b8605Smrg#ifdef YYERROR_VERBOSE 211848b8605Smrg# undef YYERROR_VERBOSE 212848b8605Smrg# define YYERROR_VERBOSE 1 213848b8605Smrg#else 214848b8605Smrg# define YYERROR_VERBOSE 1 215848b8605Smrg#endif 216848b8605Smrg 217848b8605Smrg/* In a future release of Bison, this section will be replaced 218848b8605Smrg by #include "program_parse.tab.h". */ 219848b8605Smrg#ifndef YY__MESA_PROGRAM_PROGRAM_PARSE_TAB_H_INCLUDED 220848b8605Smrg# define YY__MESA_PROGRAM_PROGRAM_PARSE_TAB_H_INCLUDED 221b8e80941Smrg/* Debug traces. */ 222848b8605Smrg#ifndef YYDEBUG 223848b8605Smrg# define YYDEBUG 0 224848b8605Smrg#endif 225848b8605Smrg#if YYDEBUG 226848b8605Smrgextern int _mesa_program_debug; 227848b8605Smrg#endif 228848b8605Smrg 229b8e80941Smrg/* Token type. */ 230848b8605Smrg#ifndef YYTOKENTYPE 231848b8605Smrg# define YYTOKENTYPE 232b8e80941Smrg enum yytokentype 233b8e80941Smrg { 234b8e80941Smrg ARBvp_10 = 258, 235b8e80941Smrg ARBfp_10 = 259, 236b8e80941Smrg ADDRESS = 260, 237b8e80941Smrg ALIAS = 261, 238b8e80941Smrg ATTRIB = 262, 239b8e80941Smrg OPTION = 263, 240b8e80941Smrg OUTPUT = 264, 241b8e80941Smrg PARAM = 265, 242b8e80941Smrg TEMP = 266, 243b8e80941Smrg END = 267, 244b8e80941Smrg BIN_OP = 268, 245b8e80941Smrg BINSC_OP = 269, 246b8e80941Smrg SAMPLE_OP = 270, 247b8e80941Smrg SCALAR_OP = 271, 248b8e80941Smrg TRI_OP = 272, 249b8e80941Smrg VECTOR_OP = 273, 250b8e80941Smrg ARL = 274, 251b8e80941Smrg KIL = 275, 252b8e80941Smrg SWZ = 276, 253b8e80941Smrg TXD_OP = 277, 254b8e80941Smrg INTEGER = 278, 255b8e80941Smrg REAL = 279, 256b8e80941Smrg AMBIENT = 280, 257b8e80941Smrg ATTENUATION = 281, 258b8e80941Smrg BACK = 282, 259b8e80941Smrg CLIP = 283, 260b8e80941Smrg COLOR = 284, 261b8e80941Smrg DEPTH = 285, 262b8e80941Smrg DIFFUSE = 286, 263b8e80941Smrg DIRECTION = 287, 264b8e80941Smrg EMISSION = 288, 265b8e80941Smrg ENV = 289, 266b8e80941Smrg EYE = 290, 267b8e80941Smrg FOG = 291, 268b8e80941Smrg FOGCOORD = 292, 269b8e80941Smrg FRAGMENT = 293, 270b8e80941Smrg FRONT = 294, 271b8e80941Smrg HALF = 295, 272b8e80941Smrg INVERSE = 296, 273b8e80941Smrg INVTRANS = 297, 274b8e80941Smrg LIGHT = 298, 275b8e80941Smrg LIGHTMODEL = 299, 276b8e80941Smrg LIGHTPROD = 300, 277b8e80941Smrg LOCAL = 301, 278b8e80941Smrg MATERIAL = 302, 279b8e80941Smrg MAT_PROGRAM = 303, 280b8e80941Smrg MATRIX = 304, 281b8e80941Smrg MATRIXINDEX = 305, 282b8e80941Smrg MODELVIEW = 306, 283b8e80941Smrg MVP = 307, 284b8e80941Smrg NORMAL = 308, 285b8e80941Smrg OBJECT = 309, 286b8e80941Smrg PALETTE = 310, 287b8e80941Smrg PARAMS = 311, 288b8e80941Smrg PLANE = 312, 289b8e80941Smrg POINT_TOK = 313, 290b8e80941Smrg POINTSIZE = 314, 291b8e80941Smrg POSITION = 315, 292b8e80941Smrg PRIMARY = 316, 293b8e80941Smrg PROGRAM = 317, 294b8e80941Smrg PROJECTION = 318, 295b8e80941Smrg RANGE = 319, 296b8e80941Smrg RESULT = 320, 297b8e80941Smrg ROW = 321, 298b8e80941Smrg SCENECOLOR = 322, 299b8e80941Smrg SECONDARY = 323, 300b8e80941Smrg SHININESS = 324, 301b8e80941Smrg SIZE_TOK = 325, 302b8e80941Smrg SPECULAR = 326, 303b8e80941Smrg SPOT = 327, 304b8e80941Smrg STATE = 328, 305b8e80941Smrg TEXCOORD = 329, 306b8e80941Smrg TEXENV = 330, 307b8e80941Smrg TEXGEN = 331, 308b8e80941Smrg TEXGEN_Q = 332, 309b8e80941Smrg TEXGEN_R = 333, 310b8e80941Smrg TEXGEN_S = 334, 311b8e80941Smrg TEXGEN_T = 335, 312b8e80941Smrg TEXTURE = 336, 313b8e80941Smrg TRANSPOSE = 337, 314b8e80941Smrg TEXTURE_UNIT = 338, 315b8e80941Smrg TEX_1D = 339, 316b8e80941Smrg TEX_2D = 340, 317b8e80941Smrg TEX_3D = 341, 318b8e80941Smrg TEX_CUBE = 342, 319b8e80941Smrg TEX_RECT = 343, 320b8e80941Smrg TEX_SHADOW1D = 344, 321b8e80941Smrg TEX_SHADOW2D = 345, 322b8e80941Smrg TEX_SHADOWRECT = 346, 323b8e80941Smrg TEX_ARRAY1D = 347, 324b8e80941Smrg TEX_ARRAY2D = 348, 325b8e80941Smrg TEX_ARRAYSHADOW1D = 349, 326b8e80941Smrg TEX_ARRAYSHADOW2D = 350, 327b8e80941Smrg VERTEX = 351, 328b8e80941Smrg VTXATTRIB = 352, 329b8e80941Smrg IDENTIFIER = 353, 330b8e80941Smrg USED_IDENTIFIER = 354, 331b8e80941Smrg MASK4 = 355, 332b8e80941Smrg MASK3 = 356, 333b8e80941Smrg MASK2 = 357, 334b8e80941Smrg MASK1 = 358, 335b8e80941Smrg SWIZZLE = 359, 336b8e80941Smrg DOT_DOT = 360, 337b8e80941Smrg DOT = 361 338b8e80941Smrg }; 339848b8605Smrg#endif 340848b8605Smrg 341b8e80941Smrg/* Value type. */ 342848b8605Smrg#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 343b8e80941Smrg 344b8e80941Smrgunion YYSTYPE 345848b8605Smrg{ 346b8e80941Smrg#line 129 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:353 */ 347848b8605Smrg 348848b8605Smrg struct asm_instruction *inst; 349848b8605Smrg struct asm_symbol *sym; 350848b8605Smrg struct asm_symbol temp_sym; 351848b8605Smrg struct asm_swizzle_mask swiz_mask; 352848b8605Smrg struct asm_src_register src_reg; 353848b8605Smrg struct prog_dst_register dst_reg; 354848b8605Smrg struct prog_instruction temp_inst; 355848b8605Smrg char *string; 356848b8605Smrg unsigned result; 357848b8605Smrg unsigned attrib; 358848b8605Smrg int integer; 359848b8605Smrg float real; 360b8e80941Smrg gl_state_index16 state[STATE_LENGTH]; 361848b8605Smrg int negate; 362848b8605Smrg struct asm_vector vector; 363b8e80941Smrg enum prog_opcode opcode; 364848b8605Smrg 365848b8605Smrg struct { 366848b8605Smrg unsigned swz; 367848b8605Smrg unsigned rgba_valid:1; 368848b8605Smrg unsigned xyzw_valid:1; 369848b8605Smrg unsigned negate:1; 370848b8605Smrg } ext_swizzle; 371848b8605Smrg 372b8e80941Smrg#line 373 "program_parse.tab.c" /* yacc.c:353 */ 373b8e80941Smrg}; 374848b8605Smrg 375b8e80941Smrgtypedef union YYSTYPE YYSTYPE; 376848b8605Smrg# define YYSTYPE_IS_TRIVIAL 1 377848b8605Smrg# define YYSTYPE_IS_DECLARED 1 378848b8605Smrg#endif 379848b8605Smrg 380b8e80941Smrg/* Location type. */ 381848b8605Smrg#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED 382b8e80941Smrgtypedef struct YYLTYPE YYLTYPE; 383b8e80941Smrgstruct YYLTYPE 384848b8605Smrg{ 385848b8605Smrg int first_line; 386848b8605Smrg int first_column; 387848b8605Smrg int last_line; 388848b8605Smrg int last_column; 389b8e80941Smrg}; 390848b8605Smrg# define YYLTYPE_IS_DECLARED 1 391848b8605Smrg# define YYLTYPE_IS_TRIVIAL 1 392848b8605Smrg#endif 393848b8605Smrg 394848b8605Smrg 395b8e80941Smrg 396848b8605Smrgint _mesa_program_parse (struct asm_parser_state *state); 397848b8605Smrg 398848b8605Smrg#endif /* !YY__MESA_PROGRAM_PROGRAM_PARSE_TAB_H_INCLUDED */ 399848b8605Smrg 400b8e80941Smrg/* Second part of user prologue. */ 401b8e80941Smrg#line 271 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:355 */ 402848b8605Smrg 403848b8605Smrgextern int 404848b8605Smrg_mesa_program_lexer_lex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, 405848b8605Smrg void *yyscanner); 406848b8605Smrg 407848b8605Smrgstatic int 408848b8605Smrgyylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, 409848b8605Smrg struct asm_parser_state *state) 410848b8605Smrg{ 411848b8605Smrg return _mesa_program_lexer_lex(yylval_param, yylloc_param, state->scanner); 412848b8605Smrg} 413848b8605Smrg 414b8e80941Smrg#line 415 "program_parse.tab.c" /* yacc.c:355 */ 415848b8605Smrg 416848b8605Smrg#ifdef short 417848b8605Smrg# undef short 418848b8605Smrg#endif 419848b8605Smrg 420848b8605Smrg#ifdef YYTYPE_UINT8 421848b8605Smrgtypedef YYTYPE_UINT8 yytype_uint8; 422848b8605Smrg#else 423848b8605Smrgtypedef unsigned char yytype_uint8; 424848b8605Smrg#endif 425848b8605Smrg 426848b8605Smrg#ifdef YYTYPE_INT8 427848b8605Smrgtypedef YYTYPE_INT8 yytype_int8; 428848b8605Smrg#else 429b8e80941Smrgtypedef signed char yytype_int8; 430848b8605Smrg#endif 431848b8605Smrg 432848b8605Smrg#ifdef YYTYPE_UINT16 433848b8605Smrgtypedef YYTYPE_UINT16 yytype_uint16; 434848b8605Smrg#else 435b8e80941Smrgtypedef unsigned short yytype_uint16; 436848b8605Smrg#endif 437848b8605Smrg 438848b8605Smrg#ifdef YYTYPE_INT16 439848b8605Smrgtypedef YYTYPE_INT16 yytype_int16; 440848b8605Smrg#else 441b8e80941Smrgtypedef short yytype_int16; 442848b8605Smrg#endif 443848b8605Smrg 444848b8605Smrg#ifndef YYSIZE_T 445848b8605Smrg# ifdef __SIZE_TYPE__ 446848b8605Smrg# define YYSIZE_T __SIZE_TYPE__ 447848b8605Smrg# elif defined size_t 448848b8605Smrg# define YYSIZE_T size_t 449b8e80941Smrg# elif ! defined YYSIZE_T 450848b8605Smrg# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 451848b8605Smrg# define YYSIZE_T size_t 452848b8605Smrg# else 453b8e80941Smrg# define YYSIZE_T unsigned 454848b8605Smrg# endif 455848b8605Smrg#endif 456848b8605Smrg 457848b8605Smrg#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 458848b8605Smrg 459848b8605Smrg#ifndef YY_ 460848b8605Smrg# if defined YYENABLE_NLS && YYENABLE_NLS 461848b8605Smrg# if ENABLE_NLS 462848b8605Smrg# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 463848b8605Smrg# define YY_(Msgid) dgettext ("bison-runtime", Msgid) 464848b8605Smrg# endif 465848b8605Smrg# endif 466848b8605Smrg# ifndef YY_ 467848b8605Smrg# define YY_(Msgid) Msgid 468848b8605Smrg# endif 469848b8605Smrg#endif 470848b8605Smrg 471b8e80941Smrg#ifndef YY_ATTRIBUTE 472b8e80941Smrg# if (defined __GNUC__ \ 473b8e80941Smrg && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ 474b8e80941Smrg || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C 475b8e80941Smrg# define YY_ATTRIBUTE(Spec) __attribute__(Spec) 476b8e80941Smrg# else 477b8e80941Smrg# define YY_ATTRIBUTE(Spec) /* empty */ 478b8e80941Smrg# endif 479b8e80941Smrg#endif 480b8e80941Smrg 481b8e80941Smrg#ifndef YY_ATTRIBUTE_PURE 482b8e80941Smrg# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) 483b8e80941Smrg#endif 484b8e80941Smrg 485b8e80941Smrg#ifndef YY_ATTRIBUTE_UNUSED 486b8e80941Smrg# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) 487b8e80941Smrg#endif 488b8e80941Smrg 489848b8605Smrg/* Suppress unused-variable warnings by "using" E. */ 490848b8605Smrg#if ! defined lint || defined __GNUC__ 491848b8605Smrg# define YYUSE(E) ((void) (E)) 492848b8605Smrg#else 493848b8605Smrg# define YYUSE(E) /* empty */ 494848b8605Smrg#endif 495848b8605Smrg 496b8e80941Smrg#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ 497b8e80941Smrg/* Suppress an incorrect diagnostic about yylval being uninitialized. */ 498b8e80941Smrg# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ 499b8e80941Smrg _Pragma ("GCC diagnostic push") \ 500b8e80941Smrg _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ 501b8e80941Smrg _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") 502b8e80941Smrg# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ 503b8e80941Smrg _Pragma ("GCC diagnostic pop") 504848b8605Smrg#else 505b8e80941Smrg# define YY_INITIAL_VALUE(Value) Value 506848b8605Smrg#endif 507b8e80941Smrg#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 508b8e80941Smrg# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 509b8e80941Smrg# define YY_IGNORE_MAYBE_UNINITIALIZED_END 510b8e80941Smrg#endif 511b8e80941Smrg#ifndef YY_INITIAL_VALUE 512b8e80941Smrg# define YY_INITIAL_VALUE(Value) /* Nothing. */ 513848b8605Smrg#endif 514848b8605Smrg 515b8e80941Smrg 516848b8605Smrg#if ! defined yyoverflow || YYERROR_VERBOSE 517848b8605Smrg 518848b8605Smrg/* The parser invokes alloca or malloc; define the necessary symbols. */ 519848b8605Smrg 520848b8605Smrg# ifdef YYSTACK_USE_ALLOCA 521848b8605Smrg# if YYSTACK_USE_ALLOCA 522848b8605Smrg# ifdef __GNUC__ 523848b8605Smrg# define YYSTACK_ALLOC __builtin_alloca 524848b8605Smrg# elif defined __BUILTIN_VA_ARG_INCR 525848b8605Smrg# include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 526848b8605Smrg# elif defined _AIX 527848b8605Smrg# define YYSTACK_ALLOC __alloca 528848b8605Smrg# elif defined _MSC_VER 529848b8605Smrg# include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 530848b8605Smrg# define alloca _alloca 531848b8605Smrg# else 532848b8605Smrg# define YYSTACK_ALLOC alloca 533b8e80941Smrg# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS 534848b8605Smrg# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 535848b8605Smrg /* Use EXIT_SUCCESS as a witness for stdlib.h. */ 536848b8605Smrg# ifndef EXIT_SUCCESS 537848b8605Smrg# define EXIT_SUCCESS 0 538848b8605Smrg# endif 539848b8605Smrg# endif 540848b8605Smrg# endif 541848b8605Smrg# endif 542848b8605Smrg# endif 543848b8605Smrg 544848b8605Smrg# ifdef YYSTACK_ALLOC 545b8e80941Smrg /* Pacify GCC's 'empty if-body' warning. */ 546b8e80941Smrg# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) 547848b8605Smrg# ifndef YYSTACK_ALLOC_MAXIMUM 548848b8605Smrg /* The OS might guarantee only one guard page at the bottom of the stack, 549848b8605Smrg and a page size can be as small as 4096 bytes. So we cannot safely 550848b8605Smrg invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 551848b8605Smrg to allow for a few compiler-allocated temporary stack slots. */ 552848b8605Smrg# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 553848b8605Smrg# endif 554848b8605Smrg# else 555848b8605Smrg# define YYSTACK_ALLOC YYMALLOC 556848b8605Smrg# define YYSTACK_FREE YYFREE 557848b8605Smrg# ifndef YYSTACK_ALLOC_MAXIMUM 558848b8605Smrg# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 559848b8605Smrg# endif 560848b8605Smrg# if (defined __cplusplus && ! defined EXIT_SUCCESS \ 561848b8605Smrg && ! ((defined YYMALLOC || defined malloc) \ 562b8e80941Smrg && (defined YYFREE || defined free))) 563848b8605Smrg# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 564848b8605Smrg# ifndef EXIT_SUCCESS 565848b8605Smrg# define EXIT_SUCCESS 0 566848b8605Smrg# endif 567848b8605Smrg# endif 568848b8605Smrg# ifndef YYMALLOC 569848b8605Smrg# define YYMALLOC malloc 570b8e80941Smrg# if ! defined malloc && ! defined EXIT_SUCCESS 571848b8605Smrgvoid *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 572848b8605Smrg# endif 573848b8605Smrg# endif 574848b8605Smrg# ifndef YYFREE 575848b8605Smrg# define YYFREE free 576b8e80941Smrg# if ! defined free && ! defined EXIT_SUCCESS 577848b8605Smrgvoid free (void *); /* INFRINGES ON USER NAME SPACE */ 578848b8605Smrg# endif 579848b8605Smrg# endif 580848b8605Smrg# endif 581848b8605Smrg#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ 582848b8605Smrg 583848b8605Smrg 584848b8605Smrg#if (! defined yyoverflow \ 585848b8605Smrg && (! defined __cplusplus \ 586b8e80941Smrg || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ 587b8e80941Smrg && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 588848b8605Smrg 589848b8605Smrg/* A type that is properly aligned for any stack member. */ 590848b8605Smrgunion yyalloc 591848b8605Smrg{ 592848b8605Smrg yytype_int16 yyss_alloc; 593848b8605Smrg YYSTYPE yyvs_alloc; 594848b8605Smrg YYLTYPE yyls_alloc; 595848b8605Smrg}; 596848b8605Smrg 597848b8605Smrg/* The size of the maximum gap between one aligned stack and the next. */ 598848b8605Smrg# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 599848b8605Smrg 600848b8605Smrg/* The size of an array large to enough to hold all stacks, each with 601848b8605Smrg N elements. */ 602848b8605Smrg# define YYSTACK_BYTES(N) \ 603848b8605Smrg ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ 604848b8605Smrg + 2 * YYSTACK_GAP_MAXIMUM) 605848b8605Smrg 606848b8605Smrg# define YYCOPY_NEEDED 1 607848b8605Smrg 608848b8605Smrg/* Relocate STACK from its old location to the new one. The 609848b8605Smrg local variables YYSIZE and YYSTACKSIZE give the old and new number of 610848b8605Smrg elements in the stack, and YYPTR gives the new location of the 611848b8605Smrg stack. Advance YYPTR to a properly aligned location for the next 612848b8605Smrg stack. */ 613b8e80941Smrg# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ 614b8e80941Smrg do \ 615b8e80941Smrg { \ 616b8e80941Smrg YYSIZE_T yynewbytes; \ 617b8e80941Smrg YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ 618b8e80941Smrg Stack = &yyptr->Stack_alloc; \ 619b8e80941Smrg yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 620b8e80941Smrg yyptr += yynewbytes / sizeof (*yyptr); \ 621b8e80941Smrg } \ 622b8e80941Smrg while (0) 623848b8605Smrg 624848b8605Smrg#endif 625848b8605Smrg 626848b8605Smrg#if defined YYCOPY_NEEDED && YYCOPY_NEEDED 627848b8605Smrg/* Copy COUNT objects from SRC to DST. The source and destination do 628848b8605Smrg not overlap. */ 629848b8605Smrg# ifndef YYCOPY 630848b8605Smrg# if defined __GNUC__ && 1 < __GNUC__ 631848b8605Smrg# define YYCOPY(Dst, Src, Count) \ 632848b8605Smrg __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) 633848b8605Smrg# else 634848b8605Smrg# define YYCOPY(Dst, Src, Count) \ 635848b8605Smrg do \ 636848b8605Smrg { \ 637848b8605Smrg YYSIZE_T yyi; \ 638848b8605Smrg for (yyi = 0; yyi < (Count); yyi++) \ 639848b8605Smrg (Dst)[yyi] = (Src)[yyi]; \ 640848b8605Smrg } \ 641b8e80941Smrg while (0) 642848b8605Smrg# endif 643848b8605Smrg# endif 644848b8605Smrg#endif /* !YYCOPY_NEEDED */ 645848b8605Smrg 646848b8605Smrg/* YYFINAL -- State number of the termination state. */ 647848b8605Smrg#define YYFINAL 5 648848b8605Smrg/* YYLAST -- Last index in YYTABLE. */ 649b8e80941Smrg#define YYLAST 353 650848b8605Smrg 651848b8605Smrg/* YYNTOKENS -- Number of terminals. */ 652b8e80941Smrg#define YYNTOKENS 116 653848b8605Smrg/* YYNNTS -- Number of nonterminals. */ 654b8e80941Smrg#define YYNNTS 136 655848b8605Smrg/* YYNRULES -- Number of rules. */ 656b8e80941Smrg#define YYNRULES 267 657b8e80941Smrg/* YYNSTATES -- Number of states. */ 658b8e80941Smrg#define YYNSTATES 450 659848b8605Smrg 660b8e80941Smrg/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned 661b8e80941Smrg by yylex, with out-of-bounds checking. */ 662848b8605Smrg#define YYUNDEFTOK 2 663b8e80941Smrg#define YYMAXUTOK 361 664848b8605Smrg 665b8e80941Smrg#define YYTRANSLATE(YYX) \ 666b8e80941Smrg ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 667848b8605Smrg 668b8e80941Smrg/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM 669b8e80941Smrg as returned by yylex, without out-of-bounds checking. */ 670848b8605Smrgstatic const yytype_uint8 yytranslate[] = 671848b8605Smrg{ 672848b8605Smrg 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 673848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 674848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 675848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 676b8e80941Smrg 2, 2, 2, 111, 108, 112, 2, 2, 2, 2, 677b8e80941Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 107, 678b8e80941Smrg 2, 113, 2, 2, 2, 2, 2, 2, 2, 2, 679848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 680848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 681b8e80941Smrg 2, 109, 2, 110, 2, 2, 2, 2, 2, 2, 682848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 683848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 684b8e80941Smrg 2, 2, 2, 114, 2, 115, 2, 2, 2, 2, 685848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 686848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 687848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 688848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 689848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 690848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 691848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 692848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 693848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 694848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 695848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 696848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 697848b8605Smrg 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 698848b8605Smrg 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 699848b8605Smrg 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 700848b8605Smrg 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 701848b8605Smrg 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 702848b8605Smrg 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 703848b8605Smrg 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 704848b8605Smrg 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 705848b8605Smrg 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 706848b8605Smrg 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 707848b8605Smrg 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 708b8e80941Smrg 105, 106 709848b8605Smrg}; 710848b8605Smrg 711848b8605Smrg#if YYDEBUG 712b8e80941Smrg /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ 713848b8605Smrgstatic const yytype_uint16 yyrline[] = 714848b8605Smrg{ 715b8e80941Smrg 0, 286, 286, 289, 297, 309, 310, 313, 337, 338, 716b8e80941Smrg 341, 356, 359, 364, 371, 372, 373, 374, 375, 376, 717b8e80941Smrg 377, 380, 381, 382, 385, 391, 397, 403, 410, 416, 718b8e80941Smrg 423, 467, 474, 518, 524, 525, 526, 527, 528, 529, 719b8e80941Smrg 530, 531, 532, 533, 534, 535, 538, 550, 560, 569, 720b8e80941Smrg 582, 604, 611, 644, 651, 667, 726, 769, 778, 800, 721b8e80941Smrg 810, 814, 843, 862, 862, 864, 871, 883, 884, 885, 722b8e80941Smrg 888, 902, 916, 936, 947, 959, 961, 962, 963, 964, 723b8e80941Smrg 967, 967, 967, 967, 968, 971, 972, 973, 974, 975, 724b8e80941Smrg 976, 979, 998, 1002, 1008, 1012, 1016, 1020, 1024, 1028, 725b8e80941Smrg 1033, 1039, 1050, 1052, 1056, 1060, 1064, 1070, 1070, 1072, 726b8e80941Smrg 1090, 1116, 1119, 1134, 1140, 1146, 1147, 1154, 1160, 1166, 727b8e80941Smrg 1174, 1180, 1186, 1194, 1200, 1206, 1214, 1215, 1218, 1219, 728b8e80941Smrg 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1231, 729b8e80941Smrg 1240, 1244, 1248, 1254, 1263, 1267, 1271, 1280, 1284, 1290, 730b8e80941Smrg 1296, 1303, 1308, 1316, 1326, 1328, 1336, 1342, 1346, 1350, 731b8e80941Smrg 1356, 1367, 1376, 1380, 1385, 1389, 1393, 1397, 1403, 1410, 732b8e80941Smrg 1414, 1420, 1428, 1439, 1446, 1450, 1456, 1466, 1477, 1481, 733b8e80941Smrg 1499, 1508, 1511, 1517, 1521, 1525, 1531, 1542, 1547, 1552, 734b8e80941Smrg 1557, 1562, 1567, 1575, 1578, 1583, 1596, 1604, 1615, 1623, 735b8e80941Smrg 1623, 1625, 1625, 1627, 1637, 1642, 1649, 1659, 1668, 1673, 736b8e80941Smrg 1680, 1690, 1700, 1712, 1712, 1713, 1713, 1715, 1725, 1733, 737b8e80941Smrg 1743, 1751, 1759, 1768, 1779, 1783, 1789, 1790, 1791, 1794, 738b8e80941Smrg 1794, 1797, 1797, 1800, 1807, 1816, 1830, 1839, 1848, 1852, 739b8e80941Smrg 1861, 1870, 1881, 1888, 1898, 1926, 1935, 1947, 1950, 1959, 740b8e80941Smrg 1970, 1971, 1972, 1975, 1976, 1977, 1980, 1981, 1984, 1985, 741b8e80941Smrg 1988, 1989, 1992, 2003, 2014, 2025, 2051, 2052 742848b8605Smrg}; 743848b8605Smrg#endif 744848b8605Smrg 745848b8605Smrg#if YYDEBUG || YYERROR_VERBOSE || 1 746848b8605Smrg/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 747848b8605Smrg First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 748848b8605Smrgstatic const char *const yytname[] = 749848b8605Smrg{ 750848b8605Smrg "$end", "error", "$undefined", "ARBvp_10", "ARBfp_10", "ADDRESS", 751848b8605Smrg "ALIAS", "ATTRIB", "OPTION", "OUTPUT", "PARAM", "TEMP", "END", "BIN_OP", 752848b8605Smrg "BINSC_OP", "SAMPLE_OP", "SCALAR_OP", "TRI_OP", "VECTOR_OP", "ARL", 753848b8605Smrg "KIL", "SWZ", "TXD_OP", "INTEGER", "REAL", "AMBIENT", "ATTENUATION", 754848b8605Smrg "BACK", "CLIP", "COLOR", "DEPTH", "DIFFUSE", "DIRECTION", "EMISSION", 755848b8605Smrg "ENV", "EYE", "FOG", "FOGCOORD", "FRAGMENT", "FRONT", "HALF", "INVERSE", 756848b8605Smrg "INVTRANS", "LIGHT", "LIGHTMODEL", "LIGHTPROD", "LOCAL", "MATERIAL", 757848b8605Smrg "MAT_PROGRAM", "MATRIX", "MATRIXINDEX", "MODELVIEW", "MVP", "NORMAL", 758848b8605Smrg "OBJECT", "PALETTE", "PARAMS", "PLANE", "POINT_TOK", "POINTSIZE", 759848b8605Smrg "POSITION", "PRIMARY", "PROGRAM", "PROJECTION", "RANGE", "RESULT", "ROW", 760848b8605Smrg "SCENECOLOR", "SECONDARY", "SHININESS", "SIZE_TOK", "SPECULAR", "SPOT", 761848b8605Smrg "STATE", "TEXCOORD", "TEXENV", "TEXGEN", "TEXGEN_Q", "TEXGEN_R", 762848b8605Smrg "TEXGEN_S", "TEXGEN_T", "TEXTURE", "TRANSPOSE", "TEXTURE_UNIT", "TEX_1D", 763848b8605Smrg "TEX_2D", "TEX_3D", "TEX_CUBE", "TEX_RECT", "TEX_SHADOW1D", 764848b8605Smrg "TEX_SHADOW2D", "TEX_SHADOWRECT", "TEX_ARRAY1D", "TEX_ARRAY2D", 765848b8605Smrg "TEX_ARRAYSHADOW1D", "TEX_ARRAYSHADOW2D", "VERTEX", "VTXATTRIB", 766b8e80941Smrg "IDENTIFIER", "USED_IDENTIFIER", "MASK4", "MASK3", "MASK2", "MASK1", 767b8e80941Smrg "SWIZZLE", "DOT_DOT", "DOT", "';'", "','", "'['", "']'", "'+'", "'-'", 768b8e80941Smrg "'='", "'{'", "'}'", "$accept", "program", "language", "optionSequence", 769b8e80941Smrg "option", "statementSequence", "statement", "instruction", 770b8e80941Smrg "ALU_instruction", "TexInstruction", "ARL_instruction", 771848b8605Smrg "VECTORop_instruction", "SCALARop_instruction", "BINSCop_instruction", 772848b8605Smrg "BINop_instruction", "TRIop_instruction", "SAMPLE_instruction", 773848b8605Smrg "KIL_instruction", "TXD_instruction", "texImageUnit", "texTarget", 774848b8605Smrg "SWZ_instruction", "scalarSrcReg", "scalarUse", "swizzleSrcReg", 775848b8605Smrg "maskedDstReg", "maskedAddrReg", "extendedSwizzle", "extSwizComp", 776848b8605Smrg "extSwizSel", "srcReg", "dstReg", "progParamArray", "progParamArrayMem", 777848b8605Smrg "progParamArrayAbs", "progParamArrayRel", "addrRegRelOffset", 778848b8605Smrg "addrRegPosOffset", "addrRegNegOffset", "addrReg", "addrComponent", 779848b8605Smrg "addrWriteMask", "scalarSuffix", "swizzleSuffix", "optionalMask", 780848b8605Smrg "namingStatement", "ATTRIB_statement", "attribBinding", "vtxAttribItem", 781b8e80941Smrg "vtxAttribNum", "vtxWeightNum", "fragAttribItem", "PARAM_statement", 782b8e80941Smrg "PARAM_singleStmt", "PARAM_multipleStmt", "optArraySize", 783b8e80941Smrg "paramSingleInit", "paramMultipleInit", "paramMultInitList", 784b8e80941Smrg "paramSingleItemDecl", "paramSingleItemUse", "paramMultipleItem", 785b8e80941Smrg "stateMultipleItem", "stateSingleItem", "stateMaterialItem", 786b8e80941Smrg "stateMatProperty", "stateLightItem", "stateLightProperty", 787b8e80941Smrg "stateSpotProperty", "stateLightModelItem", "stateLModProperty", 788b8e80941Smrg "stateLightProdItem", "stateLProdProperty", "stateTexEnvItem", 789b8e80941Smrg "stateTexEnvProperty", "ambDiffSpecProperty", "stateLightNumber", 790b8e80941Smrg "stateTexGenItem", "stateTexGenType", "stateTexGenCoord", "stateFogItem", 791b8e80941Smrg "stateFogProperty", "stateClipPlaneItem", "stateClipPlaneNum", 792b8e80941Smrg "statePointItem", "statePointProperty", "stateMatrixRow", 793b8e80941Smrg "stateMatrixRows", "optMatrixRows", "stateMatrixItem", 794b8e80941Smrg "stateOptMatModifier", "stateMatModifier", "stateMatrixRowNum", 795b8e80941Smrg "stateMatrixName", "stateOptModMatNum", "stateModMatNum", 796b8e80941Smrg "statePaletteMatNum", "stateProgramMatNum", "stateDepthItem", 797b8e80941Smrg "programSingleItem", "programMultipleItem", "progEnvParams", 798b8e80941Smrg "progEnvParamNums", "progEnvParam", "progLocalParams", 799b8e80941Smrg "progLocalParamNums", "progLocalParam", "progEnvParamNum", 800b8e80941Smrg "progLocalParamNum", "paramConstDecl", "paramConstUse", 801b8e80941Smrg "paramConstScalarDecl", "paramConstScalarUse", "paramConstVector", 802b8e80941Smrg "signedFloatConstant", "optionalSign", "TEMP_statement", "@1", 803848b8605Smrg "ADDRESS_statement", "@2", "varNameList", "OUTPUT_statement", 804848b8605Smrg "resultBinding", "resultColBinding", "optResultFaceType", 805848b8605Smrg "optResultColorType", "optFaceType", "optColorType", 806848b8605Smrg "optTexCoordUnitNum", "optTexImageUnitNum", "optLegacyTexUnitNum", 807848b8605Smrg "texCoordUnitNum", "texImageUnitNum", "legacyTexUnitNum", 808b8e80941Smrg "ALIAS_statement", "string", YY_NULLPTR 809848b8605Smrg}; 810848b8605Smrg#endif 811848b8605Smrg 812848b8605Smrg# ifdef YYPRINT 813b8e80941Smrg/* YYTOKNUM[NUM] -- (External) token number corresponding to the 814b8e80941Smrg (internal) symbol number NUM (which must be that of a token). */ 815848b8605Smrgstatic const yytype_uint16 yytoknum[] = 816848b8605Smrg{ 817848b8605Smrg 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 818848b8605Smrg 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 819848b8605Smrg 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 820848b8605Smrg 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 821848b8605Smrg 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 822848b8605Smrg 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 823848b8605Smrg 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 824848b8605Smrg 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 825848b8605Smrg 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 826848b8605Smrg 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 827b8e80941Smrg 355, 356, 357, 358, 359, 360, 361, 59, 44, 91, 828b8e80941Smrg 93, 43, 45, 61, 123, 125 829848b8605Smrg}; 830848b8605Smrg# endif 831848b8605Smrg 832b8e80941Smrg#define YYPACT_NINF -383 833b8e80941Smrg 834b8e80941Smrg#define yypact_value_is_default(Yystate) \ 835b8e80941Smrg (!!((Yystate) == (-383))) 836b8e80941Smrg 837b8e80941Smrg#define YYTABLE_NINF -63 838b8e80941Smrg 839b8e80941Smrg#define yytable_value_is_error(Yytable_value) \ 840b8e80941Smrg 0 841b8e80941Smrg 842b8e80941Smrg /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 843b8e80941Smrg STATE-NUM. */ 844b8e80941Smrgstatic const yytype_int16 yypact[] = 845848b8605Smrg{ 846b8e80941Smrg 117, -383, -383, 30, -383, -383, 25, 78, -383, 177, 847b8e80941Smrg -383, -383, -36, -383, -21, -19, -1, 1, -383, -383, 848b8e80941Smrg -33, -33, -33, -33, -33, -33, -17, 106, -33, -33, 849b8e80941Smrg -383, 52, -383, -383, -383, -383, -383, -383, -383, -383, 850b8e80941Smrg -383, -383, -383, -383, 54, -383, -383, -383, -383, -383, 851b8e80941Smrg -383, -383, -383, -383, 14, 51, 58, 65, 44, 14, 852b8e80941Smrg 86, -383, 72, 67, -383, 77, 119, 120, 123, 124, 853b8e80941Smrg -383, 125, 131, -383, -383, -383, -16, 127, 128, -383, 854b8e80941Smrg -383, -383, 134, 145, -15, 178, 115, -26, -383, 134, 855b8e80941Smrg -14, -383, -383, -383, -383, 136, -383, 106, -383, -383, 856b8e80941Smrg -383, -383, -383, 106, 106, 106, 106, 106, 106, -383, 857b8e80941Smrg -383, -383, -383, 31, 80, 64, -10, 137, 106, 32, 858b8e80941Smrg 138, -383, -383, -383, -383, -383, -383, -383, -383, -383, 859b8e80941Smrg -16, 106, 150, -383, -383, -383, -383, 139, -383, -383, 860b8e80941Smrg -383, -383, -383, -383, -383, 202, -383, -383, 227, 49, 861b8e80941Smrg 228, -383, 146, 147, -16, 148, -383, 149, -383, -383, 862b8e80941Smrg 73, -383, -383, 136, -383, 143, 151, 152, 189, 5, 863b8e80941Smrg 153, 28, 154, 92, 100, 2, 155, 136, -383, -383, 864b8e80941Smrg -383, -383, -383, -383, -383, -383, -383, -383, 192, -383, 865b8e80941Smrg 73, -383, 157, -383, -383, 136, 158, -383, 35, -383, 866b8e80941Smrg -383, -383, -383, -3, 160, 163, -383, 159, -383, -383, 867b8e80941Smrg 164, -383, -383, -383, -383, 165, 106, 106, -383, 156, 868b8e80941Smrg 190, 106, -383, -383, -383, -383, 253, 254, 255, -383, 869b8e80941Smrg -383, -383, -383, 256, -383, -383, -383, -383, 213, 256, 870b8e80941Smrg 4, 172, 173, -383, 174, -383, 136, 7, -383, -383, 871b8e80941Smrg -383, 261, 257, 16, 176, -383, 264, -383, 265, 106, 872b8e80941Smrg -383, -383, 179, -383, -383, 187, 106, 106, 180, -383, 873b8e80941Smrg -383, -383, -383, -383, -383, -383, 182, 184, 185, -383, 874b8e80941Smrg 186, -383, 188, -383, 194, -383, 195, -383, 196, -383, 875b8e80941Smrg -383, -383, -383, -383, -383, -383, 272, 274, -383, 276, 876b8e80941Smrg -383, -383, -383, -383, -383, -383, -383, 197, -383, -383, 877b8e80941Smrg -383, -383, 144, 277, -383, 198, -383, 199, 39, -383, 878b8e80941Smrg -383, 118, -383, 193, 3, 203, -8, 279, -383, 116, 879b8e80941Smrg 106, -383, -383, 258, 102, 92, -383, 200, -383, 204, 880b8e80941Smrg -383, 206, -383, -383, -383, -383, -383, -383, -383, 207, 881b8e80941Smrg -383, -383, 106, -383, 289, 290, -383, 106, -383, -383, 882b8e80941Smrg -383, 106, 91, 64, 41, -383, -383, -383, -383, -383, 883b8e80941Smrg -383, -383, -383, 208, -383, -383, -383, -383, -383, -383, 884b8e80941Smrg -383, -383, -383, -383, -383, -383, -383, -383, -383, -383, 885b8e80941Smrg -383, -383, 287, -383, -383, 13, -383, -383, -383, -383, 886b8e80941Smrg 50, -383, -383, -383, -383, 212, 214, 218, 219, -383, 887b8e80941Smrg 263, -8, -383, -383, -383, -383, -383, -383, 106, -383, 888b8e80941Smrg 106, 190, 253, 254, 221, -383, -383, 217, 215, 226, 889b8e80941Smrg 211, 230, 229, 231, 277, -383, 106, 116, -383, 253, 890b8e80941Smrg -383, 254, -47, -383, -383, -383, -383, 277, 232, -383 891848b8605Smrg}; 892848b8605Smrg 893b8e80941Smrg /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. 894b8e80941Smrg Performed when YYTABLE does not specify something else to do. Zero 895b8e80941Smrg means the default is an error. */ 896b8e80941Smrgstatic const yytype_uint16 yydefact[] = 897848b8605Smrg{ 898b8e80941Smrg 0, 3, 4, 0, 6, 1, 9, 0, 5, 0, 899b8e80941Smrg 266, 267, 0, 231, 0, 0, 0, 0, 229, 2, 900b8e80941Smrg 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 901b8e80941Smrg 8, 0, 12, 13, 14, 15, 16, 17, 18, 19, 902b8e80941Smrg 21, 22, 23, 20, 0, 85, 86, 107, 108, 87, 903b8e80941Smrg 88, 89, 90, 7, 0, 0, 0, 0, 0, 0, 904b8e80941Smrg 0, 61, 0, 84, 60, 0, 0, 0, 0, 0, 905b8e80941Smrg 72, 0, 0, 226, 227, 31, 0, 0, 0, 10, 906b8e80941Smrg 11, 234, 232, 0, 0, 0, 111, 228, 109, 230, 907b8e80941Smrg 243, 241, 237, 239, 236, 256, 238, 228, 80, 81, 908b8e80941Smrg 82, 83, 50, 228, 228, 228, 228, 228, 228, 74, 909b8e80941Smrg 51, 219, 218, 0, 0, 0, 0, 56, 228, 79, 910b8e80941Smrg 0, 57, 59, 120, 121, 199, 200, 122, 215, 216, 911b8e80941Smrg 0, 228, 0, 265, 91, 235, 112, 0, 113, 117, 912b8e80941Smrg 118, 119, 213, 214, 217, 0, 246, 245, 0, 247, 913b8e80941Smrg 0, 240, 0, 0, 0, 0, 26, 0, 25, 24, 914b8e80941Smrg 253, 105, 103, 256, 93, 0, 0, 0, 0, 0, 915b8e80941Smrg 0, 250, 0, 250, 0, 0, 260, 256, 128, 129, 916b8e80941Smrg 130, 131, 133, 132, 134, 135, 136, 137, 0, 138, 917b8e80941Smrg 253, 97, 0, 95, 94, 256, 0, 92, 0, 77, 918b8e80941Smrg 76, 78, 49, 0, 0, 0, 233, 0, 225, 224, 919b8e80941Smrg 0, 248, 249, 242, 262, 0, 228, 228, 47, 0, 920b8e80941Smrg 0, 228, 254, 255, 104, 106, 0, 0, 0, 198, 921b8e80941Smrg 169, 170, 168, 0, 151, 252, 251, 150, 0, 0, 922b8e80941Smrg 0, 0, 193, 189, 0, 188, 256, 181, 175, 174, 923b8e80941Smrg 173, 0, 0, 0, 0, 96, 0, 98, 0, 228, 924b8e80941Smrg 220, 65, 0, 63, 64, 0, 228, 228, 0, 110, 925b8e80941Smrg 244, 257, 28, 27, 75, 48, 258, 0, 0, 211, 926b8e80941Smrg 0, 212, 0, 172, 0, 160, 0, 152, 0, 157, 927b8e80941Smrg 158, 141, 142, 159, 139, 140, 0, 0, 187, 0, 928b8e80941Smrg 190, 183, 185, 184, 180, 182, 264, 0, 156, 155, 929b8e80941Smrg 162, 163, 0, 0, 102, 0, 101, 0, 0, 58, 930b8e80941Smrg 73, 67, 46, 0, 0, 0, 228, 0, 33, 0, 931b8e80941Smrg 228, 206, 210, 0, 0, 250, 197, 0, 195, 0, 932b8e80941Smrg 196, 0, 261, 167, 166, 164, 165, 161, 186, 0, 933b8e80941Smrg 99, 100, 228, 221, 0, 0, 66, 228, 54, 53, 934b8e80941Smrg 55, 228, 0, 0, 0, 115, 123, 126, 124, 201, 935b8e80941Smrg 202, 125, 263, 0, 34, 35, 36, 37, 38, 39, 936b8e80941Smrg 40, 41, 42, 43, 44, 45, 30, 29, 171, 146, 937b8e80941Smrg 148, 145, 0, 143, 144, 0, 192, 194, 191, 176, 938b8e80941Smrg 0, 70, 68, 71, 69, 0, 0, 0, 0, 127, 939b8e80941Smrg 178, 228, 114, 259, 149, 147, 153, 154, 228, 222, 940b8e80941Smrg 228, 0, 0, 0, 0, 177, 116, 0, 0, 0, 941b8e80941Smrg 0, 204, 0, 208, 0, 223, 228, 0, 203, 0, 942b8e80941Smrg 207, 0, 0, 52, 32, 205, 209, 0, 0, 179 943848b8605Smrg}; 944848b8605Smrg 945b8e80941Smrg /* YYPGOTO[NTERM-NUM]. */ 946b8e80941Smrgstatic const yytype_int16 yypgoto[] = 947848b8605Smrg{ 948b8e80941Smrg -383, -383, -383, -383, -383, -383, -383, -383, -383, -383, 949b8e80941Smrg -383, -383, -383, -383, -383, -383, -383, -383, -383, -84, 950b8e80941Smrg -97, -383, -99, -383, -92, 191, -383, -383, -346, -383, 951b8e80941Smrg -78, -383, -383, -383, -383, -383, -383, -383, -383, 135, 952b8e80941Smrg -383, -383, -383, -383, -383, -383, -383, 259, -383, -383, 953b8e80941Smrg -383, -383, -383, -383, -383, -383, -383, -383, -383, -383, 954b8e80941Smrg -383, -70, -383, -86, -383, -383, -383, -383, -383, -383, 955b8e80941Smrg -383, -383, -383, -383, -383, -317, 105, -383, -383, -383, 956b8e80941Smrg -383, -383, -383, -383, -383, -383, -383, -383, -383, -18, 957b8e80941Smrg -383, -383, -378, -383, -383, -383, -383, -383, -383, 260, 958b8e80941Smrg -383, -383, -383, -383, -383, -383, -383, -377, -382, 266, 959b8e80941Smrg -383, -383, -383, -85, -115, -87, -383, -383, -383, -383, 960b8e80941Smrg 291, -383, 267, -383, -383, -383, -169, 161, -153, -383, 961b8e80941Smrg -383, -383, -383, -383, -383, 22 962848b8605Smrg}; 963848b8605Smrg 964b8e80941Smrg /* YYDEFGOTO[NTERM-NUM]. */ 965848b8605Smrgstatic const yytype_int16 yydefgoto[] = 966848b8605Smrg{ 967b8e80941Smrg -1, 3, 4, 6, 8, 9, 30, 31, 32, 33, 968b8e80941Smrg 34, 35, 36, 37, 38, 39, 40, 41, 42, 277, 969b8e80941Smrg 386, 43, 153, 218, 75, 62, 71, 322, 323, 359, 970b8e80941Smrg 119, 63, 120, 262, 263, 264, 356, 402, 404, 72, 971b8e80941Smrg 321, 110, 275, 202, 102, 44, 45, 121, 197, 317, 972b8e80941Smrg 315, 164, 46, 47, 48, 137, 88, 269, 364, 138, 973b8e80941Smrg 122, 365, 366, 123, 178, 294, 179, 393, 415, 180, 974b8e80941Smrg 237, 181, 416, 182, 309, 295, 286, 183, 312, 347, 975b8e80941Smrg 184, 232, 185, 284, 186, 250, 187, 409, 425, 188, 976b8e80941Smrg 304, 305, 349, 247, 298, 339, 341, 337, 189, 124, 977b8e80941Smrg 368, 369, 430, 125, 370, 432, 126, 280, 282, 371, 978b8e80941Smrg 127, 142, 128, 129, 144, 76, 49, 59, 50, 54, 979b8e80941Smrg 82, 51, 64, 96, 149, 213, 238, 224, 151, 328, 980b8e80941Smrg 252, 215, 373, 307, 52, 12 981848b8605Smrg}; 982848b8605Smrg 983b8e80941Smrg /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If 984b8e80941Smrg positive, shift that token. If negative, reduce the rule whose 985b8e80941Smrg number is the opposite. If YYTABLE_NINF, syntax error. */ 986b8e80941Smrgstatic const yytype_int16 yytable[] = 987848b8605Smrg{ 988b8e80941Smrg 145, 139, 143, 198, 240, 152, 156, 111, 112, 159, 989b8e80941Smrg 225, 405, 155, 146, 157, 158, 154, 394, 154, 190, 990b8e80941Smrg 261, 154, 113, 113, 253, 147, 358, 191, 248, 289, 991b8e80941Smrg 5, 145, 60, 7, 230, 290, 114, 291, 289, 205, 992b8e80941Smrg 192, 433, 257, 193, 290, 431, 114, 115, 301, 302, 993b8e80941Smrg 194, 310, 204, 234, 362, 235, 442, 115, 447, 446, 994b8e80941Smrg 160, 231, 445, 399, 195, 363, 61, 236, 161, 448, 995b8e80941Smrg 311, 53, 249, 292, 428, 293, 219, 55, 417, 56, 996b8e80941Smrg 116, 116, 70, 117, 293, 73, 74, 196, 118, 303, 997b8e80941Smrg 443, 162, 167, 300, 168, 148, 70, 57, 118, 58, 998b8e80941Smrg 169, 10, 11, 73, 74, 163, 118, 170, 171, 172, 999b8e80941Smrg 211, 173, 81, 174, 165, 90, 91, 212, 273, 235, 1000b8e80941Smrg 1, 2, 175, 92, 272, 407, 166, 289, 389, 278, 1001b8e80941Smrg 154, 236, 199, 290, 222, 200, 201, 408, 136, 176, 1002b8e80941Smrg 177, 223, 390, 259, 318, 93, 94, 352, 241, 411, 1003b8e80941Smrg 260, 242, 243, 86, 353, 244, 412, 87, 418, 79, 1004b8e80941Smrg 95, 80, 391, 245, 83, 419, 395, 98, 99, 100, 1005b8e80941Smrg 101, 84, 145, 293, 392, 325, 10, 11, 85, 324, 1006b8e80941Smrg 97, 246, 13, 14, 15, 103, 16, 17, 18, 19, 1007b8e80941Smrg 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 1008b8e80941Smrg 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 1009b8e80941Smrg 384, 385, 65, 66, 67, 68, 69, 73, 74, 77, 1010b8e80941Smrg 78, 343, 344, 345, 346, 208, 209, 104, 105, 354, 1011b8e80941Smrg 355, 106, 107, 108, 109, 130, 131, 400, 387, 145, 1012b8e80941Smrg 367, 143, 132, 60, 133, 150, -62, 203, 206, 207, 1013b8e80941Smrg 210, 214, 226, 229, 216, 217, 220, 221, 254, 274, 1014b8e80941Smrg 227, 228, 233, 239, 251, 145, 256, 258, 266, 406, 1015b8e80941Smrg 324, 267, 268, 276, 270, 271, 279, 281, 283, 285, 1016b8e80941Smrg 287, 296, 297, 299, 306, 313, 308, 314, 316, 319, 1017b8e80941Smrg 320, 327, 329, 330, 326, 336, 331, 338, 332, 340, 1018b8e80941Smrg 348, 357, 372, 427, 333, 334, 335, 342, 350, 351, 1019b8e80941Smrg 396, 361, 401, 403, 397, 388, 398, 399, 413, 414, 1020b8e80941Smrg 420, 438, 421, 436, 145, 367, 143, 422, 423, 424, 1021b8e80941Smrg 434, 145, 435, 324, 437, 439, 441, 429, 265, 440, 1022b8e80941Smrg 444, 426, 449, 134, 288, 410, 360, 140, 0, 324, 1023b8e80941Smrg 89, 255, 135, 141 1024848b8605Smrg}; 1025848b8605Smrg 1026b8e80941Smrgstatic const yytype_int16 yycheck[] = 1027848b8605Smrg{ 1028b8e80941Smrg 87, 87, 87, 118, 173, 97, 105, 23, 24, 108, 1029b8e80941Smrg 163, 357, 104, 27, 106, 107, 103, 334, 105, 29, 1030b8e80941Smrg 23, 108, 38, 38, 177, 39, 23, 37, 26, 25, 1031b8e80941Smrg 0, 118, 65, 8, 29, 31, 62, 33, 25, 131, 1032b8e80941Smrg 50, 423, 195, 53, 31, 422, 62, 73, 41, 42, 1033b8e80941Smrg 60, 35, 130, 25, 62, 27, 434, 73, 105, 441, 1034b8e80941Smrg 29, 56, 439, 110, 74, 73, 99, 39, 37, 447, 1035b8e80941Smrg 54, 107, 70, 69, 420, 71, 154, 98, 395, 98, 1036b8e80941Smrg 96, 96, 99, 99, 71, 111, 112, 97, 114, 82, 1037b8e80941Smrg 436, 60, 28, 246, 30, 109, 99, 98, 114, 98, 1038b8e80941Smrg 36, 98, 99, 111, 112, 74, 114, 43, 44, 45, 1039b8e80941Smrg 61, 47, 98, 49, 34, 29, 30, 68, 217, 27, 1040b8e80941Smrg 3, 4, 58, 37, 216, 34, 46, 25, 26, 221, 1041b8e80941Smrg 217, 39, 100, 31, 61, 103, 104, 46, 23, 75, 1042b8e80941Smrg 76, 68, 40, 108, 259, 59, 60, 108, 48, 108, 1043b8e80941Smrg 115, 51, 52, 109, 115, 55, 115, 113, 108, 107, 1044b8e80941Smrg 74, 107, 60, 63, 113, 115, 335, 100, 101, 102, 1045b8e80941Smrg 103, 113, 259, 71, 72, 267, 98, 99, 113, 266, 1046b8e80941Smrg 108, 81, 5, 6, 7, 108, 9, 10, 11, 12, 1047b8e80941Smrg 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 1048b8e80941Smrg 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 1049b8e80941Smrg 94, 95, 21, 22, 23, 24, 25, 111, 112, 28, 1050b8e80941Smrg 29, 77, 78, 79, 80, 23, 24, 108, 108, 111, 1051b8e80941Smrg 112, 108, 108, 108, 103, 108, 108, 352, 330, 326, 1052b8e80941Smrg 326, 326, 108, 65, 99, 109, 109, 109, 98, 110, 1053b8e80941Smrg 23, 23, 109, 64, 108, 108, 108, 108, 66, 103, 1054b8e80941Smrg 109, 109, 109, 109, 109, 352, 109, 109, 108, 361, 1055b8e80941Smrg 357, 108, 113, 83, 110, 110, 23, 23, 23, 23, 1056b8e80941Smrg 67, 109, 109, 109, 23, 109, 29, 23, 23, 110, 1057b8e80941Smrg 103, 109, 108, 108, 114, 23, 110, 23, 110, 23, 1058b8e80941Smrg 23, 108, 23, 418, 110, 110, 110, 110, 110, 110, 1059b8e80941Smrg 110, 108, 23, 23, 110, 57, 110, 110, 110, 32, 1060b8e80941Smrg 108, 110, 108, 108, 411, 411, 411, 109, 109, 66, 1061b8e80941Smrg 109, 418, 115, 420, 108, 105, 105, 421, 203, 110, 1062b8e80941Smrg 437, 411, 110, 84, 239, 363, 324, 87, -1, 436, 1063b8e80941Smrg 59, 190, 85, 87 1064848b8605Smrg}; 1065848b8605Smrg 1066b8e80941Smrg /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 1067b8e80941Smrg symbol of state STATE-NUM. */ 1068b8e80941Smrgstatic const yytype_uint8 yystos[] = 1069848b8605Smrg{ 1070b8e80941Smrg 0, 3, 4, 117, 118, 0, 119, 8, 120, 121, 1071b8e80941Smrg 98, 99, 251, 5, 6, 7, 9, 10, 11, 12, 1072b8e80941Smrg 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 1073b8e80941Smrg 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 1074b8e80941Smrg 132, 133, 134, 137, 161, 162, 168, 169, 170, 232, 1075b8e80941Smrg 234, 237, 250, 107, 235, 98, 98, 98, 98, 233, 1076b8e80941Smrg 65, 99, 141, 147, 238, 141, 141, 141, 141, 141, 1077b8e80941Smrg 99, 142, 155, 111, 112, 140, 231, 141, 141, 107, 1078b8e80941Smrg 107, 98, 236, 113, 113, 113, 109, 113, 172, 236, 1079b8e80941Smrg 29, 30, 37, 59, 60, 74, 239, 108, 100, 101, 1080b8e80941Smrg 102, 103, 160, 108, 108, 108, 108, 108, 108, 103, 1081b8e80941Smrg 157, 23, 24, 38, 62, 73, 96, 99, 114, 146, 1082b8e80941Smrg 148, 163, 176, 179, 215, 219, 222, 226, 228, 229, 1083b8e80941Smrg 108, 108, 108, 99, 163, 238, 23, 171, 175, 179, 1084b8e80941Smrg 215, 225, 227, 229, 230, 231, 27, 39, 109, 240, 1085b8e80941Smrg 109, 244, 140, 138, 231, 140, 138, 140, 140, 138, 1086b8e80941Smrg 29, 37, 60, 74, 167, 34, 46, 28, 30, 36, 1087b8e80941Smrg 43, 44, 45, 47, 49, 58, 75, 76, 180, 182, 1088b8e80941Smrg 185, 187, 189, 193, 196, 198, 200, 202, 205, 214, 1089b8e80941Smrg 29, 37, 50, 53, 60, 74, 97, 164, 230, 100, 1090b8e80941Smrg 103, 104, 159, 109, 146, 140, 98, 110, 23, 24, 1091b8e80941Smrg 23, 61, 68, 241, 23, 247, 108, 108, 139, 146, 1092b8e80941Smrg 108, 108, 61, 68, 243, 244, 109, 109, 109, 64, 1093b8e80941Smrg 29, 56, 197, 109, 25, 27, 39, 186, 242, 109, 1094b8e80941Smrg 242, 48, 51, 52, 55, 63, 81, 209, 26, 70, 1095b8e80941Smrg 201, 109, 246, 244, 66, 243, 109, 244, 109, 108, 1096b8e80941Smrg 115, 23, 149, 150, 151, 155, 108, 108, 113, 173, 1097b8e80941Smrg 110, 110, 140, 138, 103, 158, 83, 135, 140, 23, 1098b8e80941Smrg 223, 23, 224, 23, 199, 23, 192, 67, 192, 25, 1099b8e80941Smrg 31, 33, 69, 71, 181, 191, 109, 109, 210, 109, 1100b8e80941Smrg 244, 41, 42, 82, 206, 207, 23, 249, 29, 190, 1101b8e80941Smrg 35, 54, 194, 109, 23, 166, 23, 165, 230, 110, 1102b8e80941Smrg 103, 156, 143, 144, 231, 140, 114, 109, 245, 108, 1103b8e80941Smrg 108, 110, 110, 110, 110, 110, 23, 213, 23, 211, 1104b8e80941Smrg 23, 212, 110, 77, 78, 79, 80, 195, 23, 208, 1105b8e80941Smrg 110, 110, 108, 115, 111, 112, 152, 108, 23, 145, 1106b8e80941Smrg 251, 108, 62, 73, 174, 177, 178, 179, 216, 217, 1107b8e80941Smrg 220, 225, 23, 248, 84, 85, 86, 87, 88, 89, 1108b8e80941Smrg 90, 91, 92, 93, 94, 95, 136, 140, 57, 26, 1109b8e80941Smrg 40, 60, 72, 183, 191, 242, 110, 110, 110, 110, 1110b8e80941Smrg 230, 23, 153, 23, 154, 144, 140, 34, 46, 203, 1111b8e80941Smrg 205, 108, 115, 110, 32, 184, 188, 191, 108, 115, 1112b8e80941Smrg 108, 108, 109, 109, 66, 204, 177, 230, 144, 135, 1113b8e80941Smrg 218, 223, 221, 224, 109, 115, 108, 108, 110, 105, 1114b8e80941Smrg 110, 105, 208, 144, 136, 223, 224, 105, 208, 110 1115848b8605Smrg}; 1116848b8605Smrg 1117b8e80941Smrg /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 1118b8e80941Smrgstatic const yytype_uint8 yyr1[] = 1119848b8605Smrg{ 1120b8e80941Smrg 0, 116, 117, 118, 118, 119, 119, 120, 121, 121, 1121b8e80941Smrg 122, 122, 123, 123, 124, 124, 124, 124, 124, 124, 1122b8e80941Smrg 124, 125, 125, 125, 126, 127, 128, 129, 130, 131, 1123b8e80941Smrg 132, 133, 134, 135, 136, 136, 136, 136, 136, 136, 1124b8e80941Smrg 136, 136, 136, 136, 136, 136, 137, 138, 139, 140, 1125b8e80941Smrg 141, 142, 143, 144, 145, 145, 146, 146, 146, 146, 1126b8e80941Smrg 147, 147, 148, 149, 149, 150, 151, 152, 152, 152, 1127b8e80941Smrg 153, 154, 155, 156, 157, 158, 159, 159, 159, 159, 1128b8e80941Smrg 160, 160, 160, 160, 160, 161, 161, 161, 161, 161, 1129b8e80941Smrg 161, 162, 163, 163, 164, 164, 164, 164, 164, 164, 1130b8e80941Smrg 164, 165, 166, 167, 167, 167, 167, 168, 168, 169, 1131b8e80941Smrg 170, 171, 171, 172, 173, 174, 174, 175, 175, 175, 1132b8e80941Smrg 176, 176, 176, 177, 177, 177, 178, 178, 179, 179, 1133b8e80941Smrg 179, 179, 179, 179, 179, 179, 179, 179, 179, 180, 1134b8e80941Smrg 181, 181, 181, 182, 183, 183, 183, 183, 183, 184, 1135b8e80941Smrg 185, 186, 186, 187, 188, 189, 190, 191, 191, 191, 1136b8e80941Smrg 192, 193, 194, 194, 195, 195, 195, 195, 196, 197, 1137b8e80941Smrg 197, 198, 199, 200, 201, 201, 202, 203, 204, 204, 1138b8e80941Smrg 205, 206, 206, 207, 207, 207, 208, 209, 209, 209, 1139b8e80941Smrg 209, 209, 209, 210, 210, 211, 212, 213, 214, 215, 1140b8e80941Smrg 215, 216, 216, 217, 218, 218, 219, 220, 221, 221, 1141b8e80941Smrg 222, 223, 224, 225, 225, 226, 226, 227, 228, 228, 1142b8e80941Smrg 229, 229, 229, 229, 230, 230, 231, 231, 231, 233, 1143b8e80941Smrg 232, 235, 234, 236, 236, 237, 238, 238, 238, 238, 1144b8e80941Smrg 238, 238, 239, 240, 240, 240, 240, 241, 241, 241, 1145b8e80941Smrg 242, 242, 242, 243, 243, 243, 244, 244, 245, 245, 1146b8e80941Smrg 246, 246, 247, 248, 249, 250, 251, 251 1147848b8605Smrg}; 1148848b8605Smrg 1149b8e80941Smrg /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ 1150b8e80941Smrgstatic const yytype_uint8 yyr2[] = 1151848b8605Smrg{ 1152b8e80941Smrg 0, 2, 4, 1, 1, 2, 0, 3, 2, 0, 1153b8e80941Smrg 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1154b8e80941Smrg 1, 1, 1, 1, 4, 4, 4, 6, 6, 8, 1155b8e80941Smrg 8, 2, 12, 2, 1, 1, 1, 1, 1, 1, 1156b8e80941Smrg 1, 1, 1, 1, 1, 1, 6, 2, 2, 3, 1157b8e80941Smrg 2, 2, 7, 2, 1, 1, 1, 1, 4, 1, 1158b8e80941Smrg 1, 1, 1, 1, 1, 1, 3, 0, 2, 2, 1159b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1160b8e80941Smrg 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1161b8e80941Smrg 1, 4, 2, 2, 1, 1, 2, 1, 2, 4, 1162b8e80941Smrg 4, 1, 1, 1, 2, 1, 2, 1, 1, 3, 1163b8e80941Smrg 6, 0, 1, 2, 4, 1, 3, 1, 1, 1, 1164b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1165b8e80941Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 1166b8e80941Smrg 1, 1, 1, 5, 1, 1, 1, 2, 1, 1, 1167b8e80941Smrg 2, 1, 2, 6, 1, 3, 1, 1, 1, 1, 1168b8e80941Smrg 1, 4, 1, 1, 1, 1, 1, 1, 2, 1, 1169b8e80941Smrg 1, 5, 1, 2, 1, 1, 5, 2, 0, 6, 1170b8e80941Smrg 3, 0, 1, 1, 1, 1, 1, 2, 1, 1, 1171b8e80941Smrg 2, 4, 4, 0, 3, 1, 1, 1, 2, 1, 1172b8e80941Smrg 1, 1, 1, 5, 1, 3, 5, 5, 1, 3, 1173b8e80941Smrg 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1174b8e80941Smrg 3, 5, 7, 9, 2, 2, 1, 1, 0, 0, 1175b8e80941Smrg 3, 0, 3, 3, 1, 4, 2, 2, 2, 2, 1176b8e80941Smrg 3, 2, 3, 0, 3, 1, 1, 0, 1, 1, 1177b8e80941Smrg 0, 1, 1, 0, 1, 1, 0, 3, 0, 3, 1178b8e80941Smrg 0, 3, 1, 1, 1, 4, 1, 1 1179848b8605Smrg}; 1180848b8605Smrg 1181b8e80941Smrg 1182b8e80941Smrg#define yyerrok (yyerrstatus = 0) 1183b8e80941Smrg#define yyclearin (yychar = YYEMPTY) 1184b8e80941Smrg#define YYEMPTY (-2) 1185b8e80941Smrg#define YYEOF 0 1186b8e80941Smrg 1187b8e80941Smrg#define YYACCEPT goto yyacceptlab 1188b8e80941Smrg#define YYABORT goto yyabortlab 1189b8e80941Smrg#define YYERROR goto yyerrorlab 1190b8e80941Smrg 1191848b8605Smrg 1192848b8605Smrg#define YYRECOVERING() (!!yyerrstatus) 1193848b8605Smrg 1194848b8605Smrg#define YYBACKUP(Token, Value) \ 1195848b8605Smrgdo \ 1196848b8605Smrg if (yychar == YYEMPTY) \ 1197848b8605Smrg { \ 1198848b8605Smrg yychar = (Token); \ 1199848b8605Smrg yylval = (Value); \ 1200848b8605Smrg YYPOPSTACK (yylen); \ 1201848b8605Smrg yystate = *yyssp; \ 1202848b8605Smrg goto yybackup; \ 1203848b8605Smrg } \ 1204848b8605Smrg else \ 1205848b8605Smrg { \ 1206848b8605Smrg yyerror (&yylloc, state, YY_("syntax error: cannot back up")); \ 1207b8e80941Smrg YYERROR; \ 1208b8e80941Smrg } \ 1209b8e80941Smrgwhile (0) 1210848b8605Smrg 1211b8e80941Smrg/* Error token number */ 1212b8e80941Smrg#define YYTERROR 1 1213b8e80941Smrg#define YYERRCODE 256 1214848b8605Smrg 1215848b8605Smrg 1216848b8605Smrg/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 1217848b8605Smrg If N is 0, then set CURRENT to the empty location which ends 1218848b8605Smrg the previous symbol: RHS[0] (always defined). */ 1219848b8605Smrg 1220848b8605Smrg#ifndef YYLLOC_DEFAULT 1221848b8605Smrg# define YYLLOC_DEFAULT(Current, Rhs, N) \ 1222848b8605Smrg do \ 1223b8e80941Smrg if (N) \ 1224848b8605Smrg { \ 1225848b8605Smrg (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 1226848b8605Smrg (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 1227848b8605Smrg (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 1228848b8605Smrg (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 1229848b8605Smrg } \ 1230848b8605Smrg else \ 1231848b8605Smrg { \ 1232848b8605Smrg (Current).first_line = (Current).last_line = \ 1233848b8605Smrg YYRHSLOC (Rhs, 0).last_line; \ 1234848b8605Smrg (Current).first_column = (Current).last_column = \ 1235848b8605Smrg YYRHSLOC (Rhs, 0).last_column; \ 1236848b8605Smrg } \ 1237b8e80941Smrg while (0) 1238848b8605Smrg#endif 1239848b8605Smrg 1240848b8605Smrg#define YYRHSLOC(Rhs, K) ((Rhs)[K]) 1241848b8605Smrg 1242848b8605Smrg 1243b8e80941Smrg/* Enable debugging if requested. */ 1244b8e80941Smrg#if YYDEBUG 1245b8e80941Smrg 1246b8e80941Smrg# ifndef YYFPRINTF 1247b8e80941Smrg# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 1248b8e80941Smrg# define YYFPRINTF fprintf 1249b8e80941Smrg# endif 1250b8e80941Smrg 1251b8e80941Smrg# define YYDPRINTF(Args) \ 1252b8e80941Smrgdo { \ 1253b8e80941Smrg if (yydebug) \ 1254b8e80941Smrg YYFPRINTF Args; \ 1255b8e80941Smrg} while (0) 1256b8e80941Smrg 1257848b8605Smrg 1258848b8605Smrg/* YY_LOCATION_PRINT -- Print the location on the stream. 1259848b8605Smrg This macro was not mandated originally: define only if we know 1260848b8605Smrg we won't break user code: when these are the locations we know. */ 1261848b8605Smrg 1262848b8605Smrg#ifndef YY_LOCATION_PRINT 1263848b8605Smrg# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL 1264b8e80941Smrg 1265b8e80941Smrg/* Print *YYLOCP on YYO. Private, do not rely on its existence. */ 1266b8e80941Smrg 1267b8e80941SmrgYY_ATTRIBUTE_UNUSED 1268b8e80941Smrgstatic int 1269b8e80941Smrgyy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) 1270b8e80941Smrg{ 1271b8e80941Smrg int res = 0; 1272b8e80941Smrg int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; 1273b8e80941Smrg if (0 <= yylocp->first_line) 1274b8e80941Smrg { 1275b8e80941Smrg res += YYFPRINTF (yyo, "%d", yylocp->first_line); 1276b8e80941Smrg if (0 <= yylocp->first_column) 1277b8e80941Smrg res += YYFPRINTF (yyo, ".%d", yylocp->first_column); 1278b8e80941Smrg } 1279b8e80941Smrg if (0 <= yylocp->last_line) 1280b8e80941Smrg { 1281b8e80941Smrg if (yylocp->first_line < yylocp->last_line) 1282b8e80941Smrg { 1283b8e80941Smrg res += YYFPRINTF (yyo, "-%d", yylocp->last_line); 1284b8e80941Smrg if (0 <= end_col) 1285b8e80941Smrg res += YYFPRINTF (yyo, ".%d", end_col); 1286b8e80941Smrg } 1287b8e80941Smrg else if (0 <= end_col && yylocp->first_column < end_col) 1288b8e80941Smrg res += YYFPRINTF (yyo, "-%d", end_col); 1289b8e80941Smrg } 1290b8e80941Smrg return res; 1291b8e80941Smrg } 1292b8e80941Smrg 1293b8e80941Smrg# define YY_LOCATION_PRINT(File, Loc) \ 1294b8e80941Smrg yy_location_print_ (File, &(Loc)) 1295b8e80941Smrg 1296848b8605Smrg# else 1297848b8605Smrg# define YY_LOCATION_PRINT(File, Loc) ((void) 0) 1298848b8605Smrg# endif 1299848b8605Smrg#endif 1300848b8605Smrg 1301848b8605Smrg 1302b8e80941Smrg# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 1303b8e80941Smrgdo { \ 1304b8e80941Smrg if (yydebug) \ 1305b8e80941Smrg { \ 1306b8e80941Smrg YYFPRINTF (stderr, "%s ", Title); \ 1307b8e80941Smrg yy_symbol_print (stderr, \ 1308b8e80941Smrg Type, Value, Location, state); \ 1309b8e80941Smrg YYFPRINTF (stderr, "\n"); \ 1310b8e80941Smrg } \ 1311b8e80941Smrg} while (0) 1312848b8605Smrg 1313848b8605Smrg 1314b8e80941Smrg/*-----------------------------------. 1315b8e80941Smrg| Print this symbol's value on YYO. | 1316b8e80941Smrg`-----------------------------------*/ 1317848b8605Smrg 1318848b8605Smrgstatic void 1319b8e80941Smrgyy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct asm_parser_state *state) 1320848b8605Smrg{ 1321b8e80941Smrg FILE *yyoutput = yyo; 1322b8e80941Smrg YYUSE (yyoutput); 1323848b8605Smrg YYUSE (yylocationp); 1324848b8605Smrg YYUSE (state); 1325b8e80941Smrg if (!yyvaluep) 1326b8e80941Smrg return; 1327848b8605Smrg# ifdef YYPRINT 1328848b8605Smrg if (yytype < YYNTOKENS) 1329b8e80941Smrg YYPRINT (yyo, yytoknum[yytype], *yyvaluep); 1330848b8605Smrg# endif 1331b8e80941Smrg YYUSE (yytype); 1332848b8605Smrg} 1333848b8605Smrg 1334848b8605Smrg 1335b8e80941Smrg/*---------------------------. 1336b8e80941Smrg| Print this symbol on YYO. | 1337b8e80941Smrg`---------------------------*/ 1338848b8605Smrg 1339848b8605Smrgstatic void 1340b8e80941Smrgyy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct asm_parser_state *state) 1341848b8605Smrg{ 1342b8e80941Smrg YYFPRINTF (yyo, "%s %s (", 1343b8e80941Smrg yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); 1344848b8605Smrg 1345b8e80941Smrg YY_LOCATION_PRINT (yyo, *yylocationp); 1346b8e80941Smrg YYFPRINTF (yyo, ": "); 1347b8e80941Smrg yy_symbol_value_print (yyo, yytype, yyvaluep, yylocationp, state); 1348b8e80941Smrg YYFPRINTF (yyo, ")"); 1349848b8605Smrg} 1350848b8605Smrg 1351848b8605Smrg/*------------------------------------------------------------------. 1352848b8605Smrg| yy_stack_print -- Print the state stack from its BOTTOM up to its | 1353848b8605Smrg| TOP (included). | 1354848b8605Smrg`------------------------------------------------------------------*/ 1355848b8605Smrg 1356848b8605Smrgstatic void 1357848b8605Smrgyy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) 1358848b8605Smrg{ 1359848b8605Smrg YYFPRINTF (stderr, "Stack now"); 1360848b8605Smrg for (; yybottom <= yytop; yybottom++) 1361848b8605Smrg { 1362848b8605Smrg int yybot = *yybottom; 1363848b8605Smrg YYFPRINTF (stderr, " %d", yybot); 1364848b8605Smrg } 1365848b8605Smrg YYFPRINTF (stderr, "\n"); 1366848b8605Smrg} 1367848b8605Smrg 1368b8e80941Smrg# define YY_STACK_PRINT(Bottom, Top) \ 1369b8e80941Smrgdo { \ 1370b8e80941Smrg if (yydebug) \ 1371b8e80941Smrg yy_stack_print ((Bottom), (Top)); \ 1372b8e80941Smrg} while (0) 1373848b8605Smrg 1374848b8605Smrg 1375848b8605Smrg/*------------------------------------------------. 1376848b8605Smrg| Report that the YYRULE is going to be reduced. | 1377848b8605Smrg`------------------------------------------------*/ 1378848b8605Smrg 1379848b8605Smrgstatic void 1380b8e80941Smrgyy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, struct asm_parser_state *state) 1381848b8605Smrg{ 1382b8e80941Smrg unsigned long yylno = yyrline[yyrule]; 1383848b8605Smrg int yynrhs = yyr2[yyrule]; 1384848b8605Smrg int yyi; 1385848b8605Smrg YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 1386b8e80941Smrg yyrule - 1, yylno); 1387848b8605Smrg /* The symbols being reduced. */ 1388848b8605Smrg for (yyi = 0; yyi < yynrhs; yyi++) 1389848b8605Smrg { 1390848b8605Smrg YYFPRINTF (stderr, " $%d = ", yyi + 1); 1391b8e80941Smrg yy_symbol_print (stderr, 1392b8e80941Smrg yystos[yyssp[yyi + 1 - yynrhs]], 1393b8e80941Smrg &(yyvsp[(yyi + 1) - (yynrhs)]) 1394b8e80941Smrg , &(yylsp[(yyi + 1) - (yynrhs)]) , state); 1395848b8605Smrg YYFPRINTF (stderr, "\n"); 1396848b8605Smrg } 1397848b8605Smrg} 1398848b8605Smrg 1399b8e80941Smrg# define YY_REDUCE_PRINT(Rule) \ 1400b8e80941Smrgdo { \ 1401b8e80941Smrg if (yydebug) \ 1402b8e80941Smrg yy_reduce_print (yyssp, yyvsp, yylsp, Rule, state); \ 1403b8e80941Smrg} while (0) 1404848b8605Smrg 1405848b8605Smrg/* Nonzero means print parse trace. It is left uninitialized so that 1406848b8605Smrg multiple parsers can coexist. */ 1407848b8605Smrgint yydebug; 1408848b8605Smrg#else /* !YYDEBUG */ 1409848b8605Smrg# define YYDPRINTF(Args) 1410848b8605Smrg# define YY_SYMBOL_PRINT(Title, Type, Value, Location) 1411848b8605Smrg# define YY_STACK_PRINT(Bottom, Top) 1412848b8605Smrg# define YY_REDUCE_PRINT(Rule) 1413848b8605Smrg#endif /* !YYDEBUG */ 1414848b8605Smrg 1415848b8605Smrg 1416848b8605Smrg/* YYINITDEPTH -- initial size of the parser's stacks. */ 1417b8e80941Smrg#ifndef YYINITDEPTH 1418848b8605Smrg# define YYINITDEPTH 200 1419848b8605Smrg#endif 1420848b8605Smrg 1421848b8605Smrg/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 1422848b8605Smrg if the built-in stack extension method is used). 1423848b8605Smrg 1424848b8605Smrg Do not make this value too large; the results are undefined if 1425848b8605Smrg YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 1426848b8605Smrg evaluated with infinite-precision integer arithmetic. */ 1427848b8605Smrg 1428848b8605Smrg#ifndef YYMAXDEPTH 1429848b8605Smrg# define YYMAXDEPTH 10000 1430848b8605Smrg#endif 1431848b8605Smrg 1432848b8605Smrg 1433848b8605Smrg#if YYERROR_VERBOSE 1434848b8605Smrg 1435848b8605Smrg# ifndef yystrlen 1436848b8605Smrg# if defined __GLIBC__ && defined _STRING_H 1437848b8605Smrg# define yystrlen strlen 1438848b8605Smrg# else 1439848b8605Smrg/* Return the length of YYSTR. */ 1440848b8605Smrgstatic YYSIZE_T 1441848b8605Smrgyystrlen (const char *yystr) 1442848b8605Smrg{ 1443848b8605Smrg YYSIZE_T yylen; 1444848b8605Smrg for (yylen = 0; yystr[yylen]; yylen++) 1445848b8605Smrg continue; 1446848b8605Smrg return yylen; 1447848b8605Smrg} 1448848b8605Smrg# endif 1449848b8605Smrg# endif 1450848b8605Smrg 1451848b8605Smrg# ifndef yystpcpy 1452848b8605Smrg# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 1453848b8605Smrg# define yystpcpy stpcpy 1454848b8605Smrg# else 1455848b8605Smrg/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 1456848b8605Smrg YYDEST. */ 1457848b8605Smrgstatic char * 1458848b8605Smrgyystpcpy (char *yydest, const char *yysrc) 1459848b8605Smrg{ 1460848b8605Smrg char *yyd = yydest; 1461848b8605Smrg const char *yys = yysrc; 1462848b8605Smrg 1463848b8605Smrg while ((*yyd++ = *yys++) != '\0') 1464848b8605Smrg continue; 1465848b8605Smrg 1466848b8605Smrg return yyd - 1; 1467848b8605Smrg} 1468848b8605Smrg# endif 1469848b8605Smrg# endif 1470848b8605Smrg 1471848b8605Smrg# ifndef yytnamerr 1472848b8605Smrg/* Copy to YYRES the contents of YYSTR after stripping away unnecessary 1473848b8605Smrg quotes and backslashes, so that it's suitable for yyerror. The 1474848b8605Smrg heuristic is that double-quoting is unnecessary unless the string 1475848b8605Smrg contains an apostrophe, a comma, or backslash (other than 1476848b8605Smrg backslash-backslash). YYSTR is taken from yytname. If YYRES is 1477848b8605Smrg null, do not copy; instead, return the length of what the result 1478848b8605Smrg would have been. */ 1479848b8605Smrgstatic YYSIZE_T 1480848b8605Smrgyytnamerr (char *yyres, const char *yystr) 1481848b8605Smrg{ 1482848b8605Smrg if (*yystr == '"') 1483848b8605Smrg { 1484848b8605Smrg YYSIZE_T yyn = 0; 1485848b8605Smrg char const *yyp = yystr; 1486848b8605Smrg 1487848b8605Smrg for (;;) 1488b8e80941Smrg switch (*++yyp) 1489b8e80941Smrg { 1490b8e80941Smrg case '\'': 1491b8e80941Smrg case ',': 1492b8e80941Smrg goto do_not_strip_quotes; 1493b8e80941Smrg 1494b8e80941Smrg case '\\': 1495b8e80941Smrg if (*++yyp != '\\') 1496b8e80941Smrg goto do_not_strip_quotes; 1497b8e80941Smrg /* Fall through. */ 1498b8e80941Smrg default: 1499b8e80941Smrg if (yyres) 1500b8e80941Smrg yyres[yyn] = *yyp; 1501b8e80941Smrg yyn++; 1502b8e80941Smrg break; 1503b8e80941Smrg 1504b8e80941Smrg case '"': 1505b8e80941Smrg if (yyres) 1506b8e80941Smrg yyres[yyn] = '\0'; 1507b8e80941Smrg return yyn; 1508b8e80941Smrg } 1509848b8605Smrg do_not_strip_quotes: ; 1510848b8605Smrg } 1511848b8605Smrg 1512848b8605Smrg if (! yyres) 1513848b8605Smrg return yystrlen (yystr); 1514848b8605Smrg 1515b8e80941Smrg return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); 1516848b8605Smrg} 1517848b8605Smrg# endif 1518848b8605Smrg 1519848b8605Smrg/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message 1520848b8605Smrg about the unexpected token YYTOKEN for the state stack whose top is 1521848b8605Smrg YYSSP. 1522848b8605Smrg 1523848b8605Smrg Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is 1524848b8605Smrg not large enough to hold the message. In that case, also set 1525848b8605Smrg *YYMSG_ALLOC to the required number of bytes. Return 2 if the 1526848b8605Smrg required number of bytes is too large to store. */ 1527848b8605Smrgstatic int 1528848b8605Smrgyysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, 1529848b8605Smrg yytype_int16 *yyssp, int yytoken) 1530848b8605Smrg{ 1531b8e80941Smrg YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); 1532848b8605Smrg YYSIZE_T yysize = yysize0; 1533848b8605Smrg enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 1534848b8605Smrg /* Internationalized format string. */ 1535b8e80941Smrg const char *yyformat = YY_NULLPTR; 1536848b8605Smrg /* Arguments of yyformat. */ 1537848b8605Smrg char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 1538848b8605Smrg /* Number of reported tokens (one for the "unexpected", one per 1539848b8605Smrg "expected"). */ 1540848b8605Smrg int yycount = 0; 1541848b8605Smrg 1542848b8605Smrg /* There are many possibilities here to consider: 1543848b8605Smrg - If this state is a consistent state with a default action, then 1544848b8605Smrg the only way this function was invoked is if the default action 1545848b8605Smrg is an error action. In that case, don't check for expected 1546848b8605Smrg tokens because there are none. 1547848b8605Smrg - The only way there can be no lookahead present (in yychar) is if 1548848b8605Smrg this state is a consistent state with a default action. Thus, 1549848b8605Smrg detecting the absence of a lookahead is sufficient to determine 1550848b8605Smrg that there is no unexpected or expected token to report. In that 1551848b8605Smrg case, just report a simple "syntax error". 1552848b8605Smrg - Don't assume there isn't a lookahead just because this state is a 1553848b8605Smrg consistent state with a default action. There might have been a 1554848b8605Smrg previous inconsistent state, consistent state with a non-default 1555848b8605Smrg action, or user semantic action that manipulated yychar. 1556848b8605Smrg - Of course, the expected token list depends on states to have 1557848b8605Smrg correct lookahead information, and it depends on the parser not 1558848b8605Smrg to perform extra reductions after fetching a lookahead from the 1559848b8605Smrg scanner and before detecting a syntax error. Thus, state merging 1560848b8605Smrg (from LALR or IELR) and default reductions corrupt the expected 1561848b8605Smrg token list. However, the list is correct for canonical LR with 1562848b8605Smrg one exception: it will still contain any token that will not be 1563848b8605Smrg accepted due to an error action in a later state. 1564848b8605Smrg */ 1565848b8605Smrg if (yytoken != YYEMPTY) 1566848b8605Smrg { 1567848b8605Smrg int yyn = yypact[*yyssp]; 1568848b8605Smrg yyarg[yycount++] = yytname[yytoken]; 1569848b8605Smrg if (!yypact_value_is_default (yyn)) 1570848b8605Smrg { 1571848b8605Smrg /* Start YYX at -YYN if negative to avoid negative indexes in 1572848b8605Smrg YYCHECK. In other words, skip the first -YYN actions for 1573848b8605Smrg this state because they are default actions. */ 1574848b8605Smrg int yyxbegin = yyn < 0 ? -yyn : 0; 1575848b8605Smrg /* Stay within bounds of both yycheck and yytname. */ 1576848b8605Smrg int yychecklim = YYLAST - yyn + 1; 1577848b8605Smrg int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 1578848b8605Smrg int yyx; 1579848b8605Smrg 1580848b8605Smrg for (yyx = yyxbegin; yyx < yyxend; ++yyx) 1581848b8605Smrg if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR 1582848b8605Smrg && !yytable_value_is_error (yytable[yyx + yyn])) 1583848b8605Smrg { 1584848b8605Smrg if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 1585848b8605Smrg { 1586848b8605Smrg yycount = 1; 1587848b8605Smrg yysize = yysize0; 1588848b8605Smrg break; 1589848b8605Smrg } 1590848b8605Smrg yyarg[yycount++] = yytname[yyx]; 1591b8e80941Smrg { 1592b8e80941Smrg YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); 1593b8e80941Smrg if (! (yysize <= yysize1 1594b8e80941Smrg && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 1595b8e80941Smrg return 2; 1596b8e80941Smrg yysize = yysize1; 1597b8e80941Smrg } 1598848b8605Smrg } 1599848b8605Smrg } 1600848b8605Smrg } 1601848b8605Smrg 1602848b8605Smrg switch (yycount) 1603848b8605Smrg { 1604848b8605Smrg# define YYCASE_(N, S) \ 1605848b8605Smrg case N: \ 1606848b8605Smrg yyformat = S; \ 1607848b8605Smrg break 1608b8e80941Smrg default: /* Avoid compiler warnings. */ 1609848b8605Smrg YYCASE_(0, YY_("syntax error")); 1610848b8605Smrg YYCASE_(1, YY_("syntax error, unexpected %s")); 1611848b8605Smrg YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); 1612848b8605Smrg YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); 1613848b8605Smrg YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); 1614848b8605Smrg YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); 1615848b8605Smrg# undef YYCASE_ 1616848b8605Smrg } 1617848b8605Smrg 1618b8e80941Smrg { 1619b8e80941Smrg YYSIZE_T yysize1 = yysize + yystrlen (yyformat); 1620b8e80941Smrg if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 1621b8e80941Smrg return 2; 1622b8e80941Smrg yysize = yysize1; 1623b8e80941Smrg } 1624848b8605Smrg 1625848b8605Smrg if (*yymsg_alloc < yysize) 1626848b8605Smrg { 1627848b8605Smrg *yymsg_alloc = 2 * yysize; 1628848b8605Smrg if (! (yysize <= *yymsg_alloc 1629848b8605Smrg && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) 1630848b8605Smrg *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; 1631848b8605Smrg return 1; 1632848b8605Smrg } 1633848b8605Smrg 1634848b8605Smrg /* Avoid sprintf, as that infringes on the user's name space. 1635848b8605Smrg Don't have undefined behavior even if the translation 1636848b8605Smrg produced a string with the wrong number of "%s"s. */ 1637848b8605Smrg { 1638848b8605Smrg char *yyp = *yymsg; 1639848b8605Smrg int yyi = 0; 1640848b8605Smrg while ((*yyp = *yyformat) != '\0') 1641848b8605Smrg if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) 1642848b8605Smrg { 1643848b8605Smrg yyp += yytnamerr (yyp, yyarg[yyi++]); 1644848b8605Smrg yyformat += 2; 1645848b8605Smrg } 1646848b8605Smrg else 1647848b8605Smrg { 1648848b8605Smrg yyp++; 1649848b8605Smrg yyformat++; 1650848b8605Smrg } 1651848b8605Smrg } 1652848b8605Smrg return 0; 1653848b8605Smrg} 1654848b8605Smrg#endif /* YYERROR_VERBOSE */ 1655848b8605Smrg 1656848b8605Smrg/*-----------------------------------------------. 1657848b8605Smrg| Release the memory associated to this symbol. | 1658848b8605Smrg`-----------------------------------------------*/ 1659848b8605Smrg 1660848b8605Smrgstatic void 1661848b8605Smrgyydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, struct asm_parser_state *state) 1662848b8605Smrg{ 1663848b8605Smrg YYUSE (yyvaluep); 1664848b8605Smrg YYUSE (yylocationp); 1665848b8605Smrg YYUSE (state); 1666848b8605Smrg if (!yymsg) 1667848b8605Smrg yymsg = "Deleting"; 1668848b8605Smrg YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 1669848b8605Smrg 1670b8e80941Smrg YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 1671b8e80941Smrg YYUSE (yytype); 1672b8e80941Smrg YY_IGNORE_MAYBE_UNINITIALIZED_END 1673848b8605Smrg} 1674848b8605Smrg 1675848b8605Smrg 1676848b8605Smrg 1677848b8605Smrg 1678848b8605Smrg/*----------. 1679848b8605Smrg| yyparse. | 1680848b8605Smrg`----------*/ 1681848b8605Smrg 1682848b8605Smrgint 1683848b8605Smrgyyparse (struct asm_parser_state *state) 1684848b8605Smrg{ 1685848b8605Smrg/* The lookahead symbol. */ 1686848b8605Smrgint yychar; 1687848b8605Smrg 1688848b8605Smrg 1689b8e80941Smrg/* The semantic value of the lookahead symbol. */ 1690848b8605Smrg/* Default value used for initialization, for pacifying older GCCs 1691848b8605Smrg or non-GCC compilers. */ 1692b8e80941SmrgYY_INITIAL_VALUE (static YYSTYPE yyval_default;) 1693b8e80941SmrgYYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); 1694848b8605Smrg 1695848b8605Smrg/* Location data for the lookahead symbol. */ 1696b8e80941Smrgstatic YYLTYPE yyloc_default 1697b8e80941Smrg# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL 1698b8e80941Smrg = { 1, 1, 1, 1 } 1699b8e80941Smrg# endif 1700b8e80941Smrg; 1701b8e80941SmrgYYLTYPE yylloc = yyloc_default; 1702848b8605Smrg 1703848b8605Smrg /* Number of syntax errors so far. */ 1704848b8605Smrg int yynerrs; 1705848b8605Smrg 1706848b8605Smrg int yystate; 1707848b8605Smrg /* Number of tokens to shift before error messages enabled. */ 1708848b8605Smrg int yyerrstatus; 1709848b8605Smrg 1710848b8605Smrg /* The stacks and their tools: 1711b8e80941Smrg 'yyss': related to states. 1712b8e80941Smrg 'yyvs': related to semantic values. 1713b8e80941Smrg 'yyls': related to locations. 1714848b8605Smrg 1715848b8605Smrg Refer to the stacks through separate pointers, to allow yyoverflow 1716848b8605Smrg to reallocate them elsewhere. */ 1717848b8605Smrg 1718848b8605Smrg /* The state stack. */ 1719848b8605Smrg yytype_int16 yyssa[YYINITDEPTH]; 1720848b8605Smrg yytype_int16 *yyss; 1721848b8605Smrg yytype_int16 *yyssp; 1722848b8605Smrg 1723848b8605Smrg /* The semantic value stack. */ 1724848b8605Smrg YYSTYPE yyvsa[YYINITDEPTH]; 1725848b8605Smrg YYSTYPE *yyvs; 1726848b8605Smrg YYSTYPE *yyvsp; 1727848b8605Smrg 1728848b8605Smrg /* The location stack. */ 1729848b8605Smrg YYLTYPE yylsa[YYINITDEPTH]; 1730848b8605Smrg YYLTYPE *yyls; 1731848b8605Smrg YYLTYPE *yylsp; 1732848b8605Smrg 1733848b8605Smrg /* The locations where the error started and ended. */ 1734848b8605Smrg YYLTYPE yyerror_range[3]; 1735848b8605Smrg 1736848b8605Smrg YYSIZE_T yystacksize; 1737848b8605Smrg 1738848b8605Smrg int yyn; 1739848b8605Smrg int yyresult; 1740848b8605Smrg /* Lookahead token as an internal (translated) token number. */ 1741848b8605Smrg int yytoken = 0; 1742848b8605Smrg /* The variables used to return semantic value and location from the 1743848b8605Smrg action routines. */ 1744848b8605Smrg YYSTYPE yyval; 1745848b8605Smrg YYLTYPE yyloc; 1746848b8605Smrg 1747848b8605Smrg#if YYERROR_VERBOSE 1748848b8605Smrg /* Buffer for error messages, and its allocated size. */ 1749848b8605Smrg char yymsgbuf[128]; 1750848b8605Smrg char *yymsg = yymsgbuf; 1751848b8605Smrg YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 1752848b8605Smrg#endif 1753848b8605Smrg 1754848b8605Smrg#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) 1755848b8605Smrg 1756848b8605Smrg /* The number of symbols on the RHS of the reduced rule. 1757848b8605Smrg Keep to zero when no symbol should be popped. */ 1758848b8605Smrg int yylen = 0; 1759848b8605Smrg 1760b8e80941Smrg yyssp = yyss = yyssa; 1761b8e80941Smrg yyvsp = yyvs = yyvsa; 1762b8e80941Smrg yylsp = yyls = yylsa; 1763848b8605Smrg yystacksize = YYINITDEPTH; 1764848b8605Smrg 1765848b8605Smrg YYDPRINTF ((stderr, "Starting parse\n")); 1766848b8605Smrg 1767848b8605Smrg yystate = 0; 1768848b8605Smrg yyerrstatus = 0; 1769848b8605Smrg yynerrs = 0; 1770848b8605Smrg yychar = YYEMPTY; /* Cause a token to be read. */ 1771b8e80941Smrg yylsp[0] = yylloc; 1772848b8605Smrg goto yysetstate; 1773848b8605Smrg 1774848b8605Smrg/*------------------------------------------------------------. 1775848b8605Smrg| yynewstate -- Push a new state, which is found in yystate. | 1776848b8605Smrg`------------------------------------------------------------*/ 1777848b8605Smrg yynewstate: 1778848b8605Smrg /* In all cases, when you get here, the value and location stacks 1779848b8605Smrg have just been pushed. So pushing a state here evens the stacks. */ 1780848b8605Smrg yyssp++; 1781848b8605Smrg 1782848b8605Smrg yysetstate: 1783b8e80941Smrg *yyssp = (yytype_int16) yystate; 1784848b8605Smrg 1785848b8605Smrg if (yyss + yystacksize - 1 <= yyssp) 1786848b8605Smrg { 1787848b8605Smrg /* Get the current used size of the three stacks, in elements. */ 1788b8e80941Smrg YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); 1789848b8605Smrg 1790848b8605Smrg#ifdef yyoverflow 1791848b8605Smrg { 1792b8e80941Smrg /* Give user a chance to reallocate the stack. Use copies of 1793b8e80941Smrg these so that the &'s don't force the real ones into 1794b8e80941Smrg memory. */ 1795b8e80941Smrg YYSTYPE *yyvs1 = yyvs; 1796b8e80941Smrg yytype_int16 *yyss1 = yyss; 1797b8e80941Smrg YYLTYPE *yyls1 = yyls; 1798b8e80941Smrg 1799b8e80941Smrg /* Each stack pointer address is followed by the size of the 1800b8e80941Smrg data in use in that stack, in bytes. This used to be a 1801b8e80941Smrg conditional around just the two extra args, but that might 1802b8e80941Smrg be undefined if yyoverflow is a macro. */ 1803b8e80941Smrg yyoverflow (YY_("memory exhausted"), 1804b8e80941Smrg &yyss1, yysize * sizeof (*yyssp), 1805b8e80941Smrg &yyvs1, yysize * sizeof (*yyvsp), 1806b8e80941Smrg &yyls1, yysize * sizeof (*yylsp), 1807b8e80941Smrg &yystacksize); 1808b8e80941Smrg yyss = yyss1; 1809b8e80941Smrg yyvs = yyvs1; 1810b8e80941Smrg yyls = yyls1; 1811848b8605Smrg } 1812848b8605Smrg#else /* no yyoverflow */ 1813848b8605Smrg# ifndef YYSTACK_RELOCATE 1814848b8605Smrg goto yyexhaustedlab; 1815848b8605Smrg# else 1816848b8605Smrg /* Extend the stack our own way. */ 1817848b8605Smrg if (YYMAXDEPTH <= yystacksize) 1818b8e80941Smrg goto yyexhaustedlab; 1819848b8605Smrg yystacksize *= 2; 1820848b8605Smrg if (YYMAXDEPTH < yystacksize) 1821b8e80941Smrg yystacksize = YYMAXDEPTH; 1822848b8605Smrg 1823848b8605Smrg { 1824b8e80941Smrg yytype_int16 *yyss1 = yyss; 1825b8e80941Smrg union yyalloc *yyptr = 1826b8e80941Smrg (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 1827b8e80941Smrg if (! yyptr) 1828b8e80941Smrg goto yyexhaustedlab; 1829b8e80941Smrg YYSTACK_RELOCATE (yyss_alloc, yyss); 1830b8e80941Smrg YYSTACK_RELOCATE (yyvs_alloc, yyvs); 1831b8e80941Smrg YYSTACK_RELOCATE (yyls_alloc, yyls); 1832848b8605Smrg# undef YYSTACK_RELOCATE 1833b8e80941Smrg if (yyss1 != yyssa) 1834b8e80941Smrg YYSTACK_FREE (yyss1); 1835848b8605Smrg } 1836848b8605Smrg# endif 1837848b8605Smrg#endif /* no yyoverflow */ 1838848b8605Smrg 1839848b8605Smrg yyssp = yyss + yysize - 1; 1840848b8605Smrg yyvsp = yyvs + yysize - 1; 1841848b8605Smrg yylsp = yyls + yysize - 1; 1842848b8605Smrg 1843848b8605Smrg YYDPRINTF ((stderr, "Stack size increased to %lu\n", 1844b8e80941Smrg (unsigned long) yystacksize)); 1845848b8605Smrg 1846848b8605Smrg if (yyss + yystacksize - 1 <= yyssp) 1847b8e80941Smrg YYABORT; 1848848b8605Smrg } 1849848b8605Smrg 1850848b8605Smrg YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 1851848b8605Smrg 1852848b8605Smrg if (yystate == YYFINAL) 1853848b8605Smrg YYACCEPT; 1854848b8605Smrg 1855848b8605Smrg goto yybackup; 1856848b8605Smrg 1857848b8605Smrg/*-----------. 1858848b8605Smrg| yybackup. | 1859848b8605Smrg`-----------*/ 1860848b8605Smrgyybackup: 1861848b8605Smrg 1862848b8605Smrg /* Do appropriate processing given the current state. Read a 1863848b8605Smrg lookahead token if we need one and don't already have one. */ 1864848b8605Smrg 1865848b8605Smrg /* First try to decide what to do without reference to lookahead token. */ 1866848b8605Smrg yyn = yypact[yystate]; 1867848b8605Smrg if (yypact_value_is_default (yyn)) 1868848b8605Smrg goto yydefault; 1869848b8605Smrg 1870848b8605Smrg /* Not known => get a lookahead token if don't already have one. */ 1871848b8605Smrg 1872848b8605Smrg /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ 1873848b8605Smrg if (yychar == YYEMPTY) 1874848b8605Smrg { 1875848b8605Smrg YYDPRINTF ((stderr, "Reading a token: ")); 1876b8e80941Smrg yychar = yylex (&yylval, &yylloc, state); 1877848b8605Smrg } 1878848b8605Smrg 1879848b8605Smrg if (yychar <= YYEOF) 1880848b8605Smrg { 1881848b8605Smrg yychar = yytoken = YYEOF; 1882848b8605Smrg YYDPRINTF ((stderr, "Now at end of input.\n")); 1883848b8605Smrg } 1884848b8605Smrg else 1885848b8605Smrg { 1886848b8605Smrg yytoken = YYTRANSLATE (yychar); 1887848b8605Smrg YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 1888848b8605Smrg } 1889848b8605Smrg 1890848b8605Smrg /* If the proper action on seeing token YYTOKEN is to reduce or to 1891848b8605Smrg detect an error, take that action. */ 1892848b8605Smrg yyn += yytoken; 1893848b8605Smrg if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 1894848b8605Smrg goto yydefault; 1895848b8605Smrg yyn = yytable[yyn]; 1896848b8605Smrg if (yyn <= 0) 1897848b8605Smrg { 1898848b8605Smrg if (yytable_value_is_error (yyn)) 1899848b8605Smrg goto yyerrlab; 1900848b8605Smrg yyn = -yyn; 1901848b8605Smrg goto yyreduce; 1902848b8605Smrg } 1903848b8605Smrg 1904848b8605Smrg /* Count tokens shifted since error; after three, turn off error 1905848b8605Smrg status. */ 1906848b8605Smrg if (yyerrstatus) 1907848b8605Smrg yyerrstatus--; 1908848b8605Smrg 1909848b8605Smrg /* Shift the lookahead token. */ 1910848b8605Smrg YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 1911848b8605Smrg 1912848b8605Smrg /* Discard the shifted token. */ 1913848b8605Smrg yychar = YYEMPTY; 1914848b8605Smrg 1915848b8605Smrg yystate = yyn; 1916848b8605Smrg YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 1917848b8605Smrg *++yyvsp = yylval; 1918848b8605Smrg YY_IGNORE_MAYBE_UNINITIALIZED_END 1919848b8605Smrg *++yylsp = yylloc; 1920848b8605Smrg goto yynewstate; 1921848b8605Smrg 1922848b8605Smrg 1923848b8605Smrg/*-----------------------------------------------------------. 1924848b8605Smrg| yydefault -- do the default action for the current state. | 1925848b8605Smrg`-----------------------------------------------------------*/ 1926848b8605Smrgyydefault: 1927848b8605Smrg yyn = yydefact[yystate]; 1928848b8605Smrg if (yyn == 0) 1929848b8605Smrg goto yyerrlab; 1930848b8605Smrg goto yyreduce; 1931848b8605Smrg 1932848b8605Smrg 1933848b8605Smrg/*-----------------------------. 1934848b8605Smrg| yyreduce -- Do a reduction. | 1935848b8605Smrg`-----------------------------*/ 1936848b8605Smrgyyreduce: 1937848b8605Smrg /* yyn is the number of a rule to reduce with. */ 1938848b8605Smrg yylen = yyr2[yyn]; 1939848b8605Smrg 1940848b8605Smrg /* If YYLEN is nonzero, implement the default value of the action: 1941b8e80941Smrg '$$ = $1'. 1942848b8605Smrg 1943848b8605Smrg Otherwise, the following line sets YYVAL to garbage. 1944848b8605Smrg This behavior is undocumented and Bison 1945848b8605Smrg users should not rely upon it. Assigning to YYVAL 1946848b8605Smrg unconditionally makes the parser a bit smaller, and it avoids a 1947848b8605Smrg GCC warning that YYVAL may be used uninitialized. */ 1948848b8605Smrg yyval = yyvsp[1-yylen]; 1949848b8605Smrg 1950b8e80941Smrg /* Default location. */ 1951848b8605Smrg YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); 1952b8e80941Smrg yyerror_range[1] = yyloc; 1953848b8605Smrg YY_REDUCE_PRINT (yyn); 1954848b8605Smrg switch (yyn) 1955848b8605Smrg { 1956848b8605Smrg case 3: 1957b8e80941Smrg#line 290 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 1958848b8605Smrg { 1959848b8605Smrg if (state->prog->Target != GL_VERTEX_PROGRAM_ARB) { 1960b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid fragment program header"); 1961848b8605Smrg 1962848b8605Smrg } 1963848b8605Smrg state->mode = ARB_vertex; 1964848b8605Smrg } 1965b8e80941Smrg#line 1966 "program_parse.tab.c" /* yacc.c:1645 */ 1966848b8605Smrg break; 1967848b8605Smrg 1968848b8605Smrg case 4: 1969b8e80941Smrg#line 298 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 1970848b8605Smrg { 1971848b8605Smrg if (state->prog->Target != GL_FRAGMENT_PROGRAM_ARB) { 1972b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid vertex program header"); 1973848b8605Smrg } 1974848b8605Smrg state->mode = ARB_fragment; 1975848b8605Smrg 1976848b8605Smrg state->option.TexRect = 1977848b8605Smrg (state->ctx->Extensions.NV_texture_rectangle != GL_FALSE); 1978848b8605Smrg } 1979b8e80941Smrg#line 1980 "program_parse.tab.c" /* yacc.c:1645 */ 1980848b8605Smrg break; 1981848b8605Smrg 1982848b8605Smrg case 7: 1983b8e80941Smrg#line 314 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 1984848b8605Smrg { 1985848b8605Smrg int valid = 0; 1986848b8605Smrg 1987848b8605Smrg if (state->mode == ARB_vertex) { 1988b8e80941Smrg valid = _mesa_ARBvp_parse_option(state, (yyvsp[-1].string)); 1989848b8605Smrg } else if (state->mode == ARB_fragment) { 1990b8e80941Smrg valid = _mesa_ARBfp_parse_option(state, (yyvsp[-1].string)); 1991848b8605Smrg } 1992848b8605Smrg 1993848b8605Smrg 1994b8e80941Smrg free((yyvsp[-1].string)); 1995848b8605Smrg 1996848b8605Smrg if (!valid) { 1997848b8605Smrg const char *const err_str = (state->mode == ARB_vertex) 1998848b8605Smrg ? "invalid ARB vertex program option" 1999848b8605Smrg : "invalid ARB fragment program option"; 2000848b8605Smrg 2001b8e80941Smrg yyerror(& (yylsp[-1]), state, err_str); 2002848b8605Smrg YYERROR; 2003848b8605Smrg } 2004848b8605Smrg } 2005b8e80941Smrg#line 2006 "program_parse.tab.c" /* yacc.c:1645 */ 2006848b8605Smrg break; 2007848b8605Smrg 2008848b8605Smrg case 10: 2009b8e80941Smrg#line 342 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2010848b8605Smrg { 2011b8e80941Smrg if ((yyvsp[-1].inst) != NULL) { 2012848b8605Smrg if (state->inst_tail == NULL) { 2013b8e80941Smrg state->inst_head = (yyvsp[-1].inst); 2014848b8605Smrg } else { 2015b8e80941Smrg state->inst_tail->next = (yyvsp[-1].inst); 2016848b8605Smrg } 2017848b8605Smrg 2018b8e80941Smrg state->inst_tail = (yyvsp[-1].inst); 2019b8e80941Smrg (yyvsp[-1].inst)->next = NULL; 2020848b8605Smrg 2021b8e80941Smrg state->prog->arb.NumInstructions++; 2022848b8605Smrg } 2023848b8605Smrg } 2024b8e80941Smrg#line 2025 "program_parse.tab.c" /* yacc.c:1645 */ 2025848b8605Smrg break; 2026848b8605Smrg 2027848b8605Smrg case 12: 2028b8e80941Smrg#line 360 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2029848b8605Smrg { 2030b8e80941Smrg (yyval.inst) = (yyvsp[0].inst); 2031b8e80941Smrg state->prog->arb.NumAluInstructions++; 2032848b8605Smrg } 2033b8e80941Smrg#line 2034 "program_parse.tab.c" /* yacc.c:1645 */ 2034848b8605Smrg break; 2035848b8605Smrg 2036848b8605Smrg case 13: 2037b8e80941Smrg#line 365 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2038848b8605Smrg { 2039b8e80941Smrg (yyval.inst) = (yyvsp[0].inst); 2040b8e80941Smrg state->prog->arb.NumTexInstructions++; 2041848b8605Smrg } 2042b8e80941Smrg#line 2043 "program_parse.tab.c" /* yacc.c:1645 */ 2043848b8605Smrg break; 2044848b8605Smrg 2045848b8605Smrg case 24: 2046b8e80941Smrg#line 386 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2047848b8605Smrg { 2048b8e80941Smrg (yyval.inst) = asm_instruction_ctor(OPCODE_ARL, & (yyvsp[-2].dst_reg), & (yyvsp[0].src_reg), NULL, NULL); 2049848b8605Smrg } 2050b8e80941Smrg#line 2051 "program_parse.tab.c" /* yacc.c:1645 */ 2051848b8605Smrg break; 2052848b8605Smrg 2053848b8605Smrg case 25: 2054b8e80941Smrg#line 392 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2055848b8605Smrg { 2056b8e80941Smrg (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[-3].temp_inst), & (yyvsp[-2].dst_reg), & (yyvsp[0].src_reg), NULL, NULL); 2057848b8605Smrg } 2058b8e80941Smrg#line 2059 "program_parse.tab.c" /* yacc.c:1645 */ 2059848b8605Smrg break; 2060848b8605Smrg 2061848b8605Smrg case 26: 2062b8e80941Smrg#line 398 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2063848b8605Smrg { 2064b8e80941Smrg (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[-3].temp_inst), & (yyvsp[-2].dst_reg), & (yyvsp[0].src_reg), NULL, NULL); 2065848b8605Smrg } 2066b8e80941Smrg#line 2067 "program_parse.tab.c" /* yacc.c:1645 */ 2067848b8605Smrg break; 2068848b8605Smrg 2069848b8605Smrg case 27: 2070b8e80941Smrg#line 404 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2071848b8605Smrg { 2072b8e80941Smrg (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[-5].temp_inst), & (yyvsp[-4].dst_reg), & (yyvsp[-2].src_reg), & (yyvsp[0].src_reg), NULL); 2073848b8605Smrg } 2074b8e80941Smrg#line 2075 "program_parse.tab.c" /* yacc.c:1645 */ 2075848b8605Smrg break; 2076848b8605Smrg 2077848b8605Smrg case 28: 2078b8e80941Smrg#line 411 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2079848b8605Smrg { 2080b8e80941Smrg (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[-5].temp_inst), & (yyvsp[-4].dst_reg), & (yyvsp[-2].src_reg), & (yyvsp[0].src_reg), NULL); 2081848b8605Smrg } 2082b8e80941Smrg#line 2083 "program_parse.tab.c" /* yacc.c:1645 */ 2083848b8605Smrg break; 2084848b8605Smrg 2085848b8605Smrg case 29: 2086b8e80941Smrg#line 418 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2087848b8605Smrg { 2088b8e80941Smrg (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[-7].temp_inst), & (yyvsp[-6].dst_reg), & (yyvsp[-4].src_reg), & (yyvsp[-2].src_reg), & (yyvsp[0].src_reg)); 2089848b8605Smrg } 2090b8e80941Smrg#line 2091 "program_parse.tab.c" /* yacc.c:1645 */ 2091848b8605Smrg break; 2092848b8605Smrg 2093848b8605Smrg case 30: 2094b8e80941Smrg#line 424 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2095848b8605Smrg { 2096b8e80941Smrg (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[-7].temp_inst), & (yyvsp[-6].dst_reg), & (yyvsp[-4].src_reg), NULL, NULL); 2097848b8605Smrg if ((yyval.inst) != NULL) { 2098b8e80941Smrg const GLbitfield tex_mask = (1U << (yyvsp[-2].integer)); 2099848b8605Smrg GLbitfield shadow_tex = 0; 2100848b8605Smrg GLbitfield target_mask = 0; 2101848b8605Smrg 2102848b8605Smrg 2103b8e80941Smrg (yyval.inst)->Base.TexSrcUnit = (yyvsp[-2].integer); 2104848b8605Smrg 2105b8e80941Smrg if ((yyvsp[0].integer) < 0) { 2106848b8605Smrg shadow_tex = tex_mask; 2107848b8605Smrg 2108b8e80941Smrg (yyval.inst)->Base.TexSrcTarget = -(yyvsp[0].integer); 2109848b8605Smrg (yyval.inst)->Base.TexShadow = 1; 2110848b8605Smrg } else { 2111b8e80941Smrg (yyval.inst)->Base.TexSrcTarget = (yyvsp[0].integer); 2112848b8605Smrg } 2113848b8605Smrg 2114848b8605Smrg target_mask = (1U << (yyval.inst)->Base.TexSrcTarget); 2115848b8605Smrg 2116848b8605Smrg /* If this texture unit was previously accessed and that access 2117848b8605Smrg * had a different texture target, generate an error. 2118848b8605Smrg * 2119848b8605Smrg * If this texture unit was previously accessed and that access 2120848b8605Smrg * had a different shadow mode, generate an error. 2121848b8605Smrg */ 2122b8e80941Smrg if ((state->prog->TexturesUsed[(yyvsp[-2].integer)] != 0) 2123b8e80941Smrg && ((state->prog->TexturesUsed[(yyvsp[-2].integer)] != target_mask) 2124848b8605Smrg || ((state->prog->ShadowSamplers & tex_mask) 2125848b8605Smrg != shadow_tex))) { 2126b8e80941Smrg yyerror(& (yylsp[0]), state, 2127848b8605Smrg "multiple targets used on one texture image unit"); 2128848b8605Smrg YYERROR; 2129848b8605Smrg } 2130848b8605Smrg 2131848b8605Smrg 2132b8e80941Smrg state->prog->TexturesUsed[(yyvsp[-2].integer)] |= target_mask; 2133848b8605Smrg state->prog->ShadowSamplers |= shadow_tex; 2134848b8605Smrg } 2135848b8605Smrg } 2136b8e80941Smrg#line 2137 "program_parse.tab.c" /* yacc.c:1645 */ 2137848b8605Smrg break; 2138848b8605Smrg 2139848b8605Smrg case 31: 2140b8e80941Smrg#line 468 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2141848b8605Smrg { 2142b8e80941Smrg (yyval.inst) = asm_instruction_ctor(OPCODE_KIL, NULL, & (yyvsp[0].src_reg), NULL, NULL); 2143848b8605Smrg state->fragment.UsesKill = 1; 2144848b8605Smrg } 2145b8e80941Smrg#line 2146 "program_parse.tab.c" /* yacc.c:1645 */ 2146848b8605Smrg break; 2147848b8605Smrg 2148848b8605Smrg case 32: 2149b8e80941Smrg#line 475 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2150848b8605Smrg { 2151b8e80941Smrg (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[-11].temp_inst), & (yyvsp[-10].dst_reg), & (yyvsp[-8].src_reg), & (yyvsp[-6].src_reg), & (yyvsp[-4].src_reg)); 2152848b8605Smrg if ((yyval.inst) != NULL) { 2153b8e80941Smrg const GLbitfield tex_mask = (1U << (yyvsp[-2].integer)); 2154848b8605Smrg GLbitfield shadow_tex = 0; 2155848b8605Smrg GLbitfield target_mask = 0; 2156848b8605Smrg 2157848b8605Smrg 2158b8e80941Smrg (yyval.inst)->Base.TexSrcUnit = (yyvsp[-2].integer); 2159848b8605Smrg 2160b8e80941Smrg if ((yyvsp[0].integer) < 0) { 2161848b8605Smrg shadow_tex = tex_mask; 2162848b8605Smrg 2163b8e80941Smrg (yyval.inst)->Base.TexSrcTarget = -(yyvsp[0].integer); 2164848b8605Smrg (yyval.inst)->Base.TexShadow = 1; 2165848b8605Smrg } else { 2166b8e80941Smrg (yyval.inst)->Base.TexSrcTarget = (yyvsp[0].integer); 2167848b8605Smrg } 2168848b8605Smrg 2169848b8605Smrg target_mask = (1U << (yyval.inst)->Base.TexSrcTarget); 2170848b8605Smrg 2171848b8605Smrg /* If this texture unit was previously accessed and that access 2172848b8605Smrg * had a different texture target, generate an error. 2173848b8605Smrg * 2174848b8605Smrg * If this texture unit was previously accessed and that access 2175848b8605Smrg * had a different shadow mode, generate an error. 2176848b8605Smrg */ 2177b8e80941Smrg if ((state->prog->TexturesUsed[(yyvsp[-2].integer)] != 0) 2178b8e80941Smrg && ((state->prog->TexturesUsed[(yyvsp[-2].integer)] != target_mask) 2179848b8605Smrg || ((state->prog->ShadowSamplers & tex_mask) 2180848b8605Smrg != shadow_tex))) { 2181b8e80941Smrg yyerror(& (yylsp[0]), state, 2182848b8605Smrg "multiple targets used on one texture image unit"); 2183848b8605Smrg YYERROR; 2184848b8605Smrg } 2185848b8605Smrg 2186848b8605Smrg 2187b8e80941Smrg state->prog->TexturesUsed[(yyvsp[-2].integer)] |= target_mask; 2188848b8605Smrg state->prog->ShadowSamplers |= shadow_tex; 2189848b8605Smrg } 2190848b8605Smrg } 2191b8e80941Smrg#line 2192 "program_parse.tab.c" /* yacc.c:1645 */ 2192848b8605Smrg break; 2193848b8605Smrg 2194b8e80941Smrg case 33: 2195b8e80941Smrg#line 519 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2196848b8605Smrg { 2197b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 2198848b8605Smrg } 2199b8e80941Smrg#line 2200 "program_parse.tab.c" /* yacc.c:1645 */ 2200848b8605Smrg break; 2201848b8605Smrg 2202b8e80941Smrg case 34: 2203b8e80941Smrg#line 524 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2204848b8605Smrg { (yyval.integer) = TEXTURE_1D_INDEX; } 2205b8e80941Smrg#line 2206 "program_parse.tab.c" /* yacc.c:1645 */ 2206848b8605Smrg break; 2207848b8605Smrg 2208b8e80941Smrg case 35: 2209b8e80941Smrg#line 525 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2210848b8605Smrg { (yyval.integer) = TEXTURE_2D_INDEX; } 2211b8e80941Smrg#line 2212 "program_parse.tab.c" /* yacc.c:1645 */ 2212848b8605Smrg break; 2213848b8605Smrg 2214b8e80941Smrg case 36: 2215b8e80941Smrg#line 526 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2216848b8605Smrg { (yyval.integer) = TEXTURE_3D_INDEX; } 2217b8e80941Smrg#line 2218 "program_parse.tab.c" /* yacc.c:1645 */ 2218848b8605Smrg break; 2219848b8605Smrg 2220b8e80941Smrg case 37: 2221b8e80941Smrg#line 527 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2222848b8605Smrg { (yyval.integer) = TEXTURE_CUBE_INDEX; } 2223b8e80941Smrg#line 2224 "program_parse.tab.c" /* yacc.c:1645 */ 2224848b8605Smrg break; 2225848b8605Smrg 2226b8e80941Smrg case 38: 2227b8e80941Smrg#line 528 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2228848b8605Smrg { (yyval.integer) = TEXTURE_RECT_INDEX; } 2229b8e80941Smrg#line 2230 "program_parse.tab.c" /* yacc.c:1645 */ 2230848b8605Smrg break; 2231848b8605Smrg 2232b8e80941Smrg case 39: 2233b8e80941Smrg#line 529 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2234848b8605Smrg { (yyval.integer) = -TEXTURE_1D_INDEX; } 2235b8e80941Smrg#line 2236 "program_parse.tab.c" /* yacc.c:1645 */ 2236848b8605Smrg break; 2237848b8605Smrg 2238b8e80941Smrg case 40: 2239b8e80941Smrg#line 530 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2240848b8605Smrg { (yyval.integer) = -TEXTURE_2D_INDEX; } 2241b8e80941Smrg#line 2242 "program_parse.tab.c" /* yacc.c:1645 */ 2242848b8605Smrg break; 2243848b8605Smrg 2244b8e80941Smrg case 41: 2245b8e80941Smrg#line 531 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2246848b8605Smrg { (yyval.integer) = -TEXTURE_RECT_INDEX; } 2247b8e80941Smrg#line 2248 "program_parse.tab.c" /* yacc.c:1645 */ 2248848b8605Smrg break; 2249848b8605Smrg 2250b8e80941Smrg case 42: 2251b8e80941Smrg#line 532 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2252848b8605Smrg { (yyval.integer) = TEXTURE_1D_ARRAY_INDEX; } 2253b8e80941Smrg#line 2254 "program_parse.tab.c" /* yacc.c:1645 */ 2254848b8605Smrg break; 2255848b8605Smrg 2256b8e80941Smrg case 43: 2257b8e80941Smrg#line 533 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2258848b8605Smrg { (yyval.integer) = TEXTURE_2D_ARRAY_INDEX; } 2259b8e80941Smrg#line 2260 "program_parse.tab.c" /* yacc.c:1645 */ 2260848b8605Smrg break; 2261848b8605Smrg 2262b8e80941Smrg case 44: 2263b8e80941Smrg#line 534 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2264848b8605Smrg { (yyval.integer) = -TEXTURE_1D_ARRAY_INDEX; } 2265b8e80941Smrg#line 2266 "program_parse.tab.c" /* yacc.c:1645 */ 2266848b8605Smrg break; 2267848b8605Smrg 2268b8e80941Smrg case 45: 2269b8e80941Smrg#line 535 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2270848b8605Smrg { (yyval.integer) = -TEXTURE_2D_ARRAY_INDEX; } 2271b8e80941Smrg#line 2272 "program_parse.tab.c" /* yacc.c:1645 */ 2272848b8605Smrg break; 2273848b8605Smrg 2274b8e80941Smrg case 46: 2275b8e80941Smrg#line 539 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2276848b8605Smrg { 2277848b8605Smrg /* FIXME: Is this correct? Should the extenedSwizzle be applied 2278848b8605Smrg * FIXME: to the existing swizzle? 2279848b8605Smrg */ 2280b8e80941Smrg (yyvsp[-2].src_reg).Base.Swizzle = (yyvsp[0].swiz_mask).swizzle; 2281b8e80941Smrg (yyvsp[-2].src_reg).Base.Negate = (yyvsp[0].swiz_mask).mask; 2282848b8605Smrg 2283b8e80941Smrg (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[-5].temp_inst), & (yyvsp[-4].dst_reg), & (yyvsp[-2].src_reg), NULL, NULL); 2284848b8605Smrg } 2285b8e80941Smrg#line 2286 "program_parse.tab.c" /* yacc.c:1645 */ 2286848b8605Smrg break; 2287848b8605Smrg 2288b8e80941Smrg case 47: 2289b8e80941Smrg#line 551 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2290848b8605Smrg { 2291b8e80941Smrg (yyval.src_reg) = (yyvsp[0].src_reg); 2292848b8605Smrg 2293b8e80941Smrg if ((yyvsp[-1].negate)) { 2294848b8605Smrg (yyval.src_reg).Base.Negate = ~(yyval.src_reg).Base.Negate; 2295848b8605Smrg } 2296848b8605Smrg } 2297b8e80941Smrg#line 2298 "program_parse.tab.c" /* yacc.c:1645 */ 2298848b8605Smrg break; 2299848b8605Smrg 2300b8e80941Smrg case 48: 2301b8e80941Smrg#line 561 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2302848b8605Smrg { 2303b8e80941Smrg (yyval.src_reg) = (yyvsp[-1].src_reg); 2304848b8605Smrg 2305b8e80941Smrg (yyval.src_reg).Base.Swizzle = _mesa_combine_swizzles((yyval.src_reg).Base.Swizzle, 2306b8e80941Smrg (yyvsp[0].swiz_mask).swizzle); 2307848b8605Smrg } 2308b8e80941Smrg#line 2309 "program_parse.tab.c" /* yacc.c:1645 */ 2309848b8605Smrg break; 2310848b8605Smrg 2311b8e80941Smrg case 49: 2312b8e80941Smrg#line 570 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2313848b8605Smrg { 2314b8e80941Smrg (yyval.src_reg) = (yyvsp[-1].src_reg); 2315b8e80941Smrg 2316b8e80941Smrg if ((yyvsp[-2].negate)) { 2317b8e80941Smrg (yyval.src_reg).Base.Negate = ~(yyval.src_reg).Base.Negate; 2318b8e80941Smrg } 2319848b8605Smrg 2320848b8605Smrg (yyval.src_reg).Base.Swizzle = _mesa_combine_swizzles((yyval.src_reg).Base.Swizzle, 2321b8e80941Smrg (yyvsp[0].swiz_mask).swizzle); 2322848b8605Smrg } 2323b8e80941Smrg#line 2324 "program_parse.tab.c" /* yacc.c:1645 */ 2324848b8605Smrg break; 2325848b8605Smrg 2326b8e80941Smrg case 50: 2327b8e80941Smrg#line 583 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2328848b8605Smrg { 2329b8e80941Smrg (yyval.dst_reg) = (yyvsp[-1].dst_reg); 2330b8e80941Smrg (yyval.dst_reg).WriteMask = (yyvsp[0].swiz_mask).mask; 2331848b8605Smrg 2332848b8605Smrg if ((yyval.dst_reg).File == PROGRAM_OUTPUT) { 2333848b8605Smrg /* Technically speaking, this should check that it is in 2334848b8605Smrg * vertex program mode. However, PositionInvariant can never be 2335848b8605Smrg * set in fragment program mode, so it is somewhat irrelevant. 2336848b8605Smrg */ 2337848b8605Smrg if (state->option.PositionInvariant 2338848b8605Smrg && ((yyval.dst_reg).Index == VARYING_SLOT_POS)) { 2339b8e80941Smrg yyerror(& (yylsp[-1]), state, "position-invariant programs cannot " 2340848b8605Smrg "write position"); 2341848b8605Smrg YYERROR; 2342848b8605Smrg } 2343848b8605Smrg 2344b8e80941Smrg state->prog->info.outputs_written |= BITFIELD64_BIT((yyval.dst_reg).Index); 2345848b8605Smrg } 2346848b8605Smrg } 2347b8e80941Smrg#line 2348 "program_parse.tab.c" /* yacc.c:1645 */ 2348848b8605Smrg break; 2349848b8605Smrg 2350b8e80941Smrg case 51: 2351b8e80941Smrg#line 605 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2352848b8605Smrg { 2353848b8605Smrg set_dst_reg(& (yyval.dst_reg), PROGRAM_ADDRESS, 0); 2354b8e80941Smrg (yyval.dst_reg).WriteMask = (yyvsp[0].swiz_mask).mask; 2355848b8605Smrg } 2356b8e80941Smrg#line 2357 "program_parse.tab.c" /* yacc.c:1645 */ 2357848b8605Smrg break; 2358848b8605Smrg 2359b8e80941Smrg case 52: 2360b8e80941Smrg#line 612 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2361848b8605Smrg { 2362848b8605Smrg const unsigned xyzw_valid = 2363b8e80941Smrg ((yyvsp[-6].ext_swizzle).xyzw_valid << 0) 2364b8e80941Smrg | ((yyvsp[-4].ext_swizzle).xyzw_valid << 1) 2365b8e80941Smrg | ((yyvsp[-2].ext_swizzle).xyzw_valid << 2) 2366b8e80941Smrg | ((yyvsp[0].ext_swizzle).xyzw_valid << 3); 2367848b8605Smrg const unsigned rgba_valid = 2368b8e80941Smrg ((yyvsp[-6].ext_swizzle).rgba_valid << 0) 2369b8e80941Smrg | ((yyvsp[-4].ext_swizzle).rgba_valid << 1) 2370b8e80941Smrg | ((yyvsp[-2].ext_swizzle).rgba_valid << 2) 2371b8e80941Smrg | ((yyvsp[0].ext_swizzle).rgba_valid << 3); 2372848b8605Smrg 2373848b8605Smrg /* All of the swizzle components have to be valid in either RGBA 2374848b8605Smrg * or XYZW. Note that 0 and 1 are valid in both, so both masks 2375848b8605Smrg * can have some bits set. 2376848b8605Smrg * 2377848b8605Smrg * We somewhat deviate from the spec here. It would be really hard 2378848b8605Smrg * to figure out which component is the error, and there probably 2379848b8605Smrg * isn't a lot of benefit. 2380848b8605Smrg */ 2381848b8605Smrg if ((rgba_valid != 0x0f) && (xyzw_valid != 0x0f)) { 2382b8e80941Smrg yyerror(& (yylsp[-6]), state, "cannot combine RGBA and XYZW swizzle " 2383848b8605Smrg "components"); 2384848b8605Smrg YYERROR; 2385848b8605Smrg } 2386848b8605Smrg 2387b8e80941Smrg (yyval.swiz_mask).swizzle = MAKE_SWIZZLE4((yyvsp[-6].ext_swizzle).swz, (yyvsp[-4].ext_swizzle).swz, (yyvsp[-2].ext_swizzle).swz, (yyvsp[0].ext_swizzle).swz); 2388b8e80941Smrg (yyval.swiz_mask).mask = ((yyvsp[-6].ext_swizzle).negate) | ((yyvsp[-4].ext_swizzle).negate << 1) | ((yyvsp[-2].ext_swizzle).negate << 2) 2389b8e80941Smrg | ((yyvsp[0].ext_swizzle).negate << 3); 2390848b8605Smrg } 2391b8e80941Smrg#line 2392 "program_parse.tab.c" /* yacc.c:1645 */ 2392848b8605Smrg break; 2393848b8605Smrg 2394b8e80941Smrg case 53: 2395b8e80941Smrg#line 645 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2396848b8605Smrg { 2397b8e80941Smrg (yyval.ext_swizzle) = (yyvsp[0].ext_swizzle); 2398b8e80941Smrg (yyval.ext_swizzle).negate = ((yyvsp[-1].negate)) ? 1 : 0; 2399848b8605Smrg } 2400b8e80941Smrg#line 2401 "program_parse.tab.c" /* yacc.c:1645 */ 2401848b8605Smrg break; 2402848b8605Smrg 2403b8e80941Smrg case 54: 2404b8e80941Smrg#line 652 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2405848b8605Smrg { 2406b8e80941Smrg if (((yyvsp[0].integer) != 0) && ((yyvsp[0].integer) != 1)) { 2407b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid extended swizzle selector"); 2408848b8605Smrg YYERROR; 2409848b8605Smrg } 2410848b8605Smrg 2411b8e80941Smrg (yyval.ext_swizzle).swz = ((yyvsp[0].integer) == 0) ? SWIZZLE_ZERO : SWIZZLE_ONE; 2412848b8605Smrg (yyval.ext_swizzle).negate = 0; 2413848b8605Smrg 2414848b8605Smrg /* 0 and 1 are valid for both RGBA swizzle names and XYZW 2415848b8605Smrg * swizzle names. 2416848b8605Smrg */ 2417848b8605Smrg (yyval.ext_swizzle).xyzw_valid = 1; 2418848b8605Smrg (yyval.ext_swizzle).rgba_valid = 1; 2419848b8605Smrg } 2420b8e80941Smrg#line 2421 "program_parse.tab.c" /* yacc.c:1645 */ 2421848b8605Smrg break; 2422848b8605Smrg 2423b8e80941Smrg case 55: 2424b8e80941Smrg#line 668 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2425848b8605Smrg { 2426848b8605Smrg char s; 2427848b8605Smrg 2428b8e80941Smrg if (strlen((yyvsp[0].string)) > 1) { 2429b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid extended swizzle selector"); 2430848b8605Smrg YYERROR; 2431848b8605Smrg } 2432848b8605Smrg 2433b8e80941Smrg s = (yyvsp[0].string)[0]; 2434b8e80941Smrg free((yyvsp[0].string)); 2435848b8605Smrg 2436848b8605Smrg (yyval.ext_swizzle).rgba_valid = 0; 2437848b8605Smrg (yyval.ext_swizzle).xyzw_valid = 0; 2438848b8605Smrg (yyval.ext_swizzle).negate = 0; 2439848b8605Smrg 2440848b8605Smrg switch (s) { 2441848b8605Smrg case 'x': 2442848b8605Smrg (yyval.ext_swizzle).swz = SWIZZLE_X; 2443848b8605Smrg (yyval.ext_swizzle).xyzw_valid = 1; 2444848b8605Smrg break; 2445848b8605Smrg case 'y': 2446848b8605Smrg (yyval.ext_swizzle).swz = SWIZZLE_Y; 2447848b8605Smrg (yyval.ext_swizzle).xyzw_valid = 1; 2448848b8605Smrg break; 2449848b8605Smrg case 'z': 2450848b8605Smrg (yyval.ext_swizzle).swz = SWIZZLE_Z; 2451848b8605Smrg (yyval.ext_swizzle).xyzw_valid = 1; 2452848b8605Smrg break; 2453848b8605Smrg case 'w': 2454848b8605Smrg (yyval.ext_swizzle).swz = SWIZZLE_W; 2455848b8605Smrg (yyval.ext_swizzle).xyzw_valid = 1; 2456848b8605Smrg break; 2457848b8605Smrg 2458848b8605Smrg case 'r': 2459848b8605Smrg (yyval.ext_swizzle).swz = SWIZZLE_X; 2460848b8605Smrg (yyval.ext_swizzle).rgba_valid = 1; 2461848b8605Smrg break; 2462848b8605Smrg case 'g': 2463848b8605Smrg (yyval.ext_swizzle).swz = SWIZZLE_Y; 2464848b8605Smrg (yyval.ext_swizzle).rgba_valid = 1; 2465848b8605Smrg break; 2466848b8605Smrg case 'b': 2467848b8605Smrg (yyval.ext_swizzle).swz = SWIZZLE_Z; 2468848b8605Smrg (yyval.ext_swizzle).rgba_valid = 1; 2469848b8605Smrg break; 2470848b8605Smrg case 'a': 2471848b8605Smrg (yyval.ext_swizzle).swz = SWIZZLE_W; 2472848b8605Smrg (yyval.ext_swizzle).rgba_valid = 1; 2473848b8605Smrg break; 2474848b8605Smrg 2475848b8605Smrg default: 2476b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid extended swizzle selector"); 2477848b8605Smrg YYERROR; 2478848b8605Smrg break; 2479848b8605Smrg } 2480848b8605Smrg } 2481b8e80941Smrg#line 2482 "program_parse.tab.c" /* yacc.c:1645 */ 2482848b8605Smrg break; 2483848b8605Smrg 2484b8e80941Smrg case 56: 2485b8e80941Smrg#line 727 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2486848b8605Smrg { 2487848b8605Smrg struct asm_symbol *const s = (struct asm_symbol *) 2488b8e80941Smrg _mesa_symbol_table_find_symbol(state->st, (yyvsp[0].string)); 2489848b8605Smrg 2490b8e80941Smrg free((yyvsp[0].string)); 2491848b8605Smrg 2492848b8605Smrg if (s == NULL) { 2493b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid operand variable"); 2494848b8605Smrg YYERROR; 2495848b8605Smrg } else if ((s->type != at_param) && (s->type != at_temp) 2496848b8605Smrg && (s->type != at_attrib)) { 2497b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid operand variable"); 2498848b8605Smrg YYERROR; 2499848b8605Smrg } else if ((s->type == at_param) && s->param_is_array) { 2500b8e80941Smrg yyerror(& (yylsp[0]), state, "non-array access to array PARAM"); 2501848b8605Smrg YYERROR; 2502848b8605Smrg } 2503848b8605Smrg 2504848b8605Smrg init_src_reg(& (yyval.src_reg)); 2505848b8605Smrg switch (s->type) { 2506848b8605Smrg case at_temp: 2507848b8605Smrg set_src_reg(& (yyval.src_reg), PROGRAM_TEMPORARY, s->temp_binding); 2508848b8605Smrg break; 2509848b8605Smrg case at_param: 2510848b8605Smrg set_src_reg_swz(& (yyval.src_reg), s->param_binding_type, 2511848b8605Smrg s->param_binding_begin, 2512848b8605Smrg s->param_binding_swizzle); 2513848b8605Smrg break; 2514848b8605Smrg case at_attrib: 2515848b8605Smrg set_src_reg(& (yyval.src_reg), PROGRAM_INPUT, s->attrib_binding); 2516b8e80941Smrg state->prog->info.inputs_read |= BITFIELD64_BIT((yyval.src_reg).Base.Index); 2517848b8605Smrg 2518b8e80941Smrg if (!validate_inputs(& (yylsp[0]), state)) { 2519848b8605Smrg YYERROR; 2520848b8605Smrg } 2521848b8605Smrg break; 2522848b8605Smrg 2523848b8605Smrg default: 2524848b8605Smrg YYERROR; 2525848b8605Smrg break; 2526848b8605Smrg } 2527848b8605Smrg } 2528b8e80941Smrg#line 2529 "program_parse.tab.c" /* yacc.c:1645 */ 2529848b8605Smrg break; 2530848b8605Smrg 2531b8e80941Smrg case 57: 2532b8e80941Smrg#line 770 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2533848b8605Smrg { 2534b8e80941Smrg set_src_reg(& (yyval.src_reg), PROGRAM_INPUT, (yyvsp[0].attrib)); 2535b8e80941Smrg state->prog->info.inputs_read |= BITFIELD64_BIT((yyval.src_reg).Base.Index); 2536848b8605Smrg 2537b8e80941Smrg if (!validate_inputs(& (yylsp[0]), state)) { 2538848b8605Smrg YYERROR; 2539848b8605Smrg } 2540848b8605Smrg } 2541b8e80941Smrg#line 2542 "program_parse.tab.c" /* yacc.c:1645 */ 2542848b8605Smrg break; 2543848b8605Smrg 2544b8e80941Smrg case 58: 2545b8e80941Smrg#line 779 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2546848b8605Smrg { 2547b8e80941Smrg if (! (yyvsp[-1].src_reg).Base.RelAddr 2548b8e80941Smrg && ((unsigned) (yyvsp[-1].src_reg).Base.Index >= (yyvsp[-3].sym)->param_binding_length)) { 2549b8e80941Smrg yyerror(& (yylsp[-1]), state, "out of bounds array access"); 2550848b8605Smrg YYERROR; 2551848b8605Smrg } 2552848b8605Smrg 2553848b8605Smrg init_src_reg(& (yyval.src_reg)); 2554b8e80941Smrg (yyval.src_reg).Base.File = (yyvsp[-3].sym)->param_binding_type; 2555848b8605Smrg 2556b8e80941Smrg if ((yyvsp[-1].src_reg).Base.RelAddr) { 2557b8e80941Smrg state->prog->arb.IndirectRegisterFiles |= (1 << (yyval.src_reg).Base.File); 2558b8e80941Smrg (yyvsp[-3].sym)->param_accessed_indirectly = 1; 2559848b8605Smrg 2560848b8605Smrg (yyval.src_reg).Base.RelAddr = 1; 2561b8e80941Smrg (yyval.src_reg).Base.Index = (yyvsp[-1].src_reg).Base.Index; 2562b8e80941Smrg (yyval.src_reg).Symbol = (yyvsp[-3].sym); 2563848b8605Smrg } else { 2564b8e80941Smrg (yyval.src_reg).Base.Index = (yyvsp[-3].sym)->param_binding_begin + (yyvsp[-1].src_reg).Base.Index; 2565848b8605Smrg } 2566848b8605Smrg } 2567b8e80941Smrg#line 2568 "program_parse.tab.c" /* yacc.c:1645 */ 2568848b8605Smrg break; 2569848b8605Smrg 2570b8e80941Smrg case 59: 2571b8e80941Smrg#line 801 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2572848b8605Smrg { 2573b8e80941Smrg gl_register_file file = ((yyvsp[0].temp_sym).name != NULL) 2574b8e80941Smrg ? (yyvsp[0].temp_sym).param_binding_type 2575848b8605Smrg : PROGRAM_CONSTANT; 2576b8e80941Smrg set_src_reg_swz(& (yyval.src_reg), file, (yyvsp[0].temp_sym).param_binding_begin, 2577b8e80941Smrg (yyvsp[0].temp_sym).param_binding_swizzle); 2578848b8605Smrg } 2579b8e80941Smrg#line 2580 "program_parse.tab.c" /* yacc.c:1645 */ 2580848b8605Smrg break; 2581848b8605Smrg 2582b8e80941Smrg case 60: 2583b8e80941Smrg#line 811 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2584848b8605Smrg { 2585b8e80941Smrg set_dst_reg(& (yyval.dst_reg), PROGRAM_OUTPUT, (yyvsp[0].result)); 2586848b8605Smrg } 2587b8e80941Smrg#line 2588 "program_parse.tab.c" /* yacc.c:1645 */ 2588848b8605Smrg break; 2589848b8605Smrg 2590b8e80941Smrg case 61: 2591b8e80941Smrg#line 815 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2592848b8605Smrg { 2593848b8605Smrg struct asm_symbol *const s = (struct asm_symbol *) 2594b8e80941Smrg _mesa_symbol_table_find_symbol(state->st, (yyvsp[0].string)); 2595848b8605Smrg 2596b8e80941Smrg free((yyvsp[0].string)); 2597848b8605Smrg 2598848b8605Smrg if (s == NULL) { 2599b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid operand variable"); 2600848b8605Smrg YYERROR; 2601848b8605Smrg } else if ((s->type != at_output) && (s->type != at_temp)) { 2602b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid operand variable"); 2603848b8605Smrg YYERROR; 2604848b8605Smrg } 2605848b8605Smrg 2606848b8605Smrg switch (s->type) { 2607848b8605Smrg case at_temp: 2608848b8605Smrg set_dst_reg(& (yyval.dst_reg), PROGRAM_TEMPORARY, s->temp_binding); 2609848b8605Smrg break; 2610848b8605Smrg case at_output: 2611848b8605Smrg set_dst_reg(& (yyval.dst_reg), PROGRAM_OUTPUT, s->output_binding); 2612848b8605Smrg break; 2613848b8605Smrg default: 2614848b8605Smrg set_dst_reg(& (yyval.dst_reg), s->param_binding_type, s->param_binding_begin); 2615848b8605Smrg break; 2616848b8605Smrg } 2617848b8605Smrg } 2618b8e80941Smrg#line 2619 "program_parse.tab.c" /* yacc.c:1645 */ 2619848b8605Smrg break; 2620848b8605Smrg 2621b8e80941Smrg case 62: 2622b8e80941Smrg#line 844 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2623848b8605Smrg { 2624848b8605Smrg struct asm_symbol *const s = (struct asm_symbol *) 2625b8e80941Smrg _mesa_symbol_table_find_symbol(state->st, (yyvsp[0].string)); 2626848b8605Smrg 2627b8e80941Smrg free((yyvsp[0].string)); 2628848b8605Smrg 2629848b8605Smrg if (s == NULL) { 2630b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid operand variable"); 2631848b8605Smrg YYERROR; 2632848b8605Smrg } else if ((s->type != at_param) || !s->param_is_array) { 2633b8e80941Smrg yyerror(& (yylsp[0]), state, "array access to non-PARAM variable"); 2634848b8605Smrg YYERROR; 2635848b8605Smrg } else { 2636848b8605Smrg (yyval.sym) = s; 2637848b8605Smrg } 2638848b8605Smrg } 2639b8e80941Smrg#line 2640 "program_parse.tab.c" /* yacc.c:1645 */ 2640848b8605Smrg break; 2641848b8605Smrg 2642b8e80941Smrg case 65: 2643b8e80941Smrg#line 865 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2644848b8605Smrg { 2645848b8605Smrg init_src_reg(& (yyval.src_reg)); 2646b8e80941Smrg (yyval.src_reg).Base.Index = (yyvsp[0].integer); 2647848b8605Smrg } 2648b8e80941Smrg#line 2649 "program_parse.tab.c" /* yacc.c:1645 */ 2649848b8605Smrg break; 2650848b8605Smrg 2651b8e80941Smrg case 66: 2652b8e80941Smrg#line 872 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2653848b8605Smrg { 2654848b8605Smrg /* FINISHME: Add support for multiple address registers. 2655848b8605Smrg */ 2656848b8605Smrg /* FINISHME: Add support for 4-component address registers. 2657848b8605Smrg */ 2658848b8605Smrg init_src_reg(& (yyval.src_reg)); 2659848b8605Smrg (yyval.src_reg).Base.RelAddr = 1; 2660b8e80941Smrg (yyval.src_reg).Base.Index = (yyvsp[0].integer); 2661848b8605Smrg } 2662b8e80941Smrg#line 2663 "program_parse.tab.c" /* yacc.c:1645 */ 2663848b8605Smrg break; 2664848b8605Smrg 2665b8e80941Smrg case 67: 2666b8e80941Smrg#line 883 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2667848b8605Smrg { (yyval.integer) = 0; } 2668b8e80941Smrg#line 2669 "program_parse.tab.c" /* yacc.c:1645 */ 2669848b8605Smrg break; 2670848b8605Smrg 2671b8e80941Smrg case 68: 2672b8e80941Smrg#line 884 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2673b8e80941Smrg { (yyval.integer) = (yyvsp[0].integer); } 2674b8e80941Smrg#line 2675 "program_parse.tab.c" /* yacc.c:1645 */ 2675848b8605Smrg break; 2676848b8605Smrg 2677b8e80941Smrg case 69: 2678b8e80941Smrg#line 885 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2679b8e80941Smrg { (yyval.integer) = -(yyvsp[0].integer); } 2680b8e80941Smrg#line 2681 "program_parse.tab.c" /* yacc.c:1645 */ 2681848b8605Smrg break; 2682848b8605Smrg 2683b8e80941Smrg case 70: 2684b8e80941Smrg#line 889 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2685848b8605Smrg { 2686b8e80941Smrg if (((yyvsp[0].integer) < 0) || ((yyvsp[0].integer) > (state->limits->MaxAddressOffset - 1))) { 2687848b8605Smrg char s[100]; 2688848b8605Smrg _mesa_snprintf(s, sizeof(s), 2689b8e80941Smrg "relative address offset too large (%d)", (yyvsp[0].integer)); 2690b8e80941Smrg yyerror(& (yylsp[0]), state, s); 2691848b8605Smrg YYERROR; 2692848b8605Smrg } else { 2693b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 2694848b8605Smrg } 2695848b8605Smrg } 2696b8e80941Smrg#line 2697 "program_parse.tab.c" /* yacc.c:1645 */ 2697848b8605Smrg break; 2698848b8605Smrg 2699b8e80941Smrg case 71: 2700b8e80941Smrg#line 903 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2701848b8605Smrg { 2702b8e80941Smrg if (((yyvsp[0].integer) < 0) || ((yyvsp[0].integer) > state->limits->MaxAddressOffset)) { 2703848b8605Smrg char s[100]; 2704848b8605Smrg _mesa_snprintf(s, sizeof(s), 2705b8e80941Smrg "relative address offset too large (%d)", (yyvsp[0].integer)); 2706b8e80941Smrg yyerror(& (yylsp[0]), state, s); 2707848b8605Smrg YYERROR; 2708848b8605Smrg } else { 2709b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 2710848b8605Smrg } 2711848b8605Smrg } 2712b8e80941Smrg#line 2713 "program_parse.tab.c" /* yacc.c:1645 */ 2713848b8605Smrg break; 2714848b8605Smrg 2715b8e80941Smrg case 72: 2716b8e80941Smrg#line 917 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2717848b8605Smrg { 2718848b8605Smrg struct asm_symbol *const s = (struct asm_symbol *) 2719b8e80941Smrg _mesa_symbol_table_find_symbol(state->st, (yyvsp[0].string)); 2720848b8605Smrg 2721b8e80941Smrg free((yyvsp[0].string)); 2722848b8605Smrg 2723848b8605Smrg if (s == NULL) { 2724b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid array member"); 2725848b8605Smrg YYERROR; 2726848b8605Smrg } else if (s->type != at_address) { 2727b8e80941Smrg yyerror(& (yylsp[0]), state, 2728848b8605Smrg "invalid variable for indexed array access"); 2729848b8605Smrg YYERROR; 2730848b8605Smrg } else { 2731848b8605Smrg (yyval.sym) = s; 2732848b8605Smrg } 2733848b8605Smrg } 2734b8e80941Smrg#line 2735 "program_parse.tab.c" /* yacc.c:1645 */ 2735848b8605Smrg break; 2736848b8605Smrg 2737b8e80941Smrg case 73: 2738b8e80941Smrg#line 937 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2739848b8605Smrg { 2740b8e80941Smrg if ((yyvsp[0].swiz_mask).mask != WRITEMASK_X) { 2741b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid address component selector"); 2742848b8605Smrg YYERROR; 2743848b8605Smrg } else { 2744b8e80941Smrg (yyval.swiz_mask) = (yyvsp[0].swiz_mask); 2745848b8605Smrg } 2746848b8605Smrg } 2747b8e80941Smrg#line 2748 "program_parse.tab.c" /* yacc.c:1645 */ 2748848b8605Smrg break; 2749848b8605Smrg 2750b8e80941Smrg case 74: 2751b8e80941Smrg#line 948 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2752848b8605Smrg { 2753b8e80941Smrg if ((yyvsp[0].swiz_mask).mask != WRITEMASK_X) { 2754b8e80941Smrg yyerror(& (yylsp[0]), state, 2755848b8605Smrg "address register write mask must be \".x\""); 2756848b8605Smrg YYERROR; 2757848b8605Smrg } else { 2758b8e80941Smrg (yyval.swiz_mask) = (yyvsp[0].swiz_mask); 2759848b8605Smrg } 2760848b8605Smrg } 2761b8e80941Smrg#line 2762 "program_parse.tab.c" /* yacc.c:1645 */ 2762848b8605Smrg break; 2763848b8605Smrg 2764b8e80941Smrg case 79: 2765b8e80941Smrg#line 964 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2766848b8605Smrg { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; } 2767b8e80941Smrg#line 2768 "program_parse.tab.c" /* yacc.c:1645 */ 2768848b8605Smrg break; 2769848b8605Smrg 2770b8e80941Smrg case 84: 2771b8e80941Smrg#line 968 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2772848b8605Smrg { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; } 2773b8e80941Smrg#line 2774 "program_parse.tab.c" /* yacc.c:1645 */ 2774848b8605Smrg break; 2775848b8605Smrg 2776848b8605Smrg case 91: 2777b8e80941Smrg#line 980 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2778848b8605Smrg { 2779848b8605Smrg struct asm_symbol *const s = 2780b8e80941Smrg declare_variable(state, (yyvsp[-2].string), at_attrib, & (yylsp[-2])); 2781848b8605Smrg 2782848b8605Smrg if (s == NULL) { 2783b8e80941Smrg free((yyvsp[-2].string)); 2784848b8605Smrg YYERROR; 2785848b8605Smrg } else { 2786b8e80941Smrg s->attrib_binding = (yyvsp[0].attrib); 2787848b8605Smrg state->InputsBound |= BITFIELD64_BIT(s->attrib_binding); 2788848b8605Smrg 2789b8e80941Smrg if (!validate_inputs(& (yylsp[0]), state)) { 2790848b8605Smrg YYERROR; 2791848b8605Smrg } 2792848b8605Smrg } 2793848b8605Smrg } 2794b8e80941Smrg#line 2795 "program_parse.tab.c" /* yacc.c:1645 */ 2795848b8605Smrg break; 2796848b8605Smrg 2797b8e80941Smrg case 92: 2798b8e80941Smrg#line 999 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2799848b8605Smrg { 2800b8e80941Smrg (yyval.attrib) = (yyvsp[0].attrib); 2801848b8605Smrg } 2802b8e80941Smrg#line 2803 "program_parse.tab.c" /* yacc.c:1645 */ 2803848b8605Smrg break; 2804848b8605Smrg 2805b8e80941Smrg case 93: 2806b8e80941Smrg#line 1003 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2807848b8605Smrg { 2808b8e80941Smrg (yyval.attrib) = (yyvsp[0].attrib); 2809848b8605Smrg } 2810b8e80941Smrg#line 2811 "program_parse.tab.c" /* yacc.c:1645 */ 2811848b8605Smrg break; 2812848b8605Smrg 2813b8e80941Smrg case 94: 2814b8e80941Smrg#line 1009 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2815848b8605Smrg { 2816848b8605Smrg (yyval.attrib) = VERT_ATTRIB_POS; 2817848b8605Smrg } 2818b8e80941Smrg#line 2819 "program_parse.tab.c" /* yacc.c:1645 */ 2819848b8605Smrg break; 2820848b8605Smrg 2821b8e80941Smrg case 95: 2822b8e80941Smrg#line 1013 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2823848b8605Smrg { 2824848b8605Smrg (yyval.attrib) = VERT_ATTRIB_NORMAL; 2825848b8605Smrg } 2826b8e80941Smrg#line 2827 "program_parse.tab.c" /* yacc.c:1645 */ 2827848b8605Smrg break; 2828848b8605Smrg 2829b8e80941Smrg case 96: 2830b8e80941Smrg#line 1017 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2831848b8605Smrg { 2832b8e80941Smrg (yyval.attrib) = VERT_ATTRIB_COLOR0 + (yyvsp[0].integer); 2833848b8605Smrg } 2834b8e80941Smrg#line 2835 "program_parse.tab.c" /* yacc.c:1645 */ 2835848b8605Smrg break; 2836848b8605Smrg 2837b8e80941Smrg case 97: 2838b8e80941Smrg#line 1021 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2839848b8605Smrg { 2840848b8605Smrg (yyval.attrib) = VERT_ATTRIB_FOG; 2841848b8605Smrg } 2842b8e80941Smrg#line 2843 "program_parse.tab.c" /* yacc.c:1645 */ 2843848b8605Smrg break; 2844848b8605Smrg 2845b8e80941Smrg case 98: 2846b8e80941Smrg#line 1025 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2847848b8605Smrg { 2848b8e80941Smrg (yyval.attrib) = VERT_ATTRIB_TEX0 + (yyvsp[0].integer); 2849848b8605Smrg } 2850b8e80941Smrg#line 2851 "program_parse.tab.c" /* yacc.c:1645 */ 2851848b8605Smrg break; 2852848b8605Smrg 2853b8e80941Smrg case 99: 2854b8e80941Smrg#line 1029 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2855848b8605Smrg { 2856b8e80941Smrg yyerror(& (yylsp[-3]), state, "GL_ARB_matrix_palette not supported"); 2857848b8605Smrg YYERROR; 2858848b8605Smrg } 2859b8e80941Smrg#line 2860 "program_parse.tab.c" /* yacc.c:1645 */ 2860848b8605Smrg break; 2861848b8605Smrg 2862b8e80941Smrg case 100: 2863b8e80941Smrg#line 1034 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2864848b8605Smrg { 2865b8e80941Smrg (yyval.attrib) = VERT_ATTRIB_GENERIC0 + (yyvsp[-1].integer); 2866848b8605Smrg } 2867b8e80941Smrg#line 2868 "program_parse.tab.c" /* yacc.c:1645 */ 2868848b8605Smrg break; 2869848b8605Smrg 2870b8e80941Smrg case 101: 2871b8e80941Smrg#line 1040 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2872848b8605Smrg { 2873b8e80941Smrg if ((unsigned) (yyvsp[0].integer) >= state->limits->MaxAttribs) { 2874b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid vertex attribute reference"); 2875848b8605Smrg YYERROR; 2876848b8605Smrg } 2877848b8605Smrg 2878b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 2879848b8605Smrg } 2880b8e80941Smrg#line 2881 "program_parse.tab.c" /* yacc.c:1645 */ 2881848b8605Smrg break; 2882848b8605Smrg 2883b8e80941Smrg case 103: 2884b8e80941Smrg#line 1053 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2885848b8605Smrg { 2886848b8605Smrg (yyval.attrib) = VARYING_SLOT_POS; 2887848b8605Smrg } 2888b8e80941Smrg#line 2889 "program_parse.tab.c" /* yacc.c:1645 */ 2889848b8605Smrg break; 2890848b8605Smrg 2891b8e80941Smrg case 104: 2892b8e80941Smrg#line 1057 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2893848b8605Smrg { 2894b8e80941Smrg (yyval.attrib) = VARYING_SLOT_COL0 + (yyvsp[0].integer); 2895848b8605Smrg } 2896b8e80941Smrg#line 2897 "program_parse.tab.c" /* yacc.c:1645 */ 2897848b8605Smrg break; 2898848b8605Smrg 2899b8e80941Smrg case 105: 2900b8e80941Smrg#line 1061 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2901848b8605Smrg { 2902848b8605Smrg (yyval.attrib) = VARYING_SLOT_FOGC; 2903848b8605Smrg } 2904b8e80941Smrg#line 2905 "program_parse.tab.c" /* yacc.c:1645 */ 2905848b8605Smrg break; 2906848b8605Smrg 2907b8e80941Smrg case 106: 2908b8e80941Smrg#line 1065 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2909848b8605Smrg { 2910b8e80941Smrg (yyval.attrib) = VARYING_SLOT_TEX0 + (yyvsp[0].integer); 2911848b8605Smrg } 2912b8e80941Smrg#line 2913 "program_parse.tab.c" /* yacc.c:1645 */ 2913848b8605Smrg break; 2914848b8605Smrg 2915b8e80941Smrg case 109: 2916b8e80941Smrg#line 1073 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2917848b8605Smrg { 2918848b8605Smrg struct asm_symbol *const s = 2919b8e80941Smrg declare_variable(state, (yyvsp[-1].string), at_param, & (yylsp[-1])); 2920848b8605Smrg 2921848b8605Smrg if (s == NULL) { 2922b8e80941Smrg free((yyvsp[-1].string)); 2923848b8605Smrg YYERROR; 2924848b8605Smrg } else { 2925b8e80941Smrg s->param_binding_type = (yyvsp[0].temp_sym).param_binding_type; 2926b8e80941Smrg s->param_binding_begin = (yyvsp[0].temp_sym).param_binding_begin; 2927b8e80941Smrg s->param_binding_length = (yyvsp[0].temp_sym).param_binding_length; 2928b8e80941Smrg s->param_binding_swizzle = (yyvsp[0].temp_sym).param_binding_swizzle; 2929848b8605Smrg s->param_is_array = 0; 2930848b8605Smrg } 2931848b8605Smrg } 2932b8e80941Smrg#line 2933 "program_parse.tab.c" /* yacc.c:1645 */ 2933848b8605Smrg break; 2934848b8605Smrg 2935b8e80941Smrg case 110: 2936b8e80941Smrg#line 1091 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2937848b8605Smrg { 2938b8e80941Smrg if (((yyvsp[-2].integer) != 0) && ((unsigned) (yyvsp[-2].integer) != (yyvsp[0].temp_sym).param_binding_length)) { 2939b8e80941Smrg free((yyvsp[-4].string)); 2940b8e80941Smrg yyerror(& (yylsp[-2]), state, 2941848b8605Smrg "parameter array size and number of bindings must match"); 2942848b8605Smrg YYERROR; 2943848b8605Smrg } else { 2944848b8605Smrg struct asm_symbol *const s = 2945b8e80941Smrg declare_variable(state, (yyvsp[-4].string), (yyvsp[0].temp_sym).type, & (yylsp[-4])); 2946848b8605Smrg 2947848b8605Smrg if (s == NULL) { 2948b8e80941Smrg free((yyvsp[-4].string)); 2949848b8605Smrg YYERROR; 2950848b8605Smrg } else { 2951b8e80941Smrg s->param_binding_type = (yyvsp[0].temp_sym).param_binding_type; 2952b8e80941Smrg s->param_binding_begin = (yyvsp[0].temp_sym).param_binding_begin; 2953b8e80941Smrg s->param_binding_length = (yyvsp[0].temp_sym).param_binding_length; 2954848b8605Smrg s->param_binding_swizzle = SWIZZLE_XYZW; 2955848b8605Smrg s->param_is_array = 1; 2956848b8605Smrg } 2957848b8605Smrg } 2958848b8605Smrg } 2959b8e80941Smrg#line 2960 "program_parse.tab.c" /* yacc.c:1645 */ 2960848b8605Smrg break; 2961848b8605Smrg 2962b8e80941Smrg case 111: 2963b8e80941Smrg#line 1116 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2964848b8605Smrg { 2965848b8605Smrg (yyval.integer) = 0; 2966848b8605Smrg } 2967b8e80941Smrg#line 2968 "program_parse.tab.c" /* yacc.c:1645 */ 2968848b8605Smrg break; 2969848b8605Smrg 2970b8e80941Smrg case 112: 2971b8e80941Smrg#line 1120 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2972848b8605Smrg { 2973b8e80941Smrg if (((yyvsp[0].integer) < 1) || ((unsigned) (yyvsp[0].integer) > state->limits->MaxParameters)) { 2974848b8605Smrg char msg[100]; 2975848b8605Smrg _mesa_snprintf(msg, sizeof(msg), 2976848b8605Smrg "invalid parameter array size (size=%d max=%u)", 2977b8e80941Smrg (yyvsp[0].integer), state->limits->MaxParameters); 2978b8e80941Smrg yyerror(& (yylsp[0]), state, msg); 2979848b8605Smrg YYERROR; 2980848b8605Smrg } else { 2981b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 2982848b8605Smrg } 2983848b8605Smrg } 2984b8e80941Smrg#line 2985 "program_parse.tab.c" /* yacc.c:1645 */ 2985848b8605Smrg break; 2986848b8605Smrg 2987b8e80941Smrg case 113: 2988b8e80941Smrg#line 1135 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2989848b8605Smrg { 2990b8e80941Smrg (yyval.temp_sym) = (yyvsp[0].temp_sym); 2991848b8605Smrg } 2992b8e80941Smrg#line 2993 "program_parse.tab.c" /* yacc.c:1645 */ 2993848b8605Smrg break; 2994848b8605Smrg 2995b8e80941Smrg case 114: 2996b8e80941Smrg#line 1141 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 2997848b8605Smrg { 2998b8e80941Smrg (yyval.temp_sym) = (yyvsp[-1].temp_sym); 2999848b8605Smrg } 3000b8e80941Smrg#line 3001 "program_parse.tab.c" /* yacc.c:1645 */ 3001848b8605Smrg break; 3002848b8605Smrg 3003b8e80941Smrg case 116: 3004b8e80941Smrg#line 1148 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3005848b8605Smrg { 3006b8e80941Smrg (yyvsp[-2].temp_sym).param_binding_length += (yyvsp[0].temp_sym).param_binding_length; 3007b8e80941Smrg (yyval.temp_sym) = (yyvsp[-2].temp_sym); 3008848b8605Smrg } 3009b8e80941Smrg#line 3010 "program_parse.tab.c" /* yacc.c:1645 */ 3010848b8605Smrg break; 3011848b8605Smrg 3012b8e80941Smrg case 117: 3013b8e80941Smrg#line 1155 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3014848b8605Smrg { 3015848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3016848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3017b8e80941Smrg initialize_symbol_from_state(state->prog, & (yyval.temp_sym), (yyvsp[0].state)); 3018848b8605Smrg } 3019b8e80941Smrg#line 3020 "program_parse.tab.c" /* yacc.c:1645 */ 3020848b8605Smrg break; 3021848b8605Smrg 3022b8e80941Smrg case 118: 3023b8e80941Smrg#line 1161 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3024848b8605Smrg { 3025848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3026848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3027b8e80941Smrg initialize_symbol_from_param(state->prog, & (yyval.temp_sym), (yyvsp[0].state)); 3028848b8605Smrg } 3029b8e80941Smrg#line 3030 "program_parse.tab.c" /* yacc.c:1645 */ 3030848b8605Smrg break; 3031848b8605Smrg 3032b8e80941Smrg case 119: 3033b8e80941Smrg#line 1167 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3034848b8605Smrg { 3035848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3036848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3037b8e80941Smrg initialize_symbol_from_const(state->prog, & (yyval.temp_sym), & (yyvsp[0].vector), GL_TRUE); 3038848b8605Smrg } 3039b8e80941Smrg#line 3040 "program_parse.tab.c" /* yacc.c:1645 */ 3040848b8605Smrg break; 3041848b8605Smrg 3042b8e80941Smrg case 120: 3043b8e80941Smrg#line 1175 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3044848b8605Smrg { 3045848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3046848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3047b8e80941Smrg initialize_symbol_from_state(state->prog, & (yyval.temp_sym), (yyvsp[0].state)); 3048848b8605Smrg } 3049b8e80941Smrg#line 3050 "program_parse.tab.c" /* yacc.c:1645 */ 3050848b8605Smrg break; 3051848b8605Smrg 3052b8e80941Smrg case 121: 3053b8e80941Smrg#line 1181 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3054848b8605Smrg { 3055848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3056848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3057b8e80941Smrg initialize_symbol_from_param(state->prog, & (yyval.temp_sym), (yyvsp[0].state)); 3058848b8605Smrg } 3059b8e80941Smrg#line 3060 "program_parse.tab.c" /* yacc.c:1645 */ 3060848b8605Smrg break; 3061848b8605Smrg 3062b8e80941Smrg case 122: 3063b8e80941Smrg#line 1187 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3064848b8605Smrg { 3065848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3066848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3067b8e80941Smrg initialize_symbol_from_const(state->prog, & (yyval.temp_sym), & (yyvsp[0].vector), GL_TRUE); 3068848b8605Smrg } 3069b8e80941Smrg#line 3070 "program_parse.tab.c" /* yacc.c:1645 */ 3070848b8605Smrg break; 3071848b8605Smrg 3072b8e80941Smrg case 123: 3073b8e80941Smrg#line 1195 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3074848b8605Smrg { 3075848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3076848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3077b8e80941Smrg initialize_symbol_from_state(state->prog, & (yyval.temp_sym), (yyvsp[0].state)); 3078848b8605Smrg } 3079b8e80941Smrg#line 3080 "program_parse.tab.c" /* yacc.c:1645 */ 3080848b8605Smrg break; 3081848b8605Smrg 3082b8e80941Smrg case 124: 3083b8e80941Smrg#line 1201 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3084848b8605Smrg { 3085848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3086848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3087b8e80941Smrg initialize_symbol_from_param(state->prog, & (yyval.temp_sym), (yyvsp[0].state)); 3088848b8605Smrg } 3089b8e80941Smrg#line 3090 "program_parse.tab.c" /* yacc.c:1645 */ 3090848b8605Smrg break; 3091848b8605Smrg 3092b8e80941Smrg case 125: 3093b8e80941Smrg#line 1207 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3094848b8605Smrg { 3095848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3096848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3097b8e80941Smrg initialize_symbol_from_const(state->prog, & (yyval.temp_sym), & (yyvsp[0].vector), GL_FALSE); 3098848b8605Smrg } 3099b8e80941Smrg#line 3100 "program_parse.tab.c" /* yacc.c:1645 */ 3100848b8605Smrg break; 3101848b8605Smrg 3102b8e80941Smrg case 126: 3103b8e80941Smrg#line 1214 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3104b8e80941Smrg { memcpy((yyval.state), (yyvsp[0].state), sizeof((yyval.state))); } 3105b8e80941Smrg#line 3106 "program_parse.tab.c" /* yacc.c:1645 */ 3106848b8605Smrg break; 3107848b8605Smrg 3108b8e80941Smrg case 127: 3109b8e80941Smrg#line 1215 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3110b8e80941Smrg { memcpy((yyval.state), (yyvsp[0].state), sizeof((yyval.state))); } 3111b8e80941Smrg#line 3112 "program_parse.tab.c" /* yacc.c:1645 */ 3112848b8605Smrg break; 3113848b8605Smrg 3114b8e80941Smrg case 128: 3115b8e80941Smrg#line 1218 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3116b8e80941Smrg { memcpy((yyval.state), (yyvsp[0].state), sizeof((yyval.state))); } 3117b8e80941Smrg#line 3118 "program_parse.tab.c" /* yacc.c:1645 */ 3118848b8605Smrg break; 3119848b8605Smrg 3120b8e80941Smrg case 129: 3121b8e80941Smrg#line 1219 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3122b8e80941Smrg { memcpy((yyval.state), (yyvsp[0].state), sizeof((yyval.state))); } 3123b8e80941Smrg#line 3124 "program_parse.tab.c" /* yacc.c:1645 */ 3124848b8605Smrg break; 3125848b8605Smrg 3126b8e80941Smrg case 130: 3127b8e80941Smrg#line 1220 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3128b8e80941Smrg { memcpy((yyval.state), (yyvsp[0].state), sizeof((yyval.state))); } 3129b8e80941Smrg#line 3130 "program_parse.tab.c" /* yacc.c:1645 */ 3130848b8605Smrg break; 3131848b8605Smrg 3132b8e80941Smrg case 131: 3133b8e80941Smrg#line 1221 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3134b8e80941Smrg { memcpy((yyval.state), (yyvsp[0].state), sizeof((yyval.state))); } 3135b8e80941Smrg#line 3136 "program_parse.tab.c" /* yacc.c:1645 */ 3136848b8605Smrg break; 3137848b8605Smrg 3138b8e80941Smrg case 132: 3139b8e80941Smrg#line 1222 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3140b8e80941Smrg { memcpy((yyval.state), (yyvsp[0].state), sizeof((yyval.state))); } 3141b8e80941Smrg#line 3142 "program_parse.tab.c" /* yacc.c:1645 */ 3142848b8605Smrg break; 3143848b8605Smrg 3144b8e80941Smrg case 133: 3145b8e80941Smrg#line 1223 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3146b8e80941Smrg { memcpy((yyval.state), (yyvsp[0].state), sizeof((yyval.state))); } 3147b8e80941Smrg#line 3148 "program_parse.tab.c" /* yacc.c:1645 */ 3148848b8605Smrg break; 3149848b8605Smrg 3150b8e80941Smrg case 134: 3151b8e80941Smrg#line 1224 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3152b8e80941Smrg { memcpy((yyval.state), (yyvsp[0].state), sizeof((yyval.state))); } 3153b8e80941Smrg#line 3154 "program_parse.tab.c" /* yacc.c:1645 */ 3154848b8605Smrg break; 3155848b8605Smrg 3156b8e80941Smrg case 135: 3157b8e80941Smrg#line 1225 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3158b8e80941Smrg { memcpy((yyval.state), (yyvsp[0].state), sizeof((yyval.state))); } 3159b8e80941Smrg#line 3160 "program_parse.tab.c" /* yacc.c:1645 */ 3160848b8605Smrg break; 3161848b8605Smrg 3162b8e80941Smrg case 136: 3163b8e80941Smrg#line 1226 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3164b8e80941Smrg { memcpy((yyval.state), (yyvsp[0].state), sizeof((yyval.state))); } 3165b8e80941Smrg#line 3166 "program_parse.tab.c" /* yacc.c:1645 */ 3166848b8605Smrg break; 3167848b8605Smrg 3168b8e80941Smrg case 137: 3169b8e80941Smrg#line 1227 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3170b8e80941Smrg { memcpy((yyval.state), (yyvsp[0].state), sizeof((yyval.state))); } 3171b8e80941Smrg#line 3172 "program_parse.tab.c" /* yacc.c:1645 */ 3172848b8605Smrg break; 3173848b8605Smrg 3174b8e80941Smrg case 138: 3175b8e80941Smrg#line 1228 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3176b8e80941Smrg { memcpy((yyval.state), (yyvsp[0].state), sizeof((yyval.state))); } 3177b8e80941Smrg#line 3178 "program_parse.tab.c" /* yacc.c:1645 */ 3178848b8605Smrg break; 3179848b8605Smrg 3180b8e80941Smrg case 139: 3181b8e80941Smrg#line 1232 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3182848b8605Smrg { 3183848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3184848b8605Smrg (yyval.state)[0] = STATE_MATERIAL; 3185b8e80941Smrg (yyval.state)[1] = (yyvsp[-1].integer); 3186b8e80941Smrg (yyval.state)[2] = (yyvsp[0].integer); 3187848b8605Smrg } 3188b8e80941Smrg#line 3189 "program_parse.tab.c" /* yacc.c:1645 */ 3189848b8605Smrg break; 3190848b8605Smrg 3191b8e80941Smrg case 140: 3192b8e80941Smrg#line 1241 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3193848b8605Smrg { 3194b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 3195848b8605Smrg } 3196b8e80941Smrg#line 3197 "program_parse.tab.c" /* yacc.c:1645 */ 3197848b8605Smrg break; 3198848b8605Smrg 3199b8e80941Smrg case 141: 3200b8e80941Smrg#line 1245 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3201848b8605Smrg { 3202848b8605Smrg (yyval.integer) = STATE_EMISSION; 3203848b8605Smrg } 3204b8e80941Smrg#line 3205 "program_parse.tab.c" /* yacc.c:1645 */ 3205848b8605Smrg break; 3206848b8605Smrg 3207b8e80941Smrg case 142: 3208b8e80941Smrg#line 1249 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3209848b8605Smrg { 3210848b8605Smrg (yyval.integer) = STATE_SHININESS; 3211848b8605Smrg } 3212b8e80941Smrg#line 3213 "program_parse.tab.c" /* yacc.c:1645 */ 3213848b8605Smrg break; 3214848b8605Smrg 3215b8e80941Smrg case 143: 3216b8e80941Smrg#line 1255 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3217848b8605Smrg { 3218848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3219848b8605Smrg (yyval.state)[0] = STATE_LIGHT; 3220b8e80941Smrg (yyval.state)[1] = (yyvsp[-2].integer); 3221b8e80941Smrg (yyval.state)[2] = (yyvsp[0].integer); 3222848b8605Smrg } 3223b8e80941Smrg#line 3224 "program_parse.tab.c" /* yacc.c:1645 */ 3224848b8605Smrg break; 3225848b8605Smrg 3226b8e80941Smrg case 144: 3227b8e80941Smrg#line 1264 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3228848b8605Smrg { 3229b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 3230848b8605Smrg } 3231b8e80941Smrg#line 3232 "program_parse.tab.c" /* yacc.c:1645 */ 3232848b8605Smrg break; 3233848b8605Smrg 3234b8e80941Smrg case 145: 3235b8e80941Smrg#line 1268 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3236848b8605Smrg { 3237848b8605Smrg (yyval.integer) = STATE_POSITION; 3238848b8605Smrg } 3239b8e80941Smrg#line 3240 "program_parse.tab.c" /* yacc.c:1645 */ 3240848b8605Smrg break; 3241848b8605Smrg 3242b8e80941Smrg case 146: 3243b8e80941Smrg#line 1272 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3244848b8605Smrg { 3245848b8605Smrg if (!state->ctx->Extensions.EXT_point_parameters) { 3246b8e80941Smrg yyerror(& (yylsp[0]), state, "GL_ARB_point_parameters not supported"); 3247848b8605Smrg YYERROR; 3248848b8605Smrg } 3249848b8605Smrg 3250848b8605Smrg (yyval.integer) = STATE_ATTENUATION; 3251848b8605Smrg } 3252b8e80941Smrg#line 3253 "program_parse.tab.c" /* yacc.c:1645 */ 3253848b8605Smrg break; 3254848b8605Smrg 3255b8e80941Smrg case 147: 3256b8e80941Smrg#line 1281 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3257848b8605Smrg { 3258b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 3259848b8605Smrg } 3260b8e80941Smrg#line 3261 "program_parse.tab.c" /* yacc.c:1645 */ 3261848b8605Smrg break; 3262848b8605Smrg 3263b8e80941Smrg case 148: 3264b8e80941Smrg#line 1285 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3265848b8605Smrg { 3266848b8605Smrg (yyval.integer) = STATE_HALF_VECTOR; 3267848b8605Smrg } 3268b8e80941Smrg#line 3269 "program_parse.tab.c" /* yacc.c:1645 */ 3269848b8605Smrg break; 3270848b8605Smrg 3271b8e80941Smrg case 149: 3272b8e80941Smrg#line 1291 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3273848b8605Smrg { 3274848b8605Smrg (yyval.integer) = STATE_SPOT_DIRECTION; 3275848b8605Smrg } 3276b8e80941Smrg#line 3277 "program_parse.tab.c" /* yacc.c:1645 */ 3277848b8605Smrg break; 3278848b8605Smrg 3279b8e80941Smrg case 150: 3280b8e80941Smrg#line 1297 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3281848b8605Smrg { 3282b8e80941Smrg (yyval.state)[0] = (yyvsp[0].state)[0]; 3283b8e80941Smrg (yyval.state)[1] = (yyvsp[0].state)[1]; 3284848b8605Smrg } 3285b8e80941Smrg#line 3286 "program_parse.tab.c" /* yacc.c:1645 */ 3286848b8605Smrg break; 3287848b8605Smrg 3288b8e80941Smrg case 151: 3289b8e80941Smrg#line 1304 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3290848b8605Smrg { 3291848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3292848b8605Smrg (yyval.state)[0] = STATE_LIGHTMODEL_AMBIENT; 3293848b8605Smrg } 3294b8e80941Smrg#line 3295 "program_parse.tab.c" /* yacc.c:1645 */ 3295848b8605Smrg break; 3296848b8605Smrg 3297b8e80941Smrg case 152: 3298b8e80941Smrg#line 1309 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3299848b8605Smrg { 3300848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3301848b8605Smrg (yyval.state)[0] = STATE_LIGHTMODEL_SCENECOLOR; 3302b8e80941Smrg (yyval.state)[1] = (yyvsp[-1].integer); 3303848b8605Smrg } 3304b8e80941Smrg#line 3305 "program_parse.tab.c" /* yacc.c:1645 */ 3305848b8605Smrg break; 3306848b8605Smrg 3307b8e80941Smrg case 153: 3308b8e80941Smrg#line 1317 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3309848b8605Smrg { 3310848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3311848b8605Smrg (yyval.state)[0] = STATE_LIGHTPROD; 3312b8e80941Smrg (yyval.state)[1] = (yyvsp[-3].integer); 3313b8e80941Smrg (yyval.state)[2] = (yyvsp[-1].integer); 3314b8e80941Smrg (yyval.state)[3] = (yyvsp[0].integer); 3315848b8605Smrg } 3316b8e80941Smrg#line 3317 "program_parse.tab.c" /* yacc.c:1645 */ 3317848b8605Smrg break; 3318848b8605Smrg 3319b8e80941Smrg case 155: 3320b8e80941Smrg#line 1329 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3321848b8605Smrg { 3322848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3323b8e80941Smrg (yyval.state)[0] = (yyvsp[0].integer); 3324b8e80941Smrg (yyval.state)[1] = (yyvsp[-1].integer); 3325848b8605Smrg } 3326b8e80941Smrg#line 3327 "program_parse.tab.c" /* yacc.c:1645 */ 3327848b8605Smrg break; 3328848b8605Smrg 3329b8e80941Smrg case 156: 3330b8e80941Smrg#line 1337 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3331848b8605Smrg { 3332848b8605Smrg (yyval.integer) = STATE_TEXENV_COLOR; 3333848b8605Smrg } 3334b8e80941Smrg#line 3335 "program_parse.tab.c" /* yacc.c:1645 */ 3335848b8605Smrg break; 3336848b8605Smrg 3337b8e80941Smrg case 157: 3338b8e80941Smrg#line 1343 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3339848b8605Smrg { 3340848b8605Smrg (yyval.integer) = STATE_AMBIENT; 3341848b8605Smrg } 3342b8e80941Smrg#line 3343 "program_parse.tab.c" /* yacc.c:1645 */ 3343848b8605Smrg break; 3344848b8605Smrg 3345b8e80941Smrg case 158: 3346b8e80941Smrg#line 1347 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3347848b8605Smrg { 3348848b8605Smrg (yyval.integer) = STATE_DIFFUSE; 3349848b8605Smrg } 3350b8e80941Smrg#line 3351 "program_parse.tab.c" /* yacc.c:1645 */ 3351848b8605Smrg break; 3352848b8605Smrg 3353b8e80941Smrg case 159: 3354b8e80941Smrg#line 1351 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3355848b8605Smrg { 3356848b8605Smrg (yyval.integer) = STATE_SPECULAR; 3357848b8605Smrg } 3358b8e80941Smrg#line 3359 "program_parse.tab.c" /* yacc.c:1645 */ 3359848b8605Smrg break; 3360848b8605Smrg 3361b8e80941Smrg case 160: 3362b8e80941Smrg#line 1357 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3363848b8605Smrg { 3364b8e80941Smrg if ((unsigned) (yyvsp[0].integer) >= state->MaxLights) { 3365b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid light selector"); 3366848b8605Smrg YYERROR; 3367848b8605Smrg } 3368848b8605Smrg 3369b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 3370848b8605Smrg } 3371b8e80941Smrg#line 3372 "program_parse.tab.c" /* yacc.c:1645 */ 3372848b8605Smrg break; 3373848b8605Smrg 3374b8e80941Smrg case 161: 3375b8e80941Smrg#line 1368 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3376848b8605Smrg { 3377848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3378848b8605Smrg (yyval.state)[0] = STATE_TEXGEN; 3379b8e80941Smrg (yyval.state)[1] = (yyvsp[-2].integer); 3380b8e80941Smrg (yyval.state)[2] = (yyvsp[-1].integer) + (yyvsp[0].integer); 3381848b8605Smrg } 3382b8e80941Smrg#line 3383 "program_parse.tab.c" /* yacc.c:1645 */ 3383848b8605Smrg break; 3384848b8605Smrg 3385b8e80941Smrg case 162: 3386b8e80941Smrg#line 1377 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3387848b8605Smrg { 3388848b8605Smrg (yyval.integer) = STATE_TEXGEN_EYE_S; 3389848b8605Smrg } 3390b8e80941Smrg#line 3391 "program_parse.tab.c" /* yacc.c:1645 */ 3391848b8605Smrg break; 3392848b8605Smrg 3393b8e80941Smrg case 163: 3394b8e80941Smrg#line 1381 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3395848b8605Smrg { 3396848b8605Smrg (yyval.integer) = STATE_TEXGEN_OBJECT_S; 3397848b8605Smrg } 3398b8e80941Smrg#line 3399 "program_parse.tab.c" /* yacc.c:1645 */ 3399848b8605Smrg break; 3400848b8605Smrg 3401b8e80941Smrg case 164: 3402b8e80941Smrg#line 1386 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3403848b8605Smrg { 3404848b8605Smrg (yyval.integer) = STATE_TEXGEN_EYE_S - STATE_TEXGEN_EYE_S; 3405848b8605Smrg } 3406b8e80941Smrg#line 3407 "program_parse.tab.c" /* yacc.c:1645 */ 3407848b8605Smrg break; 3408848b8605Smrg 3409b8e80941Smrg case 165: 3410b8e80941Smrg#line 1390 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3411848b8605Smrg { 3412848b8605Smrg (yyval.integer) = STATE_TEXGEN_EYE_T - STATE_TEXGEN_EYE_S; 3413848b8605Smrg } 3414b8e80941Smrg#line 3415 "program_parse.tab.c" /* yacc.c:1645 */ 3415848b8605Smrg break; 3416848b8605Smrg 3417b8e80941Smrg case 166: 3418b8e80941Smrg#line 1394 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3419848b8605Smrg { 3420848b8605Smrg (yyval.integer) = STATE_TEXGEN_EYE_R - STATE_TEXGEN_EYE_S; 3421848b8605Smrg } 3422b8e80941Smrg#line 3423 "program_parse.tab.c" /* yacc.c:1645 */ 3423848b8605Smrg break; 3424848b8605Smrg 3425b8e80941Smrg case 167: 3426b8e80941Smrg#line 1398 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3427848b8605Smrg { 3428848b8605Smrg (yyval.integer) = STATE_TEXGEN_EYE_Q - STATE_TEXGEN_EYE_S; 3429848b8605Smrg } 3430b8e80941Smrg#line 3431 "program_parse.tab.c" /* yacc.c:1645 */ 3431848b8605Smrg break; 3432848b8605Smrg 3433b8e80941Smrg case 168: 3434b8e80941Smrg#line 1404 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3435848b8605Smrg { 3436848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3437b8e80941Smrg (yyval.state)[0] = (yyvsp[0].integer); 3438848b8605Smrg } 3439b8e80941Smrg#line 3440 "program_parse.tab.c" /* yacc.c:1645 */ 3440848b8605Smrg break; 3441848b8605Smrg 3442b8e80941Smrg case 169: 3443b8e80941Smrg#line 1411 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3444848b8605Smrg { 3445848b8605Smrg (yyval.integer) = STATE_FOG_COLOR; 3446848b8605Smrg } 3447b8e80941Smrg#line 3448 "program_parse.tab.c" /* yacc.c:1645 */ 3448848b8605Smrg break; 3449848b8605Smrg 3450b8e80941Smrg case 170: 3451b8e80941Smrg#line 1415 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3452848b8605Smrg { 3453848b8605Smrg (yyval.integer) = STATE_FOG_PARAMS; 3454848b8605Smrg } 3455b8e80941Smrg#line 3456 "program_parse.tab.c" /* yacc.c:1645 */ 3456848b8605Smrg break; 3457848b8605Smrg 3458b8e80941Smrg case 171: 3459b8e80941Smrg#line 1421 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3460848b8605Smrg { 3461848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3462848b8605Smrg (yyval.state)[0] = STATE_CLIPPLANE; 3463b8e80941Smrg (yyval.state)[1] = (yyvsp[-2].integer); 3464848b8605Smrg } 3465b8e80941Smrg#line 3466 "program_parse.tab.c" /* yacc.c:1645 */ 3466848b8605Smrg break; 3467848b8605Smrg 3468b8e80941Smrg case 172: 3469b8e80941Smrg#line 1429 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3470848b8605Smrg { 3471b8e80941Smrg if ((unsigned) (yyvsp[0].integer) >= state->MaxClipPlanes) { 3472b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid clip plane selector"); 3473848b8605Smrg YYERROR; 3474848b8605Smrg } 3475848b8605Smrg 3476b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 3477848b8605Smrg } 3478b8e80941Smrg#line 3479 "program_parse.tab.c" /* yacc.c:1645 */ 3479848b8605Smrg break; 3480848b8605Smrg 3481b8e80941Smrg case 173: 3482b8e80941Smrg#line 1440 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3483848b8605Smrg { 3484848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3485b8e80941Smrg (yyval.state)[0] = (yyvsp[0].integer); 3486848b8605Smrg } 3487b8e80941Smrg#line 3488 "program_parse.tab.c" /* yacc.c:1645 */ 3488848b8605Smrg break; 3489848b8605Smrg 3490b8e80941Smrg case 174: 3491b8e80941Smrg#line 1447 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3492848b8605Smrg { 3493848b8605Smrg (yyval.integer) = STATE_POINT_SIZE; 3494848b8605Smrg } 3495b8e80941Smrg#line 3496 "program_parse.tab.c" /* yacc.c:1645 */ 3496848b8605Smrg break; 3497848b8605Smrg 3498b8e80941Smrg case 175: 3499b8e80941Smrg#line 1451 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3500848b8605Smrg { 3501848b8605Smrg (yyval.integer) = STATE_POINT_ATTENUATION; 3502848b8605Smrg } 3503b8e80941Smrg#line 3504 "program_parse.tab.c" /* yacc.c:1645 */ 3504848b8605Smrg break; 3505848b8605Smrg 3506b8e80941Smrg case 176: 3507b8e80941Smrg#line 1457 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3508848b8605Smrg { 3509b8e80941Smrg (yyval.state)[0] = (yyvsp[-4].state)[0]; 3510b8e80941Smrg (yyval.state)[1] = (yyvsp[-4].state)[1]; 3511b8e80941Smrg (yyval.state)[2] = (yyvsp[-1].integer); 3512b8e80941Smrg (yyval.state)[3] = (yyvsp[-1].integer); 3513b8e80941Smrg (yyval.state)[4] = (yyvsp[-4].state)[2]; 3514848b8605Smrg } 3515b8e80941Smrg#line 3516 "program_parse.tab.c" /* yacc.c:1645 */ 3516848b8605Smrg break; 3517848b8605Smrg 3518b8e80941Smrg case 177: 3519b8e80941Smrg#line 1467 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3520848b8605Smrg { 3521b8e80941Smrg (yyval.state)[0] = (yyvsp[-1].state)[0]; 3522b8e80941Smrg (yyval.state)[1] = (yyvsp[-1].state)[1]; 3523b8e80941Smrg (yyval.state)[2] = (yyvsp[0].state)[2]; 3524b8e80941Smrg (yyval.state)[3] = (yyvsp[0].state)[3]; 3525b8e80941Smrg (yyval.state)[4] = (yyvsp[-1].state)[2]; 3526848b8605Smrg } 3527b8e80941Smrg#line 3528 "program_parse.tab.c" /* yacc.c:1645 */ 3528848b8605Smrg break; 3529848b8605Smrg 3530b8e80941Smrg case 178: 3531b8e80941Smrg#line 1477 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3532848b8605Smrg { 3533848b8605Smrg (yyval.state)[2] = 0; 3534848b8605Smrg (yyval.state)[3] = 3; 3535848b8605Smrg } 3536b8e80941Smrg#line 3537 "program_parse.tab.c" /* yacc.c:1645 */ 3537848b8605Smrg break; 3538848b8605Smrg 3539b8e80941Smrg case 179: 3540b8e80941Smrg#line 1482 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3541848b8605Smrg { 3542848b8605Smrg /* It seems logical that the matrix row range specifier would have 3543848b8605Smrg * to specify a range or more than one row (i.e., $5 > $3). 3544848b8605Smrg * However, the ARB_vertex_program spec says "a program will fail 3545848b8605Smrg * to load if <a> is greater than <b>." This means that $3 == $5 3546848b8605Smrg * is valid. 3547848b8605Smrg */ 3548b8e80941Smrg if ((yyvsp[-3].integer) > (yyvsp[-1].integer)) { 3549b8e80941Smrg yyerror(& (yylsp[-3]), state, "invalid matrix row range"); 3550848b8605Smrg YYERROR; 3551848b8605Smrg } 3552848b8605Smrg 3553b8e80941Smrg (yyval.state)[2] = (yyvsp[-3].integer); 3554b8e80941Smrg (yyval.state)[3] = (yyvsp[-1].integer); 3555848b8605Smrg } 3556b8e80941Smrg#line 3557 "program_parse.tab.c" /* yacc.c:1645 */ 3557848b8605Smrg break; 3558848b8605Smrg 3559b8e80941Smrg case 180: 3560b8e80941Smrg#line 1500 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3561848b8605Smrg { 3562b8e80941Smrg (yyval.state)[0] = (yyvsp[-1].state)[0]; 3563b8e80941Smrg (yyval.state)[1] = (yyvsp[-1].state)[1]; 3564b8e80941Smrg (yyval.state)[2] = (yyvsp[0].integer); 3565848b8605Smrg } 3566b8e80941Smrg#line 3567 "program_parse.tab.c" /* yacc.c:1645 */ 3567848b8605Smrg break; 3568848b8605Smrg 3569b8e80941Smrg case 181: 3570b8e80941Smrg#line 1508 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3571848b8605Smrg { 3572848b8605Smrg (yyval.integer) = 0; 3573848b8605Smrg } 3574b8e80941Smrg#line 3575 "program_parse.tab.c" /* yacc.c:1645 */ 3575848b8605Smrg break; 3576848b8605Smrg 3577b8e80941Smrg case 182: 3578b8e80941Smrg#line 1512 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3579848b8605Smrg { 3580b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 3581848b8605Smrg } 3582b8e80941Smrg#line 3583 "program_parse.tab.c" /* yacc.c:1645 */ 3583848b8605Smrg break; 3584848b8605Smrg 3585b8e80941Smrg case 183: 3586b8e80941Smrg#line 1518 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3587848b8605Smrg { 3588848b8605Smrg (yyval.integer) = STATE_MATRIX_INVERSE; 3589848b8605Smrg } 3590b8e80941Smrg#line 3591 "program_parse.tab.c" /* yacc.c:1645 */ 3591848b8605Smrg break; 3592848b8605Smrg 3593b8e80941Smrg case 184: 3594b8e80941Smrg#line 1522 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3595848b8605Smrg { 3596848b8605Smrg (yyval.integer) = STATE_MATRIX_TRANSPOSE; 3597848b8605Smrg } 3598b8e80941Smrg#line 3599 "program_parse.tab.c" /* yacc.c:1645 */ 3599848b8605Smrg break; 3600848b8605Smrg 3601b8e80941Smrg case 185: 3602b8e80941Smrg#line 1526 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3603848b8605Smrg { 3604848b8605Smrg (yyval.integer) = STATE_MATRIX_INVTRANS; 3605848b8605Smrg } 3606b8e80941Smrg#line 3607 "program_parse.tab.c" /* yacc.c:1645 */ 3607848b8605Smrg break; 3608848b8605Smrg 3609b8e80941Smrg case 186: 3610b8e80941Smrg#line 1532 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3611848b8605Smrg { 3612b8e80941Smrg if ((yyvsp[0].integer) > 3) { 3613b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid matrix row reference"); 3614848b8605Smrg YYERROR; 3615848b8605Smrg } 3616848b8605Smrg 3617b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 3618848b8605Smrg } 3619b8e80941Smrg#line 3620 "program_parse.tab.c" /* yacc.c:1645 */ 3620848b8605Smrg break; 3621848b8605Smrg 3622b8e80941Smrg case 187: 3623b8e80941Smrg#line 1543 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3624848b8605Smrg { 3625848b8605Smrg (yyval.state)[0] = STATE_MODELVIEW_MATRIX; 3626b8e80941Smrg (yyval.state)[1] = (yyvsp[0].integer); 3627848b8605Smrg } 3628b8e80941Smrg#line 3629 "program_parse.tab.c" /* yacc.c:1645 */ 3629848b8605Smrg break; 3630848b8605Smrg 3631b8e80941Smrg case 188: 3632b8e80941Smrg#line 1548 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3633848b8605Smrg { 3634848b8605Smrg (yyval.state)[0] = STATE_PROJECTION_MATRIX; 3635848b8605Smrg (yyval.state)[1] = 0; 3636848b8605Smrg } 3637b8e80941Smrg#line 3638 "program_parse.tab.c" /* yacc.c:1645 */ 3638848b8605Smrg break; 3639848b8605Smrg 3640b8e80941Smrg case 189: 3641b8e80941Smrg#line 1553 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3642848b8605Smrg { 3643848b8605Smrg (yyval.state)[0] = STATE_MVP_MATRIX; 3644848b8605Smrg (yyval.state)[1] = 0; 3645848b8605Smrg } 3646b8e80941Smrg#line 3647 "program_parse.tab.c" /* yacc.c:1645 */ 3647848b8605Smrg break; 3648848b8605Smrg 3649b8e80941Smrg case 190: 3650b8e80941Smrg#line 1558 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3651848b8605Smrg { 3652848b8605Smrg (yyval.state)[0] = STATE_TEXTURE_MATRIX; 3653b8e80941Smrg (yyval.state)[1] = (yyvsp[0].integer); 3654848b8605Smrg } 3655b8e80941Smrg#line 3656 "program_parse.tab.c" /* yacc.c:1645 */ 3656848b8605Smrg break; 3657848b8605Smrg 3658b8e80941Smrg case 191: 3659b8e80941Smrg#line 1563 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3660848b8605Smrg { 3661b8e80941Smrg yyerror(& (yylsp[-3]), state, "GL_ARB_matrix_palette not supported"); 3662848b8605Smrg YYERROR; 3663848b8605Smrg } 3664b8e80941Smrg#line 3665 "program_parse.tab.c" /* yacc.c:1645 */ 3665848b8605Smrg break; 3666848b8605Smrg 3667b8e80941Smrg case 192: 3668b8e80941Smrg#line 1568 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3669848b8605Smrg { 3670848b8605Smrg (yyval.state)[0] = STATE_PROGRAM_MATRIX; 3671b8e80941Smrg (yyval.state)[1] = (yyvsp[-1].integer); 3672848b8605Smrg } 3673b8e80941Smrg#line 3674 "program_parse.tab.c" /* yacc.c:1645 */ 3674848b8605Smrg break; 3675848b8605Smrg 3676b8e80941Smrg case 193: 3677b8e80941Smrg#line 1575 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3678848b8605Smrg { 3679848b8605Smrg (yyval.integer) = 0; 3680848b8605Smrg } 3681b8e80941Smrg#line 3682 "program_parse.tab.c" /* yacc.c:1645 */ 3682848b8605Smrg break; 3683848b8605Smrg 3684b8e80941Smrg case 194: 3685b8e80941Smrg#line 1579 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3686848b8605Smrg { 3687b8e80941Smrg (yyval.integer) = (yyvsp[-1].integer); 3688848b8605Smrg } 3689b8e80941Smrg#line 3690 "program_parse.tab.c" /* yacc.c:1645 */ 3690848b8605Smrg break; 3691848b8605Smrg 3692b8e80941Smrg case 195: 3693b8e80941Smrg#line 1584 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3694848b8605Smrg { 3695848b8605Smrg /* Since GL_ARB_vertex_blend isn't supported, only modelview matrix 3696848b8605Smrg * zero is valid. 3697848b8605Smrg */ 3698b8e80941Smrg if ((yyvsp[0].integer) != 0) { 3699b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid modelview matrix index"); 3700848b8605Smrg YYERROR; 3701848b8605Smrg } 3702848b8605Smrg 3703b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 3704848b8605Smrg } 3705b8e80941Smrg#line 3706 "program_parse.tab.c" /* yacc.c:1645 */ 3706848b8605Smrg break; 3707848b8605Smrg 3708b8e80941Smrg case 196: 3709b8e80941Smrg#line 1597 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3710848b8605Smrg { 3711848b8605Smrg /* Since GL_ARB_matrix_palette isn't supported, just let any value 3712848b8605Smrg * through here. The error will be generated later. 3713848b8605Smrg */ 3714b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 3715848b8605Smrg } 3716b8e80941Smrg#line 3717 "program_parse.tab.c" /* yacc.c:1645 */ 3717848b8605Smrg break; 3718848b8605Smrg 3719b8e80941Smrg case 197: 3720b8e80941Smrg#line 1605 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3721848b8605Smrg { 3722b8e80941Smrg if ((unsigned) (yyvsp[0].integer) >= state->MaxProgramMatrices) { 3723b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid program matrix selector"); 3724848b8605Smrg YYERROR; 3725848b8605Smrg } 3726848b8605Smrg 3727b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 3728848b8605Smrg } 3729b8e80941Smrg#line 3730 "program_parse.tab.c" /* yacc.c:1645 */ 3730848b8605Smrg break; 3731848b8605Smrg 3732b8e80941Smrg case 198: 3733b8e80941Smrg#line 1616 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3734848b8605Smrg { 3735848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3736848b8605Smrg (yyval.state)[0] = STATE_DEPTH_RANGE; 3737848b8605Smrg } 3738b8e80941Smrg#line 3739 "program_parse.tab.c" /* yacc.c:1645 */ 3739848b8605Smrg break; 3740848b8605Smrg 3741b8e80941Smrg case 203: 3742b8e80941Smrg#line 1628 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3743848b8605Smrg { 3744848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3745848b8605Smrg (yyval.state)[0] = state->state_param_enum; 3746848b8605Smrg (yyval.state)[1] = STATE_ENV; 3747b8e80941Smrg (yyval.state)[2] = (yyvsp[-1].state)[0]; 3748b8e80941Smrg (yyval.state)[3] = (yyvsp[-1].state)[1]; 3749848b8605Smrg } 3750b8e80941Smrg#line 3751 "program_parse.tab.c" /* yacc.c:1645 */ 3751848b8605Smrg break; 3752848b8605Smrg 3753b8e80941Smrg case 204: 3754b8e80941Smrg#line 1638 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3755848b8605Smrg { 3756b8e80941Smrg (yyval.state)[0] = (yyvsp[0].integer); 3757b8e80941Smrg (yyval.state)[1] = (yyvsp[0].integer); 3758848b8605Smrg } 3759b8e80941Smrg#line 3760 "program_parse.tab.c" /* yacc.c:1645 */ 3760848b8605Smrg break; 3761848b8605Smrg 3762b8e80941Smrg case 205: 3763b8e80941Smrg#line 1643 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3764848b8605Smrg { 3765b8e80941Smrg (yyval.state)[0] = (yyvsp[-2].integer); 3766b8e80941Smrg (yyval.state)[1] = (yyvsp[0].integer); 3767848b8605Smrg } 3768b8e80941Smrg#line 3769 "program_parse.tab.c" /* yacc.c:1645 */ 3769848b8605Smrg break; 3770848b8605Smrg 3771b8e80941Smrg case 206: 3772b8e80941Smrg#line 1650 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3773848b8605Smrg { 3774848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3775848b8605Smrg (yyval.state)[0] = state->state_param_enum; 3776848b8605Smrg (yyval.state)[1] = STATE_ENV; 3777b8e80941Smrg (yyval.state)[2] = (yyvsp[-1].integer); 3778b8e80941Smrg (yyval.state)[3] = (yyvsp[-1].integer); 3779848b8605Smrg } 3780b8e80941Smrg#line 3781 "program_parse.tab.c" /* yacc.c:1645 */ 3781848b8605Smrg break; 3782848b8605Smrg 3783b8e80941Smrg case 207: 3784b8e80941Smrg#line 1660 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3785848b8605Smrg { 3786848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3787848b8605Smrg (yyval.state)[0] = state->state_param_enum; 3788848b8605Smrg (yyval.state)[1] = STATE_LOCAL; 3789b8e80941Smrg (yyval.state)[2] = (yyvsp[-1].state)[0]; 3790b8e80941Smrg (yyval.state)[3] = (yyvsp[-1].state)[1]; 3791848b8605Smrg } 3792b8e80941Smrg#line 3793 "program_parse.tab.c" /* yacc.c:1645 */ 3793848b8605Smrg break; 3794848b8605Smrg 3795b8e80941Smrg case 208: 3796b8e80941Smrg#line 1669 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3797848b8605Smrg { 3798b8e80941Smrg (yyval.state)[0] = (yyvsp[0].integer); 3799b8e80941Smrg (yyval.state)[1] = (yyvsp[0].integer); 3800848b8605Smrg } 3801b8e80941Smrg#line 3802 "program_parse.tab.c" /* yacc.c:1645 */ 3802848b8605Smrg break; 3803848b8605Smrg 3804b8e80941Smrg case 209: 3805b8e80941Smrg#line 1674 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3806848b8605Smrg { 3807b8e80941Smrg (yyval.state)[0] = (yyvsp[-2].integer); 3808b8e80941Smrg (yyval.state)[1] = (yyvsp[0].integer); 3809848b8605Smrg } 3810b8e80941Smrg#line 3811 "program_parse.tab.c" /* yacc.c:1645 */ 3811848b8605Smrg break; 3812848b8605Smrg 3813b8e80941Smrg case 210: 3814b8e80941Smrg#line 1681 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3815848b8605Smrg { 3816848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3817848b8605Smrg (yyval.state)[0] = state->state_param_enum; 3818848b8605Smrg (yyval.state)[1] = STATE_LOCAL; 3819b8e80941Smrg (yyval.state)[2] = (yyvsp[-1].integer); 3820b8e80941Smrg (yyval.state)[3] = (yyvsp[-1].integer); 3821848b8605Smrg } 3822b8e80941Smrg#line 3823 "program_parse.tab.c" /* yacc.c:1645 */ 3823848b8605Smrg break; 3824848b8605Smrg 3825b8e80941Smrg case 211: 3826b8e80941Smrg#line 1691 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3827848b8605Smrg { 3828b8e80941Smrg if ((unsigned) (yyvsp[0].integer) >= state->limits->MaxEnvParams) { 3829b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid environment parameter reference"); 3830848b8605Smrg YYERROR; 3831848b8605Smrg } 3832b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 3833848b8605Smrg } 3834b8e80941Smrg#line 3835 "program_parse.tab.c" /* yacc.c:1645 */ 3835848b8605Smrg break; 3836848b8605Smrg 3837b8e80941Smrg case 212: 3838b8e80941Smrg#line 1701 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3839848b8605Smrg { 3840b8e80941Smrg if ((unsigned) (yyvsp[0].integer) >= state->limits->MaxLocalParams) { 3841b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid local parameter reference"); 3842848b8605Smrg YYERROR; 3843848b8605Smrg } 3844b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 3845848b8605Smrg } 3846b8e80941Smrg#line 3847 "program_parse.tab.c" /* yacc.c:1645 */ 3847848b8605Smrg break; 3848848b8605Smrg 3849b8e80941Smrg case 217: 3850b8e80941Smrg#line 1716 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3851848b8605Smrg { 3852848b8605Smrg (yyval.vector).count = 4; 3853b8e80941Smrg (yyval.vector).data[0].f = (yyvsp[0].real); 3854b8e80941Smrg (yyval.vector).data[1].f = (yyvsp[0].real); 3855b8e80941Smrg (yyval.vector).data[2].f = (yyvsp[0].real); 3856b8e80941Smrg (yyval.vector).data[3].f = (yyvsp[0].real); 3857848b8605Smrg } 3858b8e80941Smrg#line 3859 "program_parse.tab.c" /* yacc.c:1645 */ 3859848b8605Smrg break; 3860848b8605Smrg 3861b8e80941Smrg case 218: 3862b8e80941Smrg#line 1726 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3863848b8605Smrg { 3864848b8605Smrg (yyval.vector).count = 1; 3865b8e80941Smrg (yyval.vector).data[0].f = (yyvsp[0].real); 3866b8e80941Smrg (yyval.vector).data[1].f = (yyvsp[0].real); 3867b8e80941Smrg (yyval.vector).data[2].f = (yyvsp[0].real); 3868b8e80941Smrg (yyval.vector).data[3].f = (yyvsp[0].real); 3869848b8605Smrg } 3870b8e80941Smrg#line 3871 "program_parse.tab.c" /* yacc.c:1645 */ 3871848b8605Smrg break; 3872848b8605Smrg 3873b8e80941Smrg case 219: 3874b8e80941Smrg#line 1734 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3875848b8605Smrg { 3876848b8605Smrg (yyval.vector).count = 1; 3877b8e80941Smrg (yyval.vector).data[0].f = (float) (yyvsp[0].integer); 3878b8e80941Smrg (yyval.vector).data[1].f = (float) (yyvsp[0].integer); 3879b8e80941Smrg (yyval.vector).data[2].f = (float) (yyvsp[0].integer); 3880b8e80941Smrg (yyval.vector).data[3].f = (float) (yyvsp[0].integer); 3881848b8605Smrg } 3882b8e80941Smrg#line 3883 "program_parse.tab.c" /* yacc.c:1645 */ 3883848b8605Smrg break; 3884848b8605Smrg 3885b8e80941Smrg case 220: 3886b8e80941Smrg#line 1744 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3887848b8605Smrg { 3888848b8605Smrg (yyval.vector).count = 4; 3889b8e80941Smrg (yyval.vector).data[0].f = (yyvsp[-1].real); 3890848b8605Smrg (yyval.vector).data[1].f = 0.0f; 3891848b8605Smrg (yyval.vector).data[2].f = 0.0f; 3892848b8605Smrg (yyval.vector).data[3].f = 1.0f; 3893848b8605Smrg } 3894b8e80941Smrg#line 3895 "program_parse.tab.c" /* yacc.c:1645 */ 3895848b8605Smrg break; 3896848b8605Smrg 3897b8e80941Smrg case 221: 3898b8e80941Smrg#line 1752 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3899848b8605Smrg { 3900848b8605Smrg (yyval.vector).count = 4; 3901b8e80941Smrg (yyval.vector).data[0].f = (yyvsp[-3].real); 3902b8e80941Smrg (yyval.vector).data[1].f = (yyvsp[-1].real); 3903848b8605Smrg (yyval.vector).data[2].f = 0.0f; 3904848b8605Smrg (yyval.vector).data[3].f = 1.0f; 3905848b8605Smrg } 3906b8e80941Smrg#line 3907 "program_parse.tab.c" /* yacc.c:1645 */ 3907848b8605Smrg break; 3908848b8605Smrg 3909b8e80941Smrg case 222: 3910b8e80941Smrg#line 1761 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3911848b8605Smrg { 3912848b8605Smrg (yyval.vector).count = 4; 3913b8e80941Smrg (yyval.vector).data[0].f = (yyvsp[-5].real); 3914b8e80941Smrg (yyval.vector).data[1].f = (yyvsp[-3].real); 3915b8e80941Smrg (yyval.vector).data[2].f = (yyvsp[-1].real); 3916848b8605Smrg (yyval.vector).data[3].f = 1.0f; 3917848b8605Smrg } 3918b8e80941Smrg#line 3919 "program_parse.tab.c" /* yacc.c:1645 */ 3919848b8605Smrg break; 3920848b8605Smrg 3921b8e80941Smrg case 223: 3922b8e80941Smrg#line 1770 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3923848b8605Smrg { 3924848b8605Smrg (yyval.vector).count = 4; 3925b8e80941Smrg (yyval.vector).data[0].f = (yyvsp[-7].real); 3926b8e80941Smrg (yyval.vector).data[1].f = (yyvsp[-5].real); 3927b8e80941Smrg (yyval.vector).data[2].f = (yyvsp[-3].real); 3928b8e80941Smrg (yyval.vector).data[3].f = (yyvsp[-1].real); 3929848b8605Smrg } 3930b8e80941Smrg#line 3931 "program_parse.tab.c" /* yacc.c:1645 */ 3931848b8605Smrg break; 3932848b8605Smrg 3933b8e80941Smrg case 224: 3934b8e80941Smrg#line 1780 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3935848b8605Smrg { 3936b8e80941Smrg (yyval.real) = ((yyvsp[-1].negate)) ? -(yyvsp[0].real) : (yyvsp[0].real); 3937848b8605Smrg } 3938b8e80941Smrg#line 3939 "program_parse.tab.c" /* yacc.c:1645 */ 3939848b8605Smrg break; 3940848b8605Smrg 3941b8e80941Smrg case 225: 3942b8e80941Smrg#line 1784 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3943848b8605Smrg { 3944b8e80941Smrg (yyval.real) = (float)(((yyvsp[-1].negate)) ? -(yyvsp[0].integer) : (yyvsp[0].integer)); 3945848b8605Smrg } 3946b8e80941Smrg#line 3947 "program_parse.tab.c" /* yacc.c:1645 */ 3947848b8605Smrg break; 3948848b8605Smrg 3949b8e80941Smrg case 226: 3950b8e80941Smrg#line 1789 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3951848b8605Smrg { (yyval.negate) = FALSE; } 3952b8e80941Smrg#line 3953 "program_parse.tab.c" /* yacc.c:1645 */ 3953848b8605Smrg break; 3954848b8605Smrg 3955b8e80941Smrg case 227: 3956b8e80941Smrg#line 1790 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3957848b8605Smrg { (yyval.negate) = TRUE; } 3958b8e80941Smrg#line 3959 "program_parse.tab.c" /* yacc.c:1645 */ 3959848b8605Smrg break; 3960848b8605Smrg 3961b8e80941Smrg case 228: 3962b8e80941Smrg#line 1791 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3963848b8605Smrg { (yyval.negate) = FALSE; } 3964b8e80941Smrg#line 3965 "program_parse.tab.c" /* yacc.c:1645 */ 3965848b8605Smrg break; 3966848b8605Smrg 3967b8e80941Smrg case 229: 3968b8e80941Smrg#line 1794 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3969b8e80941Smrg { (yyval.integer) = (yyvsp[0].integer); } 3970b8e80941Smrg#line 3971 "program_parse.tab.c" /* yacc.c:1645 */ 3971848b8605Smrg break; 3972848b8605Smrg 3973b8e80941Smrg case 231: 3974b8e80941Smrg#line 1797 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3975b8e80941Smrg { (yyval.integer) = (yyvsp[0].integer); } 3976b8e80941Smrg#line 3977 "program_parse.tab.c" /* yacc.c:1645 */ 3977848b8605Smrg break; 3978848b8605Smrg 3979b8e80941Smrg case 233: 3980b8e80941Smrg#line 1801 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3981848b8605Smrg { 3982b8e80941Smrg if (!declare_variable(state, (yyvsp[0].string), (yyvsp[-3].integer), & (yylsp[0]))) { 3983b8e80941Smrg free((yyvsp[0].string)); 3984848b8605Smrg YYERROR; 3985848b8605Smrg } 3986848b8605Smrg } 3987b8e80941Smrg#line 3988 "program_parse.tab.c" /* yacc.c:1645 */ 3988848b8605Smrg break; 3989848b8605Smrg 3990b8e80941Smrg case 234: 3991b8e80941Smrg#line 1808 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 3992848b8605Smrg { 3993b8e80941Smrg if (!declare_variable(state, (yyvsp[0].string), (yyvsp[-1].integer), & (yylsp[0]))) { 3994b8e80941Smrg free((yyvsp[0].string)); 3995848b8605Smrg YYERROR; 3996848b8605Smrg } 3997848b8605Smrg } 3998b8e80941Smrg#line 3999 "program_parse.tab.c" /* yacc.c:1645 */ 3999848b8605Smrg break; 4000848b8605Smrg 4001b8e80941Smrg case 235: 4002b8e80941Smrg#line 1817 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4003848b8605Smrg { 4004848b8605Smrg struct asm_symbol *const s = 4005b8e80941Smrg declare_variable(state, (yyvsp[-2].string), at_output, & (yylsp[-2])); 4006848b8605Smrg 4007848b8605Smrg if (s == NULL) { 4008b8e80941Smrg free((yyvsp[-2].string)); 4009848b8605Smrg YYERROR; 4010848b8605Smrg } else { 4011b8e80941Smrg s->output_binding = (yyvsp[0].result); 4012848b8605Smrg } 4013848b8605Smrg } 4014b8e80941Smrg#line 4015 "program_parse.tab.c" /* yacc.c:1645 */ 4015848b8605Smrg break; 4016848b8605Smrg 4017b8e80941Smrg case 236: 4018b8e80941Smrg#line 1831 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4019848b8605Smrg { 4020848b8605Smrg if (state->mode == ARB_vertex) { 4021848b8605Smrg (yyval.result) = VARYING_SLOT_POS; 4022848b8605Smrg } else { 4023b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid program result name"); 4024848b8605Smrg YYERROR; 4025848b8605Smrg } 4026848b8605Smrg } 4027b8e80941Smrg#line 4028 "program_parse.tab.c" /* yacc.c:1645 */ 4028848b8605Smrg break; 4029848b8605Smrg 4030b8e80941Smrg case 237: 4031b8e80941Smrg#line 1840 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4032848b8605Smrg { 4033848b8605Smrg if (state->mode == ARB_vertex) { 4034848b8605Smrg (yyval.result) = VARYING_SLOT_FOGC; 4035848b8605Smrg } else { 4036b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid program result name"); 4037848b8605Smrg YYERROR; 4038848b8605Smrg } 4039848b8605Smrg } 4040b8e80941Smrg#line 4041 "program_parse.tab.c" /* yacc.c:1645 */ 4041848b8605Smrg break; 4042848b8605Smrg 4043b8e80941Smrg case 238: 4044b8e80941Smrg#line 1849 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4045848b8605Smrg { 4046b8e80941Smrg (yyval.result) = (yyvsp[0].result); 4047848b8605Smrg } 4048b8e80941Smrg#line 4049 "program_parse.tab.c" /* yacc.c:1645 */ 4049848b8605Smrg break; 4050848b8605Smrg 4051b8e80941Smrg case 239: 4052b8e80941Smrg#line 1853 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4053848b8605Smrg { 4054848b8605Smrg if (state->mode == ARB_vertex) { 4055848b8605Smrg (yyval.result) = VARYING_SLOT_PSIZ; 4056848b8605Smrg } else { 4057b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid program result name"); 4058848b8605Smrg YYERROR; 4059848b8605Smrg } 4060848b8605Smrg } 4061b8e80941Smrg#line 4062 "program_parse.tab.c" /* yacc.c:1645 */ 4062848b8605Smrg break; 4063848b8605Smrg 4064b8e80941Smrg case 240: 4065b8e80941Smrg#line 1862 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4066848b8605Smrg { 4067848b8605Smrg if (state->mode == ARB_vertex) { 4068b8e80941Smrg (yyval.result) = VARYING_SLOT_TEX0 + (yyvsp[0].integer); 4069848b8605Smrg } else { 4070b8e80941Smrg yyerror(& (yylsp[-1]), state, "invalid program result name"); 4071848b8605Smrg YYERROR; 4072848b8605Smrg } 4073848b8605Smrg } 4074b8e80941Smrg#line 4075 "program_parse.tab.c" /* yacc.c:1645 */ 4075848b8605Smrg break; 4076848b8605Smrg 4077b8e80941Smrg case 241: 4078b8e80941Smrg#line 1871 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4079848b8605Smrg { 4080848b8605Smrg if (state->mode == ARB_fragment) { 4081848b8605Smrg (yyval.result) = FRAG_RESULT_DEPTH; 4082848b8605Smrg } else { 4083b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid program result name"); 4084848b8605Smrg YYERROR; 4085848b8605Smrg } 4086848b8605Smrg } 4087b8e80941Smrg#line 4088 "program_parse.tab.c" /* yacc.c:1645 */ 4088848b8605Smrg break; 4089848b8605Smrg 4090b8e80941Smrg case 242: 4091b8e80941Smrg#line 1882 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4092848b8605Smrg { 4093b8e80941Smrg (yyval.result) = (yyvsp[-1].integer) + (yyvsp[0].integer); 4094848b8605Smrg } 4095b8e80941Smrg#line 4096 "program_parse.tab.c" /* yacc.c:1645 */ 4096848b8605Smrg break; 4097848b8605Smrg 4098b8e80941Smrg case 243: 4099b8e80941Smrg#line 1888 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4100848b8605Smrg { 4101848b8605Smrg if (state->mode == ARB_vertex) { 4102848b8605Smrg (yyval.integer) = VARYING_SLOT_COL0; 4103848b8605Smrg } else { 4104848b8605Smrg if (state->option.DrawBuffers) 4105848b8605Smrg (yyval.integer) = FRAG_RESULT_DATA0; 4106848b8605Smrg else 4107848b8605Smrg (yyval.integer) = FRAG_RESULT_COLOR; 4108848b8605Smrg } 4109848b8605Smrg } 4110b8e80941Smrg#line 4111 "program_parse.tab.c" /* yacc.c:1645 */ 4111848b8605Smrg break; 4112848b8605Smrg 4113b8e80941Smrg case 244: 4114b8e80941Smrg#line 1899 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4115848b8605Smrg { 4116848b8605Smrg if (state->mode == ARB_vertex) { 4117b8e80941Smrg yyerror(& (yylsp[-2]), state, "invalid program result name"); 4118848b8605Smrg YYERROR; 4119848b8605Smrg } else { 4120848b8605Smrg if (!state->option.DrawBuffers) { 4121848b8605Smrg /* From the ARB_draw_buffers spec (same text exists 4122848b8605Smrg * for ATI_draw_buffers): 4123848b8605Smrg * 4124848b8605Smrg * If this option is not specified, a fragment 4125848b8605Smrg * program that attempts to bind 4126848b8605Smrg * "result.color[n]" will fail to load, and only 4127848b8605Smrg * "result.color" will be allowed. 4128848b8605Smrg */ 4129b8e80941Smrg yyerror(& (yylsp[-2]), state, 4130848b8605Smrg "result.color[] used without " 4131848b8605Smrg "`OPTION ARB_draw_buffers' or " 4132848b8605Smrg "`OPTION ATI_draw_buffers'"); 4133848b8605Smrg YYERROR; 4134b8e80941Smrg } else if ((yyvsp[-1].integer) >= state->MaxDrawBuffers) { 4135b8e80941Smrg yyerror(& (yylsp[-2]), state, 4136848b8605Smrg "result.color[] exceeds MAX_DRAW_BUFFERS_ARB"); 4137848b8605Smrg YYERROR; 4138848b8605Smrg } 4139b8e80941Smrg (yyval.integer) = FRAG_RESULT_DATA0 + (yyvsp[-1].integer); 4140848b8605Smrg } 4141848b8605Smrg } 4142b8e80941Smrg#line 4143 "program_parse.tab.c" /* yacc.c:1645 */ 4143848b8605Smrg break; 4144848b8605Smrg 4145b8e80941Smrg case 245: 4146b8e80941Smrg#line 1927 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4147848b8605Smrg { 4148848b8605Smrg if (state->mode == ARB_vertex) { 4149848b8605Smrg (yyval.integer) = VARYING_SLOT_COL0; 4150848b8605Smrg } else { 4151b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid program result name"); 4152848b8605Smrg YYERROR; 4153848b8605Smrg } 4154848b8605Smrg } 4155b8e80941Smrg#line 4156 "program_parse.tab.c" /* yacc.c:1645 */ 4156848b8605Smrg break; 4157848b8605Smrg 4158b8e80941Smrg case 246: 4159b8e80941Smrg#line 1936 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4160848b8605Smrg { 4161848b8605Smrg if (state->mode == ARB_vertex) { 4162848b8605Smrg (yyval.integer) = VARYING_SLOT_BFC0; 4163848b8605Smrg } else { 4164b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid program result name"); 4165848b8605Smrg YYERROR; 4166848b8605Smrg } 4167848b8605Smrg } 4168b8e80941Smrg#line 4169 "program_parse.tab.c" /* yacc.c:1645 */ 4169848b8605Smrg break; 4170848b8605Smrg 4171b8e80941Smrg case 247: 4172b8e80941Smrg#line 1947 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4173848b8605Smrg { 4174848b8605Smrg (yyval.integer) = 0; 4175848b8605Smrg } 4176b8e80941Smrg#line 4177 "program_parse.tab.c" /* yacc.c:1645 */ 4177848b8605Smrg break; 4178848b8605Smrg 4179b8e80941Smrg case 248: 4180b8e80941Smrg#line 1951 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4181848b8605Smrg { 4182848b8605Smrg if (state->mode == ARB_vertex) { 4183848b8605Smrg (yyval.integer) = 0; 4184848b8605Smrg } else { 4185b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid program result name"); 4186848b8605Smrg YYERROR; 4187848b8605Smrg } 4188848b8605Smrg } 4189b8e80941Smrg#line 4190 "program_parse.tab.c" /* yacc.c:1645 */ 4190848b8605Smrg break; 4191848b8605Smrg 4192b8e80941Smrg case 249: 4193b8e80941Smrg#line 1960 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4194848b8605Smrg { 4195848b8605Smrg if (state->mode == ARB_vertex) { 4196848b8605Smrg (yyval.integer) = 1; 4197848b8605Smrg } else { 4198b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid program result name"); 4199848b8605Smrg YYERROR; 4200848b8605Smrg } 4201848b8605Smrg } 4202b8e80941Smrg#line 4203 "program_parse.tab.c" /* yacc.c:1645 */ 4203848b8605Smrg break; 4204848b8605Smrg 4205b8e80941Smrg case 250: 4206b8e80941Smrg#line 1970 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4207848b8605Smrg { (yyval.integer) = 0; } 4208b8e80941Smrg#line 4209 "program_parse.tab.c" /* yacc.c:1645 */ 4209848b8605Smrg break; 4210848b8605Smrg 4211b8e80941Smrg case 251: 4212b8e80941Smrg#line 1971 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4213848b8605Smrg { (yyval.integer) = 0; } 4214b8e80941Smrg#line 4215 "program_parse.tab.c" /* yacc.c:1645 */ 4215848b8605Smrg break; 4216848b8605Smrg 4217b8e80941Smrg case 252: 4218b8e80941Smrg#line 1972 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4219848b8605Smrg { (yyval.integer) = 1; } 4220b8e80941Smrg#line 4221 "program_parse.tab.c" /* yacc.c:1645 */ 4221848b8605Smrg break; 4222848b8605Smrg 4223b8e80941Smrg case 253: 4224b8e80941Smrg#line 1975 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4225848b8605Smrg { (yyval.integer) = 0; } 4226b8e80941Smrg#line 4227 "program_parse.tab.c" /* yacc.c:1645 */ 4227848b8605Smrg break; 4228848b8605Smrg 4229b8e80941Smrg case 254: 4230b8e80941Smrg#line 1976 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4231848b8605Smrg { (yyval.integer) = 0; } 4232b8e80941Smrg#line 4233 "program_parse.tab.c" /* yacc.c:1645 */ 4233848b8605Smrg break; 4234848b8605Smrg 4235b8e80941Smrg case 255: 4236b8e80941Smrg#line 1977 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4237848b8605Smrg { (yyval.integer) = 1; } 4238b8e80941Smrg#line 4239 "program_parse.tab.c" /* yacc.c:1645 */ 4239848b8605Smrg break; 4240848b8605Smrg 4241b8e80941Smrg case 256: 4242b8e80941Smrg#line 1980 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4243848b8605Smrg { (yyval.integer) = 0; } 4244b8e80941Smrg#line 4245 "program_parse.tab.c" /* yacc.c:1645 */ 4245848b8605Smrg break; 4246848b8605Smrg 4247b8e80941Smrg case 257: 4248b8e80941Smrg#line 1981 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4249b8e80941Smrg { (yyval.integer) = (yyvsp[-1].integer); } 4250b8e80941Smrg#line 4251 "program_parse.tab.c" /* yacc.c:1645 */ 4251848b8605Smrg break; 4252848b8605Smrg 4253b8e80941Smrg case 258: 4254b8e80941Smrg#line 1984 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4255848b8605Smrg { (yyval.integer) = 0; } 4256b8e80941Smrg#line 4257 "program_parse.tab.c" /* yacc.c:1645 */ 4257848b8605Smrg break; 4258848b8605Smrg 4259b8e80941Smrg case 259: 4260b8e80941Smrg#line 1985 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4261b8e80941Smrg { (yyval.integer) = (yyvsp[-1].integer); } 4262b8e80941Smrg#line 4263 "program_parse.tab.c" /* yacc.c:1645 */ 4263848b8605Smrg break; 4264848b8605Smrg 4265b8e80941Smrg case 260: 4266b8e80941Smrg#line 1988 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4267848b8605Smrg { (yyval.integer) = 0; } 4268b8e80941Smrg#line 4269 "program_parse.tab.c" /* yacc.c:1645 */ 4269848b8605Smrg break; 4270848b8605Smrg 4271b8e80941Smrg case 261: 4272b8e80941Smrg#line 1989 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4273b8e80941Smrg { (yyval.integer) = (yyvsp[-1].integer); } 4274b8e80941Smrg#line 4275 "program_parse.tab.c" /* yacc.c:1645 */ 4275848b8605Smrg break; 4276848b8605Smrg 4277b8e80941Smrg case 262: 4278b8e80941Smrg#line 1993 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4279848b8605Smrg { 4280b8e80941Smrg if ((unsigned) (yyvsp[0].integer) >= state->MaxTextureCoordUnits) { 4281b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid texture coordinate unit selector"); 4282848b8605Smrg YYERROR; 4283848b8605Smrg } 4284848b8605Smrg 4285b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 4286848b8605Smrg } 4287b8e80941Smrg#line 4288 "program_parse.tab.c" /* yacc.c:1645 */ 4288848b8605Smrg break; 4289848b8605Smrg 4290b8e80941Smrg case 263: 4291b8e80941Smrg#line 2004 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4292848b8605Smrg { 4293b8e80941Smrg if ((unsigned) (yyvsp[0].integer) >= state->MaxTextureImageUnits) { 4294b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid texture image unit selector"); 4295848b8605Smrg YYERROR; 4296848b8605Smrg } 4297848b8605Smrg 4298b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 4299848b8605Smrg } 4300b8e80941Smrg#line 4301 "program_parse.tab.c" /* yacc.c:1645 */ 4301848b8605Smrg break; 4302848b8605Smrg 4303b8e80941Smrg case 264: 4304b8e80941Smrg#line 2015 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4305848b8605Smrg { 4306b8e80941Smrg if ((unsigned) (yyvsp[0].integer) >= state->MaxTextureUnits) { 4307b8e80941Smrg yyerror(& (yylsp[0]), state, "invalid texture unit selector"); 4308848b8605Smrg YYERROR; 4309848b8605Smrg } 4310848b8605Smrg 4311b8e80941Smrg (yyval.integer) = (yyvsp[0].integer); 4312848b8605Smrg } 4313b8e80941Smrg#line 4314 "program_parse.tab.c" /* yacc.c:1645 */ 4314848b8605Smrg break; 4315848b8605Smrg 4316b8e80941Smrg case 265: 4317b8e80941Smrg#line 2026 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1645 */ 4318848b8605Smrg { 4319848b8605Smrg struct asm_symbol *exist = (struct asm_symbol *) 4320b8e80941Smrg _mesa_symbol_table_find_symbol(state->st, (yyvsp[-2].string)); 4321848b8605Smrg struct asm_symbol *target = (struct asm_symbol *) 4322b8e80941Smrg _mesa_symbol_table_find_symbol(state->st, (yyvsp[0].string)); 4323848b8605Smrg 4324b8e80941Smrg free((yyvsp[0].string)); 4325848b8605Smrg 4326848b8605Smrg if (exist != NULL) { 4327848b8605Smrg char m[1000]; 4328b8e80941Smrg _mesa_snprintf(m, sizeof(m), "redeclared identifier: %s", (yyvsp[-2].string)); 4329b8e80941Smrg free((yyvsp[-2].string)); 4330b8e80941Smrg yyerror(& (yylsp[-2]), state, m); 4331848b8605Smrg YYERROR; 4332848b8605Smrg } else if (target == NULL) { 4333b8e80941Smrg free((yyvsp[-2].string)); 4334b8e80941Smrg yyerror(& (yylsp[0]), state, 4335848b8605Smrg "undefined variable binding in ALIAS statement"); 4336848b8605Smrg YYERROR; 4337848b8605Smrg } else { 4338b8e80941Smrg _mesa_symbol_table_add_symbol(state->st, (yyvsp[-2].string), target); 4339848b8605Smrg } 4340848b8605Smrg } 4341b8e80941Smrg#line 4342 "program_parse.tab.c" /* yacc.c:1645 */ 4342848b8605Smrg break; 4343848b8605Smrg 4344848b8605Smrg 4345b8e80941Smrg#line 4346 "program_parse.tab.c" /* yacc.c:1645 */ 4346848b8605Smrg default: break; 4347848b8605Smrg } 4348848b8605Smrg /* User semantic actions sometimes alter yychar, and that requires 4349848b8605Smrg that yytoken be updated with the new translation. We take the 4350848b8605Smrg approach of translating immediately before every use of yytoken. 4351848b8605Smrg One alternative is translating here after every semantic action, 4352848b8605Smrg but that translation would be missed if the semantic action invokes 4353848b8605Smrg YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or 4354848b8605Smrg if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an 4355848b8605Smrg incorrect destructor might then be invoked immediately. In the 4356848b8605Smrg case of YYERROR or YYBACKUP, subsequent parser actions might lead 4357848b8605Smrg to an incorrect destructor call or verbose syntax error message 4358848b8605Smrg before the lookahead is translated. */ 4359848b8605Smrg YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 4360848b8605Smrg 4361848b8605Smrg YYPOPSTACK (yylen); 4362848b8605Smrg yylen = 0; 4363848b8605Smrg YY_STACK_PRINT (yyss, yyssp); 4364848b8605Smrg 4365848b8605Smrg *++yyvsp = yyval; 4366848b8605Smrg *++yylsp = yyloc; 4367848b8605Smrg 4368b8e80941Smrg /* Now 'shift' the result of the reduction. Determine what state 4369848b8605Smrg that goes to, based on the state we popped back to and the rule 4370848b8605Smrg number reduced by. */ 4371b8e80941Smrg { 4372b8e80941Smrg const int yylhs = yyr1[yyn] - YYNTOKENS; 4373b8e80941Smrg const int yyi = yypgoto[yylhs] + *yyssp; 4374b8e80941Smrg yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp 4375b8e80941Smrg ? yytable[yyi] 4376b8e80941Smrg : yydefgoto[yylhs]); 4377b8e80941Smrg } 4378848b8605Smrg 4379848b8605Smrg goto yynewstate; 4380848b8605Smrg 4381848b8605Smrg 4382b8e80941Smrg/*--------------------------------------. 4383b8e80941Smrg| yyerrlab -- here on detecting error. | 4384b8e80941Smrg`--------------------------------------*/ 4385848b8605Smrgyyerrlab: 4386848b8605Smrg /* Make sure we have latest lookahead translation. See comments at 4387848b8605Smrg user semantic actions for why this is necessary. */ 4388848b8605Smrg yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); 4389848b8605Smrg 4390848b8605Smrg /* If not already recovering from an error, report this error. */ 4391848b8605Smrg if (!yyerrstatus) 4392848b8605Smrg { 4393848b8605Smrg ++yynerrs; 4394848b8605Smrg#if ! YYERROR_VERBOSE 4395848b8605Smrg yyerror (&yylloc, state, YY_("syntax error")); 4396848b8605Smrg#else 4397848b8605Smrg# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ 4398848b8605Smrg yyssp, yytoken) 4399848b8605Smrg { 4400848b8605Smrg char const *yymsgp = YY_("syntax error"); 4401848b8605Smrg int yysyntax_error_status; 4402848b8605Smrg yysyntax_error_status = YYSYNTAX_ERROR; 4403848b8605Smrg if (yysyntax_error_status == 0) 4404848b8605Smrg yymsgp = yymsg; 4405848b8605Smrg else if (yysyntax_error_status == 1) 4406848b8605Smrg { 4407848b8605Smrg if (yymsg != yymsgbuf) 4408848b8605Smrg YYSTACK_FREE (yymsg); 4409848b8605Smrg yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); 4410848b8605Smrg if (!yymsg) 4411848b8605Smrg { 4412848b8605Smrg yymsg = yymsgbuf; 4413848b8605Smrg yymsg_alloc = sizeof yymsgbuf; 4414848b8605Smrg yysyntax_error_status = 2; 4415848b8605Smrg } 4416848b8605Smrg else 4417848b8605Smrg { 4418848b8605Smrg yysyntax_error_status = YYSYNTAX_ERROR; 4419848b8605Smrg yymsgp = yymsg; 4420848b8605Smrg } 4421848b8605Smrg } 4422848b8605Smrg yyerror (&yylloc, state, yymsgp); 4423848b8605Smrg if (yysyntax_error_status == 2) 4424848b8605Smrg goto yyexhaustedlab; 4425848b8605Smrg } 4426848b8605Smrg# undef YYSYNTAX_ERROR 4427848b8605Smrg#endif 4428848b8605Smrg } 4429848b8605Smrg 4430848b8605Smrg yyerror_range[1] = yylloc; 4431848b8605Smrg 4432848b8605Smrg if (yyerrstatus == 3) 4433848b8605Smrg { 4434848b8605Smrg /* If just tried and failed to reuse lookahead token after an 4435b8e80941Smrg error, discard it. */ 4436848b8605Smrg 4437848b8605Smrg if (yychar <= YYEOF) 4438b8e80941Smrg { 4439b8e80941Smrg /* Return failure if at end of input. */ 4440b8e80941Smrg if (yychar == YYEOF) 4441b8e80941Smrg YYABORT; 4442b8e80941Smrg } 4443848b8605Smrg else 4444b8e80941Smrg { 4445b8e80941Smrg yydestruct ("Error: discarding", 4446b8e80941Smrg yytoken, &yylval, &yylloc, state); 4447b8e80941Smrg yychar = YYEMPTY; 4448b8e80941Smrg } 4449848b8605Smrg } 4450848b8605Smrg 4451848b8605Smrg /* Else will try to reuse lookahead token after shifting the error 4452848b8605Smrg token. */ 4453848b8605Smrg goto yyerrlab1; 4454848b8605Smrg 4455848b8605Smrg 4456848b8605Smrg/*---------------------------------------------------. 4457848b8605Smrg| yyerrorlab -- error raised explicitly by YYERROR. | 4458848b8605Smrg`---------------------------------------------------*/ 4459848b8605Smrgyyerrorlab: 4460848b8605Smrg 4461848b8605Smrg /* Pacify compilers like GCC when the user code never invokes 4462848b8605Smrg YYERROR and the label yyerrorlab therefore never appears in user 4463848b8605Smrg code. */ 4464848b8605Smrg if (/*CONSTCOND*/ 0) 4465848b8605Smrg goto yyerrorlab; 4466848b8605Smrg 4467b8e80941Smrg /* Do not reclaim the symbols of the rule whose action triggered 4468848b8605Smrg this YYERROR. */ 4469848b8605Smrg YYPOPSTACK (yylen); 4470848b8605Smrg yylen = 0; 4471848b8605Smrg YY_STACK_PRINT (yyss, yyssp); 4472848b8605Smrg yystate = *yyssp; 4473848b8605Smrg goto yyerrlab1; 4474848b8605Smrg 4475848b8605Smrg 4476848b8605Smrg/*-------------------------------------------------------------. 4477848b8605Smrg| yyerrlab1 -- common code for both syntax error and YYERROR. | 4478848b8605Smrg`-------------------------------------------------------------*/ 4479848b8605Smrgyyerrlab1: 4480b8e80941Smrg yyerrstatus = 3; /* Each real token shifted decrements this. */ 4481848b8605Smrg 4482848b8605Smrg for (;;) 4483848b8605Smrg { 4484848b8605Smrg yyn = yypact[yystate]; 4485848b8605Smrg if (!yypact_value_is_default (yyn)) 4486b8e80941Smrg { 4487b8e80941Smrg yyn += YYTERROR; 4488b8e80941Smrg if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 4489b8e80941Smrg { 4490b8e80941Smrg yyn = yytable[yyn]; 4491b8e80941Smrg if (0 < yyn) 4492b8e80941Smrg break; 4493b8e80941Smrg } 4494b8e80941Smrg } 4495848b8605Smrg 4496848b8605Smrg /* Pop the current state because it cannot handle the error token. */ 4497848b8605Smrg if (yyssp == yyss) 4498b8e80941Smrg YYABORT; 4499848b8605Smrg 4500848b8605Smrg yyerror_range[1] = *yylsp; 4501848b8605Smrg yydestruct ("Error: popping", 4502b8e80941Smrg yystos[yystate], yyvsp, yylsp, state); 4503848b8605Smrg YYPOPSTACK (1); 4504848b8605Smrg yystate = *yyssp; 4505848b8605Smrg YY_STACK_PRINT (yyss, yyssp); 4506848b8605Smrg } 4507848b8605Smrg 4508848b8605Smrg YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 4509848b8605Smrg *++yyvsp = yylval; 4510848b8605Smrg YY_IGNORE_MAYBE_UNINITIALIZED_END 4511848b8605Smrg 4512848b8605Smrg yyerror_range[2] = yylloc; 4513848b8605Smrg /* Using YYLLOC is tempting, but would change the location of 4514848b8605Smrg the lookahead. YYLOC is available though. */ 4515848b8605Smrg YYLLOC_DEFAULT (yyloc, yyerror_range, 2); 4516848b8605Smrg *++yylsp = yyloc; 4517848b8605Smrg 4518848b8605Smrg /* Shift the error token. */ 4519848b8605Smrg YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 4520848b8605Smrg 4521848b8605Smrg yystate = yyn; 4522848b8605Smrg goto yynewstate; 4523848b8605Smrg 4524848b8605Smrg 4525848b8605Smrg/*-------------------------------------. 4526848b8605Smrg| yyacceptlab -- YYACCEPT comes here. | 4527848b8605Smrg`-------------------------------------*/ 4528848b8605Smrgyyacceptlab: 4529848b8605Smrg yyresult = 0; 4530848b8605Smrg goto yyreturn; 4531848b8605Smrg 4532848b8605Smrg/*-----------------------------------. 4533848b8605Smrg| yyabortlab -- YYABORT comes here. | 4534848b8605Smrg`-----------------------------------*/ 4535848b8605Smrgyyabortlab: 4536848b8605Smrg yyresult = 1; 4537848b8605Smrg goto yyreturn; 4538848b8605Smrg 4539848b8605Smrg#if !defined yyoverflow || YYERROR_VERBOSE 4540848b8605Smrg/*-------------------------------------------------. 4541848b8605Smrg| yyexhaustedlab -- memory exhaustion comes here. | 4542848b8605Smrg`-------------------------------------------------*/ 4543848b8605Smrgyyexhaustedlab: 4544848b8605Smrg yyerror (&yylloc, state, YY_("memory exhausted")); 4545848b8605Smrg yyresult = 2; 4546848b8605Smrg /* Fall through. */ 4547848b8605Smrg#endif 4548848b8605Smrg 4549848b8605Smrgyyreturn: 4550848b8605Smrg if (yychar != YYEMPTY) 4551848b8605Smrg { 4552848b8605Smrg /* Make sure we have latest lookahead translation. See comments at 4553848b8605Smrg user semantic actions for why this is necessary. */ 4554848b8605Smrg yytoken = YYTRANSLATE (yychar); 4555848b8605Smrg yydestruct ("Cleanup: discarding lookahead", 4556848b8605Smrg yytoken, &yylval, &yylloc, state); 4557848b8605Smrg } 4558b8e80941Smrg /* Do not reclaim the symbols of the rule whose action triggered 4559848b8605Smrg this YYABORT or YYACCEPT. */ 4560848b8605Smrg YYPOPSTACK (yylen); 4561848b8605Smrg YY_STACK_PRINT (yyss, yyssp); 4562848b8605Smrg while (yyssp != yyss) 4563848b8605Smrg { 4564848b8605Smrg yydestruct ("Cleanup: popping", 4565b8e80941Smrg yystos[*yyssp], yyvsp, yylsp, state); 4566848b8605Smrg YYPOPSTACK (1); 4567848b8605Smrg } 4568848b8605Smrg#ifndef yyoverflow 4569848b8605Smrg if (yyss != yyssa) 4570848b8605Smrg YYSTACK_FREE (yyss); 4571848b8605Smrg#endif 4572848b8605Smrg#if YYERROR_VERBOSE 4573848b8605Smrg if (yymsg != yymsgbuf) 4574848b8605Smrg YYSTACK_FREE (yymsg); 4575848b8605Smrg#endif 4576b8e80941Smrg return yyresult; 4577848b8605Smrg} 4578b8e80941Smrg#line 2055 "/cvs/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" /* yacc.c:1903 */ 4579848b8605Smrg 4580848b8605Smrg 4581848b8605Smrgvoid 4582848b8605Smrgasm_instruction_set_operands(struct asm_instruction *inst, 4583848b8605Smrg const struct prog_dst_register *dst, 4584848b8605Smrg const struct asm_src_register *src0, 4585848b8605Smrg const struct asm_src_register *src1, 4586848b8605Smrg const struct asm_src_register *src2) 4587848b8605Smrg{ 4588848b8605Smrg /* In the core ARB extensions only the KIL instruction doesn't have a 4589848b8605Smrg * destination register. 4590848b8605Smrg */ 4591848b8605Smrg if (dst == NULL) { 4592848b8605Smrg init_dst_reg(& inst->Base.DstReg); 4593848b8605Smrg } else { 4594848b8605Smrg inst->Base.DstReg = *dst; 4595848b8605Smrg } 4596848b8605Smrg 4597848b8605Smrg if (src0 != NULL) { 4598848b8605Smrg inst->Base.SrcReg[0] = src0->Base; 4599848b8605Smrg inst->SrcReg[0] = *src0; 4600848b8605Smrg } else { 4601848b8605Smrg init_src_reg(& inst->SrcReg[0]); 4602848b8605Smrg } 4603848b8605Smrg 4604848b8605Smrg if (src1 != NULL) { 4605848b8605Smrg inst->Base.SrcReg[1] = src1->Base; 4606848b8605Smrg inst->SrcReg[1] = *src1; 4607848b8605Smrg } else { 4608848b8605Smrg init_src_reg(& inst->SrcReg[1]); 4609848b8605Smrg } 4610848b8605Smrg 4611848b8605Smrg if (src2 != NULL) { 4612848b8605Smrg inst->Base.SrcReg[2] = src2->Base; 4613848b8605Smrg inst->SrcReg[2] = *src2; 4614848b8605Smrg } else { 4615848b8605Smrg init_src_reg(& inst->SrcReg[2]); 4616848b8605Smrg } 4617848b8605Smrg} 4618848b8605Smrg 4619848b8605Smrg 4620848b8605Smrgstruct asm_instruction * 4621b8e80941Smrgasm_instruction_ctor(enum prog_opcode op, 4622848b8605Smrg const struct prog_dst_register *dst, 4623848b8605Smrg const struct asm_src_register *src0, 4624848b8605Smrg const struct asm_src_register *src1, 4625848b8605Smrg const struct asm_src_register *src2) 4626848b8605Smrg{ 4627848b8605Smrg struct asm_instruction *inst = CALLOC_STRUCT(asm_instruction); 4628848b8605Smrg 4629848b8605Smrg if (inst) { 4630848b8605Smrg _mesa_init_instructions(& inst->Base, 1); 4631848b8605Smrg inst->Base.Opcode = op; 4632848b8605Smrg 4633848b8605Smrg asm_instruction_set_operands(inst, dst, src0, src1, src2); 4634848b8605Smrg } 4635848b8605Smrg 4636848b8605Smrg return inst; 4637848b8605Smrg} 4638848b8605Smrg 4639848b8605Smrg 4640848b8605Smrgstruct asm_instruction * 4641848b8605Smrgasm_instruction_copy_ctor(const struct prog_instruction *base, 4642848b8605Smrg const struct prog_dst_register *dst, 4643848b8605Smrg const struct asm_src_register *src0, 4644848b8605Smrg const struct asm_src_register *src1, 4645848b8605Smrg const struct asm_src_register *src2) 4646848b8605Smrg{ 4647848b8605Smrg struct asm_instruction *inst = CALLOC_STRUCT(asm_instruction); 4648848b8605Smrg 4649848b8605Smrg if (inst) { 4650848b8605Smrg _mesa_init_instructions(& inst->Base, 1); 4651848b8605Smrg inst->Base.Opcode = base->Opcode; 4652b8e80941Smrg inst->Base.Saturate = base->Saturate; 4653848b8605Smrg 4654848b8605Smrg asm_instruction_set_operands(inst, dst, src0, src1, src2); 4655848b8605Smrg } 4656848b8605Smrg 4657848b8605Smrg return inst; 4658848b8605Smrg} 4659848b8605Smrg 4660848b8605Smrg 4661848b8605Smrgvoid 4662848b8605Smrginit_dst_reg(struct prog_dst_register *r) 4663848b8605Smrg{ 4664848b8605Smrg memset(r, 0, sizeof(*r)); 4665848b8605Smrg r->File = PROGRAM_UNDEFINED; 4666848b8605Smrg r->WriteMask = WRITEMASK_XYZW; 4667848b8605Smrg} 4668848b8605Smrg 4669848b8605Smrg 4670848b8605Smrg/** Like init_dst_reg() but set the File and Index fields. */ 4671848b8605Smrgvoid 4672848b8605Smrgset_dst_reg(struct prog_dst_register *r, gl_register_file file, GLint index) 4673848b8605Smrg{ 4674848b8605Smrg const GLint maxIndex = 1 << INST_INDEX_BITS; 4675848b8605Smrg const GLint minIndex = 0; 4676b8e80941Smrg assert(index >= minIndex); 4677848b8605Smrg (void) minIndex; 4678b8e80941Smrg assert(index <= maxIndex); 4679848b8605Smrg (void) maxIndex; 4680b8e80941Smrg assert(file == PROGRAM_TEMPORARY || 4681848b8605Smrg file == PROGRAM_ADDRESS || 4682848b8605Smrg file == PROGRAM_OUTPUT); 4683848b8605Smrg memset(r, 0, sizeof(*r)); 4684848b8605Smrg r->File = file; 4685848b8605Smrg r->Index = index; 4686848b8605Smrg r->WriteMask = WRITEMASK_XYZW; 4687848b8605Smrg} 4688848b8605Smrg 4689848b8605Smrg 4690848b8605Smrgvoid 4691848b8605Smrginit_src_reg(struct asm_src_register *r) 4692848b8605Smrg{ 4693848b8605Smrg memset(r, 0, sizeof(*r)); 4694848b8605Smrg r->Base.File = PROGRAM_UNDEFINED; 4695848b8605Smrg r->Base.Swizzle = SWIZZLE_NOOP; 4696848b8605Smrg r->Symbol = NULL; 4697848b8605Smrg} 4698848b8605Smrg 4699848b8605Smrg 4700848b8605Smrg/** Like init_src_reg() but set the File and Index fields. 4701848b8605Smrg * \return GL_TRUE if a valid src register, GL_FALSE otherwise 4702848b8605Smrg */ 4703848b8605Smrgvoid 4704848b8605Smrgset_src_reg(struct asm_src_register *r, gl_register_file file, GLint index) 4705848b8605Smrg{ 4706848b8605Smrg set_src_reg_swz(r, file, index, SWIZZLE_XYZW); 4707848b8605Smrg} 4708848b8605Smrg 4709848b8605Smrg 4710848b8605Smrgvoid 4711848b8605Smrgset_src_reg_swz(struct asm_src_register *r, gl_register_file file, GLint index, 4712848b8605Smrg GLuint swizzle) 4713848b8605Smrg{ 4714848b8605Smrg const GLint maxIndex = (1 << INST_INDEX_BITS) - 1; 4715848b8605Smrg const GLint minIndex = -(1 << INST_INDEX_BITS); 4716b8e80941Smrg assert(file < PROGRAM_FILE_MAX); 4717b8e80941Smrg assert(index >= minIndex); 4718848b8605Smrg (void) minIndex; 4719b8e80941Smrg assert(index <= maxIndex); 4720848b8605Smrg (void) maxIndex; 4721848b8605Smrg memset(r, 0, sizeof(*r)); 4722848b8605Smrg r->Base.File = file; 4723848b8605Smrg r->Base.Index = index; 4724848b8605Smrg r->Base.Swizzle = swizzle; 4725848b8605Smrg r->Symbol = NULL; 4726848b8605Smrg} 4727848b8605Smrg 4728848b8605Smrg 4729848b8605Smrg/** 4730848b8605Smrg * Validate the set of inputs used by a program 4731848b8605Smrg * 4732848b8605Smrg * Validates that legal sets of inputs are used by the program. In this case 4733848b8605Smrg * "used" included both reading the input or binding the input to a name using 4734848b8605Smrg * the \c ATTRIB command. 4735848b8605Smrg * 4736848b8605Smrg * \return 4737848b8605Smrg * \c TRUE if the combination of inputs used is valid, \c FALSE otherwise. 4738848b8605Smrg */ 4739848b8605Smrgint 4740848b8605Smrgvalidate_inputs(struct YYLTYPE *locp, struct asm_parser_state *state) 4741848b8605Smrg{ 4742b8e80941Smrg const GLbitfield64 inputs = state->prog->info.inputs_read | state->InputsBound; 4743b8e80941Smrg GLbitfield ff_inputs = 0; 4744848b8605Smrg 4745b8e80941Smrg /* Since Mesa internal attribute indices are different from 4746b8e80941Smrg * how NV_vertex_program defines attribute aliasing, we have to construct 4747b8e80941Smrg * a separate usage mask based on how the aliasing is defined. 4748b8e80941Smrg * 4749b8e80941Smrg * Note that attribute aliasing is optional if NV_vertex_program is 4750b8e80941Smrg * unsupported. 4751b8e80941Smrg */ 4752b8e80941Smrg if (inputs & VERT_BIT_POS) 4753b8e80941Smrg ff_inputs |= 1 << 0; 4754b8e80941Smrg if (inputs & VERT_BIT_NORMAL) 4755b8e80941Smrg ff_inputs |= 1 << 2; 4756b8e80941Smrg if (inputs & VERT_BIT_COLOR0) 4757b8e80941Smrg ff_inputs |= 1 << 3; 4758b8e80941Smrg if (inputs & VERT_BIT_COLOR1) 4759b8e80941Smrg ff_inputs |= 1 << 4; 4760b8e80941Smrg if (inputs & VERT_BIT_FOG) 4761b8e80941Smrg ff_inputs |= 1 << 5; 4762b8e80941Smrg 4763b8e80941Smrg ff_inputs |= ((inputs & VERT_BIT_TEX_ALL) >> VERT_ATTRIB_TEX0) << 8; 4764b8e80941Smrg 4765b8e80941Smrg if ((ff_inputs & (inputs >> VERT_ATTRIB_GENERIC0)) != 0) { 4766848b8605Smrg yyerror(locp, state, "illegal use of generic attribute and name attribute"); 4767848b8605Smrg return 0; 4768848b8605Smrg } 4769848b8605Smrg 4770848b8605Smrg return 1; 4771848b8605Smrg} 4772848b8605Smrg 4773848b8605Smrg 4774848b8605Smrgstruct asm_symbol * 4775848b8605Smrgdeclare_variable(struct asm_parser_state *state, char *name, enum asm_type t, 4776848b8605Smrg struct YYLTYPE *locp) 4777848b8605Smrg{ 4778848b8605Smrg struct asm_symbol *s = NULL; 4779848b8605Smrg struct asm_symbol *exist = (struct asm_symbol *) 4780b8e80941Smrg _mesa_symbol_table_find_symbol(state->st, name); 4781848b8605Smrg 4782848b8605Smrg 4783848b8605Smrg if (exist != NULL) { 4784848b8605Smrg yyerror(locp, state, "redeclared identifier"); 4785848b8605Smrg } else { 4786848b8605Smrg s = calloc(1, sizeof(struct asm_symbol)); 4787848b8605Smrg s->name = name; 4788848b8605Smrg s->type = t; 4789848b8605Smrg 4790848b8605Smrg switch (t) { 4791848b8605Smrg case at_temp: 4792b8e80941Smrg if (state->prog->arb.NumTemporaries >= state->limits->MaxTemps) { 4793848b8605Smrg yyerror(locp, state, "too many temporaries declared"); 4794848b8605Smrg free(s); 4795848b8605Smrg return NULL; 4796848b8605Smrg } 4797848b8605Smrg 4798b8e80941Smrg s->temp_binding = state->prog->arb.NumTemporaries; 4799b8e80941Smrg state->prog->arb.NumTemporaries++; 4800848b8605Smrg break; 4801848b8605Smrg 4802848b8605Smrg case at_address: 4803b8e80941Smrg if (state->prog->arb.NumAddressRegs >= 4804b8e80941Smrg state->limits->MaxAddressRegs) { 4805848b8605Smrg yyerror(locp, state, "too many address registers declared"); 4806848b8605Smrg free(s); 4807848b8605Smrg return NULL; 4808848b8605Smrg } 4809848b8605Smrg 4810848b8605Smrg /* FINISHME: Add support for multiple address registers. 4811848b8605Smrg */ 4812b8e80941Smrg state->prog->arb.NumAddressRegs++; 4813848b8605Smrg break; 4814848b8605Smrg 4815848b8605Smrg default: 4816848b8605Smrg break; 4817848b8605Smrg } 4818848b8605Smrg 4819b8e80941Smrg _mesa_symbol_table_add_symbol(state->st, s->name, s); 4820848b8605Smrg s->next = state->sym; 4821848b8605Smrg state->sym = s; 4822848b8605Smrg } 4823848b8605Smrg 4824848b8605Smrg return s; 4825848b8605Smrg} 4826848b8605Smrg 4827848b8605Smrg 4828848b8605Smrgint add_state_reference(struct gl_program_parameter_list *param_list, 4829b8e80941Smrg const gl_state_index16 tokens[STATE_LENGTH]) 4830848b8605Smrg{ 4831848b8605Smrg const GLuint size = 4; /* XXX fix */ 4832848b8605Smrg char *name; 4833848b8605Smrg GLint index; 4834848b8605Smrg 4835848b8605Smrg name = _mesa_program_state_string(tokens); 4836848b8605Smrg index = _mesa_add_parameter(param_list, PROGRAM_STATE_VAR, name, 4837b8e80941Smrg size, GL_NONE, NULL, tokens, true); 4838848b8605Smrg param_list->StateFlags |= _mesa_program_state_flags(tokens); 4839848b8605Smrg 4840848b8605Smrg /* free name string here since we duplicated it in add_parameter() */ 4841848b8605Smrg free(name); 4842848b8605Smrg 4843848b8605Smrg return index; 4844848b8605Smrg} 4845848b8605Smrg 4846848b8605Smrg 4847848b8605Smrgint 4848848b8605Smrginitialize_symbol_from_state(struct gl_program *prog, 4849848b8605Smrg struct asm_symbol *param_var, 4850b8e80941Smrg const gl_state_index16 tokens[STATE_LENGTH]) 4851848b8605Smrg{ 4852848b8605Smrg int idx = -1; 4853b8e80941Smrg gl_state_index16 state_tokens[STATE_LENGTH]; 4854848b8605Smrg 4855848b8605Smrg 4856848b8605Smrg memcpy(state_tokens, tokens, sizeof(state_tokens)); 4857848b8605Smrg 4858848b8605Smrg param_var->type = at_param; 4859848b8605Smrg param_var->param_binding_type = PROGRAM_STATE_VAR; 4860848b8605Smrg 4861848b8605Smrg /* If we are adding a STATE_MATRIX that has multiple rows, we need to 4862848b8605Smrg * unroll it and call add_state_reference() for each row 4863848b8605Smrg */ 4864848b8605Smrg if ((state_tokens[0] == STATE_MODELVIEW_MATRIX || 4865848b8605Smrg state_tokens[0] == STATE_PROJECTION_MATRIX || 4866848b8605Smrg state_tokens[0] == STATE_MVP_MATRIX || 4867848b8605Smrg state_tokens[0] == STATE_TEXTURE_MATRIX || 4868848b8605Smrg state_tokens[0] == STATE_PROGRAM_MATRIX) 4869848b8605Smrg && (state_tokens[2] != state_tokens[3])) { 4870848b8605Smrg int row; 4871848b8605Smrg const int first_row = state_tokens[2]; 4872848b8605Smrg const int last_row = state_tokens[3]; 4873848b8605Smrg 4874848b8605Smrg for (row = first_row; row <= last_row; row++) { 4875848b8605Smrg state_tokens[2] = state_tokens[3] = row; 4876848b8605Smrg 4877848b8605Smrg idx = add_state_reference(prog->Parameters, state_tokens); 4878848b8605Smrg if (param_var->param_binding_begin == ~0U) { 4879848b8605Smrg param_var->param_binding_begin = idx; 4880848b8605Smrg param_var->param_binding_swizzle = SWIZZLE_XYZW; 4881848b8605Smrg } 4882848b8605Smrg 4883848b8605Smrg param_var->param_binding_length++; 4884848b8605Smrg } 4885848b8605Smrg } 4886848b8605Smrg else { 4887848b8605Smrg idx = add_state_reference(prog->Parameters, state_tokens); 4888848b8605Smrg if (param_var->param_binding_begin == ~0U) { 4889848b8605Smrg param_var->param_binding_begin = idx; 4890848b8605Smrg param_var->param_binding_swizzle = SWIZZLE_XYZW; 4891848b8605Smrg } 4892848b8605Smrg param_var->param_binding_length++; 4893848b8605Smrg } 4894848b8605Smrg 4895848b8605Smrg return idx; 4896848b8605Smrg} 4897848b8605Smrg 4898848b8605Smrg 4899848b8605Smrgint 4900848b8605Smrginitialize_symbol_from_param(struct gl_program *prog, 4901848b8605Smrg struct asm_symbol *param_var, 4902b8e80941Smrg const gl_state_index16 tokens[STATE_LENGTH]) 4903848b8605Smrg{ 4904848b8605Smrg int idx = -1; 4905b8e80941Smrg gl_state_index16 state_tokens[STATE_LENGTH]; 4906848b8605Smrg 4907848b8605Smrg 4908848b8605Smrg memcpy(state_tokens, tokens, sizeof(state_tokens)); 4909848b8605Smrg 4910848b8605Smrg assert((state_tokens[0] == STATE_VERTEX_PROGRAM) 4911848b8605Smrg || (state_tokens[0] == STATE_FRAGMENT_PROGRAM)); 4912848b8605Smrg assert((state_tokens[1] == STATE_ENV) 4913848b8605Smrg || (state_tokens[1] == STATE_LOCAL)); 4914848b8605Smrg 4915848b8605Smrg /* 4916848b8605Smrg * The param type is STATE_VAR. The program parameter entry will 4917848b8605Smrg * effectively be a pointer into the LOCAL or ENV parameter array. 4918848b8605Smrg */ 4919848b8605Smrg param_var->type = at_param; 4920848b8605Smrg param_var->param_binding_type = PROGRAM_STATE_VAR; 4921848b8605Smrg 4922848b8605Smrg /* If we are adding a STATE_ENV or STATE_LOCAL that has multiple elements, 4923848b8605Smrg * we need to unroll it and call add_state_reference() for each row 4924848b8605Smrg */ 4925848b8605Smrg if (state_tokens[2] != state_tokens[3]) { 4926848b8605Smrg int row; 4927848b8605Smrg const int first_row = state_tokens[2]; 4928848b8605Smrg const int last_row = state_tokens[3]; 4929848b8605Smrg 4930848b8605Smrg for (row = first_row; row <= last_row; row++) { 4931848b8605Smrg state_tokens[2] = state_tokens[3] = row; 4932848b8605Smrg 4933848b8605Smrg idx = add_state_reference(prog->Parameters, state_tokens); 4934848b8605Smrg if (param_var->param_binding_begin == ~0U) { 4935848b8605Smrg param_var->param_binding_begin = idx; 4936848b8605Smrg param_var->param_binding_swizzle = SWIZZLE_XYZW; 4937848b8605Smrg } 4938848b8605Smrg param_var->param_binding_length++; 4939848b8605Smrg } 4940848b8605Smrg } 4941848b8605Smrg else { 4942848b8605Smrg idx = add_state_reference(prog->Parameters, state_tokens); 4943848b8605Smrg if (param_var->param_binding_begin == ~0U) { 4944848b8605Smrg param_var->param_binding_begin = idx; 4945848b8605Smrg param_var->param_binding_swizzle = SWIZZLE_XYZW; 4946848b8605Smrg } 4947848b8605Smrg param_var->param_binding_length++; 4948848b8605Smrg } 4949848b8605Smrg 4950848b8605Smrg return idx; 4951848b8605Smrg} 4952848b8605Smrg 4953848b8605Smrg 4954848b8605Smrg/** 4955848b8605Smrg * Put a float/vector constant/literal into the parameter list. 4956848b8605Smrg * \param param_var returns info about the parameter/constant's location, 4957848b8605Smrg * binding, type, etc. 4958848b8605Smrg * \param vec the vector/constant to add 4959848b8605Smrg * \param allowSwizzle if true, try to consolidate constants which only differ 4960848b8605Smrg * by a swizzle. We don't want to do this when building 4961848b8605Smrg * arrays of constants that may be indexed indirectly. 4962848b8605Smrg * \return index of the constant in the parameter list. 4963848b8605Smrg */ 4964848b8605Smrgint 4965848b8605Smrginitialize_symbol_from_const(struct gl_program *prog, 4966848b8605Smrg struct asm_symbol *param_var, 4967848b8605Smrg const struct asm_vector *vec, 4968848b8605Smrg GLboolean allowSwizzle) 4969848b8605Smrg{ 4970848b8605Smrg unsigned swizzle; 4971848b8605Smrg const int idx = _mesa_add_unnamed_constant(prog->Parameters, 4972848b8605Smrg vec->data, vec->count, 4973848b8605Smrg allowSwizzle ? &swizzle : NULL); 4974848b8605Smrg 4975848b8605Smrg param_var->type = at_param; 4976848b8605Smrg param_var->param_binding_type = PROGRAM_CONSTANT; 4977848b8605Smrg 4978848b8605Smrg if (param_var->param_binding_begin == ~0U) { 4979848b8605Smrg param_var->param_binding_begin = idx; 4980848b8605Smrg param_var->param_binding_swizzle = allowSwizzle ? swizzle : SWIZZLE_XYZW; 4981848b8605Smrg } 4982848b8605Smrg param_var->param_binding_length++; 4983848b8605Smrg 4984848b8605Smrg return idx; 4985848b8605Smrg} 4986848b8605Smrg 4987848b8605Smrg 4988848b8605Smrgchar * 4989848b8605Smrgmake_error_string(const char *fmt, ...) 4990848b8605Smrg{ 4991848b8605Smrg int length; 4992848b8605Smrg char *str; 4993848b8605Smrg va_list args; 4994848b8605Smrg 4995848b8605Smrg 4996848b8605Smrg /* Call vsnprintf once to determine how large the final string is. Call it 4997848b8605Smrg * again to do the actual formatting. from the vsnprintf manual page: 4998848b8605Smrg * 4999848b8605Smrg * Upon successful return, these functions return the number of 5000848b8605Smrg * characters printed (not including the trailing '\0' used to end 5001848b8605Smrg * output to strings). 5002848b8605Smrg */ 5003848b8605Smrg va_start(args, fmt); 5004848b8605Smrg length = 1 + vsnprintf(NULL, 0, fmt, args); 5005848b8605Smrg va_end(args); 5006848b8605Smrg 5007848b8605Smrg str = malloc(length); 5008848b8605Smrg if (str) { 5009848b8605Smrg va_start(args, fmt); 5010848b8605Smrg vsnprintf(str, length, fmt, args); 5011848b8605Smrg va_end(args); 5012848b8605Smrg } 5013848b8605Smrg 5014848b8605Smrg return str; 5015848b8605Smrg} 5016848b8605Smrg 5017848b8605Smrg 5018848b8605Smrgvoid 5019848b8605Smrgyyerror(YYLTYPE *locp, struct asm_parser_state *state, const char *s) 5020848b8605Smrg{ 5021848b8605Smrg char *err_str; 5022848b8605Smrg 5023848b8605Smrg 5024848b8605Smrg err_str = make_error_string("glProgramStringARB(%s)\n", s); 5025848b8605Smrg if (err_str) { 5026848b8605Smrg _mesa_error(state->ctx, GL_INVALID_OPERATION, "%s", err_str); 5027848b8605Smrg free(err_str); 5028848b8605Smrg } 5029848b8605Smrg 5030848b8605Smrg err_str = make_error_string("line %u, char %u: error: %s\n", 5031848b8605Smrg locp->first_line, locp->first_column, s); 5032848b8605Smrg _mesa_set_program_error(state->ctx, locp->position, err_str); 5033848b8605Smrg 5034848b8605Smrg if (err_str) { 5035848b8605Smrg free(err_str); 5036848b8605Smrg } 5037848b8605Smrg} 5038848b8605Smrg 5039848b8605Smrg 5040848b8605SmrgGLboolean 5041848b8605Smrg_mesa_parse_arb_program(struct gl_context *ctx, GLenum target, const GLubyte *str, 5042848b8605Smrg GLsizei len, struct asm_parser_state *state) 5043848b8605Smrg{ 5044848b8605Smrg struct asm_instruction *inst; 5045848b8605Smrg unsigned i; 5046848b8605Smrg GLubyte *strz; 5047848b8605Smrg GLboolean result = GL_FALSE; 5048848b8605Smrg void *temp; 5049848b8605Smrg struct asm_symbol *sym; 5050848b8605Smrg 5051848b8605Smrg state->ctx = ctx; 5052848b8605Smrg state->prog->Target = target; 5053848b8605Smrg state->prog->Parameters = _mesa_new_parameter_list(); 5054848b8605Smrg 5055848b8605Smrg /* Make a copy of the program string and force it to be NUL-terminated. 5056848b8605Smrg */ 5057b8e80941Smrg strz = (GLubyte *) ralloc_size(state->mem_ctx, len + 1); 5058848b8605Smrg if (strz == NULL) { 5059848b8605Smrg _mesa_error(ctx, GL_OUT_OF_MEMORY, "glProgramStringARB"); 5060848b8605Smrg return GL_FALSE; 5061848b8605Smrg } 5062848b8605Smrg memcpy (strz, str, len); 5063848b8605Smrg strz[len] = '\0'; 5064848b8605Smrg 5065848b8605Smrg state->prog->String = strz; 5066848b8605Smrg 5067848b8605Smrg state->st = _mesa_symbol_table_ctor(); 5068848b8605Smrg 5069848b8605Smrg state->limits = (target == GL_VERTEX_PROGRAM_ARB) 5070848b8605Smrg ? & ctx->Const.Program[MESA_SHADER_VERTEX] 5071848b8605Smrg : & ctx->Const.Program[MESA_SHADER_FRAGMENT]; 5072848b8605Smrg 5073848b8605Smrg state->MaxTextureImageUnits = ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits; 5074848b8605Smrg state->MaxTextureCoordUnits = ctx->Const.MaxTextureCoordUnits; 5075848b8605Smrg state->MaxTextureUnits = ctx->Const.MaxTextureUnits; 5076848b8605Smrg state->MaxClipPlanes = ctx->Const.MaxClipPlanes; 5077848b8605Smrg state->MaxLights = ctx->Const.MaxLights; 5078848b8605Smrg state->MaxProgramMatrices = ctx->Const.MaxProgramMatrices; 5079848b8605Smrg state->MaxDrawBuffers = ctx->Const.MaxDrawBuffers; 5080848b8605Smrg 5081848b8605Smrg state->state_param_enum = (target == GL_VERTEX_PROGRAM_ARB) 5082848b8605Smrg ? STATE_VERTEX_PROGRAM : STATE_FRAGMENT_PROGRAM; 5083848b8605Smrg 5084848b8605Smrg _mesa_set_program_error(ctx, -1, NULL); 5085848b8605Smrg 5086848b8605Smrg _mesa_program_lexer_ctor(& state->scanner, state, (const char *) str, len); 5087848b8605Smrg yyparse(state); 5088848b8605Smrg _mesa_program_lexer_dtor(state->scanner); 5089848b8605Smrg 5090848b8605Smrg 5091848b8605Smrg if (ctx->Program.ErrorPos != -1) { 5092848b8605Smrg goto error; 5093848b8605Smrg } 5094848b8605Smrg 5095848b8605Smrg if (! _mesa_layout_parameters(state)) { 5096848b8605Smrg struct YYLTYPE loc; 5097848b8605Smrg 5098848b8605Smrg loc.first_line = 0; 5099848b8605Smrg loc.first_column = 0; 5100848b8605Smrg loc.position = len; 5101848b8605Smrg 5102848b8605Smrg yyerror(& loc, state, "invalid PARAM usage"); 5103848b8605Smrg goto error; 5104848b8605Smrg } 5105848b8605Smrg 5106848b8605Smrg 5107848b8605Smrg 5108848b8605Smrg /* Add one instruction to store the "END" instruction. 5109848b8605Smrg */ 5110b8e80941Smrg state->prog->arb.Instructions = 5111b8e80941Smrg rzalloc_array(state->mem_ctx, struct prog_instruction, 5112b8e80941Smrg state->prog->arb.NumInstructions + 1); 5113848b8605Smrg 5114b8e80941Smrg if (state->prog->arb.Instructions == NULL) { 5115848b8605Smrg goto error; 5116848b8605Smrg } 5117848b8605Smrg 5118848b8605Smrg inst = state->inst_head; 5119b8e80941Smrg for (i = 0; i < state->prog->arb.NumInstructions; i++) { 5120848b8605Smrg struct asm_instruction *const temp = inst->next; 5121848b8605Smrg 5122b8e80941Smrg state->prog->arb.Instructions[i] = inst->Base; 5123848b8605Smrg inst = temp; 5124848b8605Smrg } 5125848b8605Smrg 5126848b8605Smrg /* Finally, tag on an OPCODE_END instruction */ 5127848b8605Smrg { 5128b8e80941Smrg const GLuint numInst = state->prog->arb.NumInstructions; 5129b8e80941Smrg _mesa_init_instructions(state->prog->arb.Instructions + numInst, 1); 5130b8e80941Smrg state->prog->arb.Instructions[numInst].Opcode = OPCODE_END; 5131848b8605Smrg } 5132b8e80941Smrg state->prog->arb.NumInstructions++; 5133848b8605Smrg 5134b8e80941Smrg state->prog->arb.NumParameters = state->prog->Parameters->NumParameters; 5135b8e80941Smrg state->prog->arb.NumAttributes = 5136b8e80941Smrg util_bitcount64(state->prog->info.inputs_read); 5137848b8605Smrg 5138848b8605Smrg /* 5139848b8605Smrg * Initialize native counts to logical counts. The device driver may 5140848b8605Smrg * change them if program is translated into a hardware program. 5141848b8605Smrg */ 5142b8e80941Smrg state->prog->arb.NumNativeInstructions = state->prog->arb.NumInstructions; 5143b8e80941Smrg state->prog->arb.NumNativeTemporaries = state->prog->arb.NumTemporaries; 5144b8e80941Smrg state->prog->arb.NumNativeParameters = state->prog->arb.NumParameters; 5145b8e80941Smrg state->prog->arb.NumNativeAttributes = state->prog->arb.NumAttributes; 5146b8e80941Smrg state->prog->arb.NumNativeAddressRegs = state->prog->arb.NumAddressRegs; 5147848b8605Smrg 5148848b8605Smrg result = GL_TRUE; 5149848b8605Smrg 5150848b8605Smrgerror: 5151848b8605Smrg for (inst = state->inst_head; inst != NULL; inst = temp) { 5152848b8605Smrg temp = inst->next; 5153848b8605Smrg free(inst); 5154848b8605Smrg } 5155848b8605Smrg 5156848b8605Smrg state->inst_head = NULL; 5157848b8605Smrg state->inst_tail = NULL; 5158848b8605Smrg 5159848b8605Smrg for (sym = state->sym; sym != NULL; sym = temp) { 5160848b8605Smrg temp = sym->next; 5161848b8605Smrg 5162848b8605Smrg free((void *) sym->name); 5163848b8605Smrg free(sym); 5164848b8605Smrg } 5165848b8605Smrg state->sym = NULL; 5166848b8605Smrg 5167848b8605Smrg _mesa_symbol_table_dtor(state->st); 5168848b8605Smrg state->st = NULL; 5169848b8605Smrg 5170848b8605Smrg return result; 5171848b8605Smrg} 5172