program_parse.tab.c revision 848b8605
1848b8605Smrg/* A Bison parser, made by GNU Bison 2.6.4. */ 2848b8605Smrg 3848b8605Smrg/* Bison implementation for Yacc-like parsers in C 4848b8605Smrg 5848b8605Smrg Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. 6848b8605Smrg 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. 11848b8605Smrg 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. 16848b8605Smrg 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. 29848b8605Smrg 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 43848b8605Smrg/* Identify Bison output. */ 44848b8605Smrg#define YYBISON 1 45848b8605Smrg 46848b8605Smrg/* Bison version. */ 47848b8605Smrg#define YYBISON_VERSION "2.6.4" 48848b8605Smrg 49848b8605Smrg/* Skeleton name. */ 50848b8605Smrg#define YYSKELETON_NAME "yacc.c" 51848b8605Smrg 52848b8605Smrg/* Pure parsers. */ 53848b8605Smrg#define YYPURE 1 54848b8605Smrg 55848b8605Smrg/* Push parsers. */ 56848b8605Smrg#define YYPUSH 0 57848b8605Smrg 58848b8605Smrg/* Pull parsers. */ 59848b8605Smrg#define YYPULL 1 60848b8605Smrg 61848b8605Smrg 62848b8605Smrg/* Substitute the variable and function names. */ 63848b8605Smrg#define yyparse _mesa_program_parse 64848b8605Smrg#define yylex _mesa_program_lex 65848b8605Smrg#define yyerror _mesa_program_error 66848b8605Smrg#define yylval _mesa_program_lval 67848b8605Smrg#define yychar _mesa_program_char 68848b8605Smrg#define yydebug _mesa_program_debug 69848b8605Smrg#define yynerrs _mesa_program_nerrs 70848b8605Smrg#define yylloc _mesa_program_lloc 71848b8605Smrg 72848b8605Smrg/* Copy the first part of user declarations. */ 73848b8605Smrg/* Line 358 of yacc.c */ 74848b8605Smrg#line 1 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 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 */ 98848b8605Smrg#include <stdio.h> 99848b8605Smrg#include <stdlib.h> 100848b8605Smrg#include <string.h> 101848b8605Smrg 102848b8605Smrg#include "main/mtypes.h" 103848b8605Smrg#include "main/imports.h" 104848b8605Smrg#include "program/program.h" 105848b8605Smrg#include "program/prog_parameter.h" 106848b8605Smrg#include "program/prog_parameter_layout.h" 107848b8605Smrg#include "program/prog_statevars.h" 108848b8605Smrg#include "program/prog_instruction.h" 109848b8605Smrg 110848b8605Smrg#include "program/symbol_table.h" 111848b8605Smrg#include "program/program_parser.h" 112848b8605Smrg 113848b8605Smrgextern void *yy_scan_string(char *); 114848b8605Smrgextern void yy_delete_buffer(void *); 115848b8605Smrg 116848b8605Smrgstatic struct asm_symbol *declare_variable(struct asm_parser_state *state, 117848b8605Smrg char *name, enum asm_type t, struct YYLTYPE *locp); 118848b8605Smrg 119848b8605Smrgstatic int add_state_reference(struct gl_program_parameter_list *param_list, 120848b8605Smrg const gl_state_index tokens[STATE_LENGTH]); 121848b8605Smrg 122848b8605Smrgstatic int initialize_symbol_from_state(struct gl_program *prog, 123848b8605Smrg struct asm_symbol *param_var, const gl_state_index tokens[STATE_LENGTH]); 124848b8605Smrg 125848b8605Smrgstatic int initialize_symbol_from_param(struct gl_program *prog, 126848b8605Smrg struct asm_symbol *param_var, const gl_state_index tokens[STATE_LENGTH]); 127848b8605Smrg 128848b8605Smrgstatic int initialize_symbol_from_const(struct gl_program *prog, 129848b8605Smrg struct asm_symbol *param_var, const struct asm_vector *vec, 130848b8605Smrg GLboolean allowSwizzle); 131848b8605Smrg 132848b8605Smrgstatic int yyparse(struct asm_parser_state *state); 133848b8605Smrg 134848b8605Smrgstatic char *make_error_string(const char *fmt, ...); 135848b8605Smrg 136848b8605Smrgstatic void yyerror(struct YYLTYPE *locp, struct asm_parser_state *state, 137848b8605Smrg const char *s); 138848b8605Smrg 139848b8605Smrgstatic int validate_inputs(struct YYLTYPE *locp, 140848b8605Smrg struct asm_parser_state *state); 141848b8605Smrg 142848b8605Smrgstatic void init_dst_reg(struct prog_dst_register *r); 143848b8605Smrg 144848b8605Smrgstatic void set_dst_reg(struct prog_dst_register *r, 145848b8605Smrg gl_register_file file, GLint index); 146848b8605Smrg 147848b8605Smrgstatic void init_src_reg(struct asm_src_register *r); 148848b8605Smrg 149848b8605Smrgstatic void set_src_reg(struct asm_src_register *r, 150848b8605Smrg gl_register_file file, GLint index); 151848b8605Smrg 152848b8605Smrgstatic void set_src_reg_swz(struct asm_src_register *r, 153848b8605Smrg gl_register_file file, GLint index, GLuint swizzle); 154848b8605Smrg 155848b8605Smrgstatic void asm_instruction_set_operands(struct asm_instruction *inst, 156848b8605Smrg const struct prog_dst_register *dst, const struct asm_src_register *src0, 157848b8605Smrg const struct asm_src_register *src1, const struct asm_src_register *src2); 158848b8605Smrg 159848b8605Smrgstatic struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op, 160848b8605Smrg const struct prog_dst_register *dst, const struct asm_src_register *src0, 161848b8605Smrg const struct asm_src_register *src1, const struct asm_src_register *src2); 162848b8605Smrg 163848b8605Smrgstatic struct asm_instruction *asm_instruction_copy_ctor( 164848b8605Smrg const struct prog_instruction *base, const struct prog_dst_register *dst, 165848b8605Smrg const struct asm_src_register *src0, const struct asm_src_register *src1, 166848b8605Smrg const struct asm_src_register *src2); 167848b8605Smrg 168848b8605Smrg#ifndef FALSE 169848b8605Smrg#define FALSE 0 170848b8605Smrg#define TRUE (!FALSE) 171848b8605Smrg#endif 172848b8605Smrg 173848b8605Smrg#define YYLLOC_DEFAULT(Current, Rhs, N) \ 174848b8605Smrg do { \ 175848b8605Smrg if (N) { \ 176848b8605Smrg (Current).first_line = YYRHSLOC(Rhs, 1).first_line; \ 177848b8605Smrg (Current).first_column = YYRHSLOC(Rhs, 1).first_column; \ 178848b8605Smrg (Current).position = YYRHSLOC(Rhs, 1).position; \ 179848b8605Smrg (Current).last_line = YYRHSLOC(Rhs, N).last_line; \ 180848b8605Smrg (Current).last_column = YYRHSLOC(Rhs, N).last_column; \ 181848b8605Smrg } else { \ 182848b8605Smrg (Current).first_line = YYRHSLOC(Rhs, 0).last_line; \ 183848b8605Smrg (Current).last_line = (Current).first_line; \ 184848b8605Smrg (Current).first_column = YYRHSLOC(Rhs, 0).last_column; \ 185848b8605Smrg (Current).last_column = (Current).first_column; \ 186848b8605Smrg (Current).position = YYRHSLOC(Rhs, 0).position \ 187848b8605Smrg + (Current).first_column; \ 188848b8605Smrg } \ 189848b8605Smrg } while(0) 190848b8605Smrg 191848b8605Smrg/* Line 358 of yacc.c */ 192848b8605Smrg#line 193 "program_parse.tab.c" 193848b8605Smrg 194848b8605Smrg# ifndef YY_NULL 195848b8605Smrg# if defined __cplusplus && 201103L <= __cplusplus 196848b8605Smrg# define YY_NULL nullptr 197848b8605Smrg# else 198848b8605Smrg# define YY_NULL 0 199848b8605Smrg# endif 200848b8605Smrg# endif 201848b8605Smrg 202848b8605Smrg/* Enabling verbose error messages. */ 203848b8605Smrg#ifdef YYERROR_VERBOSE 204848b8605Smrg# undef YYERROR_VERBOSE 205848b8605Smrg# define YYERROR_VERBOSE 1 206848b8605Smrg#else 207848b8605Smrg# define YYERROR_VERBOSE 1 208848b8605Smrg#endif 209848b8605Smrg 210848b8605Smrg/* In a future release of Bison, this section will be replaced 211848b8605Smrg by #include "program_parse.tab.h". */ 212848b8605Smrg#ifndef YY__MESA_PROGRAM_PROGRAM_PARSE_TAB_H_INCLUDED 213848b8605Smrg# define YY__MESA_PROGRAM_PROGRAM_PARSE_TAB_H_INCLUDED 214848b8605Smrg/* Enabling traces. */ 215848b8605Smrg#ifndef YYDEBUG 216848b8605Smrg# define YYDEBUG 0 217848b8605Smrg#endif 218848b8605Smrg#if YYDEBUG 219848b8605Smrgextern int _mesa_program_debug; 220848b8605Smrg#endif 221848b8605Smrg 222848b8605Smrg/* Tokens. */ 223848b8605Smrg#ifndef YYTOKENTYPE 224848b8605Smrg# define YYTOKENTYPE 225848b8605Smrg /* Put the tokens into the symbol table, so that GDB and other debuggers 226848b8605Smrg know about them. */ 227848b8605Smrg enum yytokentype { 228848b8605Smrg ARBvp_10 = 258, 229848b8605Smrg ARBfp_10 = 259, 230848b8605Smrg ADDRESS = 260, 231848b8605Smrg ALIAS = 261, 232848b8605Smrg ATTRIB = 262, 233848b8605Smrg OPTION = 263, 234848b8605Smrg OUTPUT = 264, 235848b8605Smrg PARAM = 265, 236848b8605Smrg TEMP = 266, 237848b8605Smrg END = 267, 238848b8605Smrg BIN_OP = 268, 239848b8605Smrg BINSC_OP = 269, 240848b8605Smrg SAMPLE_OP = 270, 241848b8605Smrg SCALAR_OP = 271, 242848b8605Smrg TRI_OP = 272, 243848b8605Smrg VECTOR_OP = 273, 244848b8605Smrg ARL = 274, 245848b8605Smrg KIL = 275, 246848b8605Smrg SWZ = 276, 247848b8605Smrg TXD_OP = 277, 248848b8605Smrg INTEGER = 278, 249848b8605Smrg REAL = 279, 250848b8605Smrg AMBIENT = 280, 251848b8605Smrg ATTENUATION = 281, 252848b8605Smrg BACK = 282, 253848b8605Smrg CLIP = 283, 254848b8605Smrg COLOR = 284, 255848b8605Smrg DEPTH = 285, 256848b8605Smrg DIFFUSE = 286, 257848b8605Smrg DIRECTION = 287, 258848b8605Smrg EMISSION = 288, 259848b8605Smrg ENV = 289, 260848b8605Smrg EYE = 290, 261848b8605Smrg FOG = 291, 262848b8605Smrg FOGCOORD = 292, 263848b8605Smrg FRAGMENT = 293, 264848b8605Smrg FRONT = 294, 265848b8605Smrg HALF = 295, 266848b8605Smrg INVERSE = 296, 267848b8605Smrg INVTRANS = 297, 268848b8605Smrg LIGHT = 298, 269848b8605Smrg LIGHTMODEL = 299, 270848b8605Smrg LIGHTPROD = 300, 271848b8605Smrg LOCAL = 301, 272848b8605Smrg MATERIAL = 302, 273848b8605Smrg MAT_PROGRAM = 303, 274848b8605Smrg MATRIX = 304, 275848b8605Smrg MATRIXINDEX = 305, 276848b8605Smrg MODELVIEW = 306, 277848b8605Smrg MVP = 307, 278848b8605Smrg NORMAL = 308, 279848b8605Smrg OBJECT = 309, 280848b8605Smrg PALETTE = 310, 281848b8605Smrg PARAMS = 311, 282848b8605Smrg PLANE = 312, 283848b8605Smrg POINT_TOK = 313, 284848b8605Smrg POINTSIZE = 314, 285848b8605Smrg POSITION = 315, 286848b8605Smrg PRIMARY = 316, 287848b8605Smrg PROGRAM = 317, 288848b8605Smrg PROJECTION = 318, 289848b8605Smrg RANGE = 319, 290848b8605Smrg RESULT = 320, 291848b8605Smrg ROW = 321, 292848b8605Smrg SCENECOLOR = 322, 293848b8605Smrg SECONDARY = 323, 294848b8605Smrg SHININESS = 324, 295848b8605Smrg SIZE_TOK = 325, 296848b8605Smrg SPECULAR = 326, 297848b8605Smrg SPOT = 327, 298848b8605Smrg STATE = 328, 299848b8605Smrg TEXCOORD = 329, 300848b8605Smrg TEXENV = 330, 301848b8605Smrg TEXGEN = 331, 302848b8605Smrg TEXGEN_Q = 332, 303848b8605Smrg TEXGEN_R = 333, 304848b8605Smrg TEXGEN_S = 334, 305848b8605Smrg TEXGEN_T = 335, 306848b8605Smrg TEXTURE = 336, 307848b8605Smrg TRANSPOSE = 337, 308848b8605Smrg TEXTURE_UNIT = 338, 309848b8605Smrg TEX_1D = 339, 310848b8605Smrg TEX_2D = 340, 311848b8605Smrg TEX_3D = 341, 312848b8605Smrg TEX_CUBE = 342, 313848b8605Smrg TEX_RECT = 343, 314848b8605Smrg TEX_SHADOW1D = 344, 315848b8605Smrg TEX_SHADOW2D = 345, 316848b8605Smrg TEX_SHADOWRECT = 346, 317848b8605Smrg TEX_ARRAY1D = 347, 318848b8605Smrg TEX_ARRAY2D = 348, 319848b8605Smrg TEX_ARRAYSHADOW1D = 349, 320848b8605Smrg TEX_ARRAYSHADOW2D = 350, 321848b8605Smrg VERTEX = 351, 322848b8605Smrg VTXATTRIB = 352, 323848b8605Smrg WEIGHT = 353, 324848b8605Smrg IDENTIFIER = 354, 325848b8605Smrg USED_IDENTIFIER = 355, 326848b8605Smrg MASK4 = 356, 327848b8605Smrg MASK3 = 357, 328848b8605Smrg MASK2 = 358, 329848b8605Smrg MASK1 = 359, 330848b8605Smrg SWIZZLE = 360, 331848b8605Smrg DOT_DOT = 361, 332848b8605Smrg DOT = 362 333848b8605Smrg }; 334848b8605Smrg#endif 335848b8605Smrg 336848b8605Smrg 337848b8605Smrg#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 338848b8605Smrgtypedef union YYSTYPE 339848b8605Smrg{ 340848b8605Smrg/* Line 374 of yacc.c */ 341848b8605Smrg#line 124 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 342848b8605Smrg 343848b8605Smrg struct asm_instruction *inst; 344848b8605Smrg struct asm_symbol *sym; 345848b8605Smrg struct asm_symbol temp_sym; 346848b8605Smrg struct asm_swizzle_mask swiz_mask; 347848b8605Smrg struct asm_src_register src_reg; 348848b8605Smrg struct prog_dst_register dst_reg; 349848b8605Smrg struct prog_instruction temp_inst; 350848b8605Smrg char *string; 351848b8605Smrg unsigned result; 352848b8605Smrg unsigned attrib; 353848b8605Smrg int integer; 354848b8605Smrg float real; 355848b8605Smrg gl_state_index state[STATE_LENGTH]; 356848b8605Smrg int negate; 357848b8605Smrg struct asm_vector vector; 358848b8605Smrg gl_inst_opcode opcode; 359848b8605Smrg 360848b8605Smrg struct { 361848b8605Smrg unsigned swz; 362848b8605Smrg unsigned rgba_valid:1; 363848b8605Smrg unsigned xyzw_valid:1; 364848b8605Smrg unsigned negate:1; 365848b8605Smrg } ext_swizzle; 366848b8605Smrg 367848b8605Smrg 368848b8605Smrg/* Line 374 of yacc.c */ 369848b8605Smrg#line 370 "program_parse.tab.c" 370848b8605Smrg} YYSTYPE; 371848b8605Smrg# define YYSTYPE_IS_TRIVIAL 1 372848b8605Smrg# define yystype YYSTYPE /* obsolescent; will be withdrawn */ 373848b8605Smrg# define YYSTYPE_IS_DECLARED 1 374848b8605Smrg#endif 375848b8605Smrg 376848b8605Smrg#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED 377848b8605Smrgtypedef struct YYLTYPE 378848b8605Smrg{ 379848b8605Smrg int first_line; 380848b8605Smrg int first_column; 381848b8605Smrg int last_line; 382848b8605Smrg int last_column; 383848b8605Smrg} YYLTYPE; 384848b8605Smrg# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ 385848b8605Smrg# define YYLTYPE_IS_DECLARED 1 386848b8605Smrg# define YYLTYPE_IS_TRIVIAL 1 387848b8605Smrg#endif 388848b8605Smrg 389848b8605Smrg 390848b8605Smrg#ifdef YYPARSE_PARAM 391848b8605Smrg#if defined __STDC__ || defined __cplusplus 392848b8605Smrgint _mesa_program_parse (void *YYPARSE_PARAM); 393848b8605Smrg#else 394848b8605Smrgint _mesa_program_parse (); 395848b8605Smrg#endif 396848b8605Smrg#else /* ! YYPARSE_PARAM */ 397848b8605Smrg#if defined __STDC__ || defined __cplusplus 398848b8605Smrgint _mesa_program_parse (struct asm_parser_state *state); 399848b8605Smrg#else 400848b8605Smrgint _mesa_program_parse (); 401848b8605Smrg#endif 402848b8605Smrg#endif /* ! YYPARSE_PARAM */ 403848b8605Smrg 404848b8605Smrg#endif /* !YY__MESA_PROGRAM_PROGRAM_PARSE_TAB_H_INCLUDED */ 405848b8605Smrg 406848b8605Smrg/* Copy the second part of user declarations. */ 407848b8605Smrg/* Line 377 of yacc.c */ 408848b8605Smrg#line 269 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 409848b8605Smrg 410848b8605Smrgextern int 411848b8605Smrg_mesa_program_lexer_lex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, 412848b8605Smrg void *yyscanner); 413848b8605Smrg 414848b8605Smrgstatic int 415848b8605Smrgyylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, 416848b8605Smrg struct asm_parser_state *state) 417848b8605Smrg{ 418848b8605Smrg return _mesa_program_lexer_lex(yylval_param, yylloc_param, state->scanner); 419848b8605Smrg} 420848b8605Smrg 421848b8605Smrg/* Line 377 of yacc.c */ 422848b8605Smrg#line 423 "program_parse.tab.c" 423848b8605Smrg 424848b8605Smrg#ifdef short 425848b8605Smrg# undef short 426848b8605Smrg#endif 427848b8605Smrg 428848b8605Smrg#ifdef YYTYPE_UINT8 429848b8605Smrgtypedef YYTYPE_UINT8 yytype_uint8; 430848b8605Smrg#else 431848b8605Smrgtypedef unsigned char yytype_uint8; 432848b8605Smrg#endif 433848b8605Smrg 434848b8605Smrg#ifdef YYTYPE_INT8 435848b8605Smrgtypedef YYTYPE_INT8 yytype_int8; 436848b8605Smrg#elif (defined __STDC__ || defined __C99__FUNC__ \ 437848b8605Smrg || defined __cplusplus || defined _MSC_VER) 438848b8605Smrgtypedef signed char yytype_int8; 439848b8605Smrg#else 440848b8605Smrgtypedef short int yytype_int8; 441848b8605Smrg#endif 442848b8605Smrg 443848b8605Smrg#ifdef YYTYPE_UINT16 444848b8605Smrgtypedef YYTYPE_UINT16 yytype_uint16; 445848b8605Smrg#else 446848b8605Smrgtypedef unsigned short int yytype_uint16; 447848b8605Smrg#endif 448848b8605Smrg 449848b8605Smrg#ifdef YYTYPE_INT16 450848b8605Smrgtypedef YYTYPE_INT16 yytype_int16; 451848b8605Smrg#else 452848b8605Smrgtypedef short int yytype_int16; 453848b8605Smrg#endif 454848b8605Smrg 455848b8605Smrg#ifndef YYSIZE_T 456848b8605Smrg# ifdef __SIZE_TYPE__ 457848b8605Smrg# define YYSIZE_T __SIZE_TYPE__ 458848b8605Smrg# elif defined size_t 459848b8605Smrg# define YYSIZE_T size_t 460848b8605Smrg# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ 461848b8605Smrg || defined __cplusplus || defined _MSC_VER) 462848b8605Smrg# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 463848b8605Smrg# define YYSIZE_T size_t 464848b8605Smrg# else 465848b8605Smrg# define YYSIZE_T unsigned int 466848b8605Smrg# endif 467848b8605Smrg#endif 468848b8605Smrg 469848b8605Smrg#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 470848b8605Smrg 471848b8605Smrg#ifndef YY_ 472848b8605Smrg# if defined YYENABLE_NLS && YYENABLE_NLS 473848b8605Smrg# if ENABLE_NLS 474848b8605Smrg# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 475848b8605Smrg# define YY_(Msgid) dgettext ("bison-runtime", Msgid) 476848b8605Smrg# endif 477848b8605Smrg# endif 478848b8605Smrg# ifndef YY_ 479848b8605Smrg# define YY_(Msgid) Msgid 480848b8605Smrg# endif 481848b8605Smrg#endif 482848b8605Smrg 483848b8605Smrg/* Suppress unused-variable warnings by "using" E. */ 484848b8605Smrg#if ! defined lint || defined __GNUC__ 485848b8605Smrg# define YYUSE(E) ((void) (E)) 486848b8605Smrg#else 487848b8605Smrg# define YYUSE(E) /* empty */ 488848b8605Smrg#endif 489848b8605Smrg 490848b8605Smrg/* Identity function, used to suppress warnings about constant conditions. */ 491848b8605Smrg#ifndef lint 492848b8605Smrg# define YYID(N) (N) 493848b8605Smrg#else 494848b8605Smrg#if (defined __STDC__ || defined __C99__FUNC__ \ 495848b8605Smrg || defined __cplusplus || defined _MSC_VER) 496848b8605Smrgstatic int 497848b8605SmrgYYID (int yyi) 498848b8605Smrg#else 499848b8605Smrgstatic int 500848b8605SmrgYYID (yyi) 501848b8605Smrg int yyi; 502848b8605Smrg#endif 503848b8605Smrg{ 504848b8605Smrg return yyi; 505848b8605Smrg} 506848b8605Smrg#endif 507848b8605Smrg 508848b8605Smrg#if ! defined yyoverflow || YYERROR_VERBOSE 509848b8605Smrg 510848b8605Smrg/* The parser invokes alloca or malloc; define the necessary symbols. */ 511848b8605Smrg 512848b8605Smrg# ifdef YYSTACK_USE_ALLOCA 513848b8605Smrg# if YYSTACK_USE_ALLOCA 514848b8605Smrg# ifdef __GNUC__ 515848b8605Smrg# define YYSTACK_ALLOC __builtin_alloca 516848b8605Smrg# elif defined __BUILTIN_VA_ARG_INCR 517848b8605Smrg# include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 518848b8605Smrg# elif defined _AIX 519848b8605Smrg# define YYSTACK_ALLOC __alloca 520848b8605Smrg# elif defined _MSC_VER 521848b8605Smrg# include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 522848b8605Smrg# define alloca _alloca 523848b8605Smrg# else 524848b8605Smrg# define YYSTACK_ALLOC alloca 525848b8605Smrg# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ 526848b8605Smrg || defined __cplusplus || defined _MSC_VER) 527848b8605Smrg# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 528848b8605Smrg /* Use EXIT_SUCCESS as a witness for stdlib.h. */ 529848b8605Smrg# ifndef EXIT_SUCCESS 530848b8605Smrg# define EXIT_SUCCESS 0 531848b8605Smrg# endif 532848b8605Smrg# endif 533848b8605Smrg# endif 534848b8605Smrg# endif 535848b8605Smrg# endif 536848b8605Smrg 537848b8605Smrg# ifdef YYSTACK_ALLOC 538848b8605Smrg /* Pacify GCC's `empty if-body' warning. */ 539848b8605Smrg# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) 540848b8605Smrg# ifndef YYSTACK_ALLOC_MAXIMUM 541848b8605Smrg /* The OS might guarantee only one guard page at the bottom of the stack, 542848b8605Smrg and a page size can be as small as 4096 bytes. So we cannot safely 543848b8605Smrg invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 544848b8605Smrg to allow for a few compiler-allocated temporary stack slots. */ 545848b8605Smrg# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 546848b8605Smrg# endif 547848b8605Smrg# else 548848b8605Smrg# define YYSTACK_ALLOC YYMALLOC 549848b8605Smrg# define YYSTACK_FREE YYFREE 550848b8605Smrg# ifndef YYSTACK_ALLOC_MAXIMUM 551848b8605Smrg# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 552848b8605Smrg# endif 553848b8605Smrg# if (defined __cplusplus && ! defined EXIT_SUCCESS \ 554848b8605Smrg && ! ((defined YYMALLOC || defined malloc) \ 555848b8605Smrg && (defined YYFREE || defined free))) 556848b8605Smrg# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 557848b8605Smrg# ifndef EXIT_SUCCESS 558848b8605Smrg# define EXIT_SUCCESS 0 559848b8605Smrg# endif 560848b8605Smrg# endif 561848b8605Smrg# ifndef YYMALLOC 562848b8605Smrg# define YYMALLOC malloc 563848b8605Smrg# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ 564848b8605Smrg || defined __cplusplus || defined _MSC_VER) 565848b8605Smrgvoid *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 566848b8605Smrg# endif 567848b8605Smrg# endif 568848b8605Smrg# ifndef YYFREE 569848b8605Smrg# define YYFREE free 570848b8605Smrg# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ 571848b8605Smrg || defined __cplusplus || defined _MSC_VER) 572848b8605Smrgvoid free (void *); /* INFRINGES ON USER NAME SPACE */ 573848b8605Smrg# endif 574848b8605Smrg# endif 575848b8605Smrg# endif 576848b8605Smrg#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ 577848b8605Smrg 578848b8605Smrg 579848b8605Smrg#if (! defined yyoverflow \ 580848b8605Smrg && (! defined __cplusplus \ 581848b8605Smrg || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ 582848b8605Smrg && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 583848b8605Smrg 584848b8605Smrg/* A type that is properly aligned for any stack member. */ 585848b8605Smrgunion yyalloc 586848b8605Smrg{ 587848b8605Smrg yytype_int16 yyss_alloc; 588848b8605Smrg YYSTYPE yyvs_alloc; 589848b8605Smrg YYLTYPE yyls_alloc; 590848b8605Smrg}; 591848b8605Smrg 592848b8605Smrg/* The size of the maximum gap between one aligned stack and the next. */ 593848b8605Smrg# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 594848b8605Smrg 595848b8605Smrg/* The size of an array large to enough to hold all stacks, each with 596848b8605Smrg N elements. */ 597848b8605Smrg# define YYSTACK_BYTES(N) \ 598848b8605Smrg ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ 599848b8605Smrg + 2 * YYSTACK_GAP_MAXIMUM) 600848b8605Smrg 601848b8605Smrg# define YYCOPY_NEEDED 1 602848b8605Smrg 603848b8605Smrg/* Relocate STACK from its old location to the new one. The 604848b8605Smrg local variables YYSIZE and YYSTACKSIZE give the old and new number of 605848b8605Smrg elements in the stack, and YYPTR gives the new location of the 606848b8605Smrg stack. Advance YYPTR to a properly aligned location for the next 607848b8605Smrg stack. */ 608848b8605Smrg# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ 609848b8605Smrg do \ 610848b8605Smrg { \ 611848b8605Smrg YYSIZE_T yynewbytes; \ 612848b8605Smrg YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ 613848b8605Smrg Stack = &yyptr->Stack_alloc; \ 614848b8605Smrg yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 615848b8605Smrg yyptr += yynewbytes / sizeof (*yyptr); \ 616848b8605Smrg } \ 617848b8605Smrg while (YYID (0)) 618848b8605Smrg 619848b8605Smrg#endif 620848b8605Smrg 621848b8605Smrg#if defined YYCOPY_NEEDED && YYCOPY_NEEDED 622848b8605Smrg/* Copy COUNT objects from SRC to DST. The source and destination do 623848b8605Smrg not overlap. */ 624848b8605Smrg# ifndef YYCOPY 625848b8605Smrg# if defined __GNUC__ && 1 < __GNUC__ 626848b8605Smrg# define YYCOPY(Dst, Src, Count) \ 627848b8605Smrg __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) 628848b8605Smrg# else 629848b8605Smrg# define YYCOPY(Dst, Src, Count) \ 630848b8605Smrg do \ 631848b8605Smrg { \ 632848b8605Smrg YYSIZE_T yyi; \ 633848b8605Smrg for (yyi = 0; yyi < (Count); yyi++) \ 634848b8605Smrg (Dst)[yyi] = (Src)[yyi]; \ 635848b8605Smrg } \ 636848b8605Smrg while (YYID (0)) 637848b8605Smrg# endif 638848b8605Smrg# endif 639848b8605Smrg#endif /* !YYCOPY_NEEDED */ 640848b8605Smrg 641848b8605Smrg/* YYFINAL -- State number of the termination state. */ 642848b8605Smrg#define YYFINAL 5 643848b8605Smrg/* YYLAST -- Last index in YYTABLE. */ 644848b8605Smrg#define YYLAST 402 645848b8605Smrg 646848b8605Smrg/* YYNTOKENS -- Number of terminals. */ 647848b8605Smrg#define YYNTOKENS 120 648848b8605Smrg/* YYNNTS -- Number of nonterminals. */ 649848b8605Smrg#define YYNNTS 143 650848b8605Smrg/* YYNRULES -- Number of rules. */ 651848b8605Smrg#define YYNRULES 283 652848b8605Smrg/* YYNRULES -- Number of states. */ 653848b8605Smrg#define YYNSTATES 478 654848b8605Smrg 655848b8605Smrg/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 656848b8605Smrg#define YYUNDEFTOK 2 657848b8605Smrg#define YYMAXUTOK 362 658848b8605Smrg 659848b8605Smrg#define YYTRANSLATE(YYX) \ 660848b8605Smrg ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 661848b8605Smrg 662848b8605Smrg/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 663848b8605Smrgstatic const yytype_uint8 yytranslate[] = 664848b8605Smrg{ 665848b8605Smrg 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 666848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 667848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 668848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 669848b8605Smrg 115, 116, 2, 113, 109, 114, 2, 2, 2, 2, 670848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 108, 671848b8605Smrg 2, 117, 2, 2, 2, 2, 2, 2, 2, 2, 672848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 673848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 674848b8605Smrg 2, 111, 2, 112, 2, 2, 2, 2, 2, 2, 675848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 676848b8605Smrg 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 677848b8605Smrg 2, 2, 2, 118, 110, 119, 2, 2, 2, 2, 678848b8605Smrg 2, 2, 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, 681848b8605Smrg 2, 2, 2, 2, 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, 684848b8605Smrg 2, 2, 2, 2, 2, 2, 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, 1, 2, 3, 4, 691848b8605Smrg 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 692848b8605Smrg 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 693848b8605Smrg 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 694848b8605Smrg 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 695848b8605Smrg 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 696848b8605Smrg 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 697848b8605Smrg 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 698848b8605Smrg 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 699848b8605Smrg 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 700848b8605Smrg 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 701848b8605Smrg 105, 106, 107 702848b8605Smrg}; 703848b8605Smrg 704848b8605Smrg#if YYDEBUG 705848b8605Smrg/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 706848b8605Smrg YYRHS. */ 707848b8605Smrgstatic const yytype_uint16 yyprhs[] = 708848b8605Smrg{ 709848b8605Smrg 0, 0, 3, 8, 10, 12, 15, 16, 20, 23, 710848b8605Smrg 24, 27, 30, 32, 34, 36, 38, 40, 42, 44, 711848b8605Smrg 46, 48, 50, 52, 54, 59, 64, 69, 76, 83, 712848b8605Smrg 92, 101, 104, 107, 120, 123, 125, 127, 129, 131, 713848b8605Smrg 133, 135, 137, 139, 141, 143, 145, 147, 154, 157, 714848b8605Smrg 162, 165, 167, 171, 177, 181, 184, 192, 195, 197, 715848b8605Smrg 199, 201, 203, 208, 210, 212, 214, 216, 218, 220, 716848b8605Smrg 222, 226, 227, 230, 233, 235, 237, 239, 241, 243, 717848b8605Smrg 245, 247, 249, 251, 252, 254, 256, 258, 260, 261, 718848b8605Smrg 265, 269, 270, 273, 276, 278, 280, 282, 284, 286, 719848b8605Smrg 288, 290, 292, 297, 300, 303, 305, 308, 310, 313, 720848b8605Smrg 315, 318, 323, 328, 330, 331, 335, 337, 339, 342, 721848b8605Smrg 344, 347, 349, 351, 355, 362, 363, 365, 368, 373, 722848b8605Smrg 375, 379, 381, 383, 385, 387, 389, 391, 393, 395, 723848b8605Smrg 397, 399, 402, 405, 408, 411, 414, 417, 420, 423, 724848b8605Smrg 426, 429, 432, 435, 439, 441, 443, 445, 451, 453, 725848b8605Smrg 455, 457, 460, 462, 464, 467, 469, 472, 479, 481, 726848b8605Smrg 485, 487, 489, 491, 493, 495, 500, 502, 504, 506, 727848b8605Smrg 508, 510, 512, 515, 517, 519, 525, 527, 530, 532, 728848b8605Smrg 534, 540, 543, 544, 551, 555, 556, 558, 560, 562, 729848b8605Smrg 564, 566, 569, 571, 573, 576, 581, 586, 587, 591, 730848b8605Smrg 593, 595, 597, 600, 602, 604, 606, 608, 614, 616, 731848b8605Smrg 620, 626, 632, 634, 638, 644, 646, 648, 650, 652, 732848b8605Smrg 654, 656, 658, 660, 662, 666, 672, 680, 690, 693, 733848b8605Smrg 696, 698, 700, 701, 702, 707, 709, 710, 711, 715, 734848b8605Smrg 719, 721, 727, 730, 733, 736, 739, 743, 746, 750, 735848b8605Smrg 751, 755, 757, 759, 760, 762, 764, 765, 767, 769, 736848b8605Smrg 770, 772, 774, 775, 779, 780, 784, 785, 789, 791, 737848b8605Smrg 793, 795, 800, 802 738848b8605Smrg}; 739848b8605Smrg 740848b8605Smrg/* YYRHS -- A `-1'-separated list of the rules' RHS. */ 741848b8605Smrgstatic const yytype_int16 yyrhs[] = 742848b8605Smrg{ 743848b8605Smrg 121, 0, -1, 122, 123, 125, 12, -1, 3, -1, 744848b8605Smrg 4, -1, 123, 124, -1, -1, 8, 262, 108, -1, 745848b8605Smrg 125, 126, -1, -1, 127, 108, -1, 170, 108, -1, 746848b8605Smrg 128, -1, 129, -1, 130, -1, 131, -1, 132, -1, 747848b8605Smrg 133, -1, 134, -1, 135, -1, 141, -1, 136, -1, 748848b8605Smrg 137, -1, 138, -1, 19, 146, 109, 142, -1, 18, 749848b8605Smrg 145, 109, 144, -1, 16, 145, 109, 142, -1, 14, 750848b8605Smrg 145, 109, 142, 109, 142, -1, 13, 145, 109, 144, 751848b8605Smrg 109, 144, -1, 17, 145, 109, 144, 109, 144, 109, 752848b8605Smrg 144, -1, 15, 145, 109, 144, 109, 139, 109, 140, 753848b8605Smrg -1, 20, 144, -1, 20, 166, -1, 22, 145, 109, 754848b8605Smrg 144, 109, 144, 109, 144, 109, 139, 109, 140, -1, 755848b8605Smrg 83, 256, -1, 84, -1, 85, -1, 86, -1, 87, 756848b8605Smrg -1, 88, -1, 89, -1, 90, -1, 91, -1, 92, 757848b8605Smrg -1, 93, -1, 94, -1, 95, -1, 21, 145, 109, 758848b8605Smrg 150, 109, 147, -1, 241, 143, -1, 241, 110, 143, 759848b8605Smrg 110, -1, 150, 162, -1, 238, -1, 241, 150, 163, 760848b8605Smrg -1, 241, 110, 150, 163, 110, -1, 151, 164, 165, 761848b8605Smrg -1, 159, 161, -1, 148, 109, 148, 109, 148, 109, 762848b8605Smrg 148, -1, 241, 149, -1, 23, -1, 262, -1, 100, 763848b8605Smrg -1, 172, -1, 152, 111, 153, 112, -1, 186, -1, 764848b8605Smrg 249, -1, 100, -1, 100, -1, 154, -1, 155, -1, 765848b8605Smrg 23, -1, 159, 160, 156, -1, -1, 113, 157, -1, 766848b8605Smrg 114, 158, -1, 23, -1, 23, -1, 100, -1, 104, 767848b8605Smrg -1, 104, -1, 104, -1, 104, -1, 101, -1, 105, 768848b8605Smrg -1, -1, 101, -1, 102, -1, 103, -1, 104, -1, 769848b8605Smrg -1, 115, 166, 116, -1, 115, 167, 116, -1, -1, 770848b8605Smrg 168, 163, -1, 169, 163, -1, 99, -1, 100, -1, 771848b8605Smrg 171, -1, 178, -1, 242, -1, 245, -1, 248, -1, 772848b8605Smrg 261, -1, 7, 99, 117, 172, -1, 96, 173, -1, 773848b8605Smrg 38, 177, -1, 60, -1, 98, 175, -1, 53, -1, 774848b8605Smrg 29, 254, -1, 37, -1, 74, 255, -1, 50, 111, 775848b8605Smrg 176, 112, -1, 97, 111, 174, 112, -1, 23, -1, 776848b8605Smrg -1, 111, 176, 112, -1, 23, -1, 60, -1, 29, 777848b8605Smrg 254, -1, 37, -1, 74, 255, -1, 179, -1, 180, 778848b8605Smrg -1, 10, 99, 182, -1, 10, 99, 111, 181, 112, 779848b8605Smrg 183, -1, -1, 23, -1, 117, 185, -1, 117, 118, 780848b8605Smrg 184, 119, -1, 187, -1, 184, 109, 187, -1, 189, 781848b8605Smrg -1, 225, -1, 235, -1, 189, -1, 225, -1, 236, 782848b8605Smrg -1, 188, -1, 226, -1, 235, -1, 189, -1, 73, 783848b8605Smrg 213, -1, 73, 190, -1, 73, 192, -1, 73, 195, 784848b8605Smrg -1, 73, 197, -1, 73, 203, -1, 73, 199, -1, 785848b8605Smrg 73, 206, -1, 73, 208, -1, 73, 210, -1, 73, 786848b8605Smrg 212, -1, 73, 224, -1, 47, 253, 191, -1, 201, 787848b8605Smrg -1, 33, -1, 69, -1, 43, 111, 202, 112, 193, 788848b8605Smrg -1, 201, -1, 60, -1, 26, -1, 72, 194, -1, 789848b8605Smrg 40, -1, 32, -1, 44, 196, -1, 25, -1, 253, 790848b8605Smrg 67, -1, 45, 111, 202, 112, 253, 198, -1, 201, 791848b8605Smrg -1, 75, 257, 200, -1, 29, -1, 25, -1, 31, 792848b8605Smrg -1, 71, -1, 23, -1, 76, 255, 204, 205, -1, 793848b8605Smrg 35, -1, 54, -1, 79, -1, 80, -1, 78, -1, 794848b8605Smrg 77, -1, 36, 207, -1, 29, -1, 56, -1, 28, 795848b8605Smrg 111, 209, 112, 57, -1, 23, -1, 58, 211, -1, 796848b8605Smrg 70, -1, 26, -1, 215, 66, 111, 218, 112, -1, 797848b8605Smrg 215, 214, -1, -1, 66, 111, 218, 106, 218, 112, 798848b8605Smrg -1, 49, 219, 216, -1, -1, 217, -1, 41, -1, 799848b8605Smrg 82, -1, 42, -1, 23, -1, 51, 220, -1, 63, 800848b8605Smrg -1, 52, -1, 81, 255, -1, 55, 111, 222, 112, 801848b8605Smrg -1, 48, 111, 223, 112, -1, -1, 111, 221, 112, 802848b8605Smrg -1, 23, -1, 23, -1, 23, -1, 30, 64, -1, 803848b8605Smrg 229, -1, 232, -1, 227, -1, 230, -1, 62, 34, 804848b8605Smrg 111, 228, 112, -1, 233, -1, 233, 106, 233, -1, 805848b8605Smrg 62, 34, 111, 233, 112, -1, 62, 46, 111, 231, 806848b8605Smrg 112, -1, 234, -1, 234, 106, 234, -1, 62, 46, 807848b8605Smrg 111, 234, 112, -1, 23, -1, 23, -1, 237, -1, 808848b8605Smrg 239, -1, 238, -1, 239, -1, 240, -1, 24, -1, 809848b8605Smrg 23, -1, 118, 240, 119, -1, 118, 240, 109, 240, 810848b8605Smrg 119, -1, 118, 240, 109, 240, 109, 240, 119, -1, 811848b8605Smrg 118, 240, 109, 240, 109, 240, 109, 240, 119, -1, 812848b8605Smrg 241, 24, -1, 241, 23, -1, 113, -1, 114, -1, 813848b8605Smrg -1, -1, 244, 11, 243, 247, -1, 262, -1, -1, 814848b8605Smrg -1, 5, 246, 247, -1, 247, 109, 99, -1, 99, 815848b8605Smrg -1, 244, 9, 99, 117, 249, -1, 65, 60, -1, 816848b8605Smrg 65, 37, -1, 65, 250, -1, 65, 59, -1, 65, 817848b8605Smrg 74, 255, -1, 65, 30, -1, 29, 251, 252, -1, 818848b8605Smrg -1, 111, 23, 112, -1, 39, -1, 27, -1, -1, 819848b8605Smrg 61, -1, 68, -1, -1, 39, -1, 27, -1, -1, 820848b8605Smrg 61, -1, 68, -1, -1, 111, 258, 112, -1, -1, 821848b8605Smrg 111, 259, 112, -1, -1, 111, 260, 112, -1, 23, 822848b8605Smrg -1, 23, -1, 23, -1, 6, 99, 117, 100, -1, 823848b8605Smrg 99, -1, 100, -1 824848b8605Smrg}; 825848b8605Smrg 826848b8605Smrg/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 827848b8605Smrgstatic const yytype_uint16 yyrline[] = 828848b8605Smrg{ 829848b8605Smrg 0, 284, 284, 287, 295, 307, 308, 311, 335, 336, 830848b8605Smrg 339, 354, 357, 362, 369, 370, 371, 372, 373, 374, 831848b8605Smrg 375, 378, 379, 380, 383, 389, 397, 403, 410, 416, 832848b8605Smrg 423, 467, 472, 481, 525, 531, 532, 533, 534, 535, 833848b8605Smrg 536, 537, 538, 539, 540, 541, 542, 545, 557, 565, 834848b8605Smrg 582, 589, 608, 619, 639, 663, 670, 703, 710, 726, 835848b8605Smrg 785, 828, 837, 859, 869, 873, 902, 921, 921, 923, 836848b8605Smrg 930, 942, 943, 944, 947, 961, 975, 995, 1006, 1018, 837848b8605Smrg 1020, 1021, 1022, 1023, 1026, 1026, 1026, 1026, 1027, 1030, 838848b8605Smrg 1034, 1039, 1045, 1052, 1059, 1081, 1103, 1104, 1105, 1106, 839848b8605Smrg 1107, 1108, 1111, 1130, 1134, 1140, 1144, 1148, 1152, 1156, 840848b8605Smrg 1160, 1164, 1169, 1175, 1186, 1186, 1187, 1189, 1193, 1197, 841848b8605Smrg 1201, 1207, 1207, 1209, 1227, 1253, 1256, 1271, 1277, 1283, 842848b8605Smrg 1284, 1291, 1297, 1303, 1311, 1317, 1323, 1331, 1337, 1343, 843848b8605Smrg 1351, 1352, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 844848b8605Smrg 1363, 1364, 1365, 1368, 1377, 1381, 1385, 1391, 1400, 1404, 845848b8605Smrg 1408, 1417, 1421, 1427, 1433, 1440, 1445, 1453, 1463, 1465, 846848b8605Smrg 1473, 1479, 1483, 1487, 1493, 1504, 1513, 1517, 1522, 1526, 847848b8605Smrg 1530, 1534, 1540, 1547, 1551, 1557, 1565, 1576, 1583, 1587, 848848b8605Smrg 1593, 1603, 1614, 1618, 1636, 1645, 1648, 1654, 1658, 1662, 849848b8605Smrg 1668, 1679, 1684, 1689, 1694, 1699, 1704, 1712, 1715, 1720, 850848b8605Smrg 1733, 1741, 1752, 1760, 1760, 1762, 1762, 1764, 1774, 1779, 851848b8605Smrg 1786, 1796, 1805, 1810, 1817, 1827, 1837, 1849, 1849, 1850, 852848b8605Smrg 1850, 1852, 1862, 1870, 1880, 1888, 1896, 1905, 1916, 1920, 853848b8605Smrg 1926, 1927, 1928, 1931, 1931, 1934, 1969, 1973, 1973, 1976, 854848b8605Smrg 1983, 1992, 2006, 2015, 2024, 2028, 2037, 2046, 2057, 2064, 855848b8605Smrg 2074, 2102, 2111, 2123, 2126, 2135, 2146, 2147, 2148, 2151, 856848b8605Smrg 2152, 2153, 2156, 2157, 2160, 2161, 2164, 2165, 2168, 2179, 857848b8605Smrg 2190, 2201, 2227, 2228 858848b8605Smrg}; 859848b8605Smrg#endif 860848b8605Smrg 861848b8605Smrg#if YYDEBUG || YYERROR_VERBOSE || 1 862848b8605Smrg/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 863848b8605Smrg First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 864848b8605Smrgstatic const char *const yytname[] = 865848b8605Smrg{ 866848b8605Smrg "$end", "error", "$undefined", "ARBvp_10", "ARBfp_10", "ADDRESS", 867848b8605Smrg "ALIAS", "ATTRIB", "OPTION", "OUTPUT", "PARAM", "TEMP", "END", "BIN_OP", 868848b8605Smrg "BINSC_OP", "SAMPLE_OP", "SCALAR_OP", "TRI_OP", "VECTOR_OP", "ARL", 869848b8605Smrg "KIL", "SWZ", "TXD_OP", "INTEGER", "REAL", "AMBIENT", "ATTENUATION", 870848b8605Smrg "BACK", "CLIP", "COLOR", "DEPTH", "DIFFUSE", "DIRECTION", "EMISSION", 871848b8605Smrg "ENV", "EYE", "FOG", "FOGCOORD", "FRAGMENT", "FRONT", "HALF", "INVERSE", 872848b8605Smrg "INVTRANS", "LIGHT", "LIGHTMODEL", "LIGHTPROD", "LOCAL", "MATERIAL", 873848b8605Smrg "MAT_PROGRAM", "MATRIX", "MATRIXINDEX", "MODELVIEW", "MVP", "NORMAL", 874848b8605Smrg "OBJECT", "PALETTE", "PARAMS", "PLANE", "POINT_TOK", "POINTSIZE", 875848b8605Smrg "POSITION", "PRIMARY", "PROGRAM", "PROJECTION", "RANGE", "RESULT", "ROW", 876848b8605Smrg "SCENECOLOR", "SECONDARY", "SHININESS", "SIZE_TOK", "SPECULAR", "SPOT", 877848b8605Smrg "STATE", "TEXCOORD", "TEXENV", "TEXGEN", "TEXGEN_Q", "TEXGEN_R", 878848b8605Smrg "TEXGEN_S", "TEXGEN_T", "TEXTURE", "TRANSPOSE", "TEXTURE_UNIT", "TEX_1D", 879848b8605Smrg "TEX_2D", "TEX_3D", "TEX_CUBE", "TEX_RECT", "TEX_SHADOW1D", 880848b8605Smrg "TEX_SHADOW2D", "TEX_SHADOWRECT", "TEX_ARRAY1D", "TEX_ARRAY2D", 881848b8605Smrg "TEX_ARRAYSHADOW1D", "TEX_ARRAYSHADOW2D", "VERTEX", "VTXATTRIB", 882848b8605Smrg "WEIGHT", "IDENTIFIER", "USED_IDENTIFIER", "MASK4", "MASK3", "MASK2", 883848b8605Smrg "MASK1", "SWIZZLE", "DOT_DOT", "DOT", "';'", "','", "'|'", "'['", "']'", 884848b8605Smrg "'+'", "'-'", "'('", "')'", "'='", "'{'", "'}'", "$accept", "program", 885848b8605Smrg "language", "optionSequence", "option", "statementSequence", "statement", 886848b8605Smrg "instruction", "ALU_instruction", "TexInstruction", "ARL_instruction", 887848b8605Smrg "VECTORop_instruction", "SCALARop_instruction", "BINSCop_instruction", 888848b8605Smrg "BINop_instruction", "TRIop_instruction", "SAMPLE_instruction", 889848b8605Smrg "KIL_instruction", "TXD_instruction", "texImageUnit", "texTarget", 890848b8605Smrg "SWZ_instruction", "scalarSrcReg", "scalarUse", "swizzleSrcReg", 891848b8605Smrg "maskedDstReg", "maskedAddrReg", "extendedSwizzle", "extSwizComp", 892848b8605Smrg "extSwizSel", "srcReg", "dstReg", "progParamArray", "progParamArrayMem", 893848b8605Smrg "progParamArrayAbs", "progParamArrayRel", "addrRegRelOffset", 894848b8605Smrg "addrRegPosOffset", "addrRegNegOffset", "addrReg", "addrComponent", 895848b8605Smrg "addrWriteMask", "scalarSuffix", "swizzleSuffix", "optionalMask", 896848b8605Smrg "optionalCcMask", "ccTest", "ccTest2", "ccMaskRule", "ccMaskRule2", 897848b8605Smrg "namingStatement", "ATTRIB_statement", "attribBinding", "vtxAttribItem", 898848b8605Smrg "vtxAttribNum", "vtxOptWeightNum", "vtxWeightNum", "fragAttribItem", 899848b8605Smrg "PARAM_statement", "PARAM_singleStmt", "PARAM_multipleStmt", 900848b8605Smrg "optArraySize", "paramSingleInit", "paramMultipleInit", 901848b8605Smrg "paramMultInitList", "paramSingleItemDecl", "paramSingleItemUse", 902848b8605Smrg "paramMultipleItem", "stateMultipleItem", "stateSingleItem", 903848b8605Smrg "stateMaterialItem", "stateMatProperty", "stateLightItem", 904848b8605Smrg "stateLightProperty", "stateSpotProperty", "stateLightModelItem", 905848b8605Smrg "stateLModProperty", "stateLightProdItem", "stateLProdProperty", 906848b8605Smrg "stateTexEnvItem", "stateTexEnvProperty", "ambDiffSpecProperty", 907848b8605Smrg "stateLightNumber", "stateTexGenItem", "stateTexGenType", 908848b8605Smrg "stateTexGenCoord", "stateFogItem", "stateFogProperty", 909848b8605Smrg "stateClipPlaneItem", "stateClipPlaneNum", "statePointItem", 910848b8605Smrg "statePointProperty", "stateMatrixRow", "stateMatrixRows", 911848b8605Smrg "optMatrixRows", "stateMatrixItem", "stateOptMatModifier", 912848b8605Smrg "stateMatModifier", "stateMatrixRowNum", "stateMatrixName", 913848b8605Smrg "stateOptModMatNum", "stateModMatNum", "statePaletteMatNum", 914848b8605Smrg "stateProgramMatNum", "stateDepthItem", "programSingleItem", 915848b8605Smrg "programMultipleItem", "progEnvParams", "progEnvParamNums", 916848b8605Smrg "progEnvParam", "progLocalParams", "progLocalParamNums", 917848b8605Smrg "progLocalParam", "progEnvParamNum", "progLocalParamNum", 918848b8605Smrg "paramConstDecl", "paramConstUse", "paramConstScalarDecl", 919848b8605Smrg "paramConstScalarUse", "paramConstVector", "signedFloatConstant", 920848b8605Smrg "optionalSign", "TEMP_statement", "@1", "optVarSize", 921848b8605Smrg "ADDRESS_statement", "@2", "varNameList", "OUTPUT_statement", 922848b8605Smrg "resultBinding", "resultColBinding", "optResultFaceType", 923848b8605Smrg "optResultColorType", "optFaceType", "optColorType", 924848b8605Smrg "optTexCoordUnitNum", "optTexImageUnitNum", "optLegacyTexUnitNum", 925848b8605Smrg "texCoordUnitNum", "texImageUnitNum", "legacyTexUnitNum", 926848b8605Smrg "ALIAS_statement", "string", YY_NULL 927848b8605Smrg}; 928848b8605Smrg#endif 929848b8605Smrg 930848b8605Smrg# ifdef YYPRINT 931848b8605Smrg/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to 932848b8605Smrg token YYLEX-NUM. */ 933848b8605Smrgstatic const yytype_uint16 yytoknum[] = 934848b8605Smrg{ 935848b8605Smrg 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 936848b8605Smrg 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 937848b8605Smrg 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 938848b8605Smrg 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 939848b8605Smrg 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 940848b8605Smrg 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 941848b8605Smrg 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 942848b8605Smrg 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 943848b8605Smrg 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 944848b8605Smrg 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 945848b8605Smrg 355, 356, 357, 358, 359, 360, 361, 362, 59, 44, 946848b8605Smrg 124, 91, 93, 43, 45, 40, 41, 61, 123, 125 947848b8605Smrg}; 948848b8605Smrg# endif 949848b8605Smrg 950848b8605Smrg/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 951848b8605Smrgstatic const yytype_uint16 yyr1[] = 952848b8605Smrg{ 953848b8605Smrg 0, 120, 121, 122, 122, 123, 123, 124, 125, 125, 954848b8605Smrg 126, 126, 127, 127, 128, 128, 128, 128, 128, 128, 955848b8605Smrg 128, 129, 129, 129, 130, 131, 132, 133, 134, 135, 956848b8605Smrg 136, 137, 137, 138, 139, 140, 140, 140, 140, 140, 957848b8605Smrg 140, 140, 140, 140, 140, 140, 140, 141, 142, 142, 958848b8605Smrg 143, 143, 144, 144, 145, 146, 147, 148, 149, 149, 959848b8605Smrg 150, 150, 150, 150, 151, 151, 152, 153, 153, 154, 960848b8605Smrg 155, 156, 156, 156, 157, 158, 159, 160, 161, 162, 961848b8605Smrg 163, 163, 163, 163, 164, 164, 164, 164, 164, 165, 962848b8605Smrg 165, 165, 166, 167, 168, 169, 170, 170, 170, 170, 963848b8605Smrg 170, 170, 171, 172, 172, 173, 173, 173, 173, 173, 964848b8605Smrg 173, 173, 173, 174, 175, 175, 176, 177, 177, 177, 965848b8605Smrg 177, 178, 178, 179, 180, 181, 181, 182, 183, 184, 966848b8605Smrg 184, 185, 185, 185, 186, 186, 186, 187, 187, 187, 967848b8605Smrg 188, 188, 189, 189, 189, 189, 189, 189, 189, 189, 968848b8605Smrg 189, 189, 189, 190, 191, 191, 191, 192, 193, 193, 969848b8605Smrg 193, 193, 193, 194, 195, 196, 196, 197, 198, 199, 970848b8605Smrg 200, 201, 201, 201, 202, 203, 204, 204, 205, 205, 971848b8605Smrg 205, 205, 206, 207, 207, 208, 209, 210, 211, 211, 972848b8605Smrg 212, 213, 214, 214, 215, 216, 216, 217, 217, 217, 973848b8605Smrg 218, 219, 219, 219, 219, 219, 219, 220, 220, 221, 974848b8605Smrg 222, 223, 224, 225, 225, 226, 226, 227, 228, 228, 975848b8605Smrg 229, 230, 231, 231, 232, 233, 234, 235, 235, 236, 976848b8605Smrg 236, 237, 238, 238, 239, 239, 239, 239, 240, 240, 977848b8605Smrg 241, 241, 241, 243, 242, 244, 244, 246, 245, 247, 978848b8605Smrg 247, 248, 249, 249, 249, 249, 249, 249, 250, 251, 979848b8605Smrg 251, 251, 251, 252, 252, 252, 253, 253, 253, 254, 980848b8605Smrg 254, 254, 255, 255, 256, 256, 257, 257, 258, 259, 981848b8605Smrg 260, 261, 262, 262 982848b8605Smrg}; 983848b8605Smrg 984848b8605Smrg/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 985848b8605Smrgstatic const yytype_uint8 yyr2[] = 986848b8605Smrg{ 987848b8605Smrg 0, 2, 4, 1, 1, 2, 0, 3, 2, 0, 988848b8605Smrg 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 989848b8605Smrg 1, 1, 1, 1, 4, 4, 4, 6, 6, 8, 990848b8605Smrg 8, 2, 2, 12, 2, 1, 1, 1, 1, 1, 991848b8605Smrg 1, 1, 1, 1, 1, 1, 1, 6, 2, 4, 992848b8605Smrg 2, 1, 3, 5, 3, 2, 7, 2, 1, 1, 993848b8605Smrg 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 994848b8605Smrg 3, 0, 2, 2, 1, 1, 1, 1, 1, 1, 995848b8605Smrg 1, 1, 1, 0, 1, 1, 1, 1, 0, 3, 996848b8605Smrg 3, 0, 2, 2, 1, 1, 1, 1, 1, 1, 997848b8605Smrg 1, 1, 4, 2, 2, 1, 2, 1, 2, 1, 998848b8605Smrg 2, 4, 4, 1, 0, 3, 1, 1, 2, 1, 999848b8605Smrg 2, 1, 1, 3, 6, 0, 1, 2, 4, 1, 1000848b8605Smrg 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1001848b8605Smrg 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1002848b8605Smrg 2, 2, 2, 3, 1, 1, 1, 5, 1, 1, 1003848b8605Smrg 1, 2, 1, 1, 2, 1, 2, 6, 1, 3, 1004848b8605Smrg 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1005848b8605Smrg 1, 1, 2, 1, 1, 5, 1, 2, 1, 1, 1006848b8605Smrg 5, 2, 0, 6, 3, 0, 1, 1, 1, 1, 1007848b8605Smrg 1, 2, 1, 1, 2, 4, 4, 0, 3, 1, 1008848b8605Smrg 1, 1, 2, 1, 1, 1, 1, 5, 1, 3, 1009848b8605Smrg 5, 5, 1, 3, 5, 1, 1, 1, 1, 1, 1010848b8605Smrg 1, 1, 1, 1, 3, 5, 7, 9, 2, 2, 1011848b8605Smrg 1, 1, 0, 0, 4, 1, 0, 0, 3, 3, 1012848b8605Smrg 1, 5, 2, 2, 2, 2, 3, 2, 3, 0, 1013848b8605Smrg 3, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1014848b8605Smrg 1, 1, 0, 3, 0, 3, 0, 3, 1, 1, 1015848b8605Smrg 1, 4, 1, 1 1016848b8605Smrg}; 1017848b8605Smrg 1018848b8605Smrg/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. 1019848b8605Smrg Performed when YYTABLE doesn't specify something else to do. Zero 1020848b8605Smrg means the default is an error. */ 1021848b8605Smrgstatic const yytype_uint16 yydefact[] = 1022848b8605Smrg{ 1023848b8605Smrg 0, 3, 4, 0, 6, 1, 9, 0, 5, 246, 1024848b8605Smrg 282, 283, 0, 247, 0, 0, 0, 2, 0, 0, 1025848b8605Smrg 0, 0, 0, 0, 0, 242, 0, 0, 8, 0, 1026848b8605Smrg 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 1027848b8605Smrg 23, 20, 0, 96, 97, 121, 122, 98, 0, 99, 1028848b8605Smrg 100, 101, 245, 7, 0, 0, 0, 0, 0, 65, 1029848b8605Smrg 0, 88, 64, 0, 0, 0, 0, 0, 76, 0, 1030848b8605Smrg 0, 94, 240, 241, 31, 32, 83, 0, 0, 0, 1031848b8605Smrg 10, 11, 0, 243, 250, 248, 0, 0, 125, 242, 1032848b8605Smrg 123, 259, 257, 253, 255, 252, 272, 254, 242, 84, 1033848b8605Smrg 85, 86, 87, 91, 242, 242, 242, 242, 242, 242, 1034848b8605Smrg 78, 55, 81, 80, 82, 92, 233, 232, 0, 0, 1035848b8605Smrg 0, 0, 60, 0, 242, 83, 0, 61, 63, 134, 1036848b8605Smrg 135, 213, 214, 136, 229, 230, 0, 242, 0, 0, 1037848b8605Smrg 0, 281, 102, 126, 0, 127, 131, 132, 133, 227, 1038848b8605Smrg 228, 231, 0, 262, 261, 0, 263, 0, 256, 0, 1039848b8605Smrg 0, 54, 0, 0, 0, 26, 0, 25, 24, 269, 1040848b8605Smrg 119, 117, 272, 104, 0, 0, 0, 0, 0, 0, 1041848b8605Smrg 266, 0, 266, 0, 0, 276, 272, 142, 143, 144, 1042848b8605Smrg 145, 147, 146, 148, 149, 150, 151, 0, 152, 269, 1043848b8605Smrg 109, 0, 107, 105, 272, 0, 114, 103, 83, 0, 1044848b8605Smrg 52, 0, 0, 0, 0, 244, 249, 0, 239, 238, 1045848b8605Smrg 0, 264, 265, 258, 278, 0, 242, 95, 0, 0, 1046848b8605Smrg 83, 242, 0, 48, 0, 51, 0, 242, 270, 271, 1047848b8605Smrg 118, 120, 0, 0, 0, 212, 183, 184, 182, 0, 1048848b8605Smrg 165, 268, 267, 164, 0, 0, 0, 0, 207, 203, 1049848b8605Smrg 0, 202, 272, 195, 189, 188, 187, 0, 0, 0, 1050848b8605Smrg 0, 108, 0, 110, 0, 0, 106, 0, 242, 234, 1051848b8605Smrg 69, 0, 67, 68, 0, 242, 242, 251, 0, 124, 1052848b8605Smrg 260, 273, 28, 89, 90, 93, 27, 0, 79, 50, 1053848b8605Smrg 274, 0, 0, 225, 0, 226, 0, 186, 0, 174, 1054848b8605Smrg 0, 166, 0, 171, 172, 155, 156, 173, 153, 154, 1055848b8605Smrg 0, 0, 201, 0, 204, 197, 199, 198, 194, 196, 1056848b8605Smrg 280, 0, 170, 169, 176, 177, 0, 0, 116, 0, 1057848b8605Smrg 113, 0, 0, 53, 0, 62, 77, 71, 47, 0, 1058848b8605Smrg 0, 0, 242, 49, 0, 34, 0, 242, 220, 224, 1059848b8605Smrg 0, 0, 266, 211, 0, 209, 0, 210, 0, 277, 1060848b8605Smrg 181, 180, 178, 179, 175, 200, 0, 111, 112, 115, 1061848b8605Smrg 242, 235, 0, 0, 70, 242, 58, 57, 59, 242, 1062848b8605Smrg 0, 0, 0, 129, 137, 140, 138, 215, 216, 139, 1063848b8605Smrg 279, 0, 35, 36, 37, 38, 39, 40, 41, 42, 1064848b8605Smrg 43, 44, 45, 46, 30, 29, 185, 160, 162, 159, 1065848b8605Smrg 0, 157, 158, 0, 206, 208, 205, 190, 0, 74, 1066848b8605Smrg 72, 75, 73, 0, 0, 0, 0, 141, 192, 242, 1067848b8605Smrg 128, 275, 163, 161, 167, 168, 242, 236, 242, 0, 1068848b8605Smrg 0, 0, 0, 191, 130, 0, 0, 0, 0, 218, 1069848b8605Smrg 0, 222, 0, 237, 242, 0, 217, 0, 221, 0, 1070848b8605Smrg 0, 56, 33, 219, 223, 0, 0, 193 1071848b8605Smrg}; 1072848b8605Smrg 1073848b8605Smrg/* YYDEFGOTO[NTERM-NUM]. */ 1074848b8605Smrgstatic const yytype_int16 yydefgoto[] = 1075848b8605Smrg{ 1076848b8605Smrg -1, 3, 4, 6, 8, 9, 28, 29, 30, 31, 1077848b8605Smrg 32, 33, 34, 35, 36, 37, 38, 39, 40, 301, 1078848b8605Smrg 414, 41, 162, 233, 74, 60, 69, 348, 349, 387, 1079848b8605Smrg 234, 61, 126, 281, 282, 283, 384, 430, 432, 70, 1080848b8605Smrg 347, 111, 299, 115, 103, 161, 75, 229, 76, 230, 1081848b8605Smrg 42, 43, 127, 207, 341, 276, 339, 173, 44, 45, 1082848b8605Smrg 46, 144, 90, 289, 392, 145, 128, 393, 394, 129, 1083848b8605Smrg 187, 318, 188, 421, 443, 189, 253, 190, 444, 191, 1084848b8605Smrg 333, 319, 310, 192, 336, 374, 193, 248, 194, 308, 1085848b8605Smrg 195, 266, 196, 437, 453, 197, 328, 329, 376, 263, 1086848b8605Smrg 322, 366, 368, 364, 198, 130, 396, 397, 458, 131, 1087848b8605Smrg 398, 460, 132, 304, 306, 399, 133, 149, 134, 135, 1088848b8605Smrg 151, 77, 47, 139, 48, 49, 54, 85, 50, 62, 1089848b8605Smrg 97, 156, 223, 254, 240, 158, 355, 268, 225, 401, 1090848b8605Smrg 331, 51, 12 1091848b8605Smrg}; 1092848b8605Smrg 1093848b8605Smrg/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 1094848b8605Smrg STATE-NUM. */ 1095848b8605Smrg#define YYPACT_NINF -398 1096848b8605Smrgstatic const yytype_int16 yypact[] = 1097848b8605Smrg{ 1098848b8605Smrg 52, -398, -398, 14, -398, -398, 67, 152, -398, 24, 1099848b8605Smrg -398, -398, 5, -398, 47, 81, 99, -398, -1, -1, 1100848b8605Smrg -1, -1, -1, -1, 43, 56, -1, -1, -398, 97, 1101848b8605Smrg -398, -398, -398, -398, -398, -398, -398, -398, -398, -398, 1102848b8605Smrg -398, -398, 112, -398, -398, -398, -398, -398, 156, -398, 1103848b8605Smrg -398, -398, -398, -398, 111, 98, 141, 95, 127, -398, 1104848b8605Smrg 84, 142, -398, 146, 150, 153, 157, 158, -398, 159, 1105848b8605Smrg 165, -398, -398, -398, -398, -398, 113, -13, 161, 163, 1106848b8605Smrg -398, -398, 162, -398, -398, 164, 174, 10, 252, -3, 1107848b8605Smrg -398, -11, -398, -398, -398, -398, 166, -398, -20, -398, 1108848b8605Smrg -398, -398, -398, 167, -20, -20, -20, -20, -20, -20, 1109848b8605Smrg -398, -398, -398, -398, -398, -398, -398, -398, 137, 70, 1110848b8605Smrg 132, 85, 168, 34, -20, 113, 169, -398, -398, -398, 1111848b8605Smrg -398, -398, -398, -398, -398, -398, 34, -20, 171, 111, 1112848b8605Smrg 179, -398, -398, -398, 172, -398, -398, -398, -398, -398, 1113848b8605Smrg -398, -398, 216, -398, -398, 253, 76, 258, -398, 176, 1114848b8605Smrg 154, -398, 178, 29, 180, -398, 181, -398, -398, 110, 1115848b8605Smrg -398, -398, 166, -398, 175, 182, 183, 219, 32, 184, 1116848b8605Smrg 177, 186, 94, 140, 7, 187, 166, -398, -398, -398, 1117848b8605Smrg -398, -398, -398, -398, -398, -398, -398, 226, -398, 110, 1118848b8605Smrg -398, 188, -398, -398, 166, 189, 190, -398, 113, 9, 1119848b8605Smrg -398, 1, 193, 195, 240, 164, -398, 191, -398, -398, 1120848b8605Smrg 194, -398, -398, -398, -398, 197, -20, -398, 196, 198, 1121848b8605Smrg 113, -20, 34, -398, 203, 206, 228, -20, -398, -398, 1122848b8605Smrg -398, -398, 290, 292, 293, -398, -398, -398, -398, 294, 1123848b8605Smrg -398, -398, -398, -398, 251, 294, 48, 208, 209, -398, 1124848b8605Smrg 210, -398, 166, 21, -398, -398, -398, 299, 295, 12, 1125848b8605Smrg 212, -398, 302, -398, 304, 302, -398, 218, -20, -398, 1126848b8605Smrg -398, 217, -398, -398, 227, -20, -20, -398, 214, -398, 1127848b8605Smrg -398, -398, -398, -398, -398, -398, -398, 220, -398, -398, 1128848b8605Smrg 222, 225, 229, -398, 223, -398, 224, -398, 230, -398, 1129848b8605Smrg 231, -398, 233, -398, -398, -398, -398, -398, -398, -398, 1130848b8605Smrg 314, 316, -398, 317, -398, -398, -398, -398, -398, -398, 1131848b8605Smrg -398, 234, -398, -398, -398, -398, 170, 318, -398, 235, 1132848b8605Smrg -398, 236, 237, -398, 44, -398, -398, 143, -398, 244, 1133848b8605Smrg -15, 245, 36, -398, 332, -398, 138, -20, -398, -398, 1134848b8605Smrg 301, 101, 94, -398, 248, -398, 249, -398, 250, -398, 1135848b8605Smrg -398, -398, -398, -398, -398, -398, 254, -398, -398, -398, 1136848b8605Smrg -20, -398, 333, 340, -398, -20, -398, -398, -398, -20, 1137848b8605Smrg 102, 132, 75, -398, -398, -398, -398, -398, -398, -398, 1138848b8605Smrg -398, 255, -398, -398, -398, -398, -398, -398, -398, -398, 1139848b8605Smrg -398, -398, -398, -398, -398, -398, -398, -398, -398, -398, 1140848b8605Smrg 336, -398, -398, 49, -398, -398, -398, -398, 90, -398, 1141848b8605Smrg -398, -398, -398, 256, 260, 259, 261, -398, 298, 36, 1142848b8605Smrg -398, -398, -398, -398, -398, -398, -20, -398, -20, 228, 1143848b8605Smrg 290, 292, 262, -398, -398, 257, 265, 268, 266, 273, 1144848b8605Smrg 269, 274, 318, -398, -20, 138, -398, 290, -398, 292, 1145848b8605Smrg 107, -398, -398, -398, -398, 318, 270, -398 1146848b8605Smrg}; 1147848b8605Smrg 1148848b8605Smrg/* YYPGOTO[NTERM-NUM]. */ 1149848b8605Smrgstatic const yytype_int16 yypgoto[] = 1150848b8605Smrg{ 1151848b8605Smrg -398, -398, -398, -398, -398, -398, -398, -398, -398, -398, 1152848b8605Smrg -398, -398, -398, -398, -398, -398, -398, -398, -398, -78, 1153848b8605Smrg -82, -398, -100, 155, -86, 215, -398, -398, -372, -398, 1154848b8605Smrg -54, -398, -398, -398, -398, -398, -398, -398, -398, 173, 1155848b8605Smrg -398, -398, -398, -118, -398, -398, 232, -398, -398, -398, 1156848b8605Smrg -398, -398, 303, -398, -398, -398, 114, -398, -398, -398, 1157848b8605Smrg -398, -398, -398, -398, -398, -398, -398, -53, -398, -88, 1158848b8605Smrg -398, -398, -398, -398, -398, -398, -398, -398, -398, -398, 1159848b8605Smrg -398, -334, 130, -398, -398, -398, -398, -398, -398, -398, 1160848b8605Smrg -398, -398, -398, -398, -398, 0, -398, -398, -397, -398, 1161848b8605Smrg -398, -398, -398, -398, -398, 305, -398, -398, -398, -398, 1162848b8605Smrg -398, -398, -398, -396, -383, 306, -398, -398, -137, -87, 1163848b8605Smrg -120, -89, -398, -398, -398, -398, -398, 263, -398, 185, 1164848b8605Smrg -398, -398, -398, -177, 199, -154, -398, -398, -398, -398, 1165848b8605Smrg -398, -398, -6 1166848b8605Smrg}; 1167848b8605Smrg 1168848b8605Smrg/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 1169848b8605Smrg positive, shift that token. If negative, reduce the rule which 1170848b8605Smrg number is the opposite. If YYTABLE_NINF, syntax error. */ 1171848b8605Smrg#define YYTABLE_NINF -230 1172848b8605Smrgstatic const yytype_int16 yytable[] = 1173848b8605Smrg{ 1174848b8605Smrg 152, 146, 150, 52, 209, 256, 165, 210, 386, 168, 1175848b8605Smrg 116, 117, 159, 433, 5, 163, 153, 163, 241, 164, 1176848b8605Smrg 163, 166, 167, 125, 280, 118, 235, 422, 154, 13, 1177848b8605Smrg 14, 15, 269, 264, 16, 152, 17, 18, 19, 20, 1178848b8605Smrg 21, 22, 23, 24, 25, 26, 27, 334, 118, 119, 1179848b8605Smrg 273, 213, 116, 117, 459, 1, 2, 116, 117, 119, 1180848b8605Smrg 120, 246, 325, 326, 58, 470, 335, 118, 461, 208, 1181848b8605Smrg 120, 473, 118, 313, 313, 7, 456, 265, 476, 314, 1182848b8605Smrg 314, 315, 212, 121, 10, 11, 474, 122, 247, 445, 1183848b8605Smrg 277, 119, 471, 72, 73, 235, 119, 123, 390, 59, 1184848b8605Smrg 155, 68, 120, 327, 174, 124, 121, 120, 324, 391, 1185848b8605Smrg 72, 73, 295, 53, 199, 124, 175, 316, 278, 317, 1186848b8605Smrg 317, 251, 200, 10, 11, 121, 313, 417, 279, 122, 1187848b8605Smrg 121, 296, 314, 252, 122, 201, 435, 221, 202, 232, 1188848b8605Smrg 292, 418, 163, 68, 222, 203, 55, 124, 436, 72, 1189848b8605Smrg 73, 302, 124, 380, 124, 71, 91, 92, 344, 204, 1190848b8605Smrg 176, 419, 177, 381, 93, 82, 169, 83, 178, 72, 1191848b8605Smrg 73, 238, 317, 420, 170, 179, 180, 181, 239, 182, 1192848b8605Smrg 56, 183, 205, 206, 439, 423, 94, 95, 257, 152, 1193848b8605Smrg 184, 258, 259, 98, 440, 260, 350, 171, 57, 446, 1194848b8605Smrg 351, 96, 250, 261, 251, 80, 88, 185, 186, 447, 1195848b8605Smrg 84, 172, 89, 475, 112, 86, 252, 113, 114, 427, 1196848b8605Smrg 81, 262, 402, 403, 404, 405, 406, 407, 408, 409, 1197848b8605Smrg 410, 411, 412, 413, 63, 64, 65, 66, 67, 218, 1198848b8605Smrg 219, 78, 79, 99, 100, 101, 102, 370, 371, 372, 1199848b8605Smrg 373, 10, 11, 71, 227, 104, 382, 383, 87, 105, 1200848b8605Smrg 428, 138, 106, 152, 395, 150, 107, 108, 109, 110, 1201848b8605Smrg 136, 415, 137, 140, 141, 143, 220, 157, 216, -66, 1202848b8605Smrg 211, 224, 160, 245, 217, 226, 242, 231, 214, 236, 1203848b8605Smrg 237, 152, 270, 243, 244, 249, 350, 255, 267, 272, 1204848b8605Smrg 274, 275, 285, 434, 286, 58, 290, 298, 288, 291, 1205848b8605Smrg -229, 300, 293, 303, 294, 305, 307, 309, 311, 320, 1206848b8605Smrg 321, 323, 330, 337, 332, 338, 455, 340, 343, 345, 1207848b8605Smrg 353, 346, 352, 354, 356, 358, 359, 363, 357, 365, 1208848b8605Smrg 367, 375, 360, 361, 388, 362, 369, 377, 378, 379, 1209848b8605Smrg 152, 395, 150, 385, 389, 400, 429, 152, 416, 350, 1210848b8605Smrg 424, 425, 426, 431, 452, 448, 427, 441, 442, 449, 1211848b8605Smrg 450, 457, 451, 462, 464, 350, 463, 465, 466, 467, 1212848b8605Smrg 469, 468, 477, 472, 284, 312, 454, 297, 0, 342, 1213848b8605Smrg 142, 438, 228, 0, 147, 148, 0, 0, 271, 287, 1214848b8605Smrg 0, 0, 215 1215848b8605Smrg}; 1216848b8605Smrg 1217848b8605Smrg#define yypact_value_is_default(Yystate) \ 1218848b8605Smrg (!!((Yystate) == (-398))) 1219848b8605Smrg 1220848b8605Smrg#define yytable_value_is_error(Yytable_value) \ 1221848b8605Smrg YYID (0) 1222848b8605Smrg 1223848b8605Smrgstatic const yytype_int16 yycheck[] = 1224848b8605Smrg{ 1225848b8605Smrg 89, 89, 89, 9, 124, 182, 106, 125, 23, 109, 1226848b8605Smrg 23, 24, 98, 385, 0, 104, 27, 106, 172, 105, 1227848b8605Smrg 109, 107, 108, 77, 23, 38, 163, 361, 39, 5, 1228848b8605Smrg 6, 7, 186, 26, 10, 124, 12, 13, 14, 15, 1229848b8605Smrg 16, 17, 18, 19, 20, 21, 22, 35, 38, 62, 1230848b8605Smrg 204, 137, 23, 24, 450, 3, 4, 23, 24, 62, 1231848b8605Smrg 73, 29, 41, 42, 65, 462, 54, 38, 451, 123, 1232848b8605Smrg 73, 467, 38, 25, 25, 8, 448, 70, 475, 31, 1233848b8605Smrg 31, 33, 136, 96, 99, 100, 469, 100, 56, 423, 1234848b8605Smrg 208, 62, 464, 113, 114, 232, 62, 110, 62, 100, 1235848b8605Smrg 111, 100, 73, 82, 34, 118, 96, 73, 262, 73, 1236848b8605Smrg 113, 114, 230, 108, 29, 118, 46, 69, 109, 71, 1237848b8605Smrg 71, 27, 37, 99, 100, 96, 25, 26, 119, 100, 1238848b8605Smrg 96, 231, 31, 39, 100, 50, 34, 61, 53, 110, 1239848b8605Smrg 226, 40, 231, 100, 68, 60, 99, 118, 46, 113, 1240848b8605Smrg 114, 237, 118, 109, 118, 99, 29, 30, 278, 74, 1241848b8605Smrg 28, 60, 30, 119, 37, 9, 29, 11, 36, 113, 1242848b8605Smrg 114, 61, 71, 72, 37, 43, 44, 45, 68, 47, 1243848b8605Smrg 99, 49, 97, 98, 109, 362, 59, 60, 48, 278, 1244848b8605Smrg 58, 51, 52, 109, 119, 55, 285, 60, 99, 109, 1245848b8605Smrg 286, 74, 25, 63, 27, 108, 111, 75, 76, 119, 1246848b8605Smrg 99, 74, 117, 106, 101, 117, 39, 104, 105, 112, 1247848b8605Smrg 108, 81, 84, 85, 86, 87, 88, 89, 90, 91, 1248848b8605Smrg 92, 93, 94, 95, 19, 20, 21, 22, 23, 23, 1249848b8605Smrg 24, 26, 27, 101, 102, 103, 104, 77, 78, 79, 1250848b8605Smrg 80, 99, 100, 99, 100, 109, 113, 114, 117, 109, 1251848b8605Smrg 380, 99, 109, 352, 352, 352, 109, 109, 109, 104, 1252848b8605Smrg 109, 357, 109, 109, 100, 23, 23, 111, 99, 111, 1253848b8605Smrg 111, 23, 115, 64, 112, 109, 111, 109, 117, 109, 1254848b8605Smrg 109, 380, 66, 111, 111, 111, 385, 111, 111, 111, 1255848b8605Smrg 111, 111, 109, 389, 109, 65, 112, 104, 117, 112, 1256848b8605Smrg 104, 83, 116, 23, 116, 23, 23, 23, 67, 111, 1257848b8605Smrg 111, 111, 23, 111, 29, 23, 446, 23, 110, 112, 1258848b8605Smrg 110, 104, 118, 111, 109, 112, 112, 23, 109, 23, 1259848b8605Smrg 23, 23, 112, 112, 350, 112, 112, 112, 112, 112, 1260848b8605Smrg 439, 439, 439, 109, 109, 23, 23, 446, 57, 448, 1261848b8605Smrg 112, 112, 112, 23, 66, 109, 112, 112, 32, 109, 1262848b8605Smrg 111, 449, 111, 111, 109, 464, 119, 109, 112, 106, 1263848b8605Smrg 106, 112, 112, 465, 211, 255, 439, 232, -1, 275, 1264848b8605Smrg 87, 391, 160, -1, 89, 89, -1, -1, 199, 214, 1265848b8605Smrg -1, -1, 139 1266848b8605Smrg}; 1267848b8605Smrg 1268848b8605Smrg/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 1269848b8605Smrg symbol of state STATE-NUM. */ 1270848b8605Smrgstatic const yytype_uint16 yystos[] = 1271848b8605Smrg{ 1272848b8605Smrg 0, 3, 4, 121, 122, 0, 123, 8, 124, 125, 1273848b8605Smrg 99, 100, 262, 5, 6, 7, 10, 12, 13, 14, 1274848b8605Smrg 15, 16, 17, 18, 19, 20, 21, 22, 126, 127, 1275848b8605Smrg 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 1276848b8605Smrg 138, 141, 170, 171, 178, 179, 180, 242, 244, 245, 1277848b8605Smrg 248, 261, 262, 108, 246, 99, 99, 99, 65, 100, 1278848b8605Smrg 145, 151, 249, 145, 145, 145, 145, 145, 100, 146, 1279848b8605Smrg 159, 99, 113, 114, 144, 166, 168, 241, 145, 145, 1280848b8605Smrg 108, 108, 9, 11, 99, 247, 117, 117, 111, 117, 1281848b8605Smrg 182, 29, 30, 37, 59, 60, 74, 250, 109, 101, 1282848b8605Smrg 102, 103, 104, 164, 109, 109, 109, 109, 109, 109, 1283848b8605Smrg 104, 161, 101, 104, 105, 163, 23, 24, 38, 62, 1284848b8605Smrg 73, 96, 100, 110, 118, 150, 152, 172, 186, 189, 1285848b8605Smrg 225, 229, 232, 236, 238, 239, 109, 109, 99, 243, 1286848b8605Smrg 109, 100, 172, 23, 181, 185, 189, 225, 235, 237, 1287848b8605Smrg 239, 240, 241, 27, 39, 111, 251, 111, 255, 144, 1288848b8605Smrg 115, 165, 142, 241, 144, 142, 144, 144, 142, 29, 1289848b8605Smrg 37, 60, 74, 177, 34, 46, 28, 30, 36, 43, 1290848b8605Smrg 44, 45, 47, 49, 58, 75, 76, 190, 192, 195, 1291848b8605Smrg 197, 199, 203, 206, 208, 210, 212, 215, 224, 29, 1292848b8605Smrg 37, 50, 53, 60, 74, 97, 98, 173, 150, 240, 1293848b8605Smrg 163, 111, 150, 144, 117, 247, 99, 112, 23, 24, 1294848b8605Smrg 23, 61, 68, 252, 23, 258, 109, 100, 166, 167, 1295848b8605Smrg 169, 109, 110, 143, 150, 238, 109, 109, 61, 68, 1296848b8605Smrg 254, 255, 111, 111, 111, 64, 29, 56, 207, 111, 1297848b8605Smrg 25, 27, 39, 196, 253, 111, 253, 48, 51, 52, 1298848b8605Smrg 55, 63, 81, 219, 26, 70, 211, 111, 257, 255, 1299848b8605Smrg 66, 254, 111, 255, 111, 111, 175, 163, 109, 119, 1300848b8605Smrg 23, 153, 154, 155, 159, 109, 109, 249, 117, 183, 1301848b8605Smrg 112, 112, 144, 116, 116, 163, 142, 143, 104, 162, 1302848b8605Smrg 83, 139, 144, 23, 233, 23, 234, 23, 209, 23, 1303848b8605Smrg 202, 67, 202, 25, 31, 33, 69, 71, 191, 201, 1304848b8605Smrg 111, 111, 220, 111, 255, 41, 42, 82, 216, 217, 1305848b8605Smrg 23, 260, 29, 200, 35, 54, 204, 111, 23, 176, 1306848b8605Smrg 23, 174, 176, 110, 240, 112, 104, 160, 147, 148, 1307848b8605Smrg 241, 144, 118, 110, 111, 256, 109, 109, 112, 112, 1308848b8605Smrg 112, 112, 112, 23, 223, 23, 221, 23, 222, 112, 1309848b8605Smrg 77, 78, 79, 80, 205, 23, 218, 112, 112, 112, 1310848b8605Smrg 109, 119, 113, 114, 156, 109, 23, 149, 262, 109, 1311848b8605Smrg 62, 73, 184, 187, 188, 189, 226, 227, 230, 235, 1312848b8605Smrg 23, 259, 84, 85, 86, 87, 88, 89, 90, 91, 1313848b8605Smrg 92, 93, 94, 95, 140, 144, 57, 26, 40, 60, 1314848b8605Smrg 72, 193, 201, 253, 112, 112, 112, 112, 240, 23, 1315848b8605Smrg 157, 23, 158, 148, 144, 34, 46, 213, 215, 109, 1316848b8605Smrg 119, 112, 32, 194, 198, 201, 109, 119, 109, 109, 1317848b8605Smrg 111, 111, 66, 214, 187, 240, 148, 139, 228, 233, 1318848b8605Smrg 231, 234, 111, 119, 109, 109, 112, 106, 112, 106, 1319848b8605Smrg 218, 148, 140, 233, 234, 106, 218, 112 1320848b8605Smrg}; 1321848b8605Smrg 1322848b8605Smrg#define yyerrok (yyerrstatus = 0) 1323848b8605Smrg#define yyclearin (yychar = YYEMPTY) 1324848b8605Smrg#define YYEMPTY (-2) 1325848b8605Smrg#define YYEOF 0 1326848b8605Smrg 1327848b8605Smrg#define YYACCEPT goto yyacceptlab 1328848b8605Smrg#define YYABORT goto yyabortlab 1329848b8605Smrg#define YYERROR goto yyerrorlab 1330848b8605Smrg 1331848b8605Smrg 1332848b8605Smrg/* Like YYERROR except do call yyerror. This remains here temporarily 1333848b8605Smrg to ease the transition to the new meaning of YYERROR, for GCC. 1334848b8605Smrg Once GCC version 2 has supplanted version 1, this can go. However, 1335848b8605Smrg YYFAIL appears to be in use. Nevertheless, it is formally deprecated 1336848b8605Smrg in Bison 2.4.2's NEWS entry, where a plan to phase it out is 1337848b8605Smrg discussed. */ 1338848b8605Smrg 1339848b8605Smrg#define YYFAIL goto yyerrlab 1340848b8605Smrg#if defined YYFAIL 1341848b8605Smrg /* This is here to suppress warnings from the GCC cpp's 1342848b8605Smrg -Wunused-macros. Normally we don't worry about that warning, but 1343848b8605Smrg some users do, and we want to make it easy for users to remove 1344848b8605Smrg YYFAIL uses, which will produce warnings from Bison 2.5. */ 1345848b8605Smrg#endif 1346848b8605Smrg 1347848b8605Smrg#define YYRECOVERING() (!!yyerrstatus) 1348848b8605Smrg 1349848b8605Smrg#define YYBACKUP(Token, Value) \ 1350848b8605Smrgdo \ 1351848b8605Smrg if (yychar == YYEMPTY) \ 1352848b8605Smrg { \ 1353848b8605Smrg yychar = (Token); \ 1354848b8605Smrg yylval = (Value); \ 1355848b8605Smrg YYPOPSTACK (yylen); \ 1356848b8605Smrg yystate = *yyssp; \ 1357848b8605Smrg goto yybackup; \ 1358848b8605Smrg } \ 1359848b8605Smrg else \ 1360848b8605Smrg { \ 1361848b8605Smrg yyerror (&yylloc, state, YY_("syntax error: cannot back up")); \ 1362848b8605Smrg YYERROR; \ 1363848b8605Smrg } \ 1364848b8605Smrgwhile (YYID (0)) 1365848b8605Smrg 1366848b8605Smrg 1367848b8605Smrg#define YYTERROR 1 1368848b8605Smrg#define YYERRCODE 256 1369848b8605Smrg 1370848b8605Smrg/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 1371848b8605Smrg If N is 0, then set CURRENT to the empty location which ends 1372848b8605Smrg the previous symbol: RHS[0] (always defined). */ 1373848b8605Smrg 1374848b8605Smrg#ifndef YYLLOC_DEFAULT 1375848b8605Smrg# define YYLLOC_DEFAULT(Current, Rhs, N) \ 1376848b8605Smrg do \ 1377848b8605Smrg if (YYID (N)) \ 1378848b8605Smrg { \ 1379848b8605Smrg (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 1380848b8605Smrg (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 1381848b8605Smrg (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 1382848b8605Smrg (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 1383848b8605Smrg } \ 1384848b8605Smrg else \ 1385848b8605Smrg { \ 1386848b8605Smrg (Current).first_line = (Current).last_line = \ 1387848b8605Smrg YYRHSLOC (Rhs, 0).last_line; \ 1388848b8605Smrg (Current).first_column = (Current).last_column = \ 1389848b8605Smrg YYRHSLOC (Rhs, 0).last_column; \ 1390848b8605Smrg } \ 1391848b8605Smrg while (YYID (0)) 1392848b8605Smrg#endif 1393848b8605Smrg 1394848b8605Smrg#define YYRHSLOC(Rhs, K) ((Rhs)[K]) 1395848b8605Smrg 1396848b8605Smrg 1397848b8605Smrg 1398848b8605Smrg/* YY_LOCATION_PRINT -- Print the location on the stream. 1399848b8605Smrg This macro was not mandated originally: define only if we know 1400848b8605Smrg we won't break user code: when these are the locations we know. */ 1401848b8605Smrg 1402848b8605Smrg#ifndef YY_LOCATION_PRINT 1403848b8605Smrg# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL 1404848b8605Smrg# define YY_LOCATION_PRINT(File, Loc) \ 1405848b8605Smrg fprintf (File, "%d.%d-%d.%d", \ 1406848b8605Smrg (Loc).first_line, (Loc).first_column, \ 1407848b8605Smrg (Loc).last_line, (Loc).last_column) 1408848b8605Smrg# else 1409848b8605Smrg# define YY_LOCATION_PRINT(File, Loc) ((void) 0) 1410848b8605Smrg# endif 1411848b8605Smrg#endif 1412848b8605Smrg 1413848b8605Smrg 1414848b8605Smrg/* YYLEX -- calling `yylex' with the right arguments. */ 1415848b8605Smrg 1416848b8605Smrg#ifdef YYLEX_PARAM 1417848b8605Smrg# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) 1418848b8605Smrg#else 1419848b8605Smrg# define YYLEX yylex (&yylval, &yylloc, state) 1420848b8605Smrg#endif 1421848b8605Smrg 1422848b8605Smrg/* Enable debugging if requested. */ 1423848b8605Smrg#if YYDEBUG 1424848b8605Smrg 1425848b8605Smrg# ifndef YYFPRINTF 1426848b8605Smrg# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 1427848b8605Smrg# define YYFPRINTF fprintf 1428848b8605Smrg# endif 1429848b8605Smrg 1430848b8605Smrg# define YYDPRINTF(Args) \ 1431848b8605Smrgdo { \ 1432848b8605Smrg if (yydebug) \ 1433848b8605Smrg YYFPRINTF Args; \ 1434848b8605Smrg} while (YYID (0)) 1435848b8605Smrg 1436848b8605Smrg# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 1437848b8605Smrgdo { \ 1438848b8605Smrg if (yydebug) \ 1439848b8605Smrg { \ 1440848b8605Smrg YYFPRINTF (stderr, "%s ", Title); \ 1441848b8605Smrg yy_symbol_print (stderr, \ 1442848b8605Smrg Type, Value, Location, state); \ 1443848b8605Smrg YYFPRINTF (stderr, "\n"); \ 1444848b8605Smrg } \ 1445848b8605Smrg} while (YYID (0)) 1446848b8605Smrg 1447848b8605Smrg 1448848b8605Smrg/*--------------------------------. 1449848b8605Smrg| Print this symbol on YYOUTPUT. | 1450848b8605Smrg`--------------------------------*/ 1451848b8605Smrg 1452848b8605Smrg/*ARGSUSED*/ 1453848b8605Smrg#if (defined __STDC__ || defined __C99__FUNC__ \ 1454848b8605Smrg || defined __cplusplus || defined _MSC_VER) 1455848b8605Smrgstatic void 1456848b8605Smrgyy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct asm_parser_state *state) 1457848b8605Smrg#else 1458848b8605Smrgstatic void 1459848b8605Smrgyy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, state) 1460848b8605Smrg FILE *yyoutput; 1461848b8605Smrg int yytype; 1462848b8605Smrg YYSTYPE const * const yyvaluep; 1463848b8605Smrg YYLTYPE const * const yylocationp; 1464848b8605Smrg struct asm_parser_state *state; 1465848b8605Smrg#endif 1466848b8605Smrg{ 1467848b8605Smrg FILE *yyo = yyoutput; 1468848b8605Smrg YYUSE (yyo); 1469848b8605Smrg if (!yyvaluep) 1470848b8605Smrg return; 1471848b8605Smrg YYUSE (yylocationp); 1472848b8605Smrg YYUSE (state); 1473848b8605Smrg# ifdef YYPRINT 1474848b8605Smrg if (yytype < YYNTOKENS) 1475848b8605Smrg YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 1476848b8605Smrg# else 1477848b8605Smrg YYUSE (yyoutput); 1478848b8605Smrg# endif 1479848b8605Smrg switch (yytype) 1480848b8605Smrg { 1481848b8605Smrg default: 1482848b8605Smrg break; 1483848b8605Smrg } 1484848b8605Smrg} 1485848b8605Smrg 1486848b8605Smrg 1487848b8605Smrg/*--------------------------------. 1488848b8605Smrg| Print this symbol on YYOUTPUT. | 1489848b8605Smrg`--------------------------------*/ 1490848b8605Smrg 1491848b8605Smrg#if (defined __STDC__ || defined __C99__FUNC__ \ 1492848b8605Smrg || defined __cplusplus || defined _MSC_VER) 1493848b8605Smrgstatic void 1494848b8605Smrgyy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct asm_parser_state *state) 1495848b8605Smrg#else 1496848b8605Smrgstatic void 1497848b8605Smrgyy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, state) 1498848b8605Smrg FILE *yyoutput; 1499848b8605Smrg int yytype; 1500848b8605Smrg YYSTYPE const * const yyvaluep; 1501848b8605Smrg YYLTYPE const * const yylocationp; 1502848b8605Smrg struct asm_parser_state *state; 1503848b8605Smrg#endif 1504848b8605Smrg{ 1505848b8605Smrg if (yytype < YYNTOKENS) 1506848b8605Smrg YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); 1507848b8605Smrg else 1508848b8605Smrg YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); 1509848b8605Smrg 1510848b8605Smrg YY_LOCATION_PRINT (yyoutput, *yylocationp); 1511848b8605Smrg YYFPRINTF (yyoutput, ": "); 1512848b8605Smrg yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, state); 1513848b8605Smrg YYFPRINTF (yyoutput, ")"); 1514848b8605Smrg} 1515848b8605Smrg 1516848b8605Smrg/*------------------------------------------------------------------. 1517848b8605Smrg| yy_stack_print -- Print the state stack from its BOTTOM up to its | 1518848b8605Smrg| TOP (included). | 1519848b8605Smrg`------------------------------------------------------------------*/ 1520848b8605Smrg 1521848b8605Smrg#if (defined __STDC__ || defined __C99__FUNC__ \ 1522848b8605Smrg || defined __cplusplus || defined _MSC_VER) 1523848b8605Smrgstatic void 1524848b8605Smrgyy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) 1525848b8605Smrg#else 1526848b8605Smrgstatic void 1527848b8605Smrgyy_stack_print (yybottom, yytop) 1528848b8605Smrg yytype_int16 *yybottom; 1529848b8605Smrg yytype_int16 *yytop; 1530848b8605Smrg#endif 1531848b8605Smrg{ 1532848b8605Smrg YYFPRINTF (stderr, "Stack now"); 1533848b8605Smrg for (; yybottom <= yytop; yybottom++) 1534848b8605Smrg { 1535848b8605Smrg int yybot = *yybottom; 1536848b8605Smrg YYFPRINTF (stderr, " %d", yybot); 1537848b8605Smrg } 1538848b8605Smrg YYFPRINTF (stderr, "\n"); 1539848b8605Smrg} 1540848b8605Smrg 1541848b8605Smrg# define YY_STACK_PRINT(Bottom, Top) \ 1542848b8605Smrgdo { \ 1543848b8605Smrg if (yydebug) \ 1544848b8605Smrg yy_stack_print ((Bottom), (Top)); \ 1545848b8605Smrg} while (YYID (0)) 1546848b8605Smrg 1547848b8605Smrg 1548848b8605Smrg/*------------------------------------------------. 1549848b8605Smrg| Report that the YYRULE is going to be reduced. | 1550848b8605Smrg`------------------------------------------------*/ 1551848b8605Smrg 1552848b8605Smrg#if (defined __STDC__ || defined __C99__FUNC__ \ 1553848b8605Smrg || defined __cplusplus || defined _MSC_VER) 1554848b8605Smrgstatic void 1555848b8605Smrgyy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, struct asm_parser_state *state) 1556848b8605Smrg#else 1557848b8605Smrgstatic void 1558848b8605Smrgyy_reduce_print (yyvsp, yylsp, yyrule, state) 1559848b8605Smrg YYSTYPE *yyvsp; 1560848b8605Smrg YYLTYPE *yylsp; 1561848b8605Smrg int yyrule; 1562848b8605Smrg struct asm_parser_state *state; 1563848b8605Smrg#endif 1564848b8605Smrg{ 1565848b8605Smrg int yynrhs = yyr2[yyrule]; 1566848b8605Smrg int yyi; 1567848b8605Smrg unsigned long int yylno = yyrline[yyrule]; 1568848b8605Smrg YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 1569848b8605Smrg yyrule - 1, yylno); 1570848b8605Smrg /* The symbols being reduced. */ 1571848b8605Smrg for (yyi = 0; yyi < yynrhs; yyi++) 1572848b8605Smrg { 1573848b8605Smrg YYFPRINTF (stderr, " $%d = ", yyi + 1); 1574848b8605Smrg yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 1575848b8605Smrg &(yyvsp[(yyi + 1) - (yynrhs)]) 1576848b8605Smrg , &(yylsp[(yyi + 1) - (yynrhs)]) , state); 1577848b8605Smrg YYFPRINTF (stderr, "\n"); 1578848b8605Smrg } 1579848b8605Smrg} 1580848b8605Smrg 1581848b8605Smrg# define YY_REDUCE_PRINT(Rule) \ 1582848b8605Smrgdo { \ 1583848b8605Smrg if (yydebug) \ 1584848b8605Smrg yy_reduce_print (yyvsp, yylsp, Rule, state); \ 1585848b8605Smrg} while (YYID (0)) 1586848b8605Smrg 1587848b8605Smrg/* Nonzero means print parse trace. It is left uninitialized so that 1588848b8605Smrg multiple parsers can coexist. */ 1589848b8605Smrgint yydebug; 1590848b8605Smrg#else /* !YYDEBUG */ 1591848b8605Smrg# define YYDPRINTF(Args) 1592848b8605Smrg# define YY_SYMBOL_PRINT(Title, Type, Value, Location) 1593848b8605Smrg# define YY_STACK_PRINT(Bottom, Top) 1594848b8605Smrg# define YY_REDUCE_PRINT(Rule) 1595848b8605Smrg#endif /* !YYDEBUG */ 1596848b8605Smrg 1597848b8605Smrg 1598848b8605Smrg/* YYINITDEPTH -- initial size of the parser's stacks. */ 1599848b8605Smrg#ifndef YYINITDEPTH 1600848b8605Smrg# define YYINITDEPTH 200 1601848b8605Smrg#endif 1602848b8605Smrg 1603848b8605Smrg/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 1604848b8605Smrg if the built-in stack extension method is used). 1605848b8605Smrg 1606848b8605Smrg Do not make this value too large; the results are undefined if 1607848b8605Smrg YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 1608848b8605Smrg evaluated with infinite-precision integer arithmetic. */ 1609848b8605Smrg 1610848b8605Smrg#ifndef YYMAXDEPTH 1611848b8605Smrg# define YYMAXDEPTH 10000 1612848b8605Smrg#endif 1613848b8605Smrg 1614848b8605Smrg 1615848b8605Smrg#if YYERROR_VERBOSE 1616848b8605Smrg 1617848b8605Smrg# ifndef yystrlen 1618848b8605Smrg# if defined __GLIBC__ && defined _STRING_H 1619848b8605Smrg# define yystrlen strlen 1620848b8605Smrg# else 1621848b8605Smrg/* Return the length of YYSTR. */ 1622848b8605Smrg#if (defined __STDC__ || defined __C99__FUNC__ \ 1623848b8605Smrg || defined __cplusplus || defined _MSC_VER) 1624848b8605Smrgstatic YYSIZE_T 1625848b8605Smrgyystrlen (const char *yystr) 1626848b8605Smrg#else 1627848b8605Smrgstatic YYSIZE_T 1628848b8605Smrgyystrlen (yystr) 1629848b8605Smrg const char *yystr; 1630848b8605Smrg#endif 1631848b8605Smrg{ 1632848b8605Smrg YYSIZE_T yylen; 1633848b8605Smrg for (yylen = 0; yystr[yylen]; yylen++) 1634848b8605Smrg continue; 1635848b8605Smrg return yylen; 1636848b8605Smrg} 1637848b8605Smrg# endif 1638848b8605Smrg# endif 1639848b8605Smrg 1640848b8605Smrg# ifndef yystpcpy 1641848b8605Smrg# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 1642848b8605Smrg# define yystpcpy stpcpy 1643848b8605Smrg# else 1644848b8605Smrg/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 1645848b8605Smrg YYDEST. */ 1646848b8605Smrg#if (defined __STDC__ || defined __C99__FUNC__ \ 1647848b8605Smrg || defined __cplusplus || defined _MSC_VER) 1648848b8605Smrgstatic char * 1649848b8605Smrgyystpcpy (char *yydest, const char *yysrc) 1650848b8605Smrg#else 1651848b8605Smrgstatic char * 1652848b8605Smrgyystpcpy (yydest, yysrc) 1653848b8605Smrg char *yydest; 1654848b8605Smrg const char *yysrc; 1655848b8605Smrg#endif 1656848b8605Smrg{ 1657848b8605Smrg char *yyd = yydest; 1658848b8605Smrg const char *yys = yysrc; 1659848b8605Smrg 1660848b8605Smrg while ((*yyd++ = *yys++) != '\0') 1661848b8605Smrg continue; 1662848b8605Smrg 1663848b8605Smrg return yyd - 1; 1664848b8605Smrg} 1665848b8605Smrg# endif 1666848b8605Smrg# endif 1667848b8605Smrg 1668848b8605Smrg# ifndef yytnamerr 1669848b8605Smrg/* Copy to YYRES the contents of YYSTR after stripping away unnecessary 1670848b8605Smrg quotes and backslashes, so that it's suitable for yyerror. The 1671848b8605Smrg heuristic is that double-quoting is unnecessary unless the string 1672848b8605Smrg contains an apostrophe, a comma, or backslash (other than 1673848b8605Smrg backslash-backslash). YYSTR is taken from yytname. If YYRES is 1674848b8605Smrg null, do not copy; instead, return the length of what the result 1675848b8605Smrg would have been. */ 1676848b8605Smrgstatic YYSIZE_T 1677848b8605Smrgyytnamerr (char *yyres, const char *yystr) 1678848b8605Smrg{ 1679848b8605Smrg if (*yystr == '"') 1680848b8605Smrg { 1681848b8605Smrg YYSIZE_T yyn = 0; 1682848b8605Smrg char const *yyp = yystr; 1683848b8605Smrg 1684848b8605Smrg for (;;) 1685848b8605Smrg switch (*++yyp) 1686848b8605Smrg { 1687848b8605Smrg case '\'': 1688848b8605Smrg case ',': 1689848b8605Smrg goto do_not_strip_quotes; 1690848b8605Smrg 1691848b8605Smrg case '\\': 1692848b8605Smrg if (*++yyp != '\\') 1693848b8605Smrg goto do_not_strip_quotes; 1694848b8605Smrg /* Fall through. */ 1695848b8605Smrg default: 1696848b8605Smrg if (yyres) 1697848b8605Smrg yyres[yyn] = *yyp; 1698848b8605Smrg yyn++; 1699848b8605Smrg break; 1700848b8605Smrg 1701848b8605Smrg case '"': 1702848b8605Smrg if (yyres) 1703848b8605Smrg yyres[yyn] = '\0'; 1704848b8605Smrg return yyn; 1705848b8605Smrg } 1706848b8605Smrg do_not_strip_quotes: ; 1707848b8605Smrg } 1708848b8605Smrg 1709848b8605Smrg if (! yyres) 1710848b8605Smrg return yystrlen (yystr); 1711848b8605Smrg 1712848b8605Smrg return yystpcpy (yyres, yystr) - yyres; 1713848b8605Smrg} 1714848b8605Smrg# endif 1715848b8605Smrg 1716848b8605Smrg/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message 1717848b8605Smrg about the unexpected token YYTOKEN for the state stack whose top is 1718848b8605Smrg YYSSP. 1719848b8605Smrg 1720848b8605Smrg Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is 1721848b8605Smrg not large enough to hold the message. In that case, also set 1722848b8605Smrg *YYMSG_ALLOC to the required number of bytes. Return 2 if the 1723848b8605Smrg required number of bytes is too large to store. */ 1724848b8605Smrgstatic int 1725848b8605Smrgyysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, 1726848b8605Smrg yytype_int16 *yyssp, int yytoken) 1727848b8605Smrg{ 1728848b8605Smrg YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); 1729848b8605Smrg YYSIZE_T yysize = yysize0; 1730848b8605Smrg YYSIZE_T yysize1; 1731848b8605Smrg enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 1732848b8605Smrg /* Internationalized format string. */ 1733848b8605Smrg const char *yyformat = YY_NULL; 1734848b8605Smrg /* Arguments of yyformat. */ 1735848b8605Smrg char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 1736848b8605Smrg /* Number of reported tokens (one for the "unexpected", one per 1737848b8605Smrg "expected"). */ 1738848b8605Smrg int yycount = 0; 1739848b8605Smrg 1740848b8605Smrg /* There are many possibilities here to consider: 1741848b8605Smrg - Assume YYFAIL is not used. It's too flawed to consider. See 1742848b8605Smrg <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html> 1743848b8605Smrg for details. YYERROR is fine as it does not invoke this 1744848b8605Smrg function. 1745848b8605Smrg - If this state is a consistent state with a default action, then 1746848b8605Smrg the only way this function was invoked is if the default action 1747848b8605Smrg is an error action. In that case, don't check for expected 1748848b8605Smrg tokens because there are none. 1749848b8605Smrg - The only way there can be no lookahead present (in yychar) is if 1750848b8605Smrg this state is a consistent state with a default action. Thus, 1751848b8605Smrg detecting the absence of a lookahead is sufficient to determine 1752848b8605Smrg that there is no unexpected or expected token to report. In that 1753848b8605Smrg case, just report a simple "syntax error". 1754848b8605Smrg - Don't assume there isn't a lookahead just because this state is a 1755848b8605Smrg consistent state with a default action. There might have been a 1756848b8605Smrg previous inconsistent state, consistent state with a non-default 1757848b8605Smrg action, or user semantic action that manipulated yychar. 1758848b8605Smrg - Of course, the expected token list depends on states to have 1759848b8605Smrg correct lookahead information, and it depends on the parser not 1760848b8605Smrg to perform extra reductions after fetching a lookahead from the 1761848b8605Smrg scanner and before detecting a syntax error. Thus, state merging 1762848b8605Smrg (from LALR or IELR) and default reductions corrupt the expected 1763848b8605Smrg token list. However, the list is correct for canonical LR with 1764848b8605Smrg one exception: it will still contain any token that will not be 1765848b8605Smrg accepted due to an error action in a later state. 1766848b8605Smrg */ 1767848b8605Smrg if (yytoken != YYEMPTY) 1768848b8605Smrg { 1769848b8605Smrg int yyn = yypact[*yyssp]; 1770848b8605Smrg yyarg[yycount++] = yytname[yytoken]; 1771848b8605Smrg if (!yypact_value_is_default (yyn)) 1772848b8605Smrg { 1773848b8605Smrg /* Start YYX at -YYN if negative to avoid negative indexes in 1774848b8605Smrg YYCHECK. In other words, skip the first -YYN actions for 1775848b8605Smrg this state because they are default actions. */ 1776848b8605Smrg int yyxbegin = yyn < 0 ? -yyn : 0; 1777848b8605Smrg /* Stay within bounds of both yycheck and yytname. */ 1778848b8605Smrg int yychecklim = YYLAST - yyn + 1; 1779848b8605Smrg int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 1780848b8605Smrg int yyx; 1781848b8605Smrg 1782848b8605Smrg for (yyx = yyxbegin; yyx < yyxend; ++yyx) 1783848b8605Smrg if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR 1784848b8605Smrg && !yytable_value_is_error (yytable[yyx + yyn])) 1785848b8605Smrg { 1786848b8605Smrg if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 1787848b8605Smrg { 1788848b8605Smrg yycount = 1; 1789848b8605Smrg yysize = yysize0; 1790848b8605Smrg break; 1791848b8605Smrg } 1792848b8605Smrg yyarg[yycount++] = yytname[yyx]; 1793848b8605Smrg yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); 1794848b8605Smrg if (! (yysize <= yysize1 1795848b8605Smrg && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 1796848b8605Smrg return 2; 1797848b8605Smrg yysize = yysize1; 1798848b8605Smrg } 1799848b8605Smrg } 1800848b8605Smrg } 1801848b8605Smrg 1802848b8605Smrg switch (yycount) 1803848b8605Smrg { 1804848b8605Smrg# define YYCASE_(N, S) \ 1805848b8605Smrg case N: \ 1806848b8605Smrg yyformat = S; \ 1807848b8605Smrg break 1808848b8605Smrg YYCASE_(0, YY_("syntax error")); 1809848b8605Smrg YYCASE_(1, YY_("syntax error, unexpected %s")); 1810848b8605Smrg YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); 1811848b8605Smrg YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); 1812848b8605Smrg YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); 1813848b8605Smrg YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); 1814848b8605Smrg# undef YYCASE_ 1815848b8605Smrg } 1816848b8605Smrg 1817848b8605Smrg yysize1 = yysize + yystrlen (yyformat); 1818848b8605Smrg if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 1819848b8605Smrg return 2; 1820848b8605Smrg yysize = yysize1; 1821848b8605Smrg 1822848b8605Smrg if (*yymsg_alloc < yysize) 1823848b8605Smrg { 1824848b8605Smrg *yymsg_alloc = 2 * yysize; 1825848b8605Smrg if (! (yysize <= *yymsg_alloc 1826848b8605Smrg && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) 1827848b8605Smrg *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; 1828848b8605Smrg return 1; 1829848b8605Smrg } 1830848b8605Smrg 1831848b8605Smrg /* Avoid sprintf, as that infringes on the user's name space. 1832848b8605Smrg Don't have undefined behavior even if the translation 1833848b8605Smrg produced a string with the wrong number of "%s"s. */ 1834848b8605Smrg { 1835848b8605Smrg char *yyp = *yymsg; 1836848b8605Smrg int yyi = 0; 1837848b8605Smrg while ((*yyp = *yyformat) != '\0') 1838848b8605Smrg if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) 1839848b8605Smrg { 1840848b8605Smrg yyp += yytnamerr (yyp, yyarg[yyi++]); 1841848b8605Smrg yyformat += 2; 1842848b8605Smrg } 1843848b8605Smrg else 1844848b8605Smrg { 1845848b8605Smrg yyp++; 1846848b8605Smrg yyformat++; 1847848b8605Smrg } 1848848b8605Smrg } 1849848b8605Smrg return 0; 1850848b8605Smrg} 1851848b8605Smrg#endif /* YYERROR_VERBOSE */ 1852848b8605Smrg 1853848b8605Smrg/*-----------------------------------------------. 1854848b8605Smrg| Release the memory associated to this symbol. | 1855848b8605Smrg`-----------------------------------------------*/ 1856848b8605Smrg 1857848b8605Smrg/*ARGSUSED*/ 1858848b8605Smrg#if (defined __STDC__ || defined __C99__FUNC__ \ 1859848b8605Smrg || defined __cplusplus || defined _MSC_VER) 1860848b8605Smrgstatic void 1861848b8605Smrgyydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, struct asm_parser_state *state) 1862848b8605Smrg#else 1863848b8605Smrgstatic void 1864848b8605Smrgyydestruct (yymsg, yytype, yyvaluep, yylocationp, state) 1865848b8605Smrg const char *yymsg; 1866848b8605Smrg int yytype; 1867848b8605Smrg YYSTYPE *yyvaluep; 1868848b8605Smrg YYLTYPE *yylocationp; 1869848b8605Smrg struct asm_parser_state *state; 1870848b8605Smrg#endif 1871848b8605Smrg{ 1872848b8605Smrg YYUSE (yyvaluep); 1873848b8605Smrg YYUSE (yylocationp); 1874848b8605Smrg YYUSE (state); 1875848b8605Smrg 1876848b8605Smrg if (!yymsg) 1877848b8605Smrg yymsg = "Deleting"; 1878848b8605Smrg YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 1879848b8605Smrg 1880848b8605Smrg switch (yytype) 1881848b8605Smrg { 1882848b8605Smrg 1883848b8605Smrg default: 1884848b8605Smrg break; 1885848b8605Smrg } 1886848b8605Smrg} 1887848b8605Smrg 1888848b8605Smrg 1889848b8605Smrg 1890848b8605Smrg 1891848b8605Smrg/*----------. 1892848b8605Smrg| yyparse. | 1893848b8605Smrg`----------*/ 1894848b8605Smrg 1895848b8605Smrg#ifdef YYPARSE_PARAM 1896848b8605Smrg#if (defined __STDC__ || defined __C99__FUNC__ \ 1897848b8605Smrg || defined __cplusplus || defined _MSC_VER) 1898848b8605Smrgint 1899848b8605Smrgyyparse (void *YYPARSE_PARAM) 1900848b8605Smrg#else 1901848b8605Smrgint 1902848b8605Smrgyyparse (YYPARSE_PARAM) 1903848b8605Smrg void *YYPARSE_PARAM; 1904848b8605Smrg#endif 1905848b8605Smrg#else /* ! YYPARSE_PARAM */ 1906848b8605Smrg#if (defined __STDC__ || defined __C99__FUNC__ \ 1907848b8605Smrg || defined __cplusplus || defined _MSC_VER) 1908848b8605Smrgint 1909848b8605Smrgyyparse (struct asm_parser_state *state) 1910848b8605Smrg#else 1911848b8605Smrgint 1912848b8605Smrgyyparse (state) 1913848b8605Smrg struct asm_parser_state *state; 1914848b8605Smrg#endif 1915848b8605Smrg#endif 1916848b8605Smrg{ 1917848b8605Smrg/* The lookahead symbol. */ 1918848b8605Smrgint yychar; 1919848b8605Smrg 1920848b8605Smrg 1921848b8605Smrg#if defined __GNUC__ && (4 < __GNUC__ + (6 <= __GNUC_MINOR__)) 1922848b8605Smrg/* Suppress an incorrect diagnostic about yylval being uninitialized. */ 1923848b8605Smrg# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ 1924848b8605Smrg _Pragma ("GCC diagnostic push") \ 1925848b8605Smrg _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") 1926848b8605Smrg# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ 1927848b8605Smrg _Pragma ("GCC diagnostic pop") 1928848b8605Smrg#else 1929848b8605Smrg/* Default value used for initialization, for pacifying older GCCs 1930848b8605Smrg or non-GCC compilers. */ 1931848b8605Smrgstatic YYSTYPE yyval_default; 1932848b8605Smrg# define YYLVAL_INITIALIZE() (yylval = yyval_default) 1933848b8605Smrg#endif 1934848b8605Smrg#ifndef YYLVAL_INITIALIZE 1935848b8605Smrg# define YYLVAL_INITIALIZE() 1936848b8605Smrg#endif 1937848b8605Smrg#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 1938848b8605Smrg# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 1939848b8605Smrg# define YY_IGNORE_MAYBE_UNINITIALIZED_END 1940848b8605Smrg#endif 1941848b8605Smrg 1942848b8605Smrg/* The semantic value of the lookahead symbol. */ 1943848b8605SmrgYYSTYPE yylval; 1944848b8605Smrg 1945848b8605Smrg/* Location data for the lookahead symbol. */ 1946848b8605SmrgYYLTYPE yylloc; 1947848b8605Smrg 1948848b8605Smrg /* Number of syntax errors so far. */ 1949848b8605Smrg int yynerrs; 1950848b8605Smrg 1951848b8605Smrg int yystate; 1952848b8605Smrg /* Number of tokens to shift before error messages enabled. */ 1953848b8605Smrg int yyerrstatus; 1954848b8605Smrg 1955848b8605Smrg /* The stacks and their tools: 1956848b8605Smrg `yyss': related to states. 1957848b8605Smrg `yyvs': related to semantic values. 1958848b8605Smrg `yyls': related to locations. 1959848b8605Smrg 1960848b8605Smrg Refer to the stacks through separate pointers, to allow yyoverflow 1961848b8605Smrg to reallocate them elsewhere. */ 1962848b8605Smrg 1963848b8605Smrg /* The state stack. */ 1964848b8605Smrg yytype_int16 yyssa[YYINITDEPTH]; 1965848b8605Smrg yytype_int16 *yyss; 1966848b8605Smrg yytype_int16 *yyssp; 1967848b8605Smrg 1968848b8605Smrg /* The semantic value stack. */ 1969848b8605Smrg YYSTYPE yyvsa[YYINITDEPTH]; 1970848b8605Smrg YYSTYPE *yyvs; 1971848b8605Smrg YYSTYPE *yyvsp; 1972848b8605Smrg 1973848b8605Smrg /* The location stack. */ 1974848b8605Smrg YYLTYPE yylsa[YYINITDEPTH]; 1975848b8605Smrg YYLTYPE *yyls; 1976848b8605Smrg YYLTYPE *yylsp; 1977848b8605Smrg 1978848b8605Smrg /* The locations where the error started and ended. */ 1979848b8605Smrg YYLTYPE yyerror_range[3]; 1980848b8605Smrg 1981848b8605Smrg YYSIZE_T yystacksize; 1982848b8605Smrg 1983848b8605Smrg int yyn; 1984848b8605Smrg int yyresult; 1985848b8605Smrg /* Lookahead token as an internal (translated) token number. */ 1986848b8605Smrg int yytoken = 0; 1987848b8605Smrg /* The variables used to return semantic value and location from the 1988848b8605Smrg action routines. */ 1989848b8605Smrg YYSTYPE yyval; 1990848b8605Smrg YYLTYPE yyloc; 1991848b8605Smrg 1992848b8605Smrg#if YYERROR_VERBOSE 1993848b8605Smrg /* Buffer for error messages, and its allocated size. */ 1994848b8605Smrg char yymsgbuf[128]; 1995848b8605Smrg char *yymsg = yymsgbuf; 1996848b8605Smrg YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 1997848b8605Smrg#endif 1998848b8605Smrg 1999848b8605Smrg#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) 2000848b8605Smrg 2001848b8605Smrg /* The number of symbols on the RHS of the reduced rule. 2002848b8605Smrg Keep to zero when no symbol should be popped. */ 2003848b8605Smrg int yylen = 0; 2004848b8605Smrg 2005848b8605Smrg yyss = yyssa; 2006848b8605Smrg yyvs = yyvsa; 2007848b8605Smrg yyls = yylsa; 2008848b8605Smrg yystacksize = YYINITDEPTH; 2009848b8605Smrg 2010848b8605Smrg YYDPRINTF ((stderr, "Starting parse\n")); 2011848b8605Smrg 2012848b8605Smrg yystate = 0; 2013848b8605Smrg yyerrstatus = 0; 2014848b8605Smrg yynerrs = 0; 2015848b8605Smrg yychar = YYEMPTY; /* Cause a token to be read. */ 2016848b8605Smrg 2017848b8605Smrg /* Initialize stack pointers. 2018848b8605Smrg Waste one element of value and location stack 2019848b8605Smrg so that they stay on the same level as the state stack. 2020848b8605Smrg The wasted elements are never initialized. */ 2021848b8605Smrg yyssp = yyss; 2022848b8605Smrg yyvsp = yyvs; 2023848b8605Smrg yylsp = yyls; 2024848b8605Smrg 2025848b8605Smrg YYLVAL_INITIALIZE (); 2026848b8605Smrg#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL 2027848b8605Smrg /* Initialize the default location before parsing starts. */ 2028848b8605Smrg yylloc.first_line = yylloc.last_line = 1; 2029848b8605Smrg yylloc.first_column = yylloc.last_column = 1; 2030848b8605Smrg#endif 2031848b8605Smrg goto yysetstate; 2032848b8605Smrg 2033848b8605Smrg/*------------------------------------------------------------. 2034848b8605Smrg| yynewstate -- Push a new state, which is found in yystate. | 2035848b8605Smrg`------------------------------------------------------------*/ 2036848b8605Smrg yynewstate: 2037848b8605Smrg /* In all cases, when you get here, the value and location stacks 2038848b8605Smrg have just been pushed. So pushing a state here evens the stacks. */ 2039848b8605Smrg yyssp++; 2040848b8605Smrg 2041848b8605Smrg yysetstate: 2042848b8605Smrg *yyssp = yystate; 2043848b8605Smrg 2044848b8605Smrg if (yyss + yystacksize - 1 <= yyssp) 2045848b8605Smrg { 2046848b8605Smrg /* Get the current used size of the three stacks, in elements. */ 2047848b8605Smrg YYSIZE_T yysize = yyssp - yyss + 1; 2048848b8605Smrg 2049848b8605Smrg#ifdef yyoverflow 2050848b8605Smrg { 2051848b8605Smrg /* Give user a chance to reallocate the stack. Use copies of 2052848b8605Smrg these so that the &'s don't force the real ones into 2053848b8605Smrg memory. */ 2054848b8605Smrg YYSTYPE *yyvs1 = yyvs; 2055848b8605Smrg yytype_int16 *yyss1 = yyss; 2056848b8605Smrg YYLTYPE *yyls1 = yyls; 2057848b8605Smrg 2058848b8605Smrg /* Each stack pointer address is followed by the size of the 2059848b8605Smrg data in use in that stack, in bytes. This used to be a 2060848b8605Smrg conditional around just the two extra args, but that might 2061848b8605Smrg be undefined if yyoverflow is a macro. */ 2062848b8605Smrg yyoverflow (YY_("memory exhausted"), 2063848b8605Smrg &yyss1, yysize * sizeof (*yyssp), 2064848b8605Smrg &yyvs1, yysize * sizeof (*yyvsp), 2065848b8605Smrg &yyls1, yysize * sizeof (*yylsp), 2066848b8605Smrg &yystacksize); 2067848b8605Smrg 2068848b8605Smrg yyls = yyls1; 2069848b8605Smrg yyss = yyss1; 2070848b8605Smrg yyvs = yyvs1; 2071848b8605Smrg } 2072848b8605Smrg#else /* no yyoverflow */ 2073848b8605Smrg# ifndef YYSTACK_RELOCATE 2074848b8605Smrg goto yyexhaustedlab; 2075848b8605Smrg# else 2076848b8605Smrg /* Extend the stack our own way. */ 2077848b8605Smrg if (YYMAXDEPTH <= yystacksize) 2078848b8605Smrg goto yyexhaustedlab; 2079848b8605Smrg yystacksize *= 2; 2080848b8605Smrg if (YYMAXDEPTH < yystacksize) 2081848b8605Smrg yystacksize = YYMAXDEPTH; 2082848b8605Smrg 2083848b8605Smrg { 2084848b8605Smrg yytype_int16 *yyss1 = yyss; 2085848b8605Smrg union yyalloc *yyptr = 2086848b8605Smrg (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 2087848b8605Smrg if (! yyptr) 2088848b8605Smrg goto yyexhaustedlab; 2089848b8605Smrg YYSTACK_RELOCATE (yyss_alloc, yyss); 2090848b8605Smrg YYSTACK_RELOCATE (yyvs_alloc, yyvs); 2091848b8605Smrg YYSTACK_RELOCATE (yyls_alloc, yyls); 2092848b8605Smrg# undef YYSTACK_RELOCATE 2093848b8605Smrg if (yyss1 != yyssa) 2094848b8605Smrg YYSTACK_FREE (yyss1); 2095848b8605Smrg } 2096848b8605Smrg# endif 2097848b8605Smrg#endif /* no yyoverflow */ 2098848b8605Smrg 2099848b8605Smrg yyssp = yyss + yysize - 1; 2100848b8605Smrg yyvsp = yyvs + yysize - 1; 2101848b8605Smrg yylsp = yyls + yysize - 1; 2102848b8605Smrg 2103848b8605Smrg YYDPRINTF ((stderr, "Stack size increased to %lu\n", 2104848b8605Smrg (unsigned long int) yystacksize)); 2105848b8605Smrg 2106848b8605Smrg if (yyss + yystacksize - 1 <= yyssp) 2107848b8605Smrg YYABORT; 2108848b8605Smrg } 2109848b8605Smrg 2110848b8605Smrg YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 2111848b8605Smrg 2112848b8605Smrg if (yystate == YYFINAL) 2113848b8605Smrg YYACCEPT; 2114848b8605Smrg 2115848b8605Smrg goto yybackup; 2116848b8605Smrg 2117848b8605Smrg/*-----------. 2118848b8605Smrg| yybackup. | 2119848b8605Smrg`-----------*/ 2120848b8605Smrgyybackup: 2121848b8605Smrg 2122848b8605Smrg /* Do appropriate processing given the current state. Read a 2123848b8605Smrg lookahead token if we need one and don't already have one. */ 2124848b8605Smrg 2125848b8605Smrg /* First try to decide what to do without reference to lookahead token. */ 2126848b8605Smrg yyn = yypact[yystate]; 2127848b8605Smrg if (yypact_value_is_default (yyn)) 2128848b8605Smrg goto yydefault; 2129848b8605Smrg 2130848b8605Smrg /* Not known => get a lookahead token if don't already have one. */ 2131848b8605Smrg 2132848b8605Smrg /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ 2133848b8605Smrg if (yychar == YYEMPTY) 2134848b8605Smrg { 2135848b8605Smrg YYDPRINTF ((stderr, "Reading a token: ")); 2136848b8605Smrg yychar = YYLEX; 2137848b8605Smrg } 2138848b8605Smrg 2139848b8605Smrg if (yychar <= YYEOF) 2140848b8605Smrg { 2141848b8605Smrg yychar = yytoken = YYEOF; 2142848b8605Smrg YYDPRINTF ((stderr, "Now at end of input.\n")); 2143848b8605Smrg } 2144848b8605Smrg else 2145848b8605Smrg { 2146848b8605Smrg yytoken = YYTRANSLATE (yychar); 2147848b8605Smrg YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 2148848b8605Smrg } 2149848b8605Smrg 2150848b8605Smrg /* If the proper action on seeing token YYTOKEN is to reduce or to 2151848b8605Smrg detect an error, take that action. */ 2152848b8605Smrg yyn += yytoken; 2153848b8605Smrg if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 2154848b8605Smrg goto yydefault; 2155848b8605Smrg yyn = yytable[yyn]; 2156848b8605Smrg if (yyn <= 0) 2157848b8605Smrg { 2158848b8605Smrg if (yytable_value_is_error (yyn)) 2159848b8605Smrg goto yyerrlab; 2160848b8605Smrg yyn = -yyn; 2161848b8605Smrg goto yyreduce; 2162848b8605Smrg } 2163848b8605Smrg 2164848b8605Smrg /* Count tokens shifted since error; after three, turn off error 2165848b8605Smrg status. */ 2166848b8605Smrg if (yyerrstatus) 2167848b8605Smrg yyerrstatus--; 2168848b8605Smrg 2169848b8605Smrg /* Shift the lookahead token. */ 2170848b8605Smrg YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 2171848b8605Smrg 2172848b8605Smrg /* Discard the shifted token. */ 2173848b8605Smrg yychar = YYEMPTY; 2174848b8605Smrg 2175848b8605Smrg yystate = yyn; 2176848b8605Smrg YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 2177848b8605Smrg *++yyvsp = yylval; 2178848b8605Smrg YY_IGNORE_MAYBE_UNINITIALIZED_END 2179848b8605Smrg *++yylsp = yylloc; 2180848b8605Smrg goto yynewstate; 2181848b8605Smrg 2182848b8605Smrg 2183848b8605Smrg/*-----------------------------------------------------------. 2184848b8605Smrg| yydefault -- do the default action for the current state. | 2185848b8605Smrg`-----------------------------------------------------------*/ 2186848b8605Smrgyydefault: 2187848b8605Smrg yyn = yydefact[yystate]; 2188848b8605Smrg if (yyn == 0) 2189848b8605Smrg goto yyerrlab; 2190848b8605Smrg goto yyreduce; 2191848b8605Smrg 2192848b8605Smrg 2193848b8605Smrg/*-----------------------------. 2194848b8605Smrg| yyreduce -- Do a reduction. | 2195848b8605Smrg`-----------------------------*/ 2196848b8605Smrgyyreduce: 2197848b8605Smrg /* yyn is the number of a rule to reduce with. */ 2198848b8605Smrg yylen = yyr2[yyn]; 2199848b8605Smrg 2200848b8605Smrg /* If YYLEN is nonzero, implement the default value of the action: 2201848b8605Smrg `$$ = $1'. 2202848b8605Smrg 2203848b8605Smrg Otherwise, the following line sets YYVAL to garbage. 2204848b8605Smrg This behavior is undocumented and Bison 2205848b8605Smrg users should not rely upon it. Assigning to YYVAL 2206848b8605Smrg unconditionally makes the parser a bit smaller, and it avoids a 2207848b8605Smrg GCC warning that YYVAL may be used uninitialized. */ 2208848b8605Smrg yyval = yyvsp[1-yylen]; 2209848b8605Smrg 2210848b8605Smrg /* Default location. */ 2211848b8605Smrg YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); 2212848b8605Smrg YY_REDUCE_PRINT (yyn); 2213848b8605Smrg switch (yyn) 2214848b8605Smrg { 2215848b8605Smrg case 3: 2216848b8605Smrg/* Line 1813 of yacc.c */ 2217848b8605Smrg#line 288 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2218848b8605Smrg { 2219848b8605Smrg if (state->prog->Target != GL_VERTEX_PROGRAM_ARB) { 2220848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid fragment program header"); 2221848b8605Smrg 2222848b8605Smrg } 2223848b8605Smrg state->mode = ARB_vertex; 2224848b8605Smrg } 2225848b8605Smrg break; 2226848b8605Smrg 2227848b8605Smrg case 4: 2228848b8605Smrg/* Line 1813 of yacc.c */ 2229848b8605Smrg#line 296 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2230848b8605Smrg { 2231848b8605Smrg if (state->prog->Target != GL_FRAGMENT_PROGRAM_ARB) { 2232848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex program header"); 2233848b8605Smrg } 2234848b8605Smrg state->mode = ARB_fragment; 2235848b8605Smrg 2236848b8605Smrg state->option.TexRect = 2237848b8605Smrg (state->ctx->Extensions.NV_texture_rectangle != GL_FALSE); 2238848b8605Smrg } 2239848b8605Smrg break; 2240848b8605Smrg 2241848b8605Smrg case 7: 2242848b8605Smrg/* Line 1813 of yacc.c */ 2243848b8605Smrg#line 312 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2244848b8605Smrg { 2245848b8605Smrg int valid = 0; 2246848b8605Smrg 2247848b8605Smrg if (state->mode == ARB_vertex) { 2248848b8605Smrg valid = _mesa_ARBvp_parse_option(state, (yyvsp[(2) - (3)].string)); 2249848b8605Smrg } else if (state->mode == ARB_fragment) { 2250848b8605Smrg valid = _mesa_ARBfp_parse_option(state, (yyvsp[(2) - (3)].string)); 2251848b8605Smrg } 2252848b8605Smrg 2253848b8605Smrg 2254848b8605Smrg free((yyvsp[(2) - (3)].string)); 2255848b8605Smrg 2256848b8605Smrg if (!valid) { 2257848b8605Smrg const char *const err_str = (state->mode == ARB_vertex) 2258848b8605Smrg ? "invalid ARB vertex program option" 2259848b8605Smrg : "invalid ARB fragment program option"; 2260848b8605Smrg 2261848b8605Smrg yyerror(& (yylsp[(2) - (3)]), state, err_str); 2262848b8605Smrg YYERROR; 2263848b8605Smrg } 2264848b8605Smrg } 2265848b8605Smrg break; 2266848b8605Smrg 2267848b8605Smrg case 10: 2268848b8605Smrg/* Line 1813 of yacc.c */ 2269848b8605Smrg#line 340 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2270848b8605Smrg { 2271848b8605Smrg if ((yyvsp[(1) - (2)].inst) != NULL) { 2272848b8605Smrg if (state->inst_tail == NULL) { 2273848b8605Smrg state->inst_head = (yyvsp[(1) - (2)].inst); 2274848b8605Smrg } else { 2275848b8605Smrg state->inst_tail->next = (yyvsp[(1) - (2)].inst); 2276848b8605Smrg } 2277848b8605Smrg 2278848b8605Smrg state->inst_tail = (yyvsp[(1) - (2)].inst); 2279848b8605Smrg (yyvsp[(1) - (2)].inst)->next = NULL; 2280848b8605Smrg 2281848b8605Smrg state->prog->NumInstructions++; 2282848b8605Smrg } 2283848b8605Smrg } 2284848b8605Smrg break; 2285848b8605Smrg 2286848b8605Smrg case 12: 2287848b8605Smrg/* Line 1813 of yacc.c */ 2288848b8605Smrg#line 358 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2289848b8605Smrg { 2290848b8605Smrg (yyval.inst) = (yyvsp[(1) - (1)].inst); 2291848b8605Smrg state->prog->NumAluInstructions++; 2292848b8605Smrg } 2293848b8605Smrg break; 2294848b8605Smrg 2295848b8605Smrg case 13: 2296848b8605Smrg/* Line 1813 of yacc.c */ 2297848b8605Smrg#line 363 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2298848b8605Smrg { 2299848b8605Smrg (yyval.inst) = (yyvsp[(1) - (1)].inst); 2300848b8605Smrg state->prog->NumTexInstructions++; 2301848b8605Smrg } 2302848b8605Smrg break; 2303848b8605Smrg 2304848b8605Smrg case 24: 2305848b8605Smrg/* Line 1813 of yacc.c */ 2306848b8605Smrg#line 384 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2307848b8605Smrg { 2308848b8605Smrg (yyval.inst) = asm_instruction_ctor(OPCODE_ARL, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); 2309848b8605Smrg } 2310848b8605Smrg break; 2311848b8605Smrg 2312848b8605Smrg case 25: 2313848b8605Smrg/* Line 1813 of yacc.c */ 2314848b8605Smrg#line 390 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2315848b8605Smrg { 2316848b8605Smrg if ((yyvsp[(1) - (4)].temp_inst).Opcode == OPCODE_DDY) 2317848b8605Smrg state->fragment.UsesDFdy = 1; 2318848b8605Smrg (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (4)].temp_inst), & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); 2319848b8605Smrg } 2320848b8605Smrg break; 2321848b8605Smrg 2322848b8605Smrg case 26: 2323848b8605Smrg/* Line 1813 of yacc.c */ 2324848b8605Smrg#line 398 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2325848b8605Smrg { 2326848b8605Smrg (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (4)].temp_inst), & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); 2327848b8605Smrg } 2328848b8605Smrg break; 2329848b8605Smrg 2330848b8605Smrg case 27: 2331848b8605Smrg/* Line 1813 of yacc.c */ 2332848b8605Smrg#line 404 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2333848b8605Smrg { 2334848b8605Smrg (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (6)].temp_inst), & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), & (yyvsp[(6) - (6)].src_reg), NULL); 2335848b8605Smrg } 2336848b8605Smrg break; 2337848b8605Smrg 2338848b8605Smrg case 28: 2339848b8605Smrg/* Line 1813 of yacc.c */ 2340848b8605Smrg#line 411 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2341848b8605Smrg { 2342848b8605Smrg (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (6)].temp_inst), & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), & (yyvsp[(6) - (6)].src_reg), NULL); 2343848b8605Smrg } 2344848b8605Smrg break; 2345848b8605Smrg 2346848b8605Smrg case 29: 2347848b8605Smrg/* Line 1813 of yacc.c */ 2348848b8605Smrg#line 418 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2349848b8605Smrg { 2350848b8605Smrg (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (8)].temp_inst), & (yyvsp[(2) - (8)].dst_reg), & (yyvsp[(4) - (8)].src_reg), & (yyvsp[(6) - (8)].src_reg), & (yyvsp[(8) - (8)].src_reg)); 2351848b8605Smrg } 2352848b8605Smrg break; 2353848b8605Smrg 2354848b8605Smrg case 30: 2355848b8605Smrg/* Line 1813 of yacc.c */ 2356848b8605Smrg#line 424 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2357848b8605Smrg { 2358848b8605Smrg (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (8)].temp_inst), & (yyvsp[(2) - (8)].dst_reg), & (yyvsp[(4) - (8)].src_reg), NULL, NULL); 2359848b8605Smrg if ((yyval.inst) != NULL) { 2360848b8605Smrg const GLbitfield tex_mask = (1U << (yyvsp[(6) - (8)].integer)); 2361848b8605Smrg GLbitfield shadow_tex = 0; 2362848b8605Smrg GLbitfield target_mask = 0; 2363848b8605Smrg 2364848b8605Smrg 2365848b8605Smrg (yyval.inst)->Base.TexSrcUnit = (yyvsp[(6) - (8)].integer); 2366848b8605Smrg 2367848b8605Smrg if ((yyvsp[(8) - (8)].integer) < 0) { 2368848b8605Smrg shadow_tex = tex_mask; 2369848b8605Smrg 2370848b8605Smrg (yyval.inst)->Base.TexSrcTarget = -(yyvsp[(8) - (8)].integer); 2371848b8605Smrg (yyval.inst)->Base.TexShadow = 1; 2372848b8605Smrg } else { 2373848b8605Smrg (yyval.inst)->Base.TexSrcTarget = (yyvsp[(8) - (8)].integer); 2374848b8605Smrg } 2375848b8605Smrg 2376848b8605Smrg target_mask = (1U << (yyval.inst)->Base.TexSrcTarget); 2377848b8605Smrg 2378848b8605Smrg /* If this texture unit was previously accessed and that access 2379848b8605Smrg * had a different texture target, generate an error. 2380848b8605Smrg * 2381848b8605Smrg * If this texture unit was previously accessed and that access 2382848b8605Smrg * had a different shadow mode, generate an error. 2383848b8605Smrg */ 2384848b8605Smrg if ((state->prog->TexturesUsed[(yyvsp[(6) - (8)].integer)] != 0) 2385848b8605Smrg && ((state->prog->TexturesUsed[(yyvsp[(6) - (8)].integer)] != target_mask) 2386848b8605Smrg || ((state->prog->ShadowSamplers & tex_mask) 2387848b8605Smrg != shadow_tex))) { 2388848b8605Smrg yyerror(& (yylsp[(8) - (8)]), state, 2389848b8605Smrg "multiple targets used on one texture image unit"); 2390848b8605Smrg YYERROR; 2391848b8605Smrg } 2392848b8605Smrg 2393848b8605Smrg 2394848b8605Smrg state->prog->TexturesUsed[(yyvsp[(6) - (8)].integer)] |= target_mask; 2395848b8605Smrg state->prog->ShadowSamplers |= shadow_tex; 2396848b8605Smrg } 2397848b8605Smrg } 2398848b8605Smrg break; 2399848b8605Smrg 2400848b8605Smrg case 31: 2401848b8605Smrg/* Line 1813 of yacc.c */ 2402848b8605Smrg#line 468 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2403848b8605Smrg { 2404848b8605Smrg (yyval.inst) = asm_instruction_ctor(OPCODE_KIL, NULL, & (yyvsp[(2) - (2)].src_reg), NULL, NULL); 2405848b8605Smrg state->fragment.UsesKill = 1; 2406848b8605Smrg } 2407848b8605Smrg break; 2408848b8605Smrg 2409848b8605Smrg case 32: 2410848b8605Smrg/* Line 1813 of yacc.c */ 2411848b8605Smrg#line 473 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2412848b8605Smrg { 2413848b8605Smrg (yyval.inst) = asm_instruction_ctor(OPCODE_KIL_NV, NULL, NULL, NULL, NULL); 2414848b8605Smrg (yyval.inst)->Base.DstReg.CondMask = (yyvsp[(2) - (2)].dst_reg).CondMask; 2415848b8605Smrg (yyval.inst)->Base.DstReg.CondSwizzle = (yyvsp[(2) - (2)].dst_reg).CondSwizzle; 2416848b8605Smrg state->fragment.UsesKill = 1; 2417848b8605Smrg } 2418848b8605Smrg break; 2419848b8605Smrg 2420848b8605Smrg case 33: 2421848b8605Smrg/* Line 1813 of yacc.c */ 2422848b8605Smrg#line 482 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2423848b8605Smrg { 2424848b8605Smrg (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (12)].temp_inst), & (yyvsp[(2) - (12)].dst_reg), & (yyvsp[(4) - (12)].src_reg), & (yyvsp[(6) - (12)].src_reg), & (yyvsp[(8) - (12)].src_reg)); 2425848b8605Smrg if ((yyval.inst) != NULL) { 2426848b8605Smrg const GLbitfield tex_mask = (1U << (yyvsp[(10) - (12)].integer)); 2427848b8605Smrg GLbitfield shadow_tex = 0; 2428848b8605Smrg GLbitfield target_mask = 0; 2429848b8605Smrg 2430848b8605Smrg 2431848b8605Smrg (yyval.inst)->Base.TexSrcUnit = (yyvsp[(10) - (12)].integer); 2432848b8605Smrg 2433848b8605Smrg if ((yyvsp[(12) - (12)].integer) < 0) { 2434848b8605Smrg shadow_tex = tex_mask; 2435848b8605Smrg 2436848b8605Smrg (yyval.inst)->Base.TexSrcTarget = -(yyvsp[(12) - (12)].integer); 2437848b8605Smrg (yyval.inst)->Base.TexShadow = 1; 2438848b8605Smrg } else { 2439848b8605Smrg (yyval.inst)->Base.TexSrcTarget = (yyvsp[(12) - (12)].integer); 2440848b8605Smrg } 2441848b8605Smrg 2442848b8605Smrg target_mask = (1U << (yyval.inst)->Base.TexSrcTarget); 2443848b8605Smrg 2444848b8605Smrg /* If this texture unit was previously accessed and that access 2445848b8605Smrg * had a different texture target, generate an error. 2446848b8605Smrg * 2447848b8605Smrg * If this texture unit was previously accessed and that access 2448848b8605Smrg * had a different shadow mode, generate an error. 2449848b8605Smrg */ 2450848b8605Smrg if ((state->prog->TexturesUsed[(yyvsp[(10) - (12)].integer)] != 0) 2451848b8605Smrg && ((state->prog->TexturesUsed[(yyvsp[(10) - (12)].integer)] != target_mask) 2452848b8605Smrg || ((state->prog->ShadowSamplers & tex_mask) 2453848b8605Smrg != shadow_tex))) { 2454848b8605Smrg yyerror(& (yylsp[(12) - (12)]), state, 2455848b8605Smrg "multiple targets used on one texture image unit"); 2456848b8605Smrg YYERROR; 2457848b8605Smrg } 2458848b8605Smrg 2459848b8605Smrg 2460848b8605Smrg state->prog->TexturesUsed[(yyvsp[(10) - (12)].integer)] |= target_mask; 2461848b8605Smrg state->prog->ShadowSamplers |= shadow_tex; 2462848b8605Smrg } 2463848b8605Smrg } 2464848b8605Smrg break; 2465848b8605Smrg 2466848b8605Smrg case 34: 2467848b8605Smrg/* Line 1813 of yacc.c */ 2468848b8605Smrg#line 526 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2469848b8605Smrg { 2470848b8605Smrg (yyval.integer) = (yyvsp[(2) - (2)].integer); 2471848b8605Smrg } 2472848b8605Smrg break; 2473848b8605Smrg 2474848b8605Smrg case 35: 2475848b8605Smrg/* Line 1813 of yacc.c */ 2476848b8605Smrg#line 531 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2477848b8605Smrg { (yyval.integer) = TEXTURE_1D_INDEX; } 2478848b8605Smrg break; 2479848b8605Smrg 2480848b8605Smrg case 36: 2481848b8605Smrg/* Line 1813 of yacc.c */ 2482848b8605Smrg#line 532 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2483848b8605Smrg { (yyval.integer) = TEXTURE_2D_INDEX; } 2484848b8605Smrg break; 2485848b8605Smrg 2486848b8605Smrg case 37: 2487848b8605Smrg/* Line 1813 of yacc.c */ 2488848b8605Smrg#line 533 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2489848b8605Smrg { (yyval.integer) = TEXTURE_3D_INDEX; } 2490848b8605Smrg break; 2491848b8605Smrg 2492848b8605Smrg case 38: 2493848b8605Smrg/* Line 1813 of yacc.c */ 2494848b8605Smrg#line 534 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2495848b8605Smrg { (yyval.integer) = TEXTURE_CUBE_INDEX; } 2496848b8605Smrg break; 2497848b8605Smrg 2498848b8605Smrg case 39: 2499848b8605Smrg/* Line 1813 of yacc.c */ 2500848b8605Smrg#line 535 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2501848b8605Smrg { (yyval.integer) = TEXTURE_RECT_INDEX; } 2502848b8605Smrg break; 2503848b8605Smrg 2504848b8605Smrg case 40: 2505848b8605Smrg/* Line 1813 of yacc.c */ 2506848b8605Smrg#line 536 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2507848b8605Smrg { (yyval.integer) = -TEXTURE_1D_INDEX; } 2508848b8605Smrg break; 2509848b8605Smrg 2510848b8605Smrg case 41: 2511848b8605Smrg/* Line 1813 of yacc.c */ 2512848b8605Smrg#line 537 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2513848b8605Smrg { (yyval.integer) = -TEXTURE_2D_INDEX; } 2514848b8605Smrg break; 2515848b8605Smrg 2516848b8605Smrg case 42: 2517848b8605Smrg/* Line 1813 of yacc.c */ 2518848b8605Smrg#line 538 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2519848b8605Smrg { (yyval.integer) = -TEXTURE_RECT_INDEX; } 2520848b8605Smrg break; 2521848b8605Smrg 2522848b8605Smrg case 43: 2523848b8605Smrg/* Line 1813 of yacc.c */ 2524848b8605Smrg#line 539 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2525848b8605Smrg { (yyval.integer) = TEXTURE_1D_ARRAY_INDEX; } 2526848b8605Smrg break; 2527848b8605Smrg 2528848b8605Smrg case 44: 2529848b8605Smrg/* Line 1813 of yacc.c */ 2530848b8605Smrg#line 540 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2531848b8605Smrg { (yyval.integer) = TEXTURE_2D_ARRAY_INDEX; } 2532848b8605Smrg break; 2533848b8605Smrg 2534848b8605Smrg case 45: 2535848b8605Smrg/* Line 1813 of yacc.c */ 2536848b8605Smrg#line 541 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2537848b8605Smrg { (yyval.integer) = -TEXTURE_1D_ARRAY_INDEX; } 2538848b8605Smrg break; 2539848b8605Smrg 2540848b8605Smrg case 46: 2541848b8605Smrg/* Line 1813 of yacc.c */ 2542848b8605Smrg#line 542 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2543848b8605Smrg { (yyval.integer) = -TEXTURE_2D_ARRAY_INDEX; } 2544848b8605Smrg break; 2545848b8605Smrg 2546848b8605Smrg case 47: 2547848b8605Smrg/* Line 1813 of yacc.c */ 2548848b8605Smrg#line 546 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2549848b8605Smrg { 2550848b8605Smrg /* FIXME: Is this correct? Should the extenedSwizzle be applied 2551848b8605Smrg * FIXME: to the existing swizzle? 2552848b8605Smrg */ 2553848b8605Smrg (yyvsp[(4) - (6)].src_reg).Base.Swizzle = (yyvsp[(6) - (6)].swiz_mask).swizzle; 2554848b8605Smrg (yyvsp[(4) - (6)].src_reg).Base.Negate = (yyvsp[(6) - (6)].swiz_mask).mask; 2555848b8605Smrg 2556848b8605Smrg (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (6)].temp_inst), & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), NULL, NULL); 2557848b8605Smrg } 2558848b8605Smrg break; 2559848b8605Smrg 2560848b8605Smrg case 48: 2561848b8605Smrg/* Line 1813 of yacc.c */ 2562848b8605Smrg#line 558 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2563848b8605Smrg { 2564848b8605Smrg (yyval.src_reg) = (yyvsp[(2) - (2)].src_reg); 2565848b8605Smrg 2566848b8605Smrg if ((yyvsp[(1) - (2)].negate)) { 2567848b8605Smrg (yyval.src_reg).Base.Negate = ~(yyval.src_reg).Base.Negate; 2568848b8605Smrg } 2569848b8605Smrg } 2570848b8605Smrg break; 2571848b8605Smrg 2572848b8605Smrg case 49: 2573848b8605Smrg/* Line 1813 of yacc.c */ 2574848b8605Smrg#line 566 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2575848b8605Smrg { 2576848b8605Smrg (yyval.src_reg) = (yyvsp[(3) - (4)].src_reg); 2577848b8605Smrg 2578848b8605Smrg if (!state->option.NV_fragment) { 2579848b8605Smrg yyerror(& (yylsp[(2) - (4)]), state, "unexpected character '|'"); 2580848b8605Smrg YYERROR; 2581848b8605Smrg } 2582848b8605Smrg 2583848b8605Smrg if ((yyvsp[(1) - (4)].negate)) { 2584848b8605Smrg (yyval.src_reg).Base.Negate = ~(yyval.src_reg).Base.Negate; 2585848b8605Smrg } 2586848b8605Smrg 2587848b8605Smrg (yyval.src_reg).Base.Abs = 1; 2588848b8605Smrg } 2589848b8605Smrg break; 2590848b8605Smrg 2591848b8605Smrg case 50: 2592848b8605Smrg/* Line 1813 of yacc.c */ 2593848b8605Smrg#line 583 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2594848b8605Smrg { 2595848b8605Smrg (yyval.src_reg) = (yyvsp[(1) - (2)].src_reg); 2596848b8605Smrg 2597848b8605Smrg (yyval.src_reg).Base.Swizzle = _mesa_combine_swizzles((yyval.src_reg).Base.Swizzle, 2598848b8605Smrg (yyvsp[(2) - (2)].swiz_mask).swizzle); 2599848b8605Smrg } 2600848b8605Smrg break; 2601848b8605Smrg 2602848b8605Smrg case 51: 2603848b8605Smrg/* Line 1813 of yacc.c */ 2604848b8605Smrg#line 590 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2605848b8605Smrg { 2606848b8605Smrg struct asm_symbol temp_sym; 2607848b8605Smrg 2608848b8605Smrg if (!state->option.NV_fragment) { 2609848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "expected scalar suffix"); 2610848b8605Smrg YYERROR; 2611848b8605Smrg } 2612848b8605Smrg 2613848b8605Smrg memset(& temp_sym, 0, sizeof(temp_sym)); 2614848b8605Smrg temp_sym.param_binding_begin = ~0; 2615848b8605Smrg initialize_symbol_from_const(state->prog, & temp_sym, & (yyvsp[(1) - (1)].vector), GL_TRUE); 2616848b8605Smrg 2617848b8605Smrg set_src_reg_swz(& (yyval.src_reg), PROGRAM_CONSTANT, 2618848b8605Smrg temp_sym.param_binding_begin, 2619848b8605Smrg temp_sym.param_binding_swizzle); 2620848b8605Smrg } 2621848b8605Smrg break; 2622848b8605Smrg 2623848b8605Smrg case 52: 2624848b8605Smrg/* Line 1813 of yacc.c */ 2625848b8605Smrg#line 609 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2626848b8605Smrg { 2627848b8605Smrg (yyval.src_reg) = (yyvsp[(2) - (3)].src_reg); 2628848b8605Smrg 2629848b8605Smrg if ((yyvsp[(1) - (3)].negate)) { 2630848b8605Smrg (yyval.src_reg).Base.Negate = ~(yyval.src_reg).Base.Negate; 2631848b8605Smrg } 2632848b8605Smrg 2633848b8605Smrg (yyval.src_reg).Base.Swizzle = _mesa_combine_swizzles((yyval.src_reg).Base.Swizzle, 2634848b8605Smrg (yyvsp[(3) - (3)].swiz_mask).swizzle); 2635848b8605Smrg } 2636848b8605Smrg break; 2637848b8605Smrg 2638848b8605Smrg case 53: 2639848b8605Smrg/* Line 1813 of yacc.c */ 2640848b8605Smrg#line 620 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2641848b8605Smrg { 2642848b8605Smrg (yyval.src_reg) = (yyvsp[(3) - (5)].src_reg); 2643848b8605Smrg 2644848b8605Smrg if (!state->option.NV_fragment) { 2645848b8605Smrg yyerror(& (yylsp[(2) - (5)]), state, "unexpected character '|'"); 2646848b8605Smrg YYERROR; 2647848b8605Smrg } 2648848b8605Smrg 2649848b8605Smrg if ((yyvsp[(1) - (5)].negate)) { 2650848b8605Smrg (yyval.src_reg).Base.Negate = ~(yyval.src_reg).Base.Negate; 2651848b8605Smrg } 2652848b8605Smrg 2653848b8605Smrg (yyval.src_reg).Base.Abs = 1; 2654848b8605Smrg (yyval.src_reg).Base.Swizzle = _mesa_combine_swizzles((yyval.src_reg).Base.Swizzle, 2655848b8605Smrg (yyvsp[(4) - (5)].swiz_mask).swizzle); 2656848b8605Smrg } 2657848b8605Smrg break; 2658848b8605Smrg 2659848b8605Smrg case 54: 2660848b8605Smrg/* Line 1813 of yacc.c */ 2661848b8605Smrg#line 640 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2662848b8605Smrg { 2663848b8605Smrg (yyval.dst_reg) = (yyvsp[(1) - (3)].dst_reg); 2664848b8605Smrg (yyval.dst_reg).WriteMask = (yyvsp[(2) - (3)].swiz_mask).mask; 2665848b8605Smrg (yyval.dst_reg).CondMask = (yyvsp[(3) - (3)].dst_reg).CondMask; 2666848b8605Smrg (yyval.dst_reg).CondSwizzle = (yyvsp[(3) - (3)].dst_reg).CondSwizzle; 2667848b8605Smrg 2668848b8605Smrg if ((yyval.dst_reg).File == PROGRAM_OUTPUT) { 2669848b8605Smrg /* Technically speaking, this should check that it is in 2670848b8605Smrg * vertex program mode. However, PositionInvariant can never be 2671848b8605Smrg * set in fragment program mode, so it is somewhat irrelevant. 2672848b8605Smrg */ 2673848b8605Smrg if (state->option.PositionInvariant 2674848b8605Smrg && ((yyval.dst_reg).Index == VARYING_SLOT_POS)) { 2675848b8605Smrg yyerror(& (yylsp[(1) - (3)]), state, "position-invariant programs cannot " 2676848b8605Smrg "write position"); 2677848b8605Smrg YYERROR; 2678848b8605Smrg } 2679848b8605Smrg 2680848b8605Smrg state->prog->OutputsWritten |= BITFIELD64_BIT((yyval.dst_reg).Index); 2681848b8605Smrg } 2682848b8605Smrg } 2683848b8605Smrg break; 2684848b8605Smrg 2685848b8605Smrg case 55: 2686848b8605Smrg/* Line 1813 of yacc.c */ 2687848b8605Smrg#line 664 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2688848b8605Smrg { 2689848b8605Smrg set_dst_reg(& (yyval.dst_reg), PROGRAM_ADDRESS, 0); 2690848b8605Smrg (yyval.dst_reg).WriteMask = (yyvsp[(2) - (2)].swiz_mask).mask; 2691848b8605Smrg } 2692848b8605Smrg break; 2693848b8605Smrg 2694848b8605Smrg case 56: 2695848b8605Smrg/* Line 1813 of yacc.c */ 2696848b8605Smrg#line 671 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2697848b8605Smrg { 2698848b8605Smrg const unsigned xyzw_valid = 2699848b8605Smrg ((yyvsp[(1) - (7)].ext_swizzle).xyzw_valid << 0) 2700848b8605Smrg | ((yyvsp[(3) - (7)].ext_swizzle).xyzw_valid << 1) 2701848b8605Smrg | ((yyvsp[(5) - (7)].ext_swizzle).xyzw_valid << 2) 2702848b8605Smrg | ((yyvsp[(7) - (7)].ext_swizzle).xyzw_valid << 3); 2703848b8605Smrg const unsigned rgba_valid = 2704848b8605Smrg ((yyvsp[(1) - (7)].ext_swizzle).rgba_valid << 0) 2705848b8605Smrg | ((yyvsp[(3) - (7)].ext_swizzle).rgba_valid << 1) 2706848b8605Smrg | ((yyvsp[(5) - (7)].ext_swizzle).rgba_valid << 2) 2707848b8605Smrg | ((yyvsp[(7) - (7)].ext_swizzle).rgba_valid << 3); 2708848b8605Smrg 2709848b8605Smrg /* All of the swizzle components have to be valid in either RGBA 2710848b8605Smrg * or XYZW. Note that 0 and 1 are valid in both, so both masks 2711848b8605Smrg * can have some bits set. 2712848b8605Smrg * 2713848b8605Smrg * We somewhat deviate from the spec here. It would be really hard 2714848b8605Smrg * to figure out which component is the error, and there probably 2715848b8605Smrg * isn't a lot of benefit. 2716848b8605Smrg */ 2717848b8605Smrg if ((rgba_valid != 0x0f) && (xyzw_valid != 0x0f)) { 2718848b8605Smrg yyerror(& (yylsp[(1) - (7)]), state, "cannot combine RGBA and XYZW swizzle " 2719848b8605Smrg "components"); 2720848b8605Smrg YYERROR; 2721848b8605Smrg } 2722848b8605Smrg 2723848b8605Smrg (yyval.swiz_mask).swizzle = MAKE_SWIZZLE4((yyvsp[(1) - (7)].ext_swizzle).swz, (yyvsp[(3) - (7)].ext_swizzle).swz, (yyvsp[(5) - (7)].ext_swizzle).swz, (yyvsp[(7) - (7)].ext_swizzle).swz); 2724848b8605Smrg (yyval.swiz_mask).mask = ((yyvsp[(1) - (7)].ext_swizzle).negate) | ((yyvsp[(3) - (7)].ext_swizzle).negate << 1) | ((yyvsp[(5) - (7)].ext_swizzle).negate << 2) 2725848b8605Smrg | ((yyvsp[(7) - (7)].ext_swizzle).negate << 3); 2726848b8605Smrg } 2727848b8605Smrg break; 2728848b8605Smrg 2729848b8605Smrg case 57: 2730848b8605Smrg/* Line 1813 of yacc.c */ 2731848b8605Smrg#line 704 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2732848b8605Smrg { 2733848b8605Smrg (yyval.ext_swizzle) = (yyvsp[(2) - (2)].ext_swizzle); 2734848b8605Smrg (yyval.ext_swizzle).negate = ((yyvsp[(1) - (2)].negate)) ? 1 : 0; 2735848b8605Smrg } 2736848b8605Smrg break; 2737848b8605Smrg 2738848b8605Smrg case 58: 2739848b8605Smrg/* Line 1813 of yacc.c */ 2740848b8605Smrg#line 711 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2741848b8605Smrg { 2742848b8605Smrg if (((yyvsp[(1) - (1)].integer) != 0) && ((yyvsp[(1) - (1)].integer) != 1)) { 2743848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); 2744848b8605Smrg YYERROR; 2745848b8605Smrg } 2746848b8605Smrg 2747848b8605Smrg (yyval.ext_swizzle).swz = ((yyvsp[(1) - (1)].integer) == 0) ? SWIZZLE_ZERO : SWIZZLE_ONE; 2748848b8605Smrg (yyval.ext_swizzle).negate = 0; 2749848b8605Smrg 2750848b8605Smrg /* 0 and 1 are valid for both RGBA swizzle names and XYZW 2751848b8605Smrg * swizzle names. 2752848b8605Smrg */ 2753848b8605Smrg (yyval.ext_swizzle).xyzw_valid = 1; 2754848b8605Smrg (yyval.ext_swizzle).rgba_valid = 1; 2755848b8605Smrg } 2756848b8605Smrg break; 2757848b8605Smrg 2758848b8605Smrg case 59: 2759848b8605Smrg/* Line 1813 of yacc.c */ 2760848b8605Smrg#line 727 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2761848b8605Smrg { 2762848b8605Smrg char s; 2763848b8605Smrg 2764848b8605Smrg if (strlen((yyvsp[(1) - (1)].string)) > 1) { 2765848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); 2766848b8605Smrg YYERROR; 2767848b8605Smrg } 2768848b8605Smrg 2769848b8605Smrg s = (yyvsp[(1) - (1)].string)[0]; 2770848b8605Smrg free((yyvsp[(1) - (1)].string)); 2771848b8605Smrg 2772848b8605Smrg (yyval.ext_swizzle).rgba_valid = 0; 2773848b8605Smrg (yyval.ext_swizzle).xyzw_valid = 0; 2774848b8605Smrg (yyval.ext_swizzle).negate = 0; 2775848b8605Smrg 2776848b8605Smrg switch (s) { 2777848b8605Smrg case 'x': 2778848b8605Smrg (yyval.ext_swizzle).swz = SWIZZLE_X; 2779848b8605Smrg (yyval.ext_swizzle).xyzw_valid = 1; 2780848b8605Smrg break; 2781848b8605Smrg case 'y': 2782848b8605Smrg (yyval.ext_swizzle).swz = SWIZZLE_Y; 2783848b8605Smrg (yyval.ext_swizzle).xyzw_valid = 1; 2784848b8605Smrg break; 2785848b8605Smrg case 'z': 2786848b8605Smrg (yyval.ext_swizzle).swz = SWIZZLE_Z; 2787848b8605Smrg (yyval.ext_swizzle).xyzw_valid = 1; 2788848b8605Smrg break; 2789848b8605Smrg case 'w': 2790848b8605Smrg (yyval.ext_swizzle).swz = SWIZZLE_W; 2791848b8605Smrg (yyval.ext_swizzle).xyzw_valid = 1; 2792848b8605Smrg break; 2793848b8605Smrg 2794848b8605Smrg case 'r': 2795848b8605Smrg (yyval.ext_swizzle).swz = SWIZZLE_X; 2796848b8605Smrg (yyval.ext_swizzle).rgba_valid = 1; 2797848b8605Smrg break; 2798848b8605Smrg case 'g': 2799848b8605Smrg (yyval.ext_swizzle).swz = SWIZZLE_Y; 2800848b8605Smrg (yyval.ext_swizzle).rgba_valid = 1; 2801848b8605Smrg break; 2802848b8605Smrg case 'b': 2803848b8605Smrg (yyval.ext_swizzle).swz = SWIZZLE_Z; 2804848b8605Smrg (yyval.ext_swizzle).rgba_valid = 1; 2805848b8605Smrg break; 2806848b8605Smrg case 'a': 2807848b8605Smrg (yyval.ext_swizzle).swz = SWIZZLE_W; 2808848b8605Smrg (yyval.ext_swizzle).rgba_valid = 1; 2809848b8605Smrg break; 2810848b8605Smrg 2811848b8605Smrg default: 2812848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); 2813848b8605Smrg YYERROR; 2814848b8605Smrg break; 2815848b8605Smrg } 2816848b8605Smrg } 2817848b8605Smrg break; 2818848b8605Smrg 2819848b8605Smrg case 60: 2820848b8605Smrg/* Line 1813 of yacc.c */ 2821848b8605Smrg#line 786 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2822848b8605Smrg { 2823848b8605Smrg struct asm_symbol *const s = (struct asm_symbol *) 2824848b8605Smrg _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); 2825848b8605Smrg 2826848b8605Smrg free((yyvsp[(1) - (1)].string)); 2827848b8605Smrg 2828848b8605Smrg if (s == NULL) { 2829848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid operand variable"); 2830848b8605Smrg YYERROR; 2831848b8605Smrg } else if ((s->type != at_param) && (s->type != at_temp) 2832848b8605Smrg && (s->type != at_attrib)) { 2833848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid operand variable"); 2834848b8605Smrg YYERROR; 2835848b8605Smrg } else if ((s->type == at_param) && s->param_is_array) { 2836848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "non-array access to array PARAM"); 2837848b8605Smrg YYERROR; 2838848b8605Smrg } 2839848b8605Smrg 2840848b8605Smrg init_src_reg(& (yyval.src_reg)); 2841848b8605Smrg switch (s->type) { 2842848b8605Smrg case at_temp: 2843848b8605Smrg set_src_reg(& (yyval.src_reg), PROGRAM_TEMPORARY, s->temp_binding); 2844848b8605Smrg break; 2845848b8605Smrg case at_param: 2846848b8605Smrg set_src_reg_swz(& (yyval.src_reg), s->param_binding_type, 2847848b8605Smrg s->param_binding_begin, 2848848b8605Smrg s->param_binding_swizzle); 2849848b8605Smrg break; 2850848b8605Smrg case at_attrib: 2851848b8605Smrg set_src_reg(& (yyval.src_reg), PROGRAM_INPUT, s->attrib_binding); 2852848b8605Smrg state->prog->InputsRead |= BITFIELD64_BIT((yyval.src_reg).Base.Index); 2853848b8605Smrg 2854848b8605Smrg if (!validate_inputs(& (yylsp[(1) - (1)]), state)) { 2855848b8605Smrg YYERROR; 2856848b8605Smrg } 2857848b8605Smrg break; 2858848b8605Smrg 2859848b8605Smrg default: 2860848b8605Smrg YYERROR; 2861848b8605Smrg break; 2862848b8605Smrg } 2863848b8605Smrg } 2864848b8605Smrg break; 2865848b8605Smrg 2866848b8605Smrg case 61: 2867848b8605Smrg/* Line 1813 of yacc.c */ 2868848b8605Smrg#line 829 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2869848b8605Smrg { 2870848b8605Smrg set_src_reg(& (yyval.src_reg), PROGRAM_INPUT, (yyvsp[(1) - (1)].attrib)); 2871848b8605Smrg state->prog->InputsRead |= BITFIELD64_BIT((yyval.src_reg).Base.Index); 2872848b8605Smrg 2873848b8605Smrg if (!validate_inputs(& (yylsp[(1) - (1)]), state)) { 2874848b8605Smrg YYERROR; 2875848b8605Smrg } 2876848b8605Smrg } 2877848b8605Smrg break; 2878848b8605Smrg 2879848b8605Smrg case 62: 2880848b8605Smrg/* Line 1813 of yacc.c */ 2881848b8605Smrg#line 838 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2882848b8605Smrg { 2883848b8605Smrg if (! (yyvsp[(3) - (4)].src_reg).Base.RelAddr 2884848b8605Smrg && ((unsigned) (yyvsp[(3) - (4)].src_reg).Base.Index >= (yyvsp[(1) - (4)].sym)->param_binding_length)) { 2885848b8605Smrg yyerror(& (yylsp[(3) - (4)]), state, "out of bounds array access"); 2886848b8605Smrg YYERROR; 2887848b8605Smrg } 2888848b8605Smrg 2889848b8605Smrg init_src_reg(& (yyval.src_reg)); 2890848b8605Smrg (yyval.src_reg).Base.File = (yyvsp[(1) - (4)].sym)->param_binding_type; 2891848b8605Smrg 2892848b8605Smrg if ((yyvsp[(3) - (4)].src_reg).Base.RelAddr) { 2893848b8605Smrg state->prog->IndirectRegisterFiles |= (1 << (yyval.src_reg).Base.File); 2894848b8605Smrg (yyvsp[(1) - (4)].sym)->param_accessed_indirectly = 1; 2895848b8605Smrg 2896848b8605Smrg (yyval.src_reg).Base.RelAddr = 1; 2897848b8605Smrg (yyval.src_reg).Base.Index = (yyvsp[(3) - (4)].src_reg).Base.Index; 2898848b8605Smrg (yyval.src_reg).Symbol = (yyvsp[(1) - (4)].sym); 2899848b8605Smrg } else { 2900848b8605Smrg (yyval.src_reg).Base.Index = (yyvsp[(1) - (4)].sym)->param_binding_begin + (yyvsp[(3) - (4)].src_reg).Base.Index; 2901848b8605Smrg } 2902848b8605Smrg } 2903848b8605Smrg break; 2904848b8605Smrg 2905848b8605Smrg case 63: 2906848b8605Smrg/* Line 1813 of yacc.c */ 2907848b8605Smrg#line 860 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2908848b8605Smrg { 2909848b8605Smrg gl_register_file file = ((yyvsp[(1) - (1)].temp_sym).name != NULL) 2910848b8605Smrg ? (yyvsp[(1) - (1)].temp_sym).param_binding_type 2911848b8605Smrg : PROGRAM_CONSTANT; 2912848b8605Smrg set_src_reg_swz(& (yyval.src_reg), file, (yyvsp[(1) - (1)].temp_sym).param_binding_begin, 2913848b8605Smrg (yyvsp[(1) - (1)].temp_sym).param_binding_swizzle); 2914848b8605Smrg } 2915848b8605Smrg break; 2916848b8605Smrg 2917848b8605Smrg case 64: 2918848b8605Smrg/* Line 1813 of yacc.c */ 2919848b8605Smrg#line 870 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2920848b8605Smrg { 2921848b8605Smrg set_dst_reg(& (yyval.dst_reg), PROGRAM_OUTPUT, (yyvsp[(1) - (1)].result)); 2922848b8605Smrg } 2923848b8605Smrg break; 2924848b8605Smrg 2925848b8605Smrg case 65: 2926848b8605Smrg/* Line 1813 of yacc.c */ 2927848b8605Smrg#line 874 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2928848b8605Smrg { 2929848b8605Smrg struct asm_symbol *const s = (struct asm_symbol *) 2930848b8605Smrg _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); 2931848b8605Smrg 2932848b8605Smrg free((yyvsp[(1) - (1)].string)); 2933848b8605Smrg 2934848b8605Smrg if (s == NULL) { 2935848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid operand variable"); 2936848b8605Smrg YYERROR; 2937848b8605Smrg } else if ((s->type != at_output) && (s->type != at_temp)) { 2938848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid operand variable"); 2939848b8605Smrg YYERROR; 2940848b8605Smrg } 2941848b8605Smrg 2942848b8605Smrg switch (s->type) { 2943848b8605Smrg case at_temp: 2944848b8605Smrg set_dst_reg(& (yyval.dst_reg), PROGRAM_TEMPORARY, s->temp_binding); 2945848b8605Smrg break; 2946848b8605Smrg case at_output: 2947848b8605Smrg set_dst_reg(& (yyval.dst_reg), PROGRAM_OUTPUT, s->output_binding); 2948848b8605Smrg break; 2949848b8605Smrg default: 2950848b8605Smrg set_dst_reg(& (yyval.dst_reg), s->param_binding_type, s->param_binding_begin); 2951848b8605Smrg break; 2952848b8605Smrg } 2953848b8605Smrg } 2954848b8605Smrg break; 2955848b8605Smrg 2956848b8605Smrg case 66: 2957848b8605Smrg/* Line 1813 of yacc.c */ 2958848b8605Smrg#line 903 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2959848b8605Smrg { 2960848b8605Smrg struct asm_symbol *const s = (struct asm_symbol *) 2961848b8605Smrg _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); 2962848b8605Smrg 2963848b8605Smrg free((yyvsp[(1) - (1)].string)); 2964848b8605Smrg 2965848b8605Smrg if (s == NULL) { 2966848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid operand variable"); 2967848b8605Smrg YYERROR; 2968848b8605Smrg } else if ((s->type != at_param) || !s->param_is_array) { 2969848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "array access to non-PARAM variable"); 2970848b8605Smrg YYERROR; 2971848b8605Smrg } else { 2972848b8605Smrg (yyval.sym) = s; 2973848b8605Smrg } 2974848b8605Smrg } 2975848b8605Smrg break; 2976848b8605Smrg 2977848b8605Smrg case 69: 2978848b8605Smrg/* Line 1813 of yacc.c */ 2979848b8605Smrg#line 924 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2980848b8605Smrg { 2981848b8605Smrg init_src_reg(& (yyval.src_reg)); 2982848b8605Smrg (yyval.src_reg).Base.Index = (yyvsp[(1) - (1)].integer); 2983848b8605Smrg } 2984848b8605Smrg break; 2985848b8605Smrg 2986848b8605Smrg case 70: 2987848b8605Smrg/* Line 1813 of yacc.c */ 2988848b8605Smrg#line 931 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 2989848b8605Smrg { 2990848b8605Smrg /* FINISHME: Add support for multiple address registers. 2991848b8605Smrg */ 2992848b8605Smrg /* FINISHME: Add support for 4-component address registers. 2993848b8605Smrg */ 2994848b8605Smrg init_src_reg(& (yyval.src_reg)); 2995848b8605Smrg (yyval.src_reg).Base.RelAddr = 1; 2996848b8605Smrg (yyval.src_reg).Base.Index = (yyvsp[(3) - (3)].integer); 2997848b8605Smrg } 2998848b8605Smrg break; 2999848b8605Smrg 3000848b8605Smrg case 71: 3001848b8605Smrg/* Line 1813 of yacc.c */ 3002848b8605Smrg#line 942 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3003848b8605Smrg { (yyval.integer) = 0; } 3004848b8605Smrg break; 3005848b8605Smrg 3006848b8605Smrg case 72: 3007848b8605Smrg/* Line 1813 of yacc.c */ 3008848b8605Smrg#line 943 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3009848b8605Smrg { (yyval.integer) = (yyvsp[(2) - (2)].integer); } 3010848b8605Smrg break; 3011848b8605Smrg 3012848b8605Smrg case 73: 3013848b8605Smrg/* Line 1813 of yacc.c */ 3014848b8605Smrg#line 944 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3015848b8605Smrg { (yyval.integer) = -(yyvsp[(2) - (2)].integer); } 3016848b8605Smrg break; 3017848b8605Smrg 3018848b8605Smrg case 74: 3019848b8605Smrg/* Line 1813 of yacc.c */ 3020848b8605Smrg#line 948 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3021848b8605Smrg { 3022848b8605Smrg if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > (state->limits->MaxAddressOffset - 1))) { 3023848b8605Smrg char s[100]; 3024848b8605Smrg _mesa_snprintf(s, sizeof(s), 3025848b8605Smrg "relative address offset too large (%d)", (yyvsp[(1) - (1)].integer)); 3026848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, s); 3027848b8605Smrg YYERROR; 3028848b8605Smrg } else { 3029848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 3030848b8605Smrg } 3031848b8605Smrg } 3032848b8605Smrg break; 3033848b8605Smrg 3034848b8605Smrg case 75: 3035848b8605Smrg/* Line 1813 of yacc.c */ 3036848b8605Smrg#line 962 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3037848b8605Smrg { 3038848b8605Smrg if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > state->limits->MaxAddressOffset)) { 3039848b8605Smrg char s[100]; 3040848b8605Smrg _mesa_snprintf(s, sizeof(s), 3041848b8605Smrg "relative address offset too large (%d)", (yyvsp[(1) - (1)].integer)); 3042848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, s); 3043848b8605Smrg YYERROR; 3044848b8605Smrg } else { 3045848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 3046848b8605Smrg } 3047848b8605Smrg } 3048848b8605Smrg break; 3049848b8605Smrg 3050848b8605Smrg case 76: 3051848b8605Smrg/* Line 1813 of yacc.c */ 3052848b8605Smrg#line 976 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3053848b8605Smrg { 3054848b8605Smrg struct asm_symbol *const s = (struct asm_symbol *) 3055848b8605Smrg _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); 3056848b8605Smrg 3057848b8605Smrg free((yyvsp[(1) - (1)].string)); 3058848b8605Smrg 3059848b8605Smrg if (s == NULL) { 3060848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid array member"); 3061848b8605Smrg YYERROR; 3062848b8605Smrg } else if (s->type != at_address) { 3063848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, 3064848b8605Smrg "invalid variable for indexed array access"); 3065848b8605Smrg YYERROR; 3066848b8605Smrg } else { 3067848b8605Smrg (yyval.sym) = s; 3068848b8605Smrg } 3069848b8605Smrg } 3070848b8605Smrg break; 3071848b8605Smrg 3072848b8605Smrg case 77: 3073848b8605Smrg/* Line 1813 of yacc.c */ 3074848b8605Smrg#line 996 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3075848b8605Smrg { 3076848b8605Smrg if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { 3077848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid address component selector"); 3078848b8605Smrg YYERROR; 3079848b8605Smrg } else { 3080848b8605Smrg (yyval.swiz_mask) = (yyvsp[(1) - (1)].swiz_mask); 3081848b8605Smrg } 3082848b8605Smrg } 3083848b8605Smrg break; 3084848b8605Smrg 3085848b8605Smrg case 78: 3086848b8605Smrg/* Line 1813 of yacc.c */ 3087848b8605Smrg#line 1007 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3088848b8605Smrg { 3089848b8605Smrg if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { 3090848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, 3091848b8605Smrg "address register write mask must be \".x\""); 3092848b8605Smrg YYERROR; 3093848b8605Smrg } else { 3094848b8605Smrg (yyval.swiz_mask) = (yyvsp[(1) - (1)].swiz_mask); 3095848b8605Smrg } 3096848b8605Smrg } 3097848b8605Smrg break; 3098848b8605Smrg 3099848b8605Smrg case 83: 3100848b8605Smrg/* Line 1813 of yacc.c */ 3101848b8605Smrg#line 1023 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3102848b8605Smrg { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; } 3103848b8605Smrg break; 3104848b8605Smrg 3105848b8605Smrg case 88: 3106848b8605Smrg/* Line 1813 of yacc.c */ 3107848b8605Smrg#line 1027 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3108848b8605Smrg { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; } 3109848b8605Smrg break; 3110848b8605Smrg 3111848b8605Smrg case 89: 3112848b8605Smrg/* Line 1813 of yacc.c */ 3113848b8605Smrg#line 1031 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3114848b8605Smrg { 3115848b8605Smrg (yyval.dst_reg) = (yyvsp[(2) - (3)].dst_reg); 3116848b8605Smrg } 3117848b8605Smrg break; 3118848b8605Smrg 3119848b8605Smrg case 90: 3120848b8605Smrg/* Line 1813 of yacc.c */ 3121848b8605Smrg#line 1035 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3122848b8605Smrg { 3123848b8605Smrg (yyval.dst_reg) = (yyvsp[(2) - (3)].dst_reg); 3124848b8605Smrg } 3125848b8605Smrg break; 3126848b8605Smrg 3127848b8605Smrg case 91: 3128848b8605Smrg/* Line 1813 of yacc.c */ 3129848b8605Smrg#line 1039 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3130848b8605Smrg { 3131848b8605Smrg (yyval.dst_reg).CondMask = COND_TR; 3132848b8605Smrg (yyval.dst_reg).CondSwizzle = SWIZZLE_NOOP; 3133848b8605Smrg } 3134848b8605Smrg break; 3135848b8605Smrg 3136848b8605Smrg case 92: 3137848b8605Smrg/* Line 1813 of yacc.c */ 3138848b8605Smrg#line 1046 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3139848b8605Smrg { 3140848b8605Smrg (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg); 3141848b8605Smrg (yyval.dst_reg).CondSwizzle = (yyvsp[(2) - (2)].swiz_mask).swizzle; 3142848b8605Smrg } 3143848b8605Smrg break; 3144848b8605Smrg 3145848b8605Smrg case 93: 3146848b8605Smrg/* Line 1813 of yacc.c */ 3147848b8605Smrg#line 1053 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3148848b8605Smrg { 3149848b8605Smrg (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg); 3150848b8605Smrg (yyval.dst_reg).CondSwizzle = (yyvsp[(2) - (2)].swiz_mask).swizzle; 3151848b8605Smrg } 3152848b8605Smrg break; 3153848b8605Smrg 3154848b8605Smrg case 94: 3155848b8605Smrg/* Line 1813 of yacc.c */ 3156848b8605Smrg#line 1060 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3157848b8605Smrg { 3158848b8605Smrg const int cond = _mesa_parse_cc((yyvsp[(1) - (1)].string)); 3159848b8605Smrg if ((cond == 0) || ((yyvsp[(1) - (1)].string)[2] != '\0')) { 3160848b8605Smrg char *const err_str = 3161848b8605Smrg make_error_string("invalid condition code \"%s\"", (yyvsp[(1) - (1)].string)); 3162848b8605Smrg 3163848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, (err_str != NULL) 3164848b8605Smrg ? err_str : "invalid condition code"); 3165848b8605Smrg 3166848b8605Smrg if (err_str != NULL) { 3167848b8605Smrg free(err_str); 3168848b8605Smrg } 3169848b8605Smrg 3170848b8605Smrg YYERROR; 3171848b8605Smrg } 3172848b8605Smrg 3173848b8605Smrg (yyval.dst_reg).CondMask = cond; 3174848b8605Smrg (yyval.dst_reg).CondSwizzle = SWIZZLE_NOOP; 3175848b8605Smrg } 3176848b8605Smrg break; 3177848b8605Smrg 3178848b8605Smrg case 95: 3179848b8605Smrg/* Line 1813 of yacc.c */ 3180848b8605Smrg#line 1082 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3181848b8605Smrg { 3182848b8605Smrg const int cond = _mesa_parse_cc((yyvsp[(1) - (1)].string)); 3183848b8605Smrg if ((cond == 0) || ((yyvsp[(1) - (1)].string)[2] != '\0')) { 3184848b8605Smrg char *const err_str = 3185848b8605Smrg make_error_string("invalid condition code \"%s\"", (yyvsp[(1) - (1)].string)); 3186848b8605Smrg 3187848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, (err_str != NULL) 3188848b8605Smrg ? err_str : "invalid condition code"); 3189848b8605Smrg 3190848b8605Smrg if (err_str != NULL) { 3191848b8605Smrg free(err_str); 3192848b8605Smrg } 3193848b8605Smrg 3194848b8605Smrg YYERROR; 3195848b8605Smrg } 3196848b8605Smrg 3197848b8605Smrg (yyval.dst_reg).CondMask = cond; 3198848b8605Smrg (yyval.dst_reg).CondSwizzle = SWIZZLE_NOOP; 3199848b8605Smrg } 3200848b8605Smrg break; 3201848b8605Smrg 3202848b8605Smrg case 102: 3203848b8605Smrg/* Line 1813 of yacc.c */ 3204848b8605Smrg#line 1112 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3205848b8605Smrg { 3206848b8605Smrg struct asm_symbol *const s = 3207848b8605Smrg declare_variable(state, (yyvsp[(2) - (4)].string), at_attrib, & (yylsp[(2) - (4)])); 3208848b8605Smrg 3209848b8605Smrg if (s == NULL) { 3210848b8605Smrg free((yyvsp[(2) - (4)].string)); 3211848b8605Smrg YYERROR; 3212848b8605Smrg } else { 3213848b8605Smrg s->attrib_binding = (yyvsp[(4) - (4)].attrib); 3214848b8605Smrg state->InputsBound |= BITFIELD64_BIT(s->attrib_binding); 3215848b8605Smrg 3216848b8605Smrg if (!validate_inputs(& (yylsp[(4) - (4)]), state)) { 3217848b8605Smrg YYERROR; 3218848b8605Smrg } 3219848b8605Smrg } 3220848b8605Smrg } 3221848b8605Smrg break; 3222848b8605Smrg 3223848b8605Smrg case 103: 3224848b8605Smrg/* Line 1813 of yacc.c */ 3225848b8605Smrg#line 1131 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3226848b8605Smrg { 3227848b8605Smrg (yyval.attrib) = (yyvsp[(2) - (2)].attrib); 3228848b8605Smrg } 3229848b8605Smrg break; 3230848b8605Smrg 3231848b8605Smrg case 104: 3232848b8605Smrg/* Line 1813 of yacc.c */ 3233848b8605Smrg#line 1135 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3234848b8605Smrg { 3235848b8605Smrg (yyval.attrib) = (yyvsp[(2) - (2)].attrib); 3236848b8605Smrg } 3237848b8605Smrg break; 3238848b8605Smrg 3239848b8605Smrg case 105: 3240848b8605Smrg/* Line 1813 of yacc.c */ 3241848b8605Smrg#line 1141 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3242848b8605Smrg { 3243848b8605Smrg (yyval.attrib) = VERT_ATTRIB_POS; 3244848b8605Smrg } 3245848b8605Smrg break; 3246848b8605Smrg 3247848b8605Smrg case 106: 3248848b8605Smrg/* Line 1813 of yacc.c */ 3249848b8605Smrg#line 1145 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3250848b8605Smrg { 3251848b8605Smrg (yyval.attrib) = VERT_ATTRIB_WEIGHT; 3252848b8605Smrg } 3253848b8605Smrg break; 3254848b8605Smrg 3255848b8605Smrg case 107: 3256848b8605Smrg/* Line 1813 of yacc.c */ 3257848b8605Smrg#line 1149 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3258848b8605Smrg { 3259848b8605Smrg (yyval.attrib) = VERT_ATTRIB_NORMAL; 3260848b8605Smrg } 3261848b8605Smrg break; 3262848b8605Smrg 3263848b8605Smrg case 108: 3264848b8605Smrg/* Line 1813 of yacc.c */ 3265848b8605Smrg#line 1153 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3266848b8605Smrg { 3267848b8605Smrg (yyval.attrib) = VERT_ATTRIB_COLOR0 + (yyvsp[(2) - (2)].integer); 3268848b8605Smrg } 3269848b8605Smrg break; 3270848b8605Smrg 3271848b8605Smrg case 109: 3272848b8605Smrg/* Line 1813 of yacc.c */ 3273848b8605Smrg#line 1157 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3274848b8605Smrg { 3275848b8605Smrg (yyval.attrib) = VERT_ATTRIB_FOG; 3276848b8605Smrg } 3277848b8605Smrg break; 3278848b8605Smrg 3279848b8605Smrg case 110: 3280848b8605Smrg/* Line 1813 of yacc.c */ 3281848b8605Smrg#line 1161 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3282848b8605Smrg { 3283848b8605Smrg (yyval.attrib) = VERT_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); 3284848b8605Smrg } 3285848b8605Smrg break; 3286848b8605Smrg 3287848b8605Smrg case 111: 3288848b8605Smrg/* Line 1813 of yacc.c */ 3289848b8605Smrg#line 1165 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3290848b8605Smrg { 3291848b8605Smrg yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); 3292848b8605Smrg YYERROR; 3293848b8605Smrg } 3294848b8605Smrg break; 3295848b8605Smrg 3296848b8605Smrg case 112: 3297848b8605Smrg/* Line 1813 of yacc.c */ 3298848b8605Smrg#line 1170 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3299848b8605Smrg { 3300848b8605Smrg (yyval.attrib) = VERT_ATTRIB_GENERIC0 + (yyvsp[(3) - (4)].integer); 3301848b8605Smrg } 3302848b8605Smrg break; 3303848b8605Smrg 3304848b8605Smrg case 113: 3305848b8605Smrg/* Line 1813 of yacc.c */ 3306848b8605Smrg#line 1176 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3307848b8605Smrg { 3308848b8605Smrg if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxAttribs) { 3309848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex attribute reference"); 3310848b8605Smrg YYERROR; 3311848b8605Smrg } 3312848b8605Smrg 3313848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 3314848b8605Smrg } 3315848b8605Smrg break; 3316848b8605Smrg 3317848b8605Smrg case 117: 3318848b8605Smrg/* Line 1813 of yacc.c */ 3319848b8605Smrg#line 1190 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3320848b8605Smrg { 3321848b8605Smrg (yyval.attrib) = VARYING_SLOT_POS; 3322848b8605Smrg } 3323848b8605Smrg break; 3324848b8605Smrg 3325848b8605Smrg case 118: 3326848b8605Smrg/* Line 1813 of yacc.c */ 3327848b8605Smrg#line 1194 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3328848b8605Smrg { 3329848b8605Smrg (yyval.attrib) = VARYING_SLOT_COL0 + (yyvsp[(2) - (2)].integer); 3330848b8605Smrg } 3331848b8605Smrg break; 3332848b8605Smrg 3333848b8605Smrg case 119: 3334848b8605Smrg/* Line 1813 of yacc.c */ 3335848b8605Smrg#line 1198 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3336848b8605Smrg { 3337848b8605Smrg (yyval.attrib) = VARYING_SLOT_FOGC; 3338848b8605Smrg } 3339848b8605Smrg break; 3340848b8605Smrg 3341848b8605Smrg case 120: 3342848b8605Smrg/* Line 1813 of yacc.c */ 3343848b8605Smrg#line 1202 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3344848b8605Smrg { 3345848b8605Smrg (yyval.attrib) = VARYING_SLOT_TEX0 + (yyvsp[(2) - (2)].integer); 3346848b8605Smrg } 3347848b8605Smrg break; 3348848b8605Smrg 3349848b8605Smrg case 123: 3350848b8605Smrg/* Line 1813 of yacc.c */ 3351848b8605Smrg#line 1210 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3352848b8605Smrg { 3353848b8605Smrg struct asm_symbol *const s = 3354848b8605Smrg declare_variable(state, (yyvsp[(2) - (3)].string), at_param, & (yylsp[(2) - (3)])); 3355848b8605Smrg 3356848b8605Smrg if (s == NULL) { 3357848b8605Smrg free((yyvsp[(2) - (3)].string)); 3358848b8605Smrg YYERROR; 3359848b8605Smrg } else { 3360848b8605Smrg s->param_binding_type = (yyvsp[(3) - (3)].temp_sym).param_binding_type; 3361848b8605Smrg s->param_binding_begin = (yyvsp[(3) - (3)].temp_sym).param_binding_begin; 3362848b8605Smrg s->param_binding_length = (yyvsp[(3) - (3)].temp_sym).param_binding_length; 3363848b8605Smrg s->param_binding_swizzle = (yyvsp[(3) - (3)].temp_sym).param_binding_swizzle; 3364848b8605Smrg s->param_is_array = 0; 3365848b8605Smrg } 3366848b8605Smrg } 3367848b8605Smrg break; 3368848b8605Smrg 3369848b8605Smrg case 124: 3370848b8605Smrg/* Line 1813 of yacc.c */ 3371848b8605Smrg#line 1228 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3372848b8605Smrg { 3373848b8605Smrg if (((yyvsp[(4) - (6)].integer) != 0) && ((unsigned) (yyvsp[(4) - (6)].integer) != (yyvsp[(6) - (6)].temp_sym).param_binding_length)) { 3374848b8605Smrg free((yyvsp[(2) - (6)].string)); 3375848b8605Smrg yyerror(& (yylsp[(4) - (6)]), state, 3376848b8605Smrg "parameter array size and number of bindings must match"); 3377848b8605Smrg YYERROR; 3378848b8605Smrg } else { 3379848b8605Smrg struct asm_symbol *const s = 3380848b8605Smrg declare_variable(state, (yyvsp[(2) - (6)].string), (yyvsp[(6) - (6)].temp_sym).type, & (yylsp[(2) - (6)])); 3381848b8605Smrg 3382848b8605Smrg if (s == NULL) { 3383848b8605Smrg free((yyvsp[(2) - (6)].string)); 3384848b8605Smrg YYERROR; 3385848b8605Smrg } else { 3386848b8605Smrg s->param_binding_type = (yyvsp[(6) - (6)].temp_sym).param_binding_type; 3387848b8605Smrg s->param_binding_begin = (yyvsp[(6) - (6)].temp_sym).param_binding_begin; 3388848b8605Smrg s->param_binding_length = (yyvsp[(6) - (6)].temp_sym).param_binding_length; 3389848b8605Smrg s->param_binding_swizzle = SWIZZLE_XYZW; 3390848b8605Smrg s->param_is_array = 1; 3391848b8605Smrg } 3392848b8605Smrg } 3393848b8605Smrg } 3394848b8605Smrg break; 3395848b8605Smrg 3396848b8605Smrg case 125: 3397848b8605Smrg/* Line 1813 of yacc.c */ 3398848b8605Smrg#line 1253 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3399848b8605Smrg { 3400848b8605Smrg (yyval.integer) = 0; 3401848b8605Smrg } 3402848b8605Smrg break; 3403848b8605Smrg 3404848b8605Smrg case 126: 3405848b8605Smrg/* Line 1813 of yacc.c */ 3406848b8605Smrg#line 1257 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3407848b8605Smrg { 3408848b8605Smrg if (((yyvsp[(1) - (1)].integer) < 1) || ((unsigned) (yyvsp[(1) - (1)].integer) > state->limits->MaxParameters)) { 3409848b8605Smrg char msg[100]; 3410848b8605Smrg _mesa_snprintf(msg, sizeof(msg), 3411848b8605Smrg "invalid parameter array size (size=%d max=%u)", 3412848b8605Smrg (yyvsp[(1) - (1)].integer), state->limits->MaxParameters); 3413848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, msg); 3414848b8605Smrg YYERROR; 3415848b8605Smrg } else { 3416848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 3417848b8605Smrg } 3418848b8605Smrg } 3419848b8605Smrg break; 3420848b8605Smrg 3421848b8605Smrg case 127: 3422848b8605Smrg/* Line 1813 of yacc.c */ 3423848b8605Smrg#line 1272 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3424848b8605Smrg { 3425848b8605Smrg (yyval.temp_sym) = (yyvsp[(2) - (2)].temp_sym); 3426848b8605Smrg } 3427848b8605Smrg break; 3428848b8605Smrg 3429848b8605Smrg case 128: 3430848b8605Smrg/* Line 1813 of yacc.c */ 3431848b8605Smrg#line 1278 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3432848b8605Smrg { 3433848b8605Smrg (yyval.temp_sym) = (yyvsp[(3) - (4)].temp_sym); 3434848b8605Smrg } 3435848b8605Smrg break; 3436848b8605Smrg 3437848b8605Smrg case 130: 3438848b8605Smrg/* Line 1813 of yacc.c */ 3439848b8605Smrg#line 1285 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3440848b8605Smrg { 3441848b8605Smrg (yyvsp[(1) - (3)].temp_sym).param_binding_length += (yyvsp[(3) - (3)].temp_sym).param_binding_length; 3442848b8605Smrg (yyval.temp_sym) = (yyvsp[(1) - (3)].temp_sym); 3443848b8605Smrg } 3444848b8605Smrg break; 3445848b8605Smrg 3446848b8605Smrg case 131: 3447848b8605Smrg/* Line 1813 of yacc.c */ 3448848b8605Smrg#line 1292 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3449848b8605Smrg { 3450848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3451848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3452848b8605Smrg initialize_symbol_from_state(state->prog, & (yyval.temp_sym), (yyvsp[(1) - (1)].state)); 3453848b8605Smrg } 3454848b8605Smrg break; 3455848b8605Smrg 3456848b8605Smrg case 132: 3457848b8605Smrg/* Line 1813 of yacc.c */ 3458848b8605Smrg#line 1298 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3459848b8605Smrg { 3460848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3461848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3462848b8605Smrg initialize_symbol_from_param(state->prog, & (yyval.temp_sym), (yyvsp[(1) - (1)].state)); 3463848b8605Smrg } 3464848b8605Smrg break; 3465848b8605Smrg 3466848b8605Smrg case 133: 3467848b8605Smrg/* Line 1813 of yacc.c */ 3468848b8605Smrg#line 1304 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3469848b8605Smrg { 3470848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3471848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3472848b8605Smrg initialize_symbol_from_const(state->prog, & (yyval.temp_sym), & (yyvsp[(1) - (1)].vector), GL_TRUE); 3473848b8605Smrg } 3474848b8605Smrg break; 3475848b8605Smrg 3476848b8605Smrg case 134: 3477848b8605Smrg/* Line 1813 of yacc.c */ 3478848b8605Smrg#line 1312 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3479848b8605Smrg { 3480848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3481848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3482848b8605Smrg initialize_symbol_from_state(state->prog, & (yyval.temp_sym), (yyvsp[(1) - (1)].state)); 3483848b8605Smrg } 3484848b8605Smrg break; 3485848b8605Smrg 3486848b8605Smrg case 135: 3487848b8605Smrg/* Line 1813 of yacc.c */ 3488848b8605Smrg#line 1318 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3489848b8605Smrg { 3490848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3491848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3492848b8605Smrg initialize_symbol_from_param(state->prog, & (yyval.temp_sym), (yyvsp[(1) - (1)].state)); 3493848b8605Smrg } 3494848b8605Smrg break; 3495848b8605Smrg 3496848b8605Smrg case 136: 3497848b8605Smrg/* Line 1813 of yacc.c */ 3498848b8605Smrg#line 1324 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3499848b8605Smrg { 3500848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3501848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3502848b8605Smrg initialize_symbol_from_const(state->prog, & (yyval.temp_sym), & (yyvsp[(1) - (1)].vector), GL_TRUE); 3503848b8605Smrg } 3504848b8605Smrg break; 3505848b8605Smrg 3506848b8605Smrg case 137: 3507848b8605Smrg/* Line 1813 of yacc.c */ 3508848b8605Smrg#line 1332 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3509848b8605Smrg { 3510848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3511848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3512848b8605Smrg initialize_symbol_from_state(state->prog, & (yyval.temp_sym), (yyvsp[(1) - (1)].state)); 3513848b8605Smrg } 3514848b8605Smrg break; 3515848b8605Smrg 3516848b8605Smrg case 138: 3517848b8605Smrg/* Line 1813 of yacc.c */ 3518848b8605Smrg#line 1338 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3519848b8605Smrg { 3520848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3521848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3522848b8605Smrg initialize_symbol_from_param(state->prog, & (yyval.temp_sym), (yyvsp[(1) - (1)].state)); 3523848b8605Smrg } 3524848b8605Smrg break; 3525848b8605Smrg 3526848b8605Smrg case 139: 3527848b8605Smrg/* Line 1813 of yacc.c */ 3528848b8605Smrg#line 1344 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3529848b8605Smrg { 3530848b8605Smrg memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); 3531848b8605Smrg (yyval.temp_sym).param_binding_begin = ~0; 3532848b8605Smrg initialize_symbol_from_const(state->prog, & (yyval.temp_sym), & (yyvsp[(1) - (1)].vector), GL_FALSE); 3533848b8605Smrg } 3534848b8605Smrg break; 3535848b8605Smrg 3536848b8605Smrg case 140: 3537848b8605Smrg/* Line 1813 of yacc.c */ 3538848b8605Smrg#line 1351 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3539848b8605Smrg { memcpy((yyval.state), (yyvsp[(1) - (1)].state), sizeof((yyval.state))); } 3540848b8605Smrg break; 3541848b8605Smrg 3542848b8605Smrg case 141: 3543848b8605Smrg/* Line 1813 of yacc.c */ 3544848b8605Smrg#line 1352 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3545848b8605Smrg { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); } 3546848b8605Smrg break; 3547848b8605Smrg 3548848b8605Smrg case 142: 3549848b8605Smrg/* Line 1813 of yacc.c */ 3550848b8605Smrg#line 1355 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3551848b8605Smrg { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); } 3552848b8605Smrg break; 3553848b8605Smrg 3554848b8605Smrg case 143: 3555848b8605Smrg/* Line 1813 of yacc.c */ 3556848b8605Smrg#line 1356 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3557848b8605Smrg { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); } 3558848b8605Smrg break; 3559848b8605Smrg 3560848b8605Smrg case 144: 3561848b8605Smrg/* Line 1813 of yacc.c */ 3562848b8605Smrg#line 1357 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3563848b8605Smrg { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); } 3564848b8605Smrg break; 3565848b8605Smrg 3566848b8605Smrg case 145: 3567848b8605Smrg/* Line 1813 of yacc.c */ 3568848b8605Smrg#line 1358 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3569848b8605Smrg { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); } 3570848b8605Smrg break; 3571848b8605Smrg 3572848b8605Smrg case 146: 3573848b8605Smrg/* Line 1813 of yacc.c */ 3574848b8605Smrg#line 1359 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3575848b8605Smrg { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); } 3576848b8605Smrg break; 3577848b8605Smrg 3578848b8605Smrg case 147: 3579848b8605Smrg/* Line 1813 of yacc.c */ 3580848b8605Smrg#line 1360 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3581848b8605Smrg { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); } 3582848b8605Smrg break; 3583848b8605Smrg 3584848b8605Smrg case 148: 3585848b8605Smrg/* Line 1813 of yacc.c */ 3586848b8605Smrg#line 1361 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3587848b8605Smrg { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); } 3588848b8605Smrg break; 3589848b8605Smrg 3590848b8605Smrg case 149: 3591848b8605Smrg/* Line 1813 of yacc.c */ 3592848b8605Smrg#line 1362 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3593848b8605Smrg { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); } 3594848b8605Smrg break; 3595848b8605Smrg 3596848b8605Smrg case 150: 3597848b8605Smrg/* Line 1813 of yacc.c */ 3598848b8605Smrg#line 1363 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3599848b8605Smrg { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); } 3600848b8605Smrg break; 3601848b8605Smrg 3602848b8605Smrg case 151: 3603848b8605Smrg/* Line 1813 of yacc.c */ 3604848b8605Smrg#line 1364 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3605848b8605Smrg { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); } 3606848b8605Smrg break; 3607848b8605Smrg 3608848b8605Smrg case 152: 3609848b8605Smrg/* Line 1813 of yacc.c */ 3610848b8605Smrg#line 1365 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3611848b8605Smrg { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); } 3612848b8605Smrg break; 3613848b8605Smrg 3614848b8605Smrg case 153: 3615848b8605Smrg/* Line 1813 of yacc.c */ 3616848b8605Smrg#line 1369 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3617848b8605Smrg { 3618848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3619848b8605Smrg (yyval.state)[0] = STATE_MATERIAL; 3620848b8605Smrg (yyval.state)[1] = (yyvsp[(2) - (3)].integer); 3621848b8605Smrg (yyval.state)[2] = (yyvsp[(3) - (3)].integer); 3622848b8605Smrg } 3623848b8605Smrg break; 3624848b8605Smrg 3625848b8605Smrg case 154: 3626848b8605Smrg/* Line 1813 of yacc.c */ 3627848b8605Smrg#line 1378 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3628848b8605Smrg { 3629848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 3630848b8605Smrg } 3631848b8605Smrg break; 3632848b8605Smrg 3633848b8605Smrg case 155: 3634848b8605Smrg/* Line 1813 of yacc.c */ 3635848b8605Smrg#line 1382 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3636848b8605Smrg { 3637848b8605Smrg (yyval.integer) = STATE_EMISSION; 3638848b8605Smrg } 3639848b8605Smrg break; 3640848b8605Smrg 3641848b8605Smrg case 156: 3642848b8605Smrg/* Line 1813 of yacc.c */ 3643848b8605Smrg#line 1386 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3644848b8605Smrg { 3645848b8605Smrg (yyval.integer) = STATE_SHININESS; 3646848b8605Smrg } 3647848b8605Smrg break; 3648848b8605Smrg 3649848b8605Smrg case 157: 3650848b8605Smrg/* Line 1813 of yacc.c */ 3651848b8605Smrg#line 1392 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3652848b8605Smrg { 3653848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3654848b8605Smrg (yyval.state)[0] = STATE_LIGHT; 3655848b8605Smrg (yyval.state)[1] = (yyvsp[(3) - (5)].integer); 3656848b8605Smrg (yyval.state)[2] = (yyvsp[(5) - (5)].integer); 3657848b8605Smrg } 3658848b8605Smrg break; 3659848b8605Smrg 3660848b8605Smrg case 158: 3661848b8605Smrg/* Line 1813 of yacc.c */ 3662848b8605Smrg#line 1401 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3663848b8605Smrg { 3664848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 3665848b8605Smrg } 3666848b8605Smrg break; 3667848b8605Smrg 3668848b8605Smrg case 159: 3669848b8605Smrg/* Line 1813 of yacc.c */ 3670848b8605Smrg#line 1405 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3671848b8605Smrg { 3672848b8605Smrg (yyval.integer) = STATE_POSITION; 3673848b8605Smrg } 3674848b8605Smrg break; 3675848b8605Smrg 3676848b8605Smrg case 160: 3677848b8605Smrg/* Line 1813 of yacc.c */ 3678848b8605Smrg#line 1409 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3679848b8605Smrg { 3680848b8605Smrg if (!state->ctx->Extensions.EXT_point_parameters) { 3681848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "GL_ARB_point_parameters not supported"); 3682848b8605Smrg YYERROR; 3683848b8605Smrg } 3684848b8605Smrg 3685848b8605Smrg (yyval.integer) = STATE_ATTENUATION; 3686848b8605Smrg } 3687848b8605Smrg break; 3688848b8605Smrg 3689848b8605Smrg case 161: 3690848b8605Smrg/* Line 1813 of yacc.c */ 3691848b8605Smrg#line 1418 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3692848b8605Smrg { 3693848b8605Smrg (yyval.integer) = (yyvsp[(2) - (2)].integer); 3694848b8605Smrg } 3695848b8605Smrg break; 3696848b8605Smrg 3697848b8605Smrg case 162: 3698848b8605Smrg/* Line 1813 of yacc.c */ 3699848b8605Smrg#line 1422 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3700848b8605Smrg { 3701848b8605Smrg (yyval.integer) = STATE_HALF_VECTOR; 3702848b8605Smrg } 3703848b8605Smrg break; 3704848b8605Smrg 3705848b8605Smrg case 163: 3706848b8605Smrg/* Line 1813 of yacc.c */ 3707848b8605Smrg#line 1428 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3708848b8605Smrg { 3709848b8605Smrg (yyval.integer) = STATE_SPOT_DIRECTION; 3710848b8605Smrg } 3711848b8605Smrg break; 3712848b8605Smrg 3713848b8605Smrg case 164: 3714848b8605Smrg/* Line 1813 of yacc.c */ 3715848b8605Smrg#line 1434 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3716848b8605Smrg { 3717848b8605Smrg (yyval.state)[0] = (yyvsp[(2) - (2)].state)[0]; 3718848b8605Smrg (yyval.state)[1] = (yyvsp[(2) - (2)].state)[1]; 3719848b8605Smrg } 3720848b8605Smrg break; 3721848b8605Smrg 3722848b8605Smrg case 165: 3723848b8605Smrg/* Line 1813 of yacc.c */ 3724848b8605Smrg#line 1441 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3725848b8605Smrg { 3726848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3727848b8605Smrg (yyval.state)[0] = STATE_LIGHTMODEL_AMBIENT; 3728848b8605Smrg } 3729848b8605Smrg break; 3730848b8605Smrg 3731848b8605Smrg case 166: 3732848b8605Smrg/* Line 1813 of yacc.c */ 3733848b8605Smrg#line 1446 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3734848b8605Smrg { 3735848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3736848b8605Smrg (yyval.state)[0] = STATE_LIGHTMODEL_SCENECOLOR; 3737848b8605Smrg (yyval.state)[1] = (yyvsp[(1) - (2)].integer); 3738848b8605Smrg } 3739848b8605Smrg break; 3740848b8605Smrg 3741848b8605Smrg case 167: 3742848b8605Smrg/* Line 1813 of yacc.c */ 3743848b8605Smrg#line 1454 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3744848b8605Smrg { 3745848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3746848b8605Smrg (yyval.state)[0] = STATE_LIGHTPROD; 3747848b8605Smrg (yyval.state)[1] = (yyvsp[(3) - (6)].integer); 3748848b8605Smrg (yyval.state)[2] = (yyvsp[(5) - (6)].integer); 3749848b8605Smrg (yyval.state)[3] = (yyvsp[(6) - (6)].integer); 3750848b8605Smrg } 3751848b8605Smrg break; 3752848b8605Smrg 3753848b8605Smrg case 169: 3754848b8605Smrg/* Line 1813 of yacc.c */ 3755848b8605Smrg#line 1466 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3756848b8605Smrg { 3757848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3758848b8605Smrg (yyval.state)[0] = (yyvsp[(3) - (3)].integer); 3759848b8605Smrg (yyval.state)[1] = (yyvsp[(2) - (3)].integer); 3760848b8605Smrg } 3761848b8605Smrg break; 3762848b8605Smrg 3763848b8605Smrg case 170: 3764848b8605Smrg/* Line 1813 of yacc.c */ 3765848b8605Smrg#line 1474 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3766848b8605Smrg { 3767848b8605Smrg (yyval.integer) = STATE_TEXENV_COLOR; 3768848b8605Smrg } 3769848b8605Smrg break; 3770848b8605Smrg 3771848b8605Smrg case 171: 3772848b8605Smrg/* Line 1813 of yacc.c */ 3773848b8605Smrg#line 1480 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3774848b8605Smrg { 3775848b8605Smrg (yyval.integer) = STATE_AMBIENT; 3776848b8605Smrg } 3777848b8605Smrg break; 3778848b8605Smrg 3779848b8605Smrg case 172: 3780848b8605Smrg/* Line 1813 of yacc.c */ 3781848b8605Smrg#line 1484 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3782848b8605Smrg { 3783848b8605Smrg (yyval.integer) = STATE_DIFFUSE; 3784848b8605Smrg } 3785848b8605Smrg break; 3786848b8605Smrg 3787848b8605Smrg case 173: 3788848b8605Smrg/* Line 1813 of yacc.c */ 3789848b8605Smrg#line 1488 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3790848b8605Smrg { 3791848b8605Smrg (yyval.integer) = STATE_SPECULAR; 3792848b8605Smrg } 3793848b8605Smrg break; 3794848b8605Smrg 3795848b8605Smrg case 174: 3796848b8605Smrg/* Line 1813 of yacc.c */ 3797848b8605Smrg#line 1494 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3798848b8605Smrg { 3799848b8605Smrg if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxLights) { 3800848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid light selector"); 3801848b8605Smrg YYERROR; 3802848b8605Smrg } 3803848b8605Smrg 3804848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 3805848b8605Smrg } 3806848b8605Smrg break; 3807848b8605Smrg 3808848b8605Smrg case 175: 3809848b8605Smrg/* Line 1813 of yacc.c */ 3810848b8605Smrg#line 1505 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3811848b8605Smrg { 3812848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3813848b8605Smrg (yyval.state)[0] = STATE_TEXGEN; 3814848b8605Smrg (yyval.state)[1] = (yyvsp[(2) - (4)].integer); 3815848b8605Smrg (yyval.state)[2] = (yyvsp[(3) - (4)].integer) + (yyvsp[(4) - (4)].integer); 3816848b8605Smrg } 3817848b8605Smrg break; 3818848b8605Smrg 3819848b8605Smrg case 176: 3820848b8605Smrg/* Line 1813 of yacc.c */ 3821848b8605Smrg#line 1514 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3822848b8605Smrg { 3823848b8605Smrg (yyval.integer) = STATE_TEXGEN_EYE_S; 3824848b8605Smrg } 3825848b8605Smrg break; 3826848b8605Smrg 3827848b8605Smrg case 177: 3828848b8605Smrg/* Line 1813 of yacc.c */ 3829848b8605Smrg#line 1518 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3830848b8605Smrg { 3831848b8605Smrg (yyval.integer) = STATE_TEXGEN_OBJECT_S; 3832848b8605Smrg } 3833848b8605Smrg break; 3834848b8605Smrg 3835848b8605Smrg case 178: 3836848b8605Smrg/* Line 1813 of yacc.c */ 3837848b8605Smrg#line 1523 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3838848b8605Smrg { 3839848b8605Smrg (yyval.integer) = STATE_TEXGEN_EYE_S - STATE_TEXGEN_EYE_S; 3840848b8605Smrg } 3841848b8605Smrg break; 3842848b8605Smrg 3843848b8605Smrg case 179: 3844848b8605Smrg/* Line 1813 of yacc.c */ 3845848b8605Smrg#line 1527 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3846848b8605Smrg { 3847848b8605Smrg (yyval.integer) = STATE_TEXGEN_EYE_T - STATE_TEXGEN_EYE_S; 3848848b8605Smrg } 3849848b8605Smrg break; 3850848b8605Smrg 3851848b8605Smrg case 180: 3852848b8605Smrg/* Line 1813 of yacc.c */ 3853848b8605Smrg#line 1531 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3854848b8605Smrg { 3855848b8605Smrg (yyval.integer) = STATE_TEXGEN_EYE_R - STATE_TEXGEN_EYE_S; 3856848b8605Smrg } 3857848b8605Smrg break; 3858848b8605Smrg 3859848b8605Smrg case 181: 3860848b8605Smrg/* Line 1813 of yacc.c */ 3861848b8605Smrg#line 1535 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3862848b8605Smrg { 3863848b8605Smrg (yyval.integer) = STATE_TEXGEN_EYE_Q - STATE_TEXGEN_EYE_S; 3864848b8605Smrg } 3865848b8605Smrg break; 3866848b8605Smrg 3867848b8605Smrg case 182: 3868848b8605Smrg/* Line 1813 of yacc.c */ 3869848b8605Smrg#line 1541 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3870848b8605Smrg { 3871848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3872848b8605Smrg (yyval.state)[0] = (yyvsp[(2) - (2)].integer); 3873848b8605Smrg } 3874848b8605Smrg break; 3875848b8605Smrg 3876848b8605Smrg case 183: 3877848b8605Smrg/* Line 1813 of yacc.c */ 3878848b8605Smrg#line 1548 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3879848b8605Smrg { 3880848b8605Smrg (yyval.integer) = STATE_FOG_COLOR; 3881848b8605Smrg } 3882848b8605Smrg break; 3883848b8605Smrg 3884848b8605Smrg case 184: 3885848b8605Smrg/* Line 1813 of yacc.c */ 3886848b8605Smrg#line 1552 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3887848b8605Smrg { 3888848b8605Smrg (yyval.integer) = STATE_FOG_PARAMS; 3889848b8605Smrg } 3890848b8605Smrg break; 3891848b8605Smrg 3892848b8605Smrg case 185: 3893848b8605Smrg/* Line 1813 of yacc.c */ 3894848b8605Smrg#line 1558 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3895848b8605Smrg { 3896848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3897848b8605Smrg (yyval.state)[0] = STATE_CLIPPLANE; 3898848b8605Smrg (yyval.state)[1] = (yyvsp[(3) - (5)].integer); 3899848b8605Smrg } 3900848b8605Smrg break; 3901848b8605Smrg 3902848b8605Smrg case 186: 3903848b8605Smrg/* Line 1813 of yacc.c */ 3904848b8605Smrg#line 1566 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3905848b8605Smrg { 3906848b8605Smrg if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxClipPlanes) { 3907848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid clip plane selector"); 3908848b8605Smrg YYERROR; 3909848b8605Smrg } 3910848b8605Smrg 3911848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 3912848b8605Smrg } 3913848b8605Smrg break; 3914848b8605Smrg 3915848b8605Smrg case 187: 3916848b8605Smrg/* Line 1813 of yacc.c */ 3917848b8605Smrg#line 1577 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3918848b8605Smrg { 3919848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 3920848b8605Smrg (yyval.state)[0] = (yyvsp[(2) - (2)].integer); 3921848b8605Smrg } 3922848b8605Smrg break; 3923848b8605Smrg 3924848b8605Smrg case 188: 3925848b8605Smrg/* Line 1813 of yacc.c */ 3926848b8605Smrg#line 1584 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3927848b8605Smrg { 3928848b8605Smrg (yyval.integer) = STATE_POINT_SIZE; 3929848b8605Smrg } 3930848b8605Smrg break; 3931848b8605Smrg 3932848b8605Smrg case 189: 3933848b8605Smrg/* Line 1813 of yacc.c */ 3934848b8605Smrg#line 1588 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3935848b8605Smrg { 3936848b8605Smrg (yyval.integer) = STATE_POINT_ATTENUATION; 3937848b8605Smrg } 3938848b8605Smrg break; 3939848b8605Smrg 3940848b8605Smrg case 190: 3941848b8605Smrg/* Line 1813 of yacc.c */ 3942848b8605Smrg#line 1594 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3943848b8605Smrg { 3944848b8605Smrg (yyval.state)[0] = (yyvsp[(1) - (5)].state)[0]; 3945848b8605Smrg (yyval.state)[1] = (yyvsp[(1) - (5)].state)[1]; 3946848b8605Smrg (yyval.state)[2] = (yyvsp[(4) - (5)].integer); 3947848b8605Smrg (yyval.state)[3] = (yyvsp[(4) - (5)].integer); 3948848b8605Smrg (yyval.state)[4] = (yyvsp[(1) - (5)].state)[2]; 3949848b8605Smrg } 3950848b8605Smrg break; 3951848b8605Smrg 3952848b8605Smrg case 191: 3953848b8605Smrg/* Line 1813 of yacc.c */ 3954848b8605Smrg#line 1604 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3955848b8605Smrg { 3956848b8605Smrg (yyval.state)[0] = (yyvsp[(1) - (2)].state)[0]; 3957848b8605Smrg (yyval.state)[1] = (yyvsp[(1) - (2)].state)[1]; 3958848b8605Smrg (yyval.state)[2] = (yyvsp[(2) - (2)].state)[2]; 3959848b8605Smrg (yyval.state)[3] = (yyvsp[(2) - (2)].state)[3]; 3960848b8605Smrg (yyval.state)[4] = (yyvsp[(1) - (2)].state)[2]; 3961848b8605Smrg } 3962848b8605Smrg break; 3963848b8605Smrg 3964848b8605Smrg case 192: 3965848b8605Smrg/* Line 1813 of yacc.c */ 3966848b8605Smrg#line 1614 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3967848b8605Smrg { 3968848b8605Smrg (yyval.state)[2] = 0; 3969848b8605Smrg (yyval.state)[3] = 3; 3970848b8605Smrg } 3971848b8605Smrg break; 3972848b8605Smrg 3973848b8605Smrg case 193: 3974848b8605Smrg/* Line 1813 of yacc.c */ 3975848b8605Smrg#line 1619 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3976848b8605Smrg { 3977848b8605Smrg /* It seems logical that the matrix row range specifier would have 3978848b8605Smrg * to specify a range or more than one row (i.e., $5 > $3). 3979848b8605Smrg * However, the ARB_vertex_program spec says "a program will fail 3980848b8605Smrg * to load if <a> is greater than <b>." This means that $3 == $5 3981848b8605Smrg * is valid. 3982848b8605Smrg */ 3983848b8605Smrg if ((yyvsp[(3) - (6)].integer) > (yyvsp[(5) - (6)].integer)) { 3984848b8605Smrg yyerror(& (yylsp[(3) - (6)]), state, "invalid matrix row range"); 3985848b8605Smrg YYERROR; 3986848b8605Smrg } 3987848b8605Smrg 3988848b8605Smrg (yyval.state)[2] = (yyvsp[(3) - (6)].integer); 3989848b8605Smrg (yyval.state)[3] = (yyvsp[(5) - (6)].integer); 3990848b8605Smrg } 3991848b8605Smrg break; 3992848b8605Smrg 3993848b8605Smrg case 194: 3994848b8605Smrg/* Line 1813 of yacc.c */ 3995848b8605Smrg#line 1637 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 3996848b8605Smrg { 3997848b8605Smrg (yyval.state)[0] = (yyvsp[(2) - (3)].state)[0]; 3998848b8605Smrg (yyval.state)[1] = (yyvsp[(2) - (3)].state)[1]; 3999848b8605Smrg (yyval.state)[2] = (yyvsp[(3) - (3)].integer); 4000848b8605Smrg } 4001848b8605Smrg break; 4002848b8605Smrg 4003848b8605Smrg case 195: 4004848b8605Smrg/* Line 1813 of yacc.c */ 4005848b8605Smrg#line 1645 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4006848b8605Smrg { 4007848b8605Smrg (yyval.integer) = 0; 4008848b8605Smrg } 4009848b8605Smrg break; 4010848b8605Smrg 4011848b8605Smrg case 196: 4012848b8605Smrg/* Line 1813 of yacc.c */ 4013848b8605Smrg#line 1649 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4014848b8605Smrg { 4015848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 4016848b8605Smrg } 4017848b8605Smrg break; 4018848b8605Smrg 4019848b8605Smrg case 197: 4020848b8605Smrg/* Line 1813 of yacc.c */ 4021848b8605Smrg#line 1655 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4022848b8605Smrg { 4023848b8605Smrg (yyval.integer) = STATE_MATRIX_INVERSE; 4024848b8605Smrg } 4025848b8605Smrg break; 4026848b8605Smrg 4027848b8605Smrg case 198: 4028848b8605Smrg/* Line 1813 of yacc.c */ 4029848b8605Smrg#line 1659 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4030848b8605Smrg { 4031848b8605Smrg (yyval.integer) = STATE_MATRIX_TRANSPOSE; 4032848b8605Smrg } 4033848b8605Smrg break; 4034848b8605Smrg 4035848b8605Smrg case 199: 4036848b8605Smrg/* Line 1813 of yacc.c */ 4037848b8605Smrg#line 1663 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4038848b8605Smrg { 4039848b8605Smrg (yyval.integer) = STATE_MATRIX_INVTRANS; 4040848b8605Smrg } 4041848b8605Smrg break; 4042848b8605Smrg 4043848b8605Smrg case 200: 4044848b8605Smrg/* Line 1813 of yacc.c */ 4045848b8605Smrg#line 1669 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4046848b8605Smrg { 4047848b8605Smrg if ((yyvsp[(1) - (1)].integer) > 3) { 4048848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid matrix row reference"); 4049848b8605Smrg YYERROR; 4050848b8605Smrg } 4051848b8605Smrg 4052848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 4053848b8605Smrg } 4054848b8605Smrg break; 4055848b8605Smrg 4056848b8605Smrg case 201: 4057848b8605Smrg/* Line 1813 of yacc.c */ 4058848b8605Smrg#line 1680 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4059848b8605Smrg { 4060848b8605Smrg (yyval.state)[0] = STATE_MODELVIEW_MATRIX; 4061848b8605Smrg (yyval.state)[1] = (yyvsp[(2) - (2)].integer); 4062848b8605Smrg } 4063848b8605Smrg break; 4064848b8605Smrg 4065848b8605Smrg case 202: 4066848b8605Smrg/* Line 1813 of yacc.c */ 4067848b8605Smrg#line 1685 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4068848b8605Smrg { 4069848b8605Smrg (yyval.state)[0] = STATE_PROJECTION_MATRIX; 4070848b8605Smrg (yyval.state)[1] = 0; 4071848b8605Smrg } 4072848b8605Smrg break; 4073848b8605Smrg 4074848b8605Smrg case 203: 4075848b8605Smrg/* Line 1813 of yacc.c */ 4076848b8605Smrg#line 1690 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4077848b8605Smrg { 4078848b8605Smrg (yyval.state)[0] = STATE_MVP_MATRIX; 4079848b8605Smrg (yyval.state)[1] = 0; 4080848b8605Smrg } 4081848b8605Smrg break; 4082848b8605Smrg 4083848b8605Smrg case 204: 4084848b8605Smrg/* Line 1813 of yacc.c */ 4085848b8605Smrg#line 1695 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4086848b8605Smrg { 4087848b8605Smrg (yyval.state)[0] = STATE_TEXTURE_MATRIX; 4088848b8605Smrg (yyval.state)[1] = (yyvsp[(2) - (2)].integer); 4089848b8605Smrg } 4090848b8605Smrg break; 4091848b8605Smrg 4092848b8605Smrg case 205: 4093848b8605Smrg/* Line 1813 of yacc.c */ 4094848b8605Smrg#line 1700 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4095848b8605Smrg { 4096848b8605Smrg yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); 4097848b8605Smrg YYERROR; 4098848b8605Smrg } 4099848b8605Smrg break; 4100848b8605Smrg 4101848b8605Smrg case 206: 4102848b8605Smrg/* Line 1813 of yacc.c */ 4103848b8605Smrg#line 1705 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4104848b8605Smrg { 4105848b8605Smrg (yyval.state)[0] = STATE_PROGRAM_MATRIX; 4106848b8605Smrg (yyval.state)[1] = (yyvsp[(3) - (4)].integer); 4107848b8605Smrg } 4108848b8605Smrg break; 4109848b8605Smrg 4110848b8605Smrg case 207: 4111848b8605Smrg/* Line 1813 of yacc.c */ 4112848b8605Smrg#line 1712 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4113848b8605Smrg { 4114848b8605Smrg (yyval.integer) = 0; 4115848b8605Smrg } 4116848b8605Smrg break; 4117848b8605Smrg 4118848b8605Smrg case 208: 4119848b8605Smrg/* Line 1813 of yacc.c */ 4120848b8605Smrg#line 1716 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4121848b8605Smrg { 4122848b8605Smrg (yyval.integer) = (yyvsp[(2) - (3)].integer); 4123848b8605Smrg } 4124848b8605Smrg break; 4125848b8605Smrg 4126848b8605Smrg case 209: 4127848b8605Smrg/* Line 1813 of yacc.c */ 4128848b8605Smrg#line 1721 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4129848b8605Smrg { 4130848b8605Smrg /* Since GL_ARB_vertex_blend isn't supported, only modelview matrix 4131848b8605Smrg * zero is valid. 4132848b8605Smrg */ 4133848b8605Smrg if ((yyvsp[(1) - (1)].integer) != 0) { 4134848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid modelview matrix index"); 4135848b8605Smrg YYERROR; 4136848b8605Smrg } 4137848b8605Smrg 4138848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 4139848b8605Smrg } 4140848b8605Smrg break; 4141848b8605Smrg 4142848b8605Smrg case 210: 4143848b8605Smrg/* Line 1813 of yacc.c */ 4144848b8605Smrg#line 1734 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4145848b8605Smrg { 4146848b8605Smrg /* Since GL_ARB_matrix_palette isn't supported, just let any value 4147848b8605Smrg * through here. The error will be generated later. 4148848b8605Smrg */ 4149848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 4150848b8605Smrg } 4151848b8605Smrg break; 4152848b8605Smrg 4153848b8605Smrg case 211: 4154848b8605Smrg/* Line 1813 of yacc.c */ 4155848b8605Smrg#line 1742 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4156848b8605Smrg { 4157848b8605Smrg if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxProgramMatrices) { 4158848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid program matrix selector"); 4159848b8605Smrg YYERROR; 4160848b8605Smrg } 4161848b8605Smrg 4162848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 4163848b8605Smrg } 4164848b8605Smrg break; 4165848b8605Smrg 4166848b8605Smrg case 212: 4167848b8605Smrg/* Line 1813 of yacc.c */ 4168848b8605Smrg#line 1753 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4169848b8605Smrg { 4170848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 4171848b8605Smrg (yyval.state)[0] = STATE_DEPTH_RANGE; 4172848b8605Smrg } 4173848b8605Smrg break; 4174848b8605Smrg 4175848b8605Smrg case 217: 4176848b8605Smrg/* Line 1813 of yacc.c */ 4177848b8605Smrg#line 1765 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4178848b8605Smrg { 4179848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 4180848b8605Smrg (yyval.state)[0] = state->state_param_enum; 4181848b8605Smrg (yyval.state)[1] = STATE_ENV; 4182848b8605Smrg (yyval.state)[2] = (yyvsp[(4) - (5)].state)[0]; 4183848b8605Smrg (yyval.state)[3] = (yyvsp[(4) - (5)].state)[1]; 4184848b8605Smrg } 4185848b8605Smrg break; 4186848b8605Smrg 4187848b8605Smrg case 218: 4188848b8605Smrg/* Line 1813 of yacc.c */ 4189848b8605Smrg#line 1775 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4190848b8605Smrg { 4191848b8605Smrg (yyval.state)[0] = (yyvsp[(1) - (1)].integer); 4192848b8605Smrg (yyval.state)[1] = (yyvsp[(1) - (1)].integer); 4193848b8605Smrg } 4194848b8605Smrg break; 4195848b8605Smrg 4196848b8605Smrg case 219: 4197848b8605Smrg/* Line 1813 of yacc.c */ 4198848b8605Smrg#line 1780 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4199848b8605Smrg { 4200848b8605Smrg (yyval.state)[0] = (yyvsp[(1) - (3)].integer); 4201848b8605Smrg (yyval.state)[1] = (yyvsp[(3) - (3)].integer); 4202848b8605Smrg } 4203848b8605Smrg break; 4204848b8605Smrg 4205848b8605Smrg case 220: 4206848b8605Smrg/* Line 1813 of yacc.c */ 4207848b8605Smrg#line 1787 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4208848b8605Smrg { 4209848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 4210848b8605Smrg (yyval.state)[0] = state->state_param_enum; 4211848b8605Smrg (yyval.state)[1] = STATE_ENV; 4212848b8605Smrg (yyval.state)[2] = (yyvsp[(4) - (5)].integer); 4213848b8605Smrg (yyval.state)[3] = (yyvsp[(4) - (5)].integer); 4214848b8605Smrg } 4215848b8605Smrg break; 4216848b8605Smrg 4217848b8605Smrg case 221: 4218848b8605Smrg/* Line 1813 of yacc.c */ 4219848b8605Smrg#line 1797 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4220848b8605Smrg { 4221848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 4222848b8605Smrg (yyval.state)[0] = state->state_param_enum; 4223848b8605Smrg (yyval.state)[1] = STATE_LOCAL; 4224848b8605Smrg (yyval.state)[2] = (yyvsp[(4) - (5)].state)[0]; 4225848b8605Smrg (yyval.state)[3] = (yyvsp[(4) - (5)].state)[1]; 4226848b8605Smrg } 4227848b8605Smrg break; 4228848b8605Smrg 4229848b8605Smrg case 222: 4230848b8605Smrg/* Line 1813 of yacc.c */ 4231848b8605Smrg#line 1806 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4232848b8605Smrg { 4233848b8605Smrg (yyval.state)[0] = (yyvsp[(1) - (1)].integer); 4234848b8605Smrg (yyval.state)[1] = (yyvsp[(1) - (1)].integer); 4235848b8605Smrg } 4236848b8605Smrg break; 4237848b8605Smrg 4238848b8605Smrg case 223: 4239848b8605Smrg/* Line 1813 of yacc.c */ 4240848b8605Smrg#line 1811 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4241848b8605Smrg { 4242848b8605Smrg (yyval.state)[0] = (yyvsp[(1) - (3)].integer); 4243848b8605Smrg (yyval.state)[1] = (yyvsp[(3) - (3)].integer); 4244848b8605Smrg } 4245848b8605Smrg break; 4246848b8605Smrg 4247848b8605Smrg case 224: 4248848b8605Smrg/* Line 1813 of yacc.c */ 4249848b8605Smrg#line 1818 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4250848b8605Smrg { 4251848b8605Smrg memset((yyval.state), 0, sizeof((yyval.state))); 4252848b8605Smrg (yyval.state)[0] = state->state_param_enum; 4253848b8605Smrg (yyval.state)[1] = STATE_LOCAL; 4254848b8605Smrg (yyval.state)[2] = (yyvsp[(4) - (5)].integer); 4255848b8605Smrg (yyval.state)[3] = (yyvsp[(4) - (5)].integer); 4256848b8605Smrg } 4257848b8605Smrg break; 4258848b8605Smrg 4259848b8605Smrg case 225: 4260848b8605Smrg/* Line 1813 of yacc.c */ 4261848b8605Smrg#line 1828 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4262848b8605Smrg { 4263848b8605Smrg if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxEnvParams) { 4264848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid environment parameter reference"); 4265848b8605Smrg YYERROR; 4266848b8605Smrg } 4267848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 4268848b8605Smrg } 4269848b8605Smrg break; 4270848b8605Smrg 4271848b8605Smrg case 226: 4272848b8605Smrg/* Line 1813 of yacc.c */ 4273848b8605Smrg#line 1838 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4274848b8605Smrg { 4275848b8605Smrg if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxLocalParams) { 4276848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid local parameter reference"); 4277848b8605Smrg YYERROR; 4278848b8605Smrg } 4279848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 4280848b8605Smrg } 4281848b8605Smrg break; 4282848b8605Smrg 4283848b8605Smrg case 231: 4284848b8605Smrg/* Line 1813 of yacc.c */ 4285848b8605Smrg#line 1853 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4286848b8605Smrg { 4287848b8605Smrg (yyval.vector).count = 4; 4288848b8605Smrg (yyval.vector).data[0].f = (yyvsp[(1) - (1)].real); 4289848b8605Smrg (yyval.vector).data[1].f = (yyvsp[(1) - (1)].real); 4290848b8605Smrg (yyval.vector).data[2].f = (yyvsp[(1) - (1)].real); 4291848b8605Smrg (yyval.vector).data[3].f = (yyvsp[(1) - (1)].real); 4292848b8605Smrg } 4293848b8605Smrg break; 4294848b8605Smrg 4295848b8605Smrg case 232: 4296848b8605Smrg/* Line 1813 of yacc.c */ 4297848b8605Smrg#line 1863 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4298848b8605Smrg { 4299848b8605Smrg (yyval.vector).count = 1; 4300848b8605Smrg (yyval.vector).data[0].f = (yyvsp[(1) - (1)].real); 4301848b8605Smrg (yyval.vector).data[1].f = (yyvsp[(1) - (1)].real); 4302848b8605Smrg (yyval.vector).data[2].f = (yyvsp[(1) - (1)].real); 4303848b8605Smrg (yyval.vector).data[3].f = (yyvsp[(1) - (1)].real); 4304848b8605Smrg } 4305848b8605Smrg break; 4306848b8605Smrg 4307848b8605Smrg case 233: 4308848b8605Smrg/* Line 1813 of yacc.c */ 4309848b8605Smrg#line 1871 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4310848b8605Smrg { 4311848b8605Smrg (yyval.vector).count = 1; 4312848b8605Smrg (yyval.vector).data[0].f = (float) (yyvsp[(1) - (1)].integer); 4313848b8605Smrg (yyval.vector).data[1].f = (float) (yyvsp[(1) - (1)].integer); 4314848b8605Smrg (yyval.vector).data[2].f = (float) (yyvsp[(1) - (1)].integer); 4315848b8605Smrg (yyval.vector).data[3].f = (float) (yyvsp[(1) - (1)].integer); 4316848b8605Smrg } 4317848b8605Smrg break; 4318848b8605Smrg 4319848b8605Smrg case 234: 4320848b8605Smrg/* Line 1813 of yacc.c */ 4321848b8605Smrg#line 1881 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4322848b8605Smrg { 4323848b8605Smrg (yyval.vector).count = 4; 4324848b8605Smrg (yyval.vector).data[0].f = (yyvsp[(2) - (3)].real); 4325848b8605Smrg (yyval.vector).data[1].f = 0.0f; 4326848b8605Smrg (yyval.vector).data[2].f = 0.0f; 4327848b8605Smrg (yyval.vector).data[3].f = 1.0f; 4328848b8605Smrg } 4329848b8605Smrg break; 4330848b8605Smrg 4331848b8605Smrg case 235: 4332848b8605Smrg/* Line 1813 of yacc.c */ 4333848b8605Smrg#line 1889 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4334848b8605Smrg { 4335848b8605Smrg (yyval.vector).count = 4; 4336848b8605Smrg (yyval.vector).data[0].f = (yyvsp[(2) - (5)].real); 4337848b8605Smrg (yyval.vector).data[1].f = (yyvsp[(4) - (5)].real); 4338848b8605Smrg (yyval.vector).data[2].f = 0.0f; 4339848b8605Smrg (yyval.vector).data[3].f = 1.0f; 4340848b8605Smrg } 4341848b8605Smrg break; 4342848b8605Smrg 4343848b8605Smrg case 236: 4344848b8605Smrg/* Line 1813 of yacc.c */ 4345848b8605Smrg#line 1898 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4346848b8605Smrg { 4347848b8605Smrg (yyval.vector).count = 4; 4348848b8605Smrg (yyval.vector).data[0].f = (yyvsp[(2) - (7)].real); 4349848b8605Smrg (yyval.vector).data[1].f = (yyvsp[(4) - (7)].real); 4350848b8605Smrg (yyval.vector).data[2].f = (yyvsp[(6) - (7)].real); 4351848b8605Smrg (yyval.vector).data[3].f = 1.0f; 4352848b8605Smrg } 4353848b8605Smrg break; 4354848b8605Smrg 4355848b8605Smrg case 237: 4356848b8605Smrg/* Line 1813 of yacc.c */ 4357848b8605Smrg#line 1907 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4358848b8605Smrg { 4359848b8605Smrg (yyval.vector).count = 4; 4360848b8605Smrg (yyval.vector).data[0].f = (yyvsp[(2) - (9)].real); 4361848b8605Smrg (yyval.vector).data[1].f = (yyvsp[(4) - (9)].real); 4362848b8605Smrg (yyval.vector).data[2].f = (yyvsp[(6) - (9)].real); 4363848b8605Smrg (yyval.vector).data[3].f = (yyvsp[(8) - (9)].real); 4364848b8605Smrg } 4365848b8605Smrg break; 4366848b8605Smrg 4367848b8605Smrg case 238: 4368848b8605Smrg/* Line 1813 of yacc.c */ 4369848b8605Smrg#line 1917 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4370848b8605Smrg { 4371848b8605Smrg (yyval.real) = ((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].real) : (yyvsp[(2) - (2)].real); 4372848b8605Smrg } 4373848b8605Smrg break; 4374848b8605Smrg 4375848b8605Smrg case 239: 4376848b8605Smrg/* Line 1813 of yacc.c */ 4377848b8605Smrg#line 1921 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4378848b8605Smrg { 4379848b8605Smrg (yyval.real) = (float)(((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].integer) : (yyvsp[(2) - (2)].integer)); 4380848b8605Smrg } 4381848b8605Smrg break; 4382848b8605Smrg 4383848b8605Smrg case 240: 4384848b8605Smrg/* Line 1813 of yacc.c */ 4385848b8605Smrg#line 1926 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4386848b8605Smrg { (yyval.negate) = FALSE; } 4387848b8605Smrg break; 4388848b8605Smrg 4389848b8605Smrg case 241: 4390848b8605Smrg/* Line 1813 of yacc.c */ 4391848b8605Smrg#line 1927 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4392848b8605Smrg { (yyval.negate) = TRUE; } 4393848b8605Smrg break; 4394848b8605Smrg 4395848b8605Smrg case 242: 4396848b8605Smrg/* Line 1813 of yacc.c */ 4397848b8605Smrg#line 1928 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4398848b8605Smrg { (yyval.negate) = FALSE; } 4399848b8605Smrg break; 4400848b8605Smrg 4401848b8605Smrg case 243: 4402848b8605Smrg/* Line 1813 of yacc.c */ 4403848b8605Smrg#line 1931 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4404848b8605Smrg { (yyval.integer) = (yyvsp[(2) - (2)].integer); } 4405848b8605Smrg break; 4406848b8605Smrg 4407848b8605Smrg case 245: 4408848b8605Smrg/* Line 1813 of yacc.c */ 4409848b8605Smrg#line 1935 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4410848b8605Smrg { 4411848b8605Smrg /* NV_fragment_program_option defines the size qualifiers in a 4412848b8605Smrg * fairly broken way. "SHORT" or "LONG" can optionally be used 4413848b8605Smrg * before TEMP or OUTPUT. However, neither is a reserved word! 4414848b8605Smrg * This means that we have to parse it as an identifier, then check 4415848b8605Smrg * to make sure it's one of the valid values. *sigh* 4416848b8605Smrg * 4417848b8605Smrg * In addition, the grammar in the extension spec does *not* allow 4418848b8605Smrg * the size specifier to be optional, but all known implementations 4419848b8605Smrg * do. 4420848b8605Smrg */ 4421848b8605Smrg if (!state->option.NV_fragment) { 4422848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "unexpected IDENTIFIER"); 4423848b8605Smrg YYERROR; 4424848b8605Smrg } 4425848b8605Smrg 4426848b8605Smrg if (strcmp("SHORT", (yyvsp[(1) - (1)].string)) == 0) { 4427848b8605Smrg } else if (strcmp("LONG", (yyvsp[(1) - (1)].string)) == 0) { 4428848b8605Smrg } else { 4429848b8605Smrg char *const err_str = 4430848b8605Smrg make_error_string("invalid storage size specifier \"%s\"", 4431848b8605Smrg (yyvsp[(1) - (1)].string)); 4432848b8605Smrg 4433848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, (err_str != NULL) 4434848b8605Smrg ? err_str : "invalid storage size specifier"); 4435848b8605Smrg 4436848b8605Smrg if (err_str != NULL) { 4437848b8605Smrg free(err_str); 4438848b8605Smrg } 4439848b8605Smrg 4440848b8605Smrg YYERROR; 4441848b8605Smrg } 4442848b8605Smrg } 4443848b8605Smrg break; 4444848b8605Smrg 4445848b8605Smrg case 246: 4446848b8605Smrg/* Line 1813 of yacc.c */ 4447848b8605Smrg#line 1969 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4448848b8605Smrg { 4449848b8605Smrg } 4450848b8605Smrg break; 4451848b8605Smrg 4452848b8605Smrg case 247: 4453848b8605Smrg/* Line 1813 of yacc.c */ 4454848b8605Smrg#line 1973 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4455848b8605Smrg { (yyval.integer) = (yyvsp[(1) - (1)].integer); } 4456848b8605Smrg break; 4457848b8605Smrg 4458848b8605Smrg case 249: 4459848b8605Smrg/* Line 1813 of yacc.c */ 4460848b8605Smrg#line 1977 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4461848b8605Smrg { 4462848b8605Smrg if (!declare_variable(state, (yyvsp[(3) - (3)].string), (yyvsp[(0) - (3)].integer), & (yylsp[(3) - (3)]))) { 4463848b8605Smrg free((yyvsp[(3) - (3)].string)); 4464848b8605Smrg YYERROR; 4465848b8605Smrg } 4466848b8605Smrg } 4467848b8605Smrg break; 4468848b8605Smrg 4469848b8605Smrg case 250: 4470848b8605Smrg/* Line 1813 of yacc.c */ 4471848b8605Smrg#line 1984 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4472848b8605Smrg { 4473848b8605Smrg if (!declare_variable(state, (yyvsp[(1) - (1)].string), (yyvsp[(0) - (1)].integer), & (yylsp[(1) - (1)]))) { 4474848b8605Smrg free((yyvsp[(1) - (1)].string)); 4475848b8605Smrg YYERROR; 4476848b8605Smrg } 4477848b8605Smrg } 4478848b8605Smrg break; 4479848b8605Smrg 4480848b8605Smrg case 251: 4481848b8605Smrg/* Line 1813 of yacc.c */ 4482848b8605Smrg#line 1993 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4483848b8605Smrg { 4484848b8605Smrg struct asm_symbol *const s = 4485848b8605Smrg declare_variable(state, (yyvsp[(3) - (5)].string), at_output, & (yylsp[(3) - (5)])); 4486848b8605Smrg 4487848b8605Smrg if (s == NULL) { 4488848b8605Smrg free((yyvsp[(3) - (5)].string)); 4489848b8605Smrg YYERROR; 4490848b8605Smrg } else { 4491848b8605Smrg s->output_binding = (yyvsp[(5) - (5)].result); 4492848b8605Smrg } 4493848b8605Smrg } 4494848b8605Smrg break; 4495848b8605Smrg 4496848b8605Smrg case 252: 4497848b8605Smrg/* Line 1813 of yacc.c */ 4498848b8605Smrg#line 2007 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4499848b8605Smrg { 4500848b8605Smrg if (state->mode == ARB_vertex) { 4501848b8605Smrg (yyval.result) = VARYING_SLOT_POS; 4502848b8605Smrg } else { 4503848b8605Smrg yyerror(& (yylsp[(2) - (2)]), state, "invalid program result name"); 4504848b8605Smrg YYERROR; 4505848b8605Smrg } 4506848b8605Smrg } 4507848b8605Smrg break; 4508848b8605Smrg 4509848b8605Smrg case 253: 4510848b8605Smrg/* Line 1813 of yacc.c */ 4511848b8605Smrg#line 2016 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4512848b8605Smrg { 4513848b8605Smrg if (state->mode == ARB_vertex) { 4514848b8605Smrg (yyval.result) = VARYING_SLOT_FOGC; 4515848b8605Smrg } else { 4516848b8605Smrg yyerror(& (yylsp[(2) - (2)]), state, "invalid program result name"); 4517848b8605Smrg YYERROR; 4518848b8605Smrg } 4519848b8605Smrg } 4520848b8605Smrg break; 4521848b8605Smrg 4522848b8605Smrg case 254: 4523848b8605Smrg/* Line 1813 of yacc.c */ 4524848b8605Smrg#line 2025 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4525848b8605Smrg { 4526848b8605Smrg (yyval.result) = (yyvsp[(2) - (2)].result); 4527848b8605Smrg } 4528848b8605Smrg break; 4529848b8605Smrg 4530848b8605Smrg case 255: 4531848b8605Smrg/* Line 1813 of yacc.c */ 4532848b8605Smrg#line 2029 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4533848b8605Smrg { 4534848b8605Smrg if (state->mode == ARB_vertex) { 4535848b8605Smrg (yyval.result) = VARYING_SLOT_PSIZ; 4536848b8605Smrg } else { 4537848b8605Smrg yyerror(& (yylsp[(2) - (2)]), state, "invalid program result name"); 4538848b8605Smrg YYERROR; 4539848b8605Smrg } 4540848b8605Smrg } 4541848b8605Smrg break; 4542848b8605Smrg 4543848b8605Smrg case 256: 4544848b8605Smrg/* Line 1813 of yacc.c */ 4545848b8605Smrg#line 2038 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4546848b8605Smrg { 4547848b8605Smrg if (state->mode == ARB_vertex) { 4548848b8605Smrg (yyval.result) = VARYING_SLOT_TEX0 + (yyvsp[(3) - (3)].integer); 4549848b8605Smrg } else { 4550848b8605Smrg yyerror(& (yylsp[(2) - (3)]), state, "invalid program result name"); 4551848b8605Smrg YYERROR; 4552848b8605Smrg } 4553848b8605Smrg } 4554848b8605Smrg break; 4555848b8605Smrg 4556848b8605Smrg case 257: 4557848b8605Smrg/* Line 1813 of yacc.c */ 4558848b8605Smrg#line 2047 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4559848b8605Smrg { 4560848b8605Smrg if (state->mode == ARB_fragment) { 4561848b8605Smrg (yyval.result) = FRAG_RESULT_DEPTH; 4562848b8605Smrg } else { 4563848b8605Smrg yyerror(& (yylsp[(2) - (2)]), state, "invalid program result name"); 4564848b8605Smrg YYERROR; 4565848b8605Smrg } 4566848b8605Smrg } 4567848b8605Smrg break; 4568848b8605Smrg 4569848b8605Smrg case 258: 4570848b8605Smrg/* Line 1813 of yacc.c */ 4571848b8605Smrg#line 2058 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4572848b8605Smrg { 4573848b8605Smrg (yyval.result) = (yyvsp[(2) - (3)].integer) + (yyvsp[(3) - (3)].integer); 4574848b8605Smrg } 4575848b8605Smrg break; 4576848b8605Smrg 4577848b8605Smrg case 259: 4578848b8605Smrg/* Line 1813 of yacc.c */ 4579848b8605Smrg#line 2064 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4580848b8605Smrg { 4581848b8605Smrg if (state->mode == ARB_vertex) { 4582848b8605Smrg (yyval.integer) = VARYING_SLOT_COL0; 4583848b8605Smrg } else { 4584848b8605Smrg if (state->option.DrawBuffers) 4585848b8605Smrg (yyval.integer) = FRAG_RESULT_DATA0; 4586848b8605Smrg else 4587848b8605Smrg (yyval.integer) = FRAG_RESULT_COLOR; 4588848b8605Smrg } 4589848b8605Smrg } 4590848b8605Smrg break; 4591848b8605Smrg 4592848b8605Smrg case 260: 4593848b8605Smrg/* Line 1813 of yacc.c */ 4594848b8605Smrg#line 2075 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4595848b8605Smrg { 4596848b8605Smrg if (state->mode == ARB_vertex) { 4597848b8605Smrg yyerror(& (yylsp[(1) - (3)]), state, "invalid program result name"); 4598848b8605Smrg YYERROR; 4599848b8605Smrg } else { 4600848b8605Smrg if (!state->option.DrawBuffers) { 4601848b8605Smrg /* From the ARB_draw_buffers spec (same text exists 4602848b8605Smrg * for ATI_draw_buffers): 4603848b8605Smrg * 4604848b8605Smrg * If this option is not specified, a fragment 4605848b8605Smrg * program that attempts to bind 4606848b8605Smrg * "result.color[n]" will fail to load, and only 4607848b8605Smrg * "result.color" will be allowed. 4608848b8605Smrg */ 4609848b8605Smrg yyerror(& (yylsp[(1) - (3)]), state, 4610848b8605Smrg "result.color[] used without " 4611848b8605Smrg "`OPTION ARB_draw_buffers' or " 4612848b8605Smrg "`OPTION ATI_draw_buffers'"); 4613848b8605Smrg YYERROR; 4614848b8605Smrg } else if ((yyvsp[(2) - (3)].integer) >= state->MaxDrawBuffers) { 4615848b8605Smrg yyerror(& (yylsp[(1) - (3)]), state, 4616848b8605Smrg "result.color[] exceeds MAX_DRAW_BUFFERS_ARB"); 4617848b8605Smrg YYERROR; 4618848b8605Smrg } 4619848b8605Smrg (yyval.integer) = FRAG_RESULT_DATA0 + (yyvsp[(2) - (3)].integer); 4620848b8605Smrg } 4621848b8605Smrg } 4622848b8605Smrg break; 4623848b8605Smrg 4624848b8605Smrg case 261: 4625848b8605Smrg/* Line 1813 of yacc.c */ 4626848b8605Smrg#line 2103 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4627848b8605Smrg { 4628848b8605Smrg if (state->mode == ARB_vertex) { 4629848b8605Smrg (yyval.integer) = VARYING_SLOT_COL0; 4630848b8605Smrg } else { 4631848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid program result name"); 4632848b8605Smrg YYERROR; 4633848b8605Smrg } 4634848b8605Smrg } 4635848b8605Smrg break; 4636848b8605Smrg 4637848b8605Smrg case 262: 4638848b8605Smrg/* Line 1813 of yacc.c */ 4639848b8605Smrg#line 2112 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4640848b8605Smrg { 4641848b8605Smrg if (state->mode == ARB_vertex) { 4642848b8605Smrg (yyval.integer) = VARYING_SLOT_BFC0; 4643848b8605Smrg } else { 4644848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid program result name"); 4645848b8605Smrg YYERROR; 4646848b8605Smrg } 4647848b8605Smrg } 4648848b8605Smrg break; 4649848b8605Smrg 4650848b8605Smrg case 263: 4651848b8605Smrg/* Line 1813 of yacc.c */ 4652848b8605Smrg#line 2123 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4653848b8605Smrg { 4654848b8605Smrg (yyval.integer) = 0; 4655848b8605Smrg } 4656848b8605Smrg break; 4657848b8605Smrg 4658848b8605Smrg case 264: 4659848b8605Smrg/* Line 1813 of yacc.c */ 4660848b8605Smrg#line 2127 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4661848b8605Smrg { 4662848b8605Smrg if (state->mode == ARB_vertex) { 4663848b8605Smrg (yyval.integer) = 0; 4664848b8605Smrg } else { 4665848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid program result name"); 4666848b8605Smrg YYERROR; 4667848b8605Smrg } 4668848b8605Smrg } 4669848b8605Smrg break; 4670848b8605Smrg 4671848b8605Smrg case 265: 4672848b8605Smrg/* Line 1813 of yacc.c */ 4673848b8605Smrg#line 2136 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4674848b8605Smrg { 4675848b8605Smrg if (state->mode == ARB_vertex) { 4676848b8605Smrg (yyval.integer) = 1; 4677848b8605Smrg } else { 4678848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid program result name"); 4679848b8605Smrg YYERROR; 4680848b8605Smrg } 4681848b8605Smrg } 4682848b8605Smrg break; 4683848b8605Smrg 4684848b8605Smrg case 266: 4685848b8605Smrg/* Line 1813 of yacc.c */ 4686848b8605Smrg#line 2146 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4687848b8605Smrg { (yyval.integer) = 0; } 4688848b8605Smrg break; 4689848b8605Smrg 4690848b8605Smrg case 267: 4691848b8605Smrg/* Line 1813 of yacc.c */ 4692848b8605Smrg#line 2147 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4693848b8605Smrg { (yyval.integer) = 0; } 4694848b8605Smrg break; 4695848b8605Smrg 4696848b8605Smrg case 268: 4697848b8605Smrg/* Line 1813 of yacc.c */ 4698848b8605Smrg#line 2148 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4699848b8605Smrg { (yyval.integer) = 1; } 4700848b8605Smrg break; 4701848b8605Smrg 4702848b8605Smrg case 269: 4703848b8605Smrg/* Line 1813 of yacc.c */ 4704848b8605Smrg#line 2151 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4705848b8605Smrg { (yyval.integer) = 0; } 4706848b8605Smrg break; 4707848b8605Smrg 4708848b8605Smrg case 270: 4709848b8605Smrg/* Line 1813 of yacc.c */ 4710848b8605Smrg#line 2152 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4711848b8605Smrg { (yyval.integer) = 0; } 4712848b8605Smrg break; 4713848b8605Smrg 4714848b8605Smrg case 271: 4715848b8605Smrg/* Line 1813 of yacc.c */ 4716848b8605Smrg#line 2153 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4717848b8605Smrg { (yyval.integer) = 1; } 4718848b8605Smrg break; 4719848b8605Smrg 4720848b8605Smrg case 272: 4721848b8605Smrg/* Line 1813 of yacc.c */ 4722848b8605Smrg#line 2156 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4723848b8605Smrg { (yyval.integer) = 0; } 4724848b8605Smrg break; 4725848b8605Smrg 4726848b8605Smrg case 273: 4727848b8605Smrg/* Line 1813 of yacc.c */ 4728848b8605Smrg#line 2157 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4729848b8605Smrg { (yyval.integer) = (yyvsp[(2) - (3)].integer); } 4730848b8605Smrg break; 4731848b8605Smrg 4732848b8605Smrg case 274: 4733848b8605Smrg/* Line 1813 of yacc.c */ 4734848b8605Smrg#line 2160 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4735848b8605Smrg { (yyval.integer) = 0; } 4736848b8605Smrg break; 4737848b8605Smrg 4738848b8605Smrg case 275: 4739848b8605Smrg/* Line 1813 of yacc.c */ 4740848b8605Smrg#line 2161 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4741848b8605Smrg { (yyval.integer) = (yyvsp[(2) - (3)].integer); } 4742848b8605Smrg break; 4743848b8605Smrg 4744848b8605Smrg case 276: 4745848b8605Smrg/* Line 1813 of yacc.c */ 4746848b8605Smrg#line 2164 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4747848b8605Smrg { (yyval.integer) = 0; } 4748848b8605Smrg break; 4749848b8605Smrg 4750848b8605Smrg case 277: 4751848b8605Smrg/* Line 1813 of yacc.c */ 4752848b8605Smrg#line 2165 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4753848b8605Smrg { (yyval.integer) = (yyvsp[(2) - (3)].integer); } 4754848b8605Smrg break; 4755848b8605Smrg 4756848b8605Smrg case 278: 4757848b8605Smrg/* Line 1813 of yacc.c */ 4758848b8605Smrg#line 2169 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4759848b8605Smrg { 4760848b8605Smrg if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureCoordUnits) { 4761848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid texture coordinate unit selector"); 4762848b8605Smrg YYERROR; 4763848b8605Smrg } 4764848b8605Smrg 4765848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 4766848b8605Smrg } 4767848b8605Smrg break; 4768848b8605Smrg 4769848b8605Smrg case 279: 4770848b8605Smrg/* Line 1813 of yacc.c */ 4771848b8605Smrg#line 2180 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4772848b8605Smrg { 4773848b8605Smrg if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureImageUnits) { 4774848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid texture image unit selector"); 4775848b8605Smrg YYERROR; 4776848b8605Smrg } 4777848b8605Smrg 4778848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 4779848b8605Smrg } 4780848b8605Smrg break; 4781848b8605Smrg 4782848b8605Smrg case 280: 4783848b8605Smrg/* Line 1813 of yacc.c */ 4784848b8605Smrg#line 2191 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4785848b8605Smrg { 4786848b8605Smrg if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureUnits) { 4787848b8605Smrg yyerror(& (yylsp[(1) - (1)]), state, "invalid texture unit selector"); 4788848b8605Smrg YYERROR; 4789848b8605Smrg } 4790848b8605Smrg 4791848b8605Smrg (yyval.integer) = (yyvsp[(1) - (1)].integer); 4792848b8605Smrg } 4793848b8605Smrg break; 4794848b8605Smrg 4795848b8605Smrg case 281: 4796848b8605Smrg/* Line 1813 of yacc.c */ 4797848b8605Smrg#line 2202 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 4798848b8605Smrg { 4799848b8605Smrg struct asm_symbol *exist = (struct asm_symbol *) 4800848b8605Smrg _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(2) - (4)].string)); 4801848b8605Smrg struct asm_symbol *target = (struct asm_symbol *) 4802848b8605Smrg _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(4) - (4)].string)); 4803848b8605Smrg 4804848b8605Smrg free((yyvsp[(4) - (4)].string)); 4805848b8605Smrg 4806848b8605Smrg if (exist != NULL) { 4807848b8605Smrg char m[1000]; 4808848b8605Smrg _mesa_snprintf(m, sizeof(m), "redeclared identifier: %s", (yyvsp[(2) - (4)].string)); 4809848b8605Smrg free((yyvsp[(2) - (4)].string)); 4810848b8605Smrg yyerror(& (yylsp[(2) - (4)]), state, m); 4811848b8605Smrg YYERROR; 4812848b8605Smrg } else if (target == NULL) { 4813848b8605Smrg free((yyvsp[(2) - (4)].string)); 4814848b8605Smrg yyerror(& (yylsp[(4) - (4)]), state, 4815848b8605Smrg "undefined variable binding in ALIAS statement"); 4816848b8605Smrg YYERROR; 4817848b8605Smrg } else { 4818848b8605Smrg _mesa_symbol_table_add_symbol(state->st, 0, (yyvsp[(2) - (4)].string), target); 4819848b8605Smrg } 4820848b8605Smrg } 4821848b8605Smrg break; 4822848b8605Smrg 4823848b8605Smrg 4824848b8605Smrg/* Line 1813 of yacc.c */ 4825848b8605Smrg#line 4826 "program_parse.tab.c" 4826848b8605Smrg default: break; 4827848b8605Smrg } 4828848b8605Smrg /* User semantic actions sometimes alter yychar, and that requires 4829848b8605Smrg that yytoken be updated with the new translation. We take the 4830848b8605Smrg approach of translating immediately before every use of yytoken. 4831848b8605Smrg One alternative is translating here after every semantic action, 4832848b8605Smrg but that translation would be missed if the semantic action invokes 4833848b8605Smrg YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or 4834848b8605Smrg if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an 4835848b8605Smrg incorrect destructor might then be invoked immediately. In the 4836848b8605Smrg case of YYERROR or YYBACKUP, subsequent parser actions might lead 4837848b8605Smrg to an incorrect destructor call or verbose syntax error message 4838848b8605Smrg before the lookahead is translated. */ 4839848b8605Smrg YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 4840848b8605Smrg 4841848b8605Smrg YYPOPSTACK (yylen); 4842848b8605Smrg yylen = 0; 4843848b8605Smrg YY_STACK_PRINT (yyss, yyssp); 4844848b8605Smrg 4845848b8605Smrg *++yyvsp = yyval; 4846848b8605Smrg *++yylsp = yyloc; 4847848b8605Smrg 4848848b8605Smrg /* Now `shift' the result of the reduction. Determine what state 4849848b8605Smrg that goes to, based on the state we popped back to and the rule 4850848b8605Smrg number reduced by. */ 4851848b8605Smrg 4852848b8605Smrg yyn = yyr1[yyn]; 4853848b8605Smrg 4854848b8605Smrg yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 4855848b8605Smrg if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 4856848b8605Smrg yystate = yytable[yystate]; 4857848b8605Smrg else 4858848b8605Smrg yystate = yydefgoto[yyn - YYNTOKENS]; 4859848b8605Smrg 4860848b8605Smrg goto yynewstate; 4861848b8605Smrg 4862848b8605Smrg 4863848b8605Smrg/*------------------------------------. 4864848b8605Smrg| yyerrlab -- here on detecting error | 4865848b8605Smrg`------------------------------------*/ 4866848b8605Smrgyyerrlab: 4867848b8605Smrg /* Make sure we have latest lookahead translation. See comments at 4868848b8605Smrg user semantic actions for why this is necessary. */ 4869848b8605Smrg yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); 4870848b8605Smrg 4871848b8605Smrg /* If not already recovering from an error, report this error. */ 4872848b8605Smrg if (!yyerrstatus) 4873848b8605Smrg { 4874848b8605Smrg ++yynerrs; 4875848b8605Smrg#if ! YYERROR_VERBOSE 4876848b8605Smrg yyerror (&yylloc, state, YY_("syntax error")); 4877848b8605Smrg#else 4878848b8605Smrg# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ 4879848b8605Smrg yyssp, yytoken) 4880848b8605Smrg { 4881848b8605Smrg char const *yymsgp = YY_("syntax error"); 4882848b8605Smrg int yysyntax_error_status; 4883848b8605Smrg yysyntax_error_status = YYSYNTAX_ERROR; 4884848b8605Smrg if (yysyntax_error_status == 0) 4885848b8605Smrg yymsgp = yymsg; 4886848b8605Smrg else if (yysyntax_error_status == 1) 4887848b8605Smrg { 4888848b8605Smrg if (yymsg != yymsgbuf) 4889848b8605Smrg YYSTACK_FREE (yymsg); 4890848b8605Smrg yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); 4891848b8605Smrg if (!yymsg) 4892848b8605Smrg { 4893848b8605Smrg yymsg = yymsgbuf; 4894848b8605Smrg yymsg_alloc = sizeof yymsgbuf; 4895848b8605Smrg yysyntax_error_status = 2; 4896848b8605Smrg } 4897848b8605Smrg else 4898848b8605Smrg { 4899848b8605Smrg yysyntax_error_status = YYSYNTAX_ERROR; 4900848b8605Smrg yymsgp = yymsg; 4901848b8605Smrg } 4902848b8605Smrg } 4903848b8605Smrg yyerror (&yylloc, state, yymsgp); 4904848b8605Smrg if (yysyntax_error_status == 2) 4905848b8605Smrg goto yyexhaustedlab; 4906848b8605Smrg } 4907848b8605Smrg# undef YYSYNTAX_ERROR 4908848b8605Smrg#endif 4909848b8605Smrg } 4910848b8605Smrg 4911848b8605Smrg yyerror_range[1] = yylloc; 4912848b8605Smrg 4913848b8605Smrg if (yyerrstatus == 3) 4914848b8605Smrg { 4915848b8605Smrg /* If just tried and failed to reuse lookahead token after an 4916848b8605Smrg error, discard it. */ 4917848b8605Smrg 4918848b8605Smrg if (yychar <= YYEOF) 4919848b8605Smrg { 4920848b8605Smrg /* Return failure if at end of input. */ 4921848b8605Smrg if (yychar == YYEOF) 4922848b8605Smrg YYABORT; 4923848b8605Smrg } 4924848b8605Smrg else 4925848b8605Smrg { 4926848b8605Smrg yydestruct ("Error: discarding", 4927848b8605Smrg yytoken, &yylval, &yylloc, state); 4928848b8605Smrg yychar = YYEMPTY; 4929848b8605Smrg } 4930848b8605Smrg } 4931848b8605Smrg 4932848b8605Smrg /* Else will try to reuse lookahead token after shifting the error 4933848b8605Smrg token. */ 4934848b8605Smrg goto yyerrlab1; 4935848b8605Smrg 4936848b8605Smrg 4937848b8605Smrg/*---------------------------------------------------. 4938848b8605Smrg| yyerrorlab -- error raised explicitly by YYERROR. | 4939848b8605Smrg`---------------------------------------------------*/ 4940848b8605Smrgyyerrorlab: 4941848b8605Smrg 4942848b8605Smrg /* Pacify compilers like GCC when the user code never invokes 4943848b8605Smrg YYERROR and the label yyerrorlab therefore never appears in user 4944848b8605Smrg code. */ 4945848b8605Smrg if (/*CONSTCOND*/ 0) 4946848b8605Smrg goto yyerrorlab; 4947848b8605Smrg 4948848b8605Smrg yyerror_range[1] = yylsp[1-yylen]; 4949848b8605Smrg /* Do not reclaim the symbols of the rule which action triggered 4950848b8605Smrg this YYERROR. */ 4951848b8605Smrg YYPOPSTACK (yylen); 4952848b8605Smrg yylen = 0; 4953848b8605Smrg YY_STACK_PRINT (yyss, yyssp); 4954848b8605Smrg yystate = *yyssp; 4955848b8605Smrg goto yyerrlab1; 4956848b8605Smrg 4957848b8605Smrg 4958848b8605Smrg/*-------------------------------------------------------------. 4959848b8605Smrg| yyerrlab1 -- common code for both syntax error and YYERROR. | 4960848b8605Smrg`-------------------------------------------------------------*/ 4961848b8605Smrgyyerrlab1: 4962848b8605Smrg yyerrstatus = 3; /* Each real token shifted decrements this. */ 4963848b8605Smrg 4964848b8605Smrg for (;;) 4965848b8605Smrg { 4966848b8605Smrg yyn = yypact[yystate]; 4967848b8605Smrg if (!yypact_value_is_default (yyn)) 4968848b8605Smrg { 4969848b8605Smrg yyn += YYTERROR; 4970848b8605Smrg if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 4971848b8605Smrg { 4972848b8605Smrg yyn = yytable[yyn]; 4973848b8605Smrg if (0 < yyn) 4974848b8605Smrg break; 4975848b8605Smrg } 4976848b8605Smrg } 4977848b8605Smrg 4978848b8605Smrg /* Pop the current state because it cannot handle the error token. */ 4979848b8605Smrg if (yyssp == yyss) 4980848b8605Smrg YYABORT; 4981848b8605Smrg 4982848b8605Smrg yyerror_range[1] = *yylsp; 4983848b8605Smrg yydestruct ("Error: popping", 4984848b8605Smrg yystos[yystate], yyvsp, yylsp, state); 4985848b8605Smrg YYPOPSTACK (1); 4986848b8605Smrg yystate = *yyssp; 4987848b8605Smrg YY_STACK_PRINT (yyss, yyssp); 4988848b8605Smrg } 4989848b8605Smrg 4990848b8605Smrg YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 4991848b8605Smrg *++yyvsp = yylval; 4992848b8605Smrg YY_IGNORE_MAYBE_UNINITIALIZED_END 4993848b8605Smrg 4994848b8605Smrg yyerror_range[2] = yylloc; 4995848b8605Smrg /* Using YYLLOC is tempting, but would change the location of 4996848b8605Smrg the lookahead. YYLOC is available though. */ 4997848b8605Smrg YYLLOC_DEFAULT (yyloc, yyerror_range, 2); 4998848b8605Smrg *++yylsp = yyloc; 4999848b8605Smrg 5000848b8605Smrg /* Shift the error token. */ 5001848b8605Smrg YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 5002848b8605Smrg 5003848b8605Smrg yystate = yyn; 5004848b8605Smrg goto yynewstate; 5005848b8605Smrg 5006848b8605Smrg 5007848b8605Smrg/*-------------------------------------. 5008848b8605Smrg| yyacceptlab -- YYACCEPT comes here. | 5009848b8605Smrg`-------------------------------------*/ 5010848b8605Smrgyyacceptlab: 5011848b8605Smrg yyresult = 0; 5012848b8605Smrg goto yyreturn; 5013848b8605Smrg 5014848b8605Smrg/*-----------------------------------. 5015848b8605Smrg| yyabortlab -- YYABORT comes here. | 5016848b8605Smrg`-----------------------------------*/ 5017848b8605Smrgyyabortlab: 5018848b8605Smrg yyresult = 1; 5019848b8605Smrg goto yyreturn; 5020848b8605Smrg 5021848b8605Smrg#if !defined yyoverflow || YYERROR_VERBOSE 5022848b8605Smrg/*-------------------------------------------------. 5023848b8605Smrg| yyexhaustedlab -- memory exhaustion comes here. | 5024848b8605Smrg`-------------------------------------------------*/ 5025848b8605Smrgyyexhaustedlab: 5026848b8605Smrg yyerror (&yylloc, state, YY_("memory exhausted")); 5027848b8605Smrg yyresult = 2; 5028848b8605Smrg /* Fall through. */ 5029848b8605Smrg#endif 5030848b8605Smrg 5031848b8605Smrgyyreturn: 5032848b8605Smrg if (yychar != YYEMPTY) 5033848b8605Smrg { 5034848b8605Smrg /* Make sure we have latest lookahead translation. See comments at 5035848b8605Smrg user semantic actions for why this is necessary. */ 5036848b8605Smrg yytoken = YYTRANSLATE (yychar); 5037848b8605Smrg yydestruct ("Cleanup: discarding lookahead", 5038848b8605Smrg yytoken, &yylval, &yylloc, state); 5039848b8605Smrg } 5040848b8605Smrg /* Do not reclaim the symbols of the rule which action triggered 5041848b8605Smrg this YYABORT or YYACCEPT. */ 5042848b8605Smrg YYPOPSTACK (yylen); 5043848b8605Smrg YY_STACK_PRINT (yyss, yyssp); 5044848b8605Smrg while (yyssp != yyss) 5045848b8605Smrg { 5046848b8605Smrg yydestruct ("Cleanup: popping", 5047848b8605Smrg yystos[*yyssp], yyvsp, yylsp, state); 5048848b8605Smrg YYPOPSTACK (1); 5049848b8605Smrg } 5050848b8605Smrg#ifndef yyoverflow 5051848b8605Smrg if (yyss != yyssa) 5052848b8605Smrg YYSTACK_FREE (yyss); 5053848b8605Smrg#endif 5054848b8605Smrg#if YYERROR_VERBOSE 5055848b8605Smrg if (yymsg != yymsgbuf) 5056848b8605Smrg YYSTACK_FREE (yymsg); 5057848b8605Smrg#endif 5058848b8605Smrg /* Make sure YYID is used. */ 5059848b8605Smrg return YYID (yyresult); 5060848b8605Smrg} 5061848b8605Smrg 5062848b8605Smrg 5063848b8605Smrg/* Line 2076 of yacc.c */ 5064848b8605Smrg#line 2231 "/usr/xsrc/external/mit/MesaLib/dist/src/mesa/program/program_parse.y" 5065848b8605Smrg 5066848b8605Smrg 5067848b8605Smrgvoid 5068848b8605Smrgasm_instruction_set_operands(struct asm_instruction *inst, 5069848b8605Smrg const struct prog_dst_register *dst, 5070848b8605Smrg const struct asm_src_register *src0, 5071848b8605Smrg const struct asm_src_register *src1, 5072848b8605Smrg const struct asm_src_register *src2) 5073848b8605Smrg{ 5074848b8605Smrg /* In the core ARB extensions only the KIL instruction doesn't have a 5075848b8605Smrg * destination register. 5076848b8605Smrg */ 5077848b8605Smrg if (dst == NULL) { 5078848b8605Smrg init_dst_reg(& inst->Base.DstReg); 5079848b8605Smrg } else { 5080848b8605Smrg inst->Base.DstReg = *dst; 5081848b8605Smrg } 5082848b8605Smrg 5083848b8605Smrg /* The only instruction that doesn't have any source registers is the 5084848b8605Smrg * condition-code based KIL instruction added by NV_fragment_program_option. 5085848b8605Smrg */ 5086848b8605Smrg if (src0 != NULL) { 5087848b8605Smrg inst->Base.SrcReg[0] = src0->Base; 5088848b8605Smrg inst->SrcReg[0] = *src0; 5089848b8605Smrg } else { 5090848b8605Smrg init_src_reg(& inst->SrcReg[0]); 5091848b8605Smrg } 5092848b8605Smrg 5093848b8605Smrg if (src1 != NULL) { 5094848b8605Smrg inst->Base.SrcReg[1] = src1->Base; 5095848b8605Smrg inst->SrcReg[1] = *src1; 5096848b8605Smrg } else { 5097848b8605Smrg init_src_reg(& inst->SrcReg[1]); 5098848b8605Smrg } 5099848b8605Smrg 5100848b8605Smrg if (src2 != NULL) { 5101848b8605Smrg inst->Base.SrcReg[2] = src2->Base; 5102848b8605Smrg inst->SrcReg[2] = *src2; 5103848b8605Smrg } else { 5104848b8605Smrg init_src_reg(& inst->SrcReg[2]); 5105848b8605Smrg } 5106848b8605Smrg} 5107848b8605Smrg 5108848b8605Smrg 5109848b8605Smrgstruct asm_instruction * 5110848b8605Smrgasm_instruction_ctor(gl_inst_opcode op, 5111848b8605Smrg const struct prog_dst_register *dst, 5112848b8605Smrg const struct asm_src_register *src0, 5113848b8605Smrg const struct asm_src_register *src1, 5114848b8605Smrg const struct asm_src_register *src2) 5115848b8605Smrg{ 5116848b8605Smrg struct asm_instruction *inst = CALLOC_STRUCT(asm_instruction); 5117848b8605Smrg 5118848b8605Smrg if (inst) { 5119848b8605Smrg _mesa_init_instructions(& inst->Base, 1); 5120848b8605Smrg inst->Base.Opcode = op; 5121848b8605Smrg 5122848b8605Smrg asm_instruction_set_operands(inst, dst, src0, src1, src2); 5123848b8605Smrg } 5124848b8605Smrg 5125848b8605Smrg return inst; 5126848b8605Smrg} 5127848b8605Smrg 5128848b8605Smrg 5129848b8605Smrgstruct asm_instruction * 5130848b8605Smrgasm_instruction_copy_ctor(const struct prog_instruction *base, 5131848b8605Smrg const struct prog_dst_register *dst, 5132848b8605Smrg const struct asm_src_register *src0, 5133848b8605Smrg const struct asm_src_register *src1, 5134848b8605Smrg const struct asm_src_register *src2) 5135848b8605Smrg{ 5136848b8605Smrg struct asm_instruction *inst = CALLOC_STRUCT(asm_instruction); 5137848b8605Smrg 5138848b8605Smrg if (inst) { 5139848b8605Smrg _mesa_init_instructions(& inst->Base, 1); 5140848b8605Smrg inst->Base.Opcode = base->Opcode; 5141848b8605Smrg inst->Base.CondUpdate = base->CondUpdate; 5142848b8605Smrg inst->Base.CondDst = base->CondDst; 5143848b8605Smrg inst->Base.SaturateMode = base->SaturateMode; 5144848b8605Smrg inst->Base.Precision = base->Precision; 5145848b8605Smrg 5146848b8605Smrg asm_instruction_set_operands(inst, dst, src0, src1, src2); 5147848b8605Smrg } 5148848b8605Smrg 5149848b8605Smrg return inst; 5150848b8605Smrg} 5151848b8605Smrg 5152848b8605Smrg 5153848b8605Smrgvoid 5154848b8605Smrginit_dst_reg(struct prog_dst_register *r) 5155848b8605Smrg{ 5156848b8605Smrg memset(r, 0, sizeof(*r)); 5157848b8605Smrg r->File = PROGRAM_UNDEFINED; 5158848b8605Smrg r->WriteMask = WRITEMASK_XYZW; 5159848b8605Smrg r->CondMask = COND_TR; 5160848b8605Smrg r->CondSwizzle = SWIZZLE_NOOP; 5161848b8605Smrg} 5162848b8605Smrg 5163848b8605Smrg 5164848b8605Smrg/** Like init_dst_reg() but set the File and Index fields. */ 5165848b8605Smrgvoid 5166848b8605Smrgset_dst_reg(struct prog_dst_register *r, gl_register_file file, GLint index) 5167848b8605Smrg{ 5168848b8605Smrg const GLint maxIndex = 1 << INST_INDEX_BITS; 5169848b8605Smrg const GLint minIndex = 0; 5170848b8605Smrg ASSERT(index >= minIndex); 5171848b8605Smrg (void) minIndex; 5172848b8605Smrg ASSERT(index <= maxIndex); 5173848b8605Smrg (void) maxIndex; 5174848b8605Smrg ASSERT(file == PROGRAM_TEMPORARY || 5175848b8605Smrg file == PROGRAM_ADDRESS || 5176848b8605Smrg file == PROGRAM_OUTPUT); 5177848b8605Smrg memset(r, 0, sizeof(*r)); 5178848b8605Smrg r->File = file; 5179848b8605Smrg r->Index = index; 5180848b8605Smrg r->WriteMask = WRITEMASK_XYZW; 5181848b8605Smrg r->CondMask = COND_TR; 5182848b8605Smrg r->CondSwizzle = SWIZZLE_NOOP; 5183848b8605Smrg} 5184848b8605Smrg 5185848b8605Smrg 5186848b8605Smrgvoid 5187848b8605Smrginit_src_reg(struct asm_src_register *r) 5188848b8605Smrg{ 5189848b8605Smrg memset(r, 0, sizeof(*r)); 5190848b8605Smrg r->Base.File = PROGRAM_UNDEFINED; 5191848b8605Smrg r->Base.Swizzle = SWIZZLE_NOOP; 5192848b8605Smrg r->Symbol = NULL; 5193848b8605Smrg} 5194848b8605Smrg 5195848b8605Smrg 5196848b8605Smrg/** Like init_src_reg() but set the File and Index fields. 5197848b8605Smrg * \return GL_TRUE if a valid src register, GL_FALSE otherwise 5198848b8605Smrg */ 5199848b8605Smrgvoid 5200848b8605Smrgset_src_reg(struct asm_src_register *r, gl_register_file file, GLint index) 5201848b8605Smrg{ 5202848b8605Smrg set_src_reg_swz(r, file, index, SWIZZLE_XYZW); 5203848b8605Smrg} 5204848b8605Smrg 5205848b8605Smrg 5206848b8605Smrgvoid 5207848b8605Smrgset_src_reg_swz(struct asm_src_register *r, gl_register_file file, GLint index, 5208848b8605Smrg GLuint swizzle) 5209848b8605Smrg{ 5210848b8605Smrg const GLint maxIndex = (1 << INST_INDEX_BITS) - 1; 5211848b8605Smrg const GLint minIndex = -(1 << INST_INDEX_BITS); 5212848b8605Smrg ASSERT(file < PROGRAM_FILE_MAX); 5213848b8605Smrg ASSERT(index >= minIndex); 5214848b8605Smrg (void) minIndex; 5215848b8605Smrg ASSERT(index <= maxIndex); 5216848b8605Smrg (void) maxIndex; 5217848b8605Smrg memset(r, 0, sizeof(*r)); 5218848b8605Smrg r->Base.File = file; 5219848b8605Smrg r->Base.Index = index; 5220848b8605Smrg r->Base.Swizzle = swizzle; 5221848b8605Smrg r->Symbol = NULL; 5222848b8605Smrg} 5223848b8605Smrg 5224848b8605Smrg 5225848b8605Smrg/** 5226848b8605Smrg * Validate the set of inputs used by a program 5227848b8605Smrg * 5228848b8605Smrg * Validates that legal sets of inputs are used by the program. In this case 5229848b8605Smrg * "used" included both reading the input or binding the input to a name using 5230848b8605Smrg * the \c ATTRIB command. 5231848b8605Smrg * 5232848b8605Smrg * \return 5233848b8605Smrg * \c TRUE if the combination of inputs used is valid, \c FALSE otherwise. 5234848b8605Smrg */ 5235848b8605Smrgint 5236848b8605Smrgvalidate_inputs(struct YYLTYPE *locp, struct asm_parser_state *state) 5237848b8605Smrg{ 5238848b8605Smrg const GLbitfield64 inputs = state->prog->InputsRead | state->InputsBound; 5239848b8605Smrg 5240848b8605Smrg if (((inputs & VERT_BIT_FF_ALL) & (inputs >> VERT_ATTRIB_GENERIC0)) != 0) { 5241848b8605Smrg yyerror(locp, state, "illegal use of generic attribute and name attribute"); 5242848b8605Smrg return 0; 5243848b8605Smrg } 5244848b8605Smrg 5245848b8605Smrg return 1; 5246848b8605Smrg} 5247848b8605Smrg 5248848b8605Smrg 5249848b8605Smrgstruct asm_symbol * 5250848b8605Smrgdeclare_variable(struct asm_parser_state *state, char *name, enum asm_type t, 5251848b8605Smrg struct YYLTYPE *locp) 5252848b8605Smrg{ 5253848b8605Smrg struct asm_symbol *s = NULL; 5254848b8605Smrg struct asm_symbol *exist = (struct asm_symbol *) 5255848b8605Smrg _mesa_symbol_table_find_symbol(state->st, 0, name); 5256848b8605Smrg 5257848b8605Smrg 5258848b8605Smrg if (exist != NULL) { 5259848b8605Smrg yyerror(locp, state, "redeclared identifier"); 5260848b8605Smrg } else { 5261848b8605Smrg s = calloc(1, sizeof(struct asm_symbol)); 5262848b8605Smrg s->name = name; 5263848b8605Smrg s->type = t; 5264848b8605Smrg 5265848b8605Smrg switch (t) { 5266848b8605Smrg case at_temp: 5267848b8605Smrg if (state->prog->NumTemporaries >= state->limits->MaxTemps) { 5268848b8605Smrg yyerror(locp, state, "too many temporaries declared"); 5269848b8605Smrg free(s); 5270848b8605Smrg return NULL; 5271848b8605Smrg } 5272848b8605Smrg 5273848b8605Smrg s->temp_binding = state->prog->NumTemporaries; 5274848b8605Smrg state->prog->NumTemporaries++; 5275848b8605Smrg break; 5276848b8605Smrg 5277848b8605Smrg case at_address: 5278848b8605Smrg if (state->prog->NumAddressRegs >= state->limits->MaxAddressRegs) { 5279848b8605Smrg yyerror(locp, state, "too many address registers declared"); 5280848b8605Smrg free(s); 5281848b8605Smrg return NULL; 5282848b8605Smrg } 5283848b8605Smrg 5284848b8605Smrg /* FINISHME: Add support for multiple address registers. 5285848b8605Smrg */ 5286848b8605Smrg state->prog->NumAddressRegs++; 5287848b8605Smrg break; 5288848b8605Smrg 5289848b8605Smrg default: 5290848b8605Smrg break; 5291848b8605Smrg } 5292848b8605Smrg 5293848b8605Smrg _mesa_symbol_table_add_symbol(state->st, 0, s->name, s); 5294848b8605Smrg s->next = state->sym; 5295848b8605Smrg state->sym = s; 5296848b8605Smrg } 5297848b8605Smrg 5298848b8605Smrg return s; 5299848b8605Smrg} 5300848b8605Smrg 5301848b8605Smrg 5302848b8605Smrgint add_state_reference(struct gl_program_parameter_list *param_list, 5303848b8605Smrg const gl_state_index tokens[STATE_LENGTH]) 5304848b8605Smrg{ 5305848b8605Smrg const GLuint size = 4; /* XXX fix */ 5306848b8605Smrg char *name; 5307848b8605Smrg GLint index; 5308848b8605Smrg 5309848b8605Smrg name = _mesa_program_state_string(tokens); 5310848b8605Smrg index = _mesa_add_parameter(param_list, PROGRAM_STATE_VAR, name, 5311848b8605Smrg size, GL_NONE, NULL, tokens); 5312848b8605Smrg param_list->StateFlags |= _mesa_program_state_flags(tokens); 5313848b8605Smrg 5314848b8605Smrg /* free name string here since we duplicated it in add_parameter() */ 5315848b8605Smrg free(name); 5316848b8605Smrg 5317848b8605Smrg return index; 5318848b8605Smrg} 5319848b8605Smrg 5320848b8605Smrg 5321848b8605Smrgint 5322848b8605Smrginitialize_symbol_from_state(struct gl_program *prog, 5323848b8605Smrg struct asm_symbol *param_var, 5324848b8605Smrg const gl_state_index tokens[STATE_LENGTH]) 5325848b8605Smrg{ 5326848b8605Smrg int idx = -1; 5327848b8605Smrg gl_state_index state_tokens[STATE_LENGTH]; 5328848b8605Smrg 5329848b8605Smrg 5330848b8605Smrg memcpy(state_tokens, tokens, sizeof(state_tokens)); 5331848b8605Smrg 5332848b8605Smrg param_var->type = at_param; 5333848b8605Smrg param_var->param_binding_type = PROGRAM_STATE_VAR; 5334848b8605Smrg 5335848b8605Smrg /* If we are adding a STATE_MATRIX that has multiple rows, we need to 5336848b8605Smrg * unroll it and call add_state_reference() for each row 5337848b8605Smrg */ 5338848b8605Smrg if ((state_tokens[0] == STATE_MODELVIEW_MATRIX || 5339848b8605Smrg state_tokens[0] == STATE_PROJECTION_MATRIX || 5340848b8605Smrg state_tokens[0] == STATE_MVP_MATRIX || 5341848b8605Smrg state_tokens[0] == STATE_TEXTURE_MATRIX || 5342848b8605Smrg state_tokens[0] == STATE_PROGRAM_MATRIX) 5343848b8605Smrg && (state_tokens[2] != state_tokens[3])) { 5344848b8605Smrg int row; 5345848b8605Smrg const int first_row = state_tokens[2]; 5346848b8605Smrg const int last_row = state_tokens[3]; 5347848b8605Smrg 5348848b8605Smrg for (row = first_row; row <= last_row; row++) { 5349848b8605Smrg state_tokens[2] = state_tokens[3] = row; 5350848b8605Smrg 5351848b8605Smrg idx = add_state_reference(prog->Parameters, state_tokens); 5352848b8605Smrg if (param_var->param_binding_begin == ~0U) { 5353848b8605Smrg param_var->param_binding_begin = idx; 5354848b8605Smrg param_var->param_binding_swizzle = SWIZZLE_XYZW; 5355848b8605Smrg } 5356848b8605Smrg 5357848b8605Smrg param_var->param_binding_length++; 5358848b8605Smrg } 5359848b8605Smrg } 5360848b8605Smrg else { 5361848b8605Smrg idx = add_state_reference(prog->Parameters, state_tokens); 5362848b8605Smrg if (param_var->param_binding_begin == ~0U) { 5363848b8605Smrg param_var->param_binding_begin = idx; 5364848b8605Smrg param_var->param_binding_swizzle = SWIZZLE_XYZW; 5365848b8605Smrg } 5366848b8605Smrg param_var->param_binding_length++; 5367848b8605Smrg } 5368848b8605Smrg 5369848b8605Smrg return idx; 5370848b8605Smrg} 5371848b8605Smrg 5372848b8605Smrg 5373848b8605Smrgint 5374848b8605Smrginitialize_symbol_from_param(struct gl_program *prog, 5375848b8605Smrg struct asm_symbol *param_var, 5376848b8605Smrg const gl_state_index tokens[STATE_LENGTH]) 5377848b8605Smrg{ 5378848b8605Smrg int idx = -1; 5379848b8605Smrg gl_state_index state_tokens[STATE_LENGTH]; 5380848b8605Smrg 5381848b8605Smrg 5382848b8605Smrg memcpy(state_tokens, tokens, sizeof(state_tokens)); 5383848b8605Smrg 5384848b8605Smrg assert((state_tokens[0] == STATE_VERTEX_PROGRAM) 5385848b8605Smrg || (state_tokens[0] == STATE_FRAGMENT_PROGRAM)); 5386848b8605Smrg assert((state_tokens[1] == STATE_ENV) 5387848b8605Smrg || (state_tokens[1] == STATE_LOCAL)); 5388848b8605Smrg 5389848b8605Smrg /* 5390848b8605Smrg * The param type is STATE_VAR. The program parameter entry will 5391848b8605Smrg * effectively be a pointer into the LOCAL or ENV parameter array. 5392848b8605Smrg */ 5393848b8605Smrg param_var->type = at_param; 5394848b8605Smrg param_var->param_binding_type = PROGRAM_STATE_VAR; 5395848b8605Smrg 5396848b8605Smrg /* If we are adding a STATE_ENV or STATE_LOCAL that has multiple elements, 5397848b8605Smrg * we need to unroll it and call add_state_reference() for each row 5398848b8605Smrg */ 5399848b8605Smrg if (state_tokens[2] != state_tokens[3]) { 5400848b8605Smrg int row; 5401848b8605Smrg const int first_row = state_tokens[2]; 5402848b8605Smrg const int last_row = state_tokens[3]; 5403848b8605Smrg 5404848b8605Smrg for (row = first_row; row <= last_row; row++) { 5405848b8605Smrg state_tokens[2] = state_tokens[3] = row; 5406848b8605Smrg 5407848b8605Smrg idx = add_state_reference(prog->Parameters, state_tokens); 5408848b8605Smrg if (param_var->param_binding_begin == ~0U) { 5409848b8605Smrg param_var->param_binding_begin = idx; 5410848b8605Smrg param_var->param_binding_swizzle = SWIZZLE_XYZW; 5411848b8605Smrg } 5412848b8605Smrg param_var->param_binding_length++; 5413848b8605Smrg } 5414848b8605Smrg } 5415848b8605Smrg else { 5416848b8605Smrg idx = add_state_reference(prog->Parameters, state_tokens); 5417848b8605Smrg if (param_var->param_binding_begin == ~0U) { 5418848b8605Smrg param_var->param_binding_begin = idx; 5419848b8605Smrg param_var->param_binding_swizzle = SWIZZLE_XYZW; 5420848b8605Smrg } 5421848b8605Smrg param_var->param_binding_length++; 5422848b8605Smrg } 5423848b8605Smrg 5424848b8605Smrg return idx; 5425848b8605Smrg} 5426848b8605Smrg 5427848b8605Smrg 5428848b8605Smrg/** 5429848b8605Smrg * Put a float/vector constant/literal into the parameter list. 5430848b8605Smrg * \param param_var returns info about the parameter/constant's location, 5431848b8605Smrg * binding, type, etc. 5432848b8605Smrg * \param vec the vector/constant to add 5433848b8605Smrg * \param allowSwizzle if true, try to consolidate constants which only differ 5434848b8605Smrg * by a swizzle. We don't want to do this when building 5435848b8605Smrg * arrays of constants that may be indexed indirectly. 5436848b8605Smrg * \return index of the constant in the parameter list. 5437848b8605Smrg */ 5438848b8605Smrgint 5439848b8605Smrginitialize_symbol_from_const(struct gl_program *prog, 5440848b8605Smrg struct asm_symbol *param_var, 5441848b8605Smrg const struct asm_vector *vec, 5442848b8605Smrg GLboolean allowSwizzle) 5443848b8605Smrg{ 5444848b8605Smrg unsigned swizzle; 5445848b8605Smrg const int idx = _mesa_add_unnamed_constant(prog->Parameters, 5446848b8605Smrg vec->data, vec->count, 5447848b8605Smrg allowSwizzle ? &swizzle : NULL); 5448848b8605Smrg 5449848b8605Smrg param_var->type = at_param; 5450848b8605Smrg param_var->param_binding_type = PROGRAM_CONSTANT; 5451848b8605Smrg 5452848b8605Smrg if (param_var->param_binding_begin == ~0U) { 5453848b8605Smrg param_var->param_binding_begin = idx; 5454848b8605Smrg param_var->param_binding_swizzle = allowSwizzle ? swizzle : SWIZZLE_XYZW; 5455848b8605Smrg } 5456848b8605Smrg param_var->param_binding_length++; 5457848b8605Smrg 5458848b8605Smrg return idx; 5459848b8605Smrg} 5460848b8605Smrg 5461848b8605Smrg 5462848b8605Smrgchar * 5463848b8605Smrgmake_error_string(const char *fmt, ...) 5464848b8605Smrg{ 5465848b8605Smrg int length; 5466848b8605Smrg char *str; 5467848b8605Smrg va_list args; 5468848b8605Smrg 5469848b8605Smrg 5470848b8605Smrg /* Call vsnprintf once to determine how large the final string is. Call it 5471848b8605Smrg * again to do the actual formatting. from the vsnprintf manual page: 5472848b8605Smrg * 5473848b8605Smrg * Upon successful return, these functions return the number of 5474848b8605Smrg * characters printed (not including the trailing '\0' used to end 5475848b8605Smrg * output to strings). 5476848b8605Smrg */ 5477848b8605Smrg va_start(args, fmt); 5478848b8605Smrg length = 1 + vsnprintf(NULL, 0, fmt, args); 5479848b8605Smrg va_end(args); 5480848b8605Smrg 5481848b8605Smrg str = malloc(length); 5482848b8605Smrg if (str) { 5483848b8605Smrg va_start(args, fmt); 5484848b8605Smrg vsnprintf(str, length, fmt, args); 5485848b8605Smrg va_end(args); 5486848b8605Smrg } 5487848b8605Smrg 5488848b8605Smrg return str; 5489848b8605Smrg} 5490848b8605Smrg 5491848b8605Smrg 5492848b8605Smrgvoid 5493848b8605Smrgyyerror(YYLTYPE *locp, struct asm_parser_state *state, const char *s) 5494848b8605Smrg{ 5495848b8605Smrg char *err_str; 5496848b8605Smrg 5497848b8605Smrg 5498848b8605Smrg err_str = make_error_string("glProgramStringARB(%s)\n", s); 5499848b8605Smrg if (err_str) { 5500848b8605Smrg _mesa_error(state->ctx, GL_INVALID_OPERATION, "%s", err_str); 5501848b8605Smrg free(err_str); 5502848b8605Smrg } 5503848b8605Smrg 5504848b8605Smrg err_str = make_error_string("line %u, char %u: error: %s\n", 5505848b8605Smrg locp->first_line, locp->first_column, s); 5506848b8605Smrg _mesa_set_program_error(state->ctx, locp->position, err_str); 5507848b8605Smrg 5508848b8605Smrg if (err_str) { 5509848b8605Smrg free(err_str); 5510848b8605Smrg } 5511848b8605Smrg} 5512848b8605Smrg 5513848b8605Smrg 5514848b8605SmrgGLboolean 5515848b8605Smrg_mesa_parse_arb_program(struct gl_context *ctx, GLenum target, const GLubyte *str, 5516848b8605Smrg GLsizei len, struct asm_parser_state *state) 5517848b8605Smrg{ 5518848b8605Smrg struct asm_instruction *inst; 5519848b8605Smrg unsigned i; 5520848b8605Smrg GLubyte *strz; 5521848b8605Smrg GLboolean result = GL_FALSE; 5522848b8605Smrg void *temp; 5523848b8605Smrg struct asm_symbol *sym; 5524848b8605Smrg 5525848b8605Smrg state->ctx = ctx; 5526848b8605Smrg state->prog->Target = target; 5527848b8605Smrg state->prog->Parameters = _mesa_new_parameter_list(); 5528848b8605Smrg 5529848b8605Smrg /* Make a copy of the program string and force it to be NUL-terminated. 5530848b8605Smrg */ 5531848b8605Smrg strz = (GLubyte *) malloc(len + 1); 5532848b8605Smrg if (strz == NULL) { 5533848b8605Smrg _mesa_error(ctx, GL_OUT_OF_MEMORY, "glProgramStringARB"); 5534848b8605Smrg return GL_FALSE; 5535848b8605Smrg } 5536848b8605Smrg memcpy (strz, str, len); 5537848b8605Smrg strz[len] = '\0'; 5538848b8605Smrg 5539848b8605Smrg state->prog->String = strz; 5540848b8605Smrg 5541848b8605Smrg state->st = _mesa_symbol_table_ctor(); 5542848b8605Smrg 5543848b8605Smrg state->limits = (target == GL_VERTEX_PROGRAM_ARB) 5544848b8605Smrg ? & ctx->Const.Program[MESA_SHADER_VERTEX] 5545848b8605Smrg : & ctx->Const.Program[MESA_SHADER_FRAGMENT]; 5546848b8605Smrg 5547848b8605Smrg state->MaxTextureImageUnits = ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits; 5548848b8605Smrg state->MaxTextureCoordUnits = ctx->Const.MaxTextureCoordUnits; 5549848b8605Smrg state->MaxTextureUnits = ctx->Const.MaxTextureUnits; 5550848b8605Smrg state->MaxClipPlanes = ctx->Const.MaxClipPlanes; 5551848b8605Smrg state->MaxLights = ctx->Const.MaxLights; 5552848b8605Smrg state->MaxProgramMatrices = ctx->Const.MaxProgramMatrices; 5553848b8605Smrg state->MaxDrawBuffers = ctx->Const.MaxDrawBuffers; 5554848b8605Smrg 5555848b8605Smrg state->state_param_enum = (target == GL_VERTEX_PROGRAM_ARB) 5556848b8605Smrg ? STATE_VERTEX_PROGRAM : STATE_FRAGMENT_PROGRAM; 5557848b8605Smrg 5558848b8605Smrg _mesa_set_program_error(ctx, -1, NULL); 5559848b8605Smrg 5560848b8605Smrg _mesa_program_lexer_ctor(& state->scanner, state, (const char *) str, len); 5561848b8605Smrg yyparse(state); 5562848b8605Smrg _mesa_program_lexer_dtor(state->scanner); 5563848b8605Smrg 5564848b8605Smrg 5565848b8605Smrg if (ctx->Program.ErrorPos != -1) { 5566848b8605Smrg goto error; 5567848b8605Smrg } 5568848b8605Smrg 5569848b8605Smrg if (! _mesa_layout_parameters(state)) { 5570848b8605Smrg struct YYLTYPE loc; 5571848b8605Smrg 5572848b8605Smrg loc.first_line = 0; 5573848b8605Smrg loc.first_column = 0; 5574848b8605Smrg loc.position = len; 5575848b8605Smrg 5576848b8605Smrg yyerror(& loc, state, "invalid PARAM usage"); 5577848b8605Smrg goto error; 5578848b8605Smrg } 5579848b8605Smrg 5580848b8605Smrg 5581848b8605Smrg 5582848b8605Smrg /* Add one instruction to store the "END" instruction. 5583848b8605Smrg */ 5584848b8605Smrg state->prog->Instructions = 5585848b8605Smrg _mesa_alloc_instructions(state->prog->NumInstructions + 1); 5586848b8605Smrg 5587848b8605Smrg if (state->prog->Instructions == NULL) { 5588848b8605Smrg goto error; 5589848b8605Smrg } 5590848b8605Smrg 5591848b8605Smrg inst = state->inst_head; 5592848b8605Smrg for (i = 0; i < state->prog->NumInstructions; i++) { 5593848b8605Smrg struct asm_instruction *const temp = inst->next; 5594848b8605Smrg 5595848b8605Smrg state->prog->Instructions[i] = inst->Base; 5596848b8605Smrg inst = temp; 5597848b8605Smrg } 5598848b8605Smrg 5599848b8605Smrg /* Finally, tag on an OPCODE_END instruction */ 5600848b8605Smrg { 5601848b8605Smrg const GLuint numInst = state->prog->NumInstructions; 5602848b8605Smrg _mesa_init_instructions(state->prog->Instructions + numInst, 1); 5603848b8605Smrg state->prog->Instructions[numInst].Opcode = OPCODE_END; 5604848b8605Smrg } 5605848b8605Smrg state->prog->NumInstructions++; 5606848b8605Smrg 5607848b8605Smrg state->prog->NumParameters = state->prog->Parameters->NumParameters; 5608848b8605Smrg state->prog->NumAttributes = _mesa_bitcount_64(state->prog->InputsRead); 5609848b8605Smrg 5610848b8605Smrg /* 5611848b8605Smrg * Initialize native counts to logical counts. The device driver may 5612848b8605Smrg * change them if program is translated into a hardware program. 5613848b8605Smrg */ 5614848b8605Smrg state->prog->NumNativeInstructions = state->prog->NumInstructions; 5615848b8605Smrg state->prog->NumNativeTemporaries = state->prog->NumTemporaries; 5616848b8605Smrg state->prog->NumNativeParameters = state->prog->NumParameters; 5617848b8605Smrg state->prog->NumNativeAttributes = state->prog->NumAttributes; 5618848b8605Smrg state->prog->NumNativeAddressRegs = state->prog->NumAddressRegs; 5619848b8605Smrg 5620848b8605Smrg result = GL_TRUE; 5621848b8605Smrg 5622848b8605Smrgerror: 5623848b8605Smrg for (inst = state->inst_head; inst != NULL; inst = temp) { 5624848b8605Smrg temp = inst->next; 5625848b8605Smrg free(inst); 5626848b8605Smrg } 5627848b8605Smrg 5628848b8605Smrg state->inst_head = NULL; 5629848b8605Smrg state->inst_tail = NULL; 5630848b8605Smrg 5631848b8605Smrg for (sym = state->sym; sym != NULL; sym = temp) { 5632848b8605Smrg temp = sym->next; 5633848b8605Smrg 5634848b8605Smrg free((void *) sym->name); 5635848b8605Smrg free(sym); 5636848b8605Smrg } 5637848b8605Smrg state->sym = NULL; 5638848b8605Smrg 5639848b8605Smrg _mesa_symbol_table_dtor(state->st); 5640848b8605Smrg state->st = NULL; 5641848b8605Smrg 5642848b8605Smrg return result; 5643848b8605Smrg} 5644