PIPS
patterns.c
Go to the documentation of this file.
1 /* A Bison parser, made by GNU Bison 3.8.2. */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5  Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6  Inc.
7 
8  This program is free software: you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation, either version 3 of the License, or
11  (at your option) any later version.
12 
13  This program is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with this program. If not, see <https://www.gnu.org/licenses/>. */
20 
21 /* As a special exception, you may create a larger work that contains
22  part or all of the Bison parser skeleton and distribute that work
23  under terms of your choice, so long as that work isn't itself a
24  parser generator using the skeleton or a modified version thereof
25  as a parser skeleton. Alternatively, if you modify or redistribute
26  the parser skeleton itself, you may (at your option) remove this
27  special exception, which will cause the skeleton and the resulting
28  Bison output files to be licensed under the GNU General Public
29  License without this special exception.
30 
31  This special exception was added by the Free Software Foundation in
32  version 2.2 of Bison. */
33 
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35  simplifying the original so-called "semantic" parser. */
36 
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38  especially those whose name start with YY_ or yy_. They are
39  private implementation details that can be changed or removed. */
40 
41 /* All symbols defined below should begin with yy or YY, to avoid
42  infringing on user name space. This should be done even for local
43  variables, as they might otherwise be expanded by user macros.
44  There are some unavoidable exceptions within include files to
45  define necessary library symbols; they are noted "INFRINGES ON
46  USER NAME SPACE" below. */
47 
48 /* Identify Bison output, and Bison version. */
49 #define YYBISON 30802
50 
51 /* Bison version string. */
52 #define YYBISON_VERSION "3.8.2"
53 
54 /* Skeleton name. */
55 #define YYSKELETON_NAME "yacc.c"
56 
57 /* Pure parsers. */
58 #define YYPURE 0
59 
60 /* Push parsers. */
61 #define YYPUSH 0
62 
63 /* Pull parsers. */
64 #define YYPULL 1
65 
66 
67 /* Substitute the variable and function names. */
68 #define yyparse patterns_yyparse
69 #define yylex patterns_yylex
70 #define yyerror patterns_yyerror
71 #define yydebug patterns_yydebug
72 #define yynerrs patterns_yynerrs
73 #define yylval patterns_yylval
74 #define yychar patterns_yychar
75 
76 /* First part of user prologue. */
77 #line 25 "tmp.y"
78 
79 #ifdef HAVE_CONFIG_H
80  #include "pips_config.h"
81 #endif
82 
83 #include <stdio.h>
84 
85 #include "genC.h"
86 #include "linear.h"
87 #include "ri.h"
88 
89 #include "resources.h"
90 
91 #include "misc.h"
92 #include "ri-util.h"
93 
94 #include "sac.h"
95 
96 static size_t opcode_argc =0;
97 size_t sac_lineno = 0;
98 
99 /* fake helpers */
100 #define TOKEN_NEWGEN_DOMAIN (-1)
101 #define ARGUMENT_NEWGEN_DOMAIN (-1)
102 #define gen_TOKEN_cons(t,l) gen_cons(t,l)
103 #define gen_ARGUMENT_cons(a,l) gen_cons(a,l)
104 
105 
106 
107 #line 108 "patterns.c"
108 
109 # ifndef YY_CAST
110 # ifdef __cplusplus
111 # define YY_CAST(Type, Val) static_cast<Type> (Val)
112 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
113 # else
114 # define YY_CAST(Type, Val) ((Type) (Val))
115 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
116 # endif
117 # endif
118 # ifndef YY_NULLPTR
119 # if defined __cplusplus
120 # if 201103L <= __cplusplus
121 # define YY_NULLPTR nullptr
122 # else
123 # define YY_NULLPTR 0
124 # endif
125 # else
126 # define YY_NULLPTR ((void*)0)
127 # endif
128 # endif
129 
130 #include "patterns.h"
131 /* Symbol kind. */
133 {
135  YYSYMBOL_YYEOF = 0, /* "end of file" */
136  YYSYMBOL_YYerror = 1, /* error */
137  YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
138  YYSYMBOL_UNKNOWN_TOK = 3, /* UNKNOWN_TOK */
139  YYSYMBOL_REFERENCE_TOK = 4, /* REFERENCE_TOK */
140  YYSYMBOL_QI_REF_TOK = 5, /* QI_REF_TOK */
141  YYSYMBOL_HI_REF_TOK = 6, /* HI_REF_TOK */
142  YYSYMBOL_SI_REF_TOK = 7, /* SI_REF_TOK */
143  YYSYMBOL_DI_REF_TOK = 8, /* DI_REF_TOK */
144  YYSYMBOL_SF_REF_TOK = 9, /* SF_REF_TOK */
145  YYSYMBOL_DF_REF_TOK = 10, /* DF_REF_TOK */
146  YYSYMBOL_SC_REF_TOK = 11, /* SC_REF_TOK */
147  YYSYMBOL_DC_REF_TOK = 12, /* DC_REF_TOK */
148  YYSYMBOL_LOG_REF_TOK = 13, /* LOG_REF_TOK */
149  YYSYMBOL_CONSTANT_TOK = 14, /* CONSTANT_TOK */
150  YYSYMBOL_ASSIGN_OPERATOR_TOK = 15, /* ASSIGN_OPERATOR_TOK */
151  YYSYMBOL_PLUS_OPERATOR_TOK = 16, /* PLUS_OPERATOR_TOK */
152  YYSYMBOL_MINUS_OPERATOR_TOK = 17, /* MINUS_OPERATOR_TOK */
153  YYSYMBOL_UNARY_MINUS_OPERATOR_TOK = 18, /* UNARY_MINUS_OPERATOR_TOK */
154  YYSYMBOL_MULTIPLY_OPERATOR_TOK = 19, /* MULTIPLY_OPERATOR_TOK */
155  YYSYMBOL_MULADD_OPERATOR_TOK = 20, /* MULADD_OPERATOR_TOK */
156  YYSYMBOL_DIVIDE_OPERATOR_TOK = 21, /* DIVIDE_OPERATOR_TOK */
157  YYSYMBOL_INVERSE_OPERATOR_TOK = 22, /* INVERSE_OPERATOR_TOK */
158  YYSYMBOL_POWER_OPERATOR_TOK = 23, /* POWER_OPERATOR_TOK */
159  YYSYMBOL_MODULO_OPERATOR_TOK = 24, /* MODULO_OPERATOR_TOK */
160  YYSYMBOL_MIN_OPERATOR_TOK = 25, /* MIN_OPERATOR_TOK */
161  YYSYMBOL_COS_OPERATOR_TOK = 26, /* COS_OPERATOR_TOK */
162  YYSYMBOL_SIN_OPERATOR_TOK = 27, /* SIN_OPERATOR_TOK */
163  YYSYMBOL_MIN0_OPERATOR_TOK = 28, /* MIN0_OPERATOR_TOK */
164  YYSYMBOL_AMIN1_OPERATOR_TOK = 29, /* AMIN1_OPERATOR_TOK */
165  YYSYMBOL_DMIN1_OPERATOR_TOK = 30, /* DMIN1_OPERATOR_TOK */
166  YYSYMBOL_MAX_OPERATOR_TOK = 31, /* MAX_OPERATOR_TOK */
167  YYSYMBOL_MAX0_OPERATOR_TOK = 32, /* MAX0_OPERATOR_TOK */
168  YYSYMBOL_AMAX1_OPERATOR_TOK = 33, /* AMAX1_OPERATOR_TOK */
169  YYSYMBOL_DMAX1_OPERATOR_TOK = 34, /* DMAX1_OPERATOR_TOK */
170  YYSYMBOL_ABS_OPERATOR_TOK = 35, /* ABS_OPERATOR_TOK */
171  YYSYMBOL_IABS_OPERATOR_TOK = 36, /* IABS_OPERATOR_TOK */
172  YYSYMBOL_DABS_OPERATOR_TOK = 37, /* DABS_OPERATOR_TOK */
173  YYSYMBOL_CABS_OPERATOR_TOK = 38, /* CABS_OPERATOR_TOK */
174  YYSYMBOL_AND_OPERATOR_TOK = 39, /* AND_OPERATOR_TOK */
175  YYSYMBOL_OR_OPERATOR_TOK = 40, /* OR_OPERATOR_TOK */
176  YYSYMBOL_NOT_OPERATOR_TOK = 41, /* NOT_OPERATOR_TOK */
177  YYSYMBOL_NON_EQUAL_OPERATOR_TOK = 42, /* NON_EQUAL_OPERATOR_TOK */
178  YYSYMBOL_EQUIV_OPERATOR_TOK = 43, /* EQUIV_OPERATOR_TOK */
179  YYSYMBOL_NON_EQUIV_OPERATOR_TOK = 44, /* NON_EQUIV_OPERATOR_TOK */
180  YYSYMBOL_TRUE_OPERATOR_TOK = 45, /* TRUE_OPERATOR_TOK */
181  YYSYMBOL_FALSE_OPERATOR_TOK = 46, /* FALSE_OPERATOR_TOK */
182  YYSYMBOL_GREATER_OR_EQUAL_OPERATOR_TOK = 47, /* GREATER_OR_EQUAL_OPERATOR_TOK */
183  YYSYMBOL_GREATER_THAN_OPERATOR_TOK = 48, /* GREATER_THAN_OPERATOR_TOK */
184  YYSYMBOL_LESS_OR_EQUAL_OPERATOR_TOK = 49, /* LESS_OR_EQUAL_OPERATOR_TOK */
185  YYSYMBOL_LESS_THAN_OPERATOR_TOK = 50, /* LESS_THAN_OPERATOR_TOK */
186  YYSYMBOL_EQUAL_OPERATOR_TOK = 51, /* EQUAL_OPERATOR_TOK */
187  YYSYMBOL_PHI_TOK = 52, /* PHI_TOK */
188  YYSYMBOL_INTEGER_TOK = 53, /* INTEGER_TOK */
189  YYSYMBOL_FLOAT_TOK = 54, /* FLOAT_TOK */
190  YYSYMBOL_IDENTIFIER_TOK = 55, /* IDENTIFIER_TOK */
191  YYSYMBOL_56_ = 56, /* '{' */
192  YYSYMBOL_57_ = 57, /* '}' */
193  YYSYMBOL_58_ = 58, /* ':' */
194  YYSYMBOL_59_ = 59, /* ',' */
195  YYSYMBOL_60_ = 60, /* ';' */
196  YYSYMBOL_61_ = 61, /* '[' */
197  YYSYMBOL_62_ = 62, /* ']' */
198  YYSYMBOL_YYACCEPT = 63, /* $accept */
199  YYSYMBOL_definitions = 64, /* definitions */
200  YYSYMBOL_definitions_list = 65, /* definitions_list */
201  YYSYMBOL_definition = 66, /* definition */
202  YYSYMBOL_operation = 67, /* operation */
203  YYSYMBOL_opcodes_list = 68, /* opcodes_list */
204  YYSYMBOL_opcode = 69, /* opcode */
205  YYSYMBOL_pattern = 70, /* pattern */
206  YYSYMBOL_types_list = 71, /* types_list */
207  YYSYMBOL_type = 72, /* type */
208  YYSYMBOL_tokens_list = 73, /* tokens_list */
209  YYSYMBOL_token = 74, /* token */
210  YYSYMBOL_merge_arguments = 75, /* merge_arguments */
211  YYSYMBOL_arguments_list = 76, /* arguments_list */
212  YYSYMBOL_argument = 77, /* argument */
213  YYSYMBOL_transformation = 78, /* transformation */
214  YYSYMBOL_mappings = 79 /* mappings */
215 };
216 typedef enum yysymbol_kind_t yysymbol_kind_t;
217 
218 
219 
220 
221 #ifdef short
222 # undef short
223 #endif
224 
225 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
226  <limits.h> and (if available) <stdint.h> are included
227  so that the code can choose integer types of a good width. */
228 
229 #ifndef __PTRDIFF_MAX__
230 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
231 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
232 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
233 # define YY_STDINT_H
234 # endif
235 #endif
236 
237 /* Narrow types that promote to a signed type and that can represent a
238  signed or unsigned integer of at least N bits. In tables they can
239  save space and decrease cache pressure. Promoting to a signed type
240  helps avoid bugs in integer arithmetic. */
241 
242 #ifdef __INT_LEAST8_MAX__
243 typedef __INT_LEAST8_TYPE__ yytype_int8;
244 #elif defined YY_STDINT_H
245 typedef int_least8_t yytype_int8;
246 #else
247 typedef signed char yytype_int8;
248 #endif
249 
250 #ifdef __INT_LEAST16_MAX__
251 typedef __INT_LEAST16_TYPE__ yytype_int16;
252 #elif defined YY_STDINT_H
254 #else
255 typedef short yytype_int16;
256 #endif
257 
258 /* Work around bug in HP-UX 11.23, which defines these macros
259  incorrectly for preprocessor constants. This workaround can likely
260  be removed in 2023, as HPE has promised support for HP-UX 11.23
261  (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
262  <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
263 #ifdef __hpux
264 # undef UINT_LEAST8_MAX
265 # undef UINT_LEAST16_MAX
266 # define UINT_LEAST8_MAX 255
267 # define UINT_LEAST16_MAX 65535
268 #endif
269 
270 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
271 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
272 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
273  && UINT_LEAST8_MAX <= INT_MAX)
275 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
276 typedef unsigned char yytype_uint8;
277 #else
278 typedef short yytype_uint8;
279 #endif
280 
281 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
282 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
283 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
284  && UINT_LEAST16_MAX <= INT_MAX)
286 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
287 typedef unsigned short yytype_uint16;
288 #else
289 typedef int yytype_uint16;
290 #endif
291 
292 #ifndef YYPTRDIFF_T
293 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
294 # define YYPTRDIFF_T __PTRDIFF_TYPE__
295 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
296 # elif defined PTRDIFF_MAX
297 # ifndef ptrdiff_t
298 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
299 # endif
300 # define YYPTRDIFF_T ptrdiff_t
301 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
302 # else
303 # define YYPTRDIFF_T long
304 # define YYPTRDIFF_MAXIMUM LONG_MAX
305 # endif
306 #endif
307 
308 #ifndef YYSIZE_T
309 # ifdef __SIZE_TYPE__
310 # define YYSIZE_T __SIZE_TYPE__
311 # elif defined size_t
312 # define YYSIZE_T size_t
313 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
314 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
315 # define YYSIZE_T size_t
316 # else
317 # define YYSIZE_T unsigned
318 # endif
319 #endif
320 
321 #define YYSIZE_MAXIMUM \
322  YY_CAST (YYPTRDIFF_T, \
323  (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
324  ? YYPTRDIFF_MAXIMUM \
325  : YY_CAST (YYSIZE_T, -1)))
326 
327 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
328 
329 
330 /* Stored state numbers (used for stacks). */
332 
333 /* State numbers in computations. */
334 typedef int yy_state_fast_t;
335 
336 #ifndef YY_
337 # if defined YYENABLE_NLS && YYENABLE_NLS
338 # if ENABLE_NLS
339 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
340 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
341 # endif
342 # endif
343 # ifndef YY_
344 # define YY_(Msgid) Msgid
345 # endif
346 #endif
347 
348 
349 #ifndef YY_ATTRIBUTE_PURE
350 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
351 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
352 # else
353 # define YY_ATTRIBUTE_PURE
354 # endif
355 #endif
356 
357 #ifndef YY_ATTRIBUTE_UNUSED
358 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
359 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
360 # else
361 # define YY_ATTRIBUTE_UNUSED
362 # endif
363 #endif
364 
365 /* Suppress unused-variable warnings by "using" E. */
366 #if ! defined lint || defined __GNUC__
367 # define YY_USE(E) ((void) (E))
368 #else
369 # define YY_USE(E) /* empty */
370 #endif
371 
372 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
373 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
374 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
375 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
376  _Pragma ("GCC diagnostic push") \
377  _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
378 # else
379 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
380  _Pragma ("GCC diagnostic push") \
381  _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
382  _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
383 # endif
384 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
385  _Pragma ("GCC diagnostic pop")
386 #else
387 # define YY_INITIAL_VALUE(Value) Value
388 #endif
389 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
390 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
391 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
392 #endif
393 #ifndef YY_INITIAL_VALUE
394 # define YY_INITIAL_VALUE(Value) /* Nothing. */
395 #endif
396 
397 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
398 # define YY_IGNORE_USELESS_CAST_BEGIN \
399  _Pragma ("GCC diagnostic push") \
400  _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
401 # define YY_IGNORE_USELESS_CAST_END \
402  _Pragma ("GCC diagnostic pop")
403 #endif
404 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
405 # define YY_IGNORE_USELESS_CAST_BEGIN
406 # define YY_IGNORE_USELESS_CAST_END
407 #endif
408 
409 
410 #define YY_ASSERT(E) ((void) (0 && (E)))
411 
412 #if !defined yyoverflow
413 
414 /* The parser invokes alloca or malloc; define the necessary symbols. */
415 
416 # ifdef YYSTACK_USE_ALLOCA
417 # if YYSTACK_USE_ALLOCA
418 # ifdef __GNUC__
419 # define YYSTACK_ALLOC __builtin_alloca
420 # elif defined __BUILTIN_VA_ARG_INCR
421 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
422 # elif defined _AIX
423 # define YYSTACK_ALLOC __alloca
424 # elif defined _MSC_VER
425 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
426 # define alloca _alloca
427 # else
428 # define YYSTACK_ALLOC alloca
429 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
430 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
431  /* Use EXIT_SUCCESS as a witness for stdlib.h. */
432 # ifndef EXIT_SUCCESS
433 # define EXIT_SUCCESS 0
434 # endif
435 # endif
436 # endif
437 # endif
438 # endif
439 
440 # ifdef YYSTACK_ALLOC
441  /* Pacify GCC's 'empty if-body' warning. */
442 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
443 # ifndef YYSTACK_ALLOC_MAXIMUM
444  /* The OS might guarantee only one guard page at the bottom of the stack,
445  and a page size can be as small as 4096 bytes. So we cannot safely
446  invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
447  to allow for a few compiler-allocated temporary stack slots. */
448 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
449 # endif
450 # else
451 # define YYSTACK_ALLOC YYMALLOC
452 # define YYSTACK_FREE YYFREE
453 # ifndef YYSTACK_ALLOC_MAXIMUM
454 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
455 # endif
456 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
457  && ! ((defined YYMALLOC || defined malloc) \
458  && (defined YYFREE || defined free)))
459 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
460 # ifndef EXIT_SUCCESS
461 # define EXIT_SUCCESS 0
462 # endif
463 # endif
464 # ifndef YYMALLOC
465 # define YYMALLOC malloc
466 # if ! defined malloc && ! defined EXIT_SUCCESS
467 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
468 # endif
469 # endif
470 # ifndef YYFREE
471 # define YYFREE free
472 # if ! defined free && ! defined EXIT_SUCCESS
473 void free (void *); /* INFRINGES ON USER NAME SPACE */
474 # endif
475 # endif
476 # endif
477 #endif /* !defined yyoverflow */
478 
479 #if (! defined yyoverflow \
480  && (! defined __cplusplus \
481  || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
482 
483 /* A type that is properly aligned for any stack member. */
484 union yyalloc
485 {
488 };
489 
490 /* The size of the maximum gap between one aligned stack and the next. */
491 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
492 
493 /* The size of an array large to enough to hold all stacks, each with
494  N elements. */
495 # define YYSTACK_BYTES(N) \
496  ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
497  + YYSTACK_GAP_MAXIMUM)
498 
499 # define YYCOPY_NEEDED 1
500 
501 /* Relocate STACK from its old location to the new one. The
502  local variables YYSIZE and YYSTACKSIZE give the old and new number of
503  elements in the stack, and YYPTR gives the new location of the
504  stack. Advance YYPTR to a properly aligned location for the next
505  stack. */
506 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
507  do \
508  { \
509  YYPTRDIFF_T yynewbytes; \
510  YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
511  Stack = &yyptr->Stack_alloc; \
512  yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
513  yyptr += yynewbytes / YYSIZEOF (*yyptr); \
514  } \
515  while (0)
516 
517 #endif
518 
519 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
520 /* Copy COUNT objects from SRC to DST. The source and destination do
521  not overlap. */
522 # ifndef YYCOPY
523 # if defined __GNUC__ && 1 < __GNUC__
524 # define YYCOPY(Dst, Src, Count) \
525  __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
526 # else
527 # define YYCOPY(Dst, Src, Count) \
528  do \
529  { \
530  YYPTRDIFF_T yyi; \
531  for (yyi = 0; yyi < (Count); yyi++) \
532  (Dst)[yyi] = (Src)[yyi]; \
533  } \
534  while (0)
535 # endif
536 # endif
537 #endif /* !YYCOPY_NEEDED */
538 
539 /* YYFINAL -- State number of the termination state. */
540 #define YYFINAL 3
541 /* YYLAST -- Last index in YYTABLE. */
542 #define YYLAST 81
543 
544 /* YYNTOKENS -- Number of terminals. */
545 #define YYNTOKENS 63
546 /* YYNNTS -- Number of nonterminals. */
547 #define YYNNTS 17
548 /* YYNRULES -- Number of rules. */
549 #define YYNRULES 74
550 /* YYNSTATES -- Number of states. */
551 #define YYNSTATES 99
552 
553 /* YYMAXUTOK -- Last valid token kind. */
554 #define YYMAXUTOK 310
555 
556 
557 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
558  as returned by yylex, with out-of-bounds checking. */
559 #define YYTRANSLATE(YYX) \
560  (0 <= (YYX) && (YYX) <= YYMAXUTOK \
561  ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
562  : YYSYMBOL_YYUNDEF)
563 
564 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
565  as returned by yylex. */
566 static const yytype_int8 yytranslate[] =
567 {
568  0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
569  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
570  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
571  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
572  2, 2, 2, 2, 59, 2, 2, 2, 2, 2,
573  2, 2, 2, 2, 2, 2, 2, 2, 58, 60,
574  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
575  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
576  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
577  2, 61, 2, 62, 2, 2, 2, 2, 2, 2,
578  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
579  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
580  2, 2, 2, 56, 2, 57, 2, 2, 2, 2,
581  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
582  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
583  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
584  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
585  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
586  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
587  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
588  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
589  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
590  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
591  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
592  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
593  2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
594  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
595  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
596  25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
597  35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
598  45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
599  55
600 };
601 
602 #if YYDEBUG
603 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
604 static const yytype_int16 yyrline[] =
605 {
606  0, 150, 150, 154, 155, 159, 160, 161, 165, 172,
607  173, 176, 184, 190, 191, 194, 195, 196, 197, 198,
608  199, 200, 201, 202, 205, 208, 211, 212, 213, 214,
609  215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
610  225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
611  235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
612  245, 246, 247, 248, 249, 250, 253, 254, 258, 259,
613  262, 263, 266, 270, 271
614 };
615 #endif
616 
617 /** Accessing symbol of state STATE. */
618 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
619 
620 #if YYDEBUG || 0
621 /* The user-facing name of the symbol whose (internal) number is
622  YYSYMBOL. No bounds checking. */
623 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
624 
625 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
626  First, the terminals, then, starting at YYNTOKENS, nonterminals. */
627 static const char *const yytname[] =
628 {
629  "\"end of file\"", "error", "\"invalid token\"", "UNKNOWN_TOK",
630  "REFERENCE_TOK", "QI_REF_TOK", "HI_REF_TOK", "SI_REF_TOK", "DI_REF_TOK",
631  "SF_REF_TOK", "DF_REF_TOK", "SC_REF_TOK", "DC_REF_TOK", "LOG_REF_TOK",
632  "CONSTANT_TOK", "ASSIGN_OPERATOR_TOK", "PLUS_OPERATOR_TOK",
633  "MINUS_OPERATOR_TOK", "UNARY_MINUS_OPERATOR_TOK",
634  "MULTIPLY_OPERATOR_TOK", "MULADD_OPERATOR_TOK", "DIVIDE_OPERATOR_TOK",
635  "INVERSE_OPERATOR_TOK", "POWER_OPERATOR_TOK", "MODULO_OPERATOR_TOK",
636  "MIN_OPERATOR_TOK", "COS_OPERATOR_TOK", "SIN_OPERATOR_TOK",
637  "MIN0_OPERATOR_TOK", "AMIN1_OPERATOR_TOK", "DMIN1_OPERATOR_TOK",
638  "MAX_OPERATOR_TOK", "MAX0_OPERATOR_TOK", "AMAX1_OPERATOR_TOK",
639  "DMAX1_OPERATOR_TOK", "ABS_OPERATOR_TOK", "IABS_OPERATOR_TOK",
640  "DABS_OPERATOR_TOK", "CABS_OPERATOR_TOK", "AND_OPERATOR_TOK",
641  "OR_OPERATOR_TOK", "NOT_OPERATOR_TOK", "NON_EQUAL_OPERATOR_TOK",
642  "EQUIV_OPERATOR_TOK", "NON_EQUIV_OPERATOR_TOK", "TRUE_OPERATOR_TOK",
643  "FALSE_OPERATOR_TOK", "GREATER_OR_EQUAL_OPERATOR_TOK",
644  "GREATER_THAN_OPERATOR_TOK", "LESS_OR_EQUAL_OPERATOR_TOK",
645  "LESS_THAN_OPERATOR_TOK", "EQUAL_OPERATOR_TOK", "PHI_TOK", "INTEGER_TOK",
646  "FLOAT_TOK", "IDENTIFIER_TOK", "'{'", "'}'", "':'", "','", "';'", "'['",
647  "']'", "$accept", "definitions", "definitions_list", "definition",
648  "operation", "opcodes_list", "opcode", "pattern", "types_list", "type",
649  "tokens_list", "token", "merge_arguments", "arguments_list", "argument",
650  "transformation", "mappings", YY_NULLPTR
651 };
652 
653 static const char *
655 {
656  return yytname[yysymbol];
657 }
658 #endif
659 
660 #define YYPACT_NINF (-56)
661 
662 #define yypact_value_is_default(Yyn) \
663  ((Yyn) == YYPACT_NINF)
664 
665 #define YYTABLE_NINF (-1)
666 
667 #define yytable_value_is_error(Yyn) \
668  0
669 
670 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
671  STATE-NUM. */
672 static const yytype_int8 yypact[] =
673 {
674  -56, 8, -46, -56, -55, -56, -56, -56, -56, -56,
675  -4, 5, -53, -56, -56, -56, -56, -56, -56, -56,
676  -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
677  -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
678  -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
679  -56, -56, -56, 1, -4, 2, 4, -56, -56, 7,
680  3, -56, 11, 44, -56, 6, -56, -56, 9, -56,
681  -56, -56, -56, -56, -56, -56, -56, -56, 10, 44,
682  7, 13, 14, -56, -56, 12, 15, 17, -56, 18,
683  19, 16, 20, 21, -56, -52, -56, 26, -56
684 };
685 
686 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
687  Performed when YYTABLE does not specify something else to do. Zero
688  means the default is an error. */
689 static const yytype_int8 yydefact[] =
690 {
691  4, 0, 2, 1, 0, 3, 5, 6, 7, 10,
692  25, 0, 0, 26, 27, 28, 29, 30, 31, 32,
693  33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
694  43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
695  53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
696  63, 64, 65, 67, 25, 0, 0, 8, 9, 71,
697  0, 24, 0, 14, 70, 66, 69, 12, 0, 15,
698  16, 17, 18, 19, 20, 21, 22, 23, 0, 14,
699  71, 0, 0, 13, 68, 0, 0, 0, 11, 0,
700  0, 0, 0, 0, 74, 0, 72, 0, 73
701 };
702 
703 /* YYPGOTO[NTERM-NUM]. */
704 static const yytype_int8 yypgoto[] =
705 {
706  -56, -56, -56, -56, -56, -56, -56, -56, -6, -56,
707  27, -56, -56, -56, 0, -56, -56
708 };
709 
710 /* YYDEFGOTO[NTERM-NUM]. */
711 static const yytype_int8 yydefgoto[] =
712 {
713  0, 1, 2, 5, 6, 12, 58, 7, 78, 79,
714  53, 54, 60, 65, 66, 8, 95
715 };
716 
717 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
718  positive, shift that token. If negative, reduce the rule whose
719  number is the opposite. If YYTABLE_NINF, syntax error. */
720 static const yytype_int8 yytable[] =
721 {
722  13, 9, 56, 10, 57, 96, 11, 97, 3, 4,
723  14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
724  24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
725  34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
726  44, 45, 46, 47, 48, 49, 50, 51, 52, 69,
727  70, 71, 72, 73, 74, 75, 76, 77, 55, 59,
728  64, 62, 63, 67, 68, 80, 85, 86, 81, 82,
729  89, 87, 91, 83, 94, 88, 93, 90, 92, 98,
730  84, 61
731 };
732 
733 static const yytype_int8 yycheck[] =
734 {
735  4, 56, 55, 58, 57, 57, 61, 59, 0, 55,
736  14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
737  24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
738  34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
739  44, 45, 46, 47, 48, 49, 50, 51, 52, 5,
740  6, 7, 8, 9, 10, 11, 12, 13, 53, 58,
741  53, 59, 58, 60, 53, 59, 53, 53, 59, 59,
742  53, 59, 53, 79, 53, 60, 56, 59, 62, 53,
743  80, 54
744 };
745 
746 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
747  state STATE-NUM. */
748 static const yytype_int8 yystos[] =
749 {
750  0, 64, 65, 0, 55, 66, 67, 70, 78, 56,
751  58, 61, 68, 4, 14, 15, 16, 17, 18, 19,
752  20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
753  30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
754  40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
755  50, 51, 52, 73, 74, 53, 55, 57, 69, 58,
756  75, 73, 59, 58, 53, 76, 77, 60, 53, 5,
757  6, 7, 8, 9, 10, 11, 12, 13, 71, 72,
758  59, 59, 59, 71, 77, 53, 53, 59, 60, 53,
759  59, 53, 62, 56, 53, 79, 57, 59, 53
760 };
761 
762 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
763 static const yytype_int8 yyr1[] =
764 {
765  0, 63, 64, 65, 65, 66, 66, 66, 67, 68,
766  68, 69, 70, 71, 71, 72, 72, 72, 72, 72,
767  72, 72, 72, 72, 73, 73, 74, 74, 74, 74,
768  74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
769  74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
770  74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
771  74, 74, 74, 74, 74, 74, 75, 75, 76, 76,
772  77, 77, 78, 79, 79
773 };
774 
775 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
776 static const yytype_int8 yyr2[] =
777 {
778  0, 2, 1, 2, 0, 1, 1, 1, 4, 2,
779  0, 6, 5, 2, 0, 1, 1, 1, 1, 1,
780  1, 1, 1, 1, 2, 0, 1, 1, 1, 1,
781  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
782  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
783  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
784  1, 1, 1, 1, 1, 1, 2, 0, 3, 1,
785  1, 0, 15, 3, 1
786 };
787 
788 
789 enum { YYENOMEM = -2 };
790 
791 #define yyerrok (yyerrstatus = 0)
792 #define yyclearin (yychar = YYEMPTY)
793 
794 #define YYACCEPT goto yyacceptlab
795 #define YYABORT goto yyabortlab
796 #define YYERROR goto yyerrorlab
797 #define YYNOMEM goto yyexhaustedlab
798 
799 
800 #define YYRECOVERING() (!!yyerrstatus)
801 
802 #define YYBACKUP(Token, Value) \
803  do \
804  if (yychar == YYEMPTY) \
805  { \
806  yychar = (Token); \
807  yylval = (Value); \
808  YYPOPSTACK (yylen); \
809  yystate = *yyssp; \
810  goto yybackup; \
811  } \
812  else \
813  { \
814  yyerror (YY_("syntax error: cannot back up")); \
815  YYERROR; \
816  } \
817  while (0)
818 
819 /* Backward compatibility with an undocumented macro.
820  Use YYerror or YYUNDEF. */
821 #define YYERRCODE YYUNDEF
822 
823 
824 /* Enable debugging if requested. */
825 #if YYDEBUG
826 
827 # ifndef YYFPRINTF
828 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
829 # define YYFPRINTF fprintf
830 # endif
831 
832 # define YYDPRINTF(Args) \
833 do { \
834  if (yydebug) \
835  YYFPRINTF Args; \
836 } while (0)
837 
838 
839 
840 
841 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
842 do { \
843  if (yydebug) \
844  { \
845  YYFPRINTF (stderr, "%s ", Title); \
846  yy_symbol_print (stderr, \
847  Kind, Value); \
848  YYFPRINTF (stderr, "\n"); \
849  } \
850 } while (0)
851 
852 
853 /*-----------------------------------.
854 | Print this symbol's value on YYO. |
855 `-----------------------------------*/
856 
857 static void
858 yy_symbol_value_print (FILE *yyo,
859  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
860 {
861  FILE *yyoutput = yyo;
862  YY_USE (yyoutput);
863  if (!yyvaluep)
864  return;
866  YY_USE (yykind);
868 }
869 
870 
871 /*---------------------------.
872 | Print this symbol on YYO. |
873 `---------------------------*/
874 
875 static void
876 yy_symbol_print (FILE *yyo,
877  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
878 {
879  YYFPRINTF (yyo, "%s %s (",
880  yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
881 
882  yy_symbol_value_print (yyo, yykind, yyvaluep);
883  YYFPRINTF (yyo, ")");
884 }
885 
886 /*------------------------------------------------------------------.
887 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
888 | TOP (included). |
889 `------------------------------------------------------------------*/
890 
891 static void
892 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
893 {
894  YYFPRINTF (stderr, "Stack now");
895  for (; yybottom <= yytop; yybottom++)
896  {
897  int yybot = *yybottom;
898  YYFPRINTF (stderr, " %d", yybot);
899  }
900  YYFPRINTF (stderr, "\n");
901 }
902 
903 # define YY_STACK_PRINT(Bottom, Top) \
904 do { \
905  if (yydebug) \
906  yy_stack_print ((Bottom), (Top)); \
907 } while (0)
908 
909 
910 /*------------------------------------------------.
911 | Report that the YYRULE is going to be reduced. |
912 `------------------------------------------------*/
913 
914 static void
915 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
916  int yyrule)
917 {
918  int yylno = yyrline[yyrule];
919  int yynrhs = yyr2[yyrule];
920  int yyi;
921  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
922  yyrule - 1, yylno);
923  /* The symbols being reduced. */
924  for (yyi = 0; yyi < yynrhs; yyi++)
925  {
926  YYFPRINTF (stderr, " $%d = ", yyi + 1);
927  yy_symbol_print (stderr,
928  YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
929  &yyvsp[(yyi + 1) - (yynrhs)]);
930  YYFPRINTF (stderr, "\n");
931  }
932 }
933 
934 # define YY_REDUCE_PRINT(Rule) \
935 do { \
936  if (yydebug) \
937  yy_reduce_print (yyssp, yyvsp, Rule); \
938 } while (0)
939 
940 /* Nonzero means print parse trace. It is left uninitialized so that
941  multiple parsers can coexist. */
942 int yydebug;
943 #else /* !YYDEBUG */
944 # define YYDPRINTF(Args) ((void) 0)
945 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
946 # define YY_STACK_PRINT(Bottom, Top)
947 # define YY_REDUCE_PRINT(Rule)
948 #endif /* !YYDEBUG */
949 
950 
951 /* YYINITDEPTH -- initial size of the parser's stacks. */
952 #ifndef YYINITDEPTH
953 # define YYINITDEPTH 200
954 #endif
955 
956 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
957  if the built-in stack extension method is used).
958 
959  Do not make this value too large; the results are undefined if
960  YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
961  evaluated with infinite-precision integer arithmetic. */
962 
963 #ifndef YYMAXDEPTH
964 # define YYMAXDEPTH 10000
965 #endif
966 
967 
968 
969 
970 
971 
972 /*-----------------------------------------------.
973 | Release the memory associated to this symbol. |
974 `-----------------------------------------------*/
975 
976 static void
977 yydestruct (const char *yymsg,
978  yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
979 {
980  YY_USE (yyvaluep);
981  if (!yymsg)
982  yymsg = "Deleting";
983  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
984 
986  YY_USE (yykind);
988 }
989 
990 
991 /* Lookahead token kind. */
992 int yychar;
993 
994 /* The semantic value of the lookahead symbol. */
996 /* Number of syntax errors so far. */
998 
999 
1000 
1001 
1002 /*----------.
1003 | yyparse. |
1004 `----------*/
1005 
1006 int
1007 yyparse (void)
1008 {
1009  yy_state_fast_t yystate = 0;
1010  /* Number of tokens to shift before error messages enabled. */
1011  int yyerrstatus = 0;
1012 
1013  /* Refer to the stacks through separate pointers, to allow yyoverflow
1014  to reallocate them elsewhere. */
1015 
1016  /* Their size. */
1017  YYPTRDIFF_T yystacksize = YYINITDEPTH;
1018 
1019  /* The state stack: array, bottom, top. */
1020  yy_state_t yyssa[YYINITDEPTH];
1021  yy_state_t *yyss = yyssa;
1022  yy_state_t *yyssp = yyss;
1023 
1024  /* The semantic value stack: array, bottom, top. */
1025  YYSTYPE yyvsa[YYINITDEPTH];
1026  YYSTYPE *yyvs = yyvsa;
1027  YYSTYPE *yyvsp = yyvs;
1028 
1029  int yyn;
1030  /* The return value of yyparse. */
1031  int yyresult;
1032  /* Lookahead symbol kind. */
1034  /* The variables used to return semantic value and location from the
1035  action routines. */
1036  YYSTYPE yyval;
1037 
1038 
1039 
1040 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1041 
1042  /* The number of symbols on the RHS of the reduced rule.
1043  Keep to zero when no symbol should be popped. */
1044  int yylen = 0;
1045 
1046  YYDPRINTF ((stderr, "Starting parse\n"));
1047 
1048  yychar = YYEMPTY; /* Cause a token to be read. */
1049 
1050  goto yysetstate;
1051 
1052 
1053 /*------------------------------------------------------------.
1054 | yynewstate -- push a new state, which is found in yystate. |
1055 `------------------------------------------------------------*/
1056 yynewstate:
1057  /* In all cases, when you get here, the value and location stacks
1058  have just been pushed. So pushing a state here evens the stacks. */
1059  yyssp++;
1060 
1061 
1062 /*--------------------------------------------------------------------.
1063 | yysetstate -- set current state (the top of the stack) to yystate. |
1064 `--------------------------------------------------------------------*/
1065 yysetstate:
1066  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1067  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
1069  *yyssp = YY_CAST (yy_state_t, yystate);
1071  YY_STACK_PRINT (yyss, yyssp);
1072 
1073  if (yyss + yystacksize - 1 <= yyssp)
1074 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
1075  YYNOMEM;
1076 #else
1077  {
1078  /* Get the current used size of the three stacks, in elements. */
1079  YYPTRDIFF_T yysize = yyssp - yyss + 1;
1080 
1081 # if defined yyoverflow
1082  {
1083  /* Give user a chance to reallocate the stack. Use copies of
1084  these so that the &'s don't force the real ones into
1085  memory. */
1086  yy_state_t *yyss1 = yyss;
1087  YYSTYPE *yyvs1 = yyvs;
1088 
1089  /* Each stack pointer address is followed by the size of the
1090  data in use in that stack, in bytes. This used to be a
1091  conditional around just the two extra args, but that might
1092  be undefined if yyoverflow is a macro. */
1093  yyoverflow (YY_("memory exhausted"),
1094  &yyss1, yysize * YYSIZEOF (*yyssp),
1095  &yyvs1, yysize * YYSIZEOF (*yyvsp),
1096  &yystacksize);
1097  yyss = yyss1;
1098  yyvs = yyvs1;
1099  }
1100 # else /* defined YYSTACK_RELOCATE */
1101  /* Extend the stack our own way. */
1102  if (YYMAXDEPTH <= yystacksize)
1103  YYNOMEM;
1104  yystacksize *= 2;
1105  if (YYMAXDEPTH < yystacksize)
1106  yystacksize = YYMAXDEPTH;
1107 
1108  {
1109  yy_state_t *yyss1 = yyss;
1110  union yyalloc *yyptr =
1111  YY_CAST (union yyalloc *,
1112  YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
1113  if (! yyptr)
1114  YYNOMEM;
1115  YYSTACK_RELOCATE (yyss_alloc, yyss);
1116  YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1117 # undef YYSTACK_RELOCATE
1118  if (yyss1 != yyssa)
1119  YYSTACK_FREE (yyss1);
1120  }
1121 # endif
1122 
1123  yyssp = yyss + yysize - 1;
1124  yyvsp = yyvs + yysize - 1;
1125 
1127  YYDPRINTF ((stderr, "Stack size increased to %ld\n",
1128  YY_CAST (long, yystacksize)));
1130 
1131  if (yyss + yystacksize - 1 <= yyssp)
1132  YYABORT;
1133  }
1134 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
1135 
1136 
1137  if (yystate == YYFINAL)
1138  YYACCEPT;
1139 
1140  goto yybackup;
1141 
1142 
1143 /*-----------.
1144 | yybackup. |
1145 `-----------*/
1146 yybackup:
1147  /* Do appropriate processing given the current state. Read a
1148  lookahead token if we need one and don't already have one. */
1149 
1150  /* First try to decide what to do without reference to lookahead token. */
1151  yyn = yypact[yystate];
1152  if (yypact_value_is_default (yyn))
1153  goto yydefault;
1154 
1155  /* Not known => get a lookahead token if don't already have one. */
1156 
1157  /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
1158  if (yychar == YYEMPTY)
1159  {
1160  YYDPRINTF ((stderr, "Reading a token\n"));
1161  yychar = yylex ();
1162  }
1163 
1164  if (yychar <= YYEOF)
1165  {
1166  yychar = YYEOF;
1167  yytoken = YYSYMBOL_YYEOF;
1168  YYDPRINTF ((stderr, "Now at end of input.\n"));
1169  }
1170  else if (yychar == YYerror)
1171  {
1172  /* The scanner already issued an error message, process directly
1173  to error recovery. But do not keep the error token as
1174  lookahead, it is too special and may lead us to an endless
1175  loop in error recovery. */
1176  yychar = YYUNDEF;
1177  yytoken = YYSYMBOL_YYerror;
1178  goto yyerrlab1;
1179  }
1180  else
1181  {
1182  yytoken = YYTRANSLATE (yychar);
1183  YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1184  }
1185 
1186  /* If the proper action on seeing token YYTOKEN is to reduce or to
1187  detect an error, take that action. */
1188  yyn += yytoken;
1189  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1190  goto yydefault;
1191  yyn = yytable[yyn];
1192  if (yyn <= 0)
1193  {
1194  if (yytable_value_is_error (yyn))
1195  goto yyerrlab;
1196  yyn = -yyn;
1197  goto yyreduce;
1198  }
1199 
1200  /* Count tokens shifted since error; after three, turn off error
1201  status. */
1202  if (yyerrstatus)
1203  yyerrstatus--;
1204 
1205  /* Shift the lookahead token. */
1206  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1207  yystate = yyn;
1209  *++yyvsp = yylval;
1211 
1212  /* Discard the shifted token. */
1213  yychar = YYEMPTY;
1214  goto yynewstate;
1215 
1216 
1217 /*-----------------------------------------------------------.
1218 | yydefault -- do the default action for the current state. |
1219 `-----------------------------------------------------------*/
1220 yydefault:
1221  yyn = yydefact[yystate];
1222  if (yyn == 0)
1223  goto yyerrlab;
1224  goto yyreduce;
1225 
1226 
1227 /*-----------------------------.
1228 | yyreduce -- do a reduction. |
1229 `-----------------------------*/
1230 yyreduce:
1231  /* yyn is the number of a rule to reduce with. */
1232  yylen = yyr2[yyn];
1233 
1234  /* If YYLEN is nonzero, implement the default value of the action:
1235  '$$ = $1'.
1236 
1237  Otherwise, the following line sets YYVAL to garbage.
1238  This behavior is undocumented and Bison
1239  users should not rely upon it. Assigning to YYVAL
1240  unconditionally makes the parser a bit smaller, and it avoids a
1241  GCC warning that YYVAL may be used uninitialized. */
1242  yyval = yyvsp[1-yylen];
1243 
1244 
1245  YY_REDUCE_PRINT (yyn);
1246  switch (yyn)
1247  {
1248  case 8: /* operation: IDENTIFIER_TOK '{' opcodes_list '}' */
1249 #line 166 "tmp.y"
1250  {
1251  insert_opcodeClass((yyvsp[-3].strVal), opcode_argc, (yyvsp[-1].opcodesList));
1252  opcode_argc=0;
1253  }
1254 #line 1255 "patterns.c"
1255  break;
1256 
1257  case 9: /* opcodes_list: opcodes_list opcode */
1258 #line 172 "tmp.y"
1259  { (yyval.opcodesList) = CONS(OPCODE, (yyvsp[0].opVal), (yyvsp[-1].opcodesList)); }
1260 #line 1261 "patterns.c"
1261  break;
1262 
1263  case 10: /* opcodes_list: %empty */
1264 #line 173 "tmp.y"
1265  { (yyval.opcodesList) = NIL; }
1266 #line 1267 "patterns.c"
1267  break;
1268 
1269  case 11: /* opcode: IDENTIFIER_TOK ':' types_list ',' INTEGER_TOK ';' */
1270 #line 177 "tmp.y"
1271  {
1272  if(opcode_argc<=0)opcode_argc=gen_length((yyvsp[-3].typeList));
1273  else pips_assert("all opcode of the same operation have the same lenght\n",opcode_argc == gen_length((yyvsp[-3].typeList)));
1274  (yyval.opVal) = generate_opcode((yyvsp[-5].strVal), (yyvsp[-3].typeList), (yyvsp[-1].iVal));
1275  }
1276 #line 1277 "patterns.c"
1277  break;
1278 
1279  case 12: /* pattern: IDENTIFIER_TOK ':' tokens_list merge_arguments ';' */
1280 #line 185 "tmp.y"
1281  {
1282  insert_pattern((yyvsp[-4].strVal), (yyvsp[-2].tokenList), (yyvsp[-1].argsList));
1283  }
1284 #line 1285 "patterns.c"
1285  break;
1286 
1287  case 13: /* types_list: type types_list */
1288 #line 190 "tmp.y"
1289  { (yyval.typeList) = CONS(int, (yyvsp[-1].typeId), (yyvsp[0].typeList)); }
1290 #line 1291 "patterns.c"
1291  break;
1292 
1293  case 14: /* types_list: %empty */
1294 #line 191 "tmp.y"
1295  { (yyval.typeList) = NIL; }
1296 #line 1297 "patterns.c"
1297  break;
1298 
1299  case 15: /* type: QI_REF_TOK */
1300 #line 194 "tmp.y"
1301  { (yyval.typeId) = QI_REF_TOK; }
1302 #line 1303 "patterns.c"
1303  break;
1304 
1305  case 16: /* type: HI_REF_TOK */
1306 #line 195 "tmp.y"
1307  { (yyval.typeId) = HI_REF_TOK; }
1308 #line 1309 "patterns.c"
1309  break;
1310 
1311  case 17: /* type: SI_REF_TOK */
1312 #line 196 "tmp.y"
1313  { (yyval.typeId) = SI_REF_TOK; }
1314 #line 1315 "patterns.c"
1315  break;
1316 
1317  case 18: /* type: DI_REF_TOK */
1318 #line 197 "tmp.y"
1319  { (yyval.typeId) = DI_REF_TOK; }
1320 #line 1321 "patterns.c"
1321  break;
1322 
1323  case 19: /* type: SF_REF_TOK */
1324 #line 198 "tmp.y"
1325  { (yyval.typeId) = SF_REF_TOK; }
1326 #line 1327 "patterns.c"
1327  break;
1328 
1329  case 20: /* type: DF_REF_TOK */
1330 #line 199 "tmp.y"
1331  { (yyval.typeId) = DF_REF_TOK; }
1332 #line 1333 "patterns.c"
1333  break;
1334 
1335  case 21: /* type: SC_REF_TOK */
1336 #line 200 "tmp.y"
1337  { (yyval.typeId) = SC_REF_TOK; }
1338 #line 1339 "patterns.c"
1339  break;
1340 
1341  case 22: /* type: DC_REF_TOK */
1342 #line 201 "tmp.y"
1343  { (yyval.typeId) = DC_REF_TOK; }
1344 #line 1345 "patterns.c"
1345  break;
1346 
1347  case 23: /* type: LOG_REF_TOK */
1348 #line 202 "tmp.y"
1349  { (yyval.typeId) = LOG_REF_TOK; }
1350 #line 1351 "patterns.c"
1351  break;
1352 
1353  case 24: /* tokens_list: token tokens_list */
1354 #line 205 "tmp.y"
1355  {
1356  (yyval.tokenList) = CONS(TOKEN, (void*)(yyvsp[-1].tokenId), (yyvsp[0].tokenList));
1357  }
1358 #line 1359 "patterns.c"
1359  break;
1360 
1361  case 25: /* tokens_list: %empty */
1362 #line 208 "tmp.y"
1363  { (yyval.tokenList) = NIL; }
1364 #line 1365 "patterns.c"
1365  break;
1366 
1367  case 26: /* token: REFERENCE_TOK */
1368 #line 211 "tmp.y"
1369  { (yyval.tokenId) = REFERENCE_TOK; }
1370 #line 1371 "patterns.c"
1371  break;
1372 
1373  case 27: /* token: CONSTANT_TOK */
1374 #line 212 "tmp.y"
1375  { (yyval.tokenId) = CONSTANT_TOK; }
1376 #line 1377 "patterns.c"
1377  break;
1378 
1379  case 28: /* token: ASSIGN_OPERATOR_TOK */
1380 #line 213 "tmp.y"
1381  { (yyval.tokenId) = ASSIGN_OPERATOR_TOK; }
1382 #line 1383 "patterns.c"
1383  break;
1384 
1385  case 29: /* token: PLUS_OPERATOR_TOK */
1386 #line 214 "tmp.y"
1387  { (yyval.tokenId) = PLUS_OPERATOR_TOK; }
1388 #line 1389 "patterns.c"
1389  break;
1390 
1391  case 30: /* token: MINUS_OPERATOR_TOK */
1392 #line 215 "tmp.y"
1393  { (yyval.tokenId) = MINUS_OPERATOR_TOK; }
1394 #line 1395 "patterns.c"
1395  break;
1396 
1397  case 31: /* token: UNARY_MINUS_OPERATOR_TOK */
1398 #line 216 "tmp.y"
1399  { (yyval.tokenId) = UNARY_MINUS_OPERATOR_TOK; }
1400 #line 1401 "patterns.c"
1401  break;
1402 
1403  case 32: /* token: MULTIPLY_OPERATOR_TOK */
1404 #line 217 "tmp.y"
1405  { (yyval.tokenId) = MULTIPLY_OPERATOR_TOK; }
1406 #line 1407 "patterns.c"
1407  break;
1408 
1409  case 33: /* token: MULADD_OPERATOR_TOK */
1410 #line 218 "tmp.y"
1411  { (yyval.tokenId) = MULADD_OPERATOR_TOK; }
1412 #line 1413 "patterns.c"
1413  break;
1414 
1415  case 34: /* token: DIVIDE_OPERATOR_TOK */
1416 #line 219 "tmp.y"
1417  { (yyval.tokenId) = DIVIDE_OPERATOR_TOK; }
1418 #line 1419 "patterns.c"
1419  break;
1420 
1421  case 35: /* token: INVERSE_OPERATOR_TOK */
1422 #line 220 "tmp.y"
1423  { (yyval.tokenId) = INVERSE_OPERATOR_TOK; }
1424 #line 1425 "patterns.c"
1425  break;
1426 
1427  case 36: /* token: POWER_OPERATOR_TOK */
1428 #line 221 "tmp.y"
1429  { (yyval.tokenId) = POWER_OPERATOR_TOK; }
1430 #line 1431 "patterns.c"
1431  break;
1432 
1433  case 37: /* token: MODULO_OPERATOR_TOK */
1434 #line 222 "tmp.y"
1435  { (yyval.tokenId) = MODULO_OPERATOR_TOK; }
1436 #line 1437 "patterns.c"
1437  break;
1438 
1439  case 38: /* token: MIN_OPERATOR_TOK */
1440 #line 223 "tmp.y"
1441  { (yyval.tokenId) = MIN_OPERATOR_TOK; }
1442 #line 1443 "patterns.c"
1443  break;
1444 
1445  case 39: /* token: COS_OPERATOR_TOK */
1446 #line 224 "tmp.y"
1447  { (yyval.tokenId) = COS_OPERATOR_TOK; }
1448 #line 1449 "patterns.c"
1449  break;
1450 
1451  case 40: /* token: SIN_OPERATOR_TOK */
1452 #line 225 "tmp.y"
1453  { (yyval.tokenId) = SIN_OPERATOR_TOK; }
1454 #line 1455 "patterns.c"
1455  break;
1456 
1457  case 41: /* token: MIN0_OPERATOR_TOK */
1458 #line 226 "tmp.y"
1459  { (yyval.tokenId) = MIN0_OPERATOR_TOK; }
1460 #line 1461 "patterns.c"
1461  break;
1462 
1463  case 42: /* token: AMIN1_OPERATOR_TOK */
1464 #line 227 "tmp.y"
1465  { (yyval.tokenId) = AMIN1_OPERATOR_TOK; }
1466 #line 1467 "patterns.c"
1467  break;
1468 
1469  case 43: /* token: DMIN1_OPERATOR_TOK */
1470 #line 228 "tmp.y"
1471  { (yyval.tokenId) = DMIN1_OPERATOR_TOK; }
1472 #line 1473 "patterns.c"
1473  break;
1474 
1475  case 44: /* token: MAX_OPERATOR_TOK */
1476 #line 229 "tmp.y"
1477  { (yyval.tokenId) = MAX_OPERATOR_TOK; }
1478 #line 1479 "patterns.c"
1479  break;
1480 
1481  case 45: /* token: MAX0_OPERATOR_TOK */
1482 #line 230 "tmp.y"
1483  { (yyval.tokenId) = MAX0_OPERATOR_TOK; }
1484 #line 1485 "patterns.c"
1485  break;
1486 
1487  case 46: /* token: AMAX1_OPERATOR_TOK */
1488 #line 231 "tmp.y"
1489  { (yyval.tokenId) = AMAX1_OPERATOR_TOK; }
1490 #line 1491 "patterns.c"
1491  break;
1492 
1493  case 47: /* token: DMAX1_OPERATOR_TOK */
1494 #line 232 "tmp.y"
1495  { (yyval.tokenId) = DMAX1_OPERATOR_TOK; }
1496 #line 1497 "patterns.c"
1497  break;
1498 
1499  case 48: /* token: ABS_OPERATOR_TOK */
1500 #line 233 "tmp.y"
1501  { (yyval.tokenId) = ABS_OPERATOR_TOK; }
1502 #line 1503 "patterns.c"
1503  break;
1504 
1505  case 49: /* token: IABS_OPERATOR_TOK */
1506 #line 234 "tmp.y"
1507  { (yyval.tokenId) = IABS_OPERATOR_TOK; }
1508 #line 1509 "patterns.c"
1509  break;
1510 
1511  case 50: /* token: DABS_OPERATOR_TOK */
1512 #line 235 "tmp.y"
1513  { (yyval.tokenId) = DABS_OPERATOR_TOK; }
1514 #line 1515 "patterns.c"
1515  break;
1516 
1517  case 51: /* token: CABS_OPERATOR_TOK */
1518 #line 236 "tmp.y"
1519  { (yyval.tokenId) = CABS_OPERATOR_TOK; }
1520 #line 1521 "patterns.c"
1521  break;
1522 
1523  case 52: /* token: AND_OPERATOR_TOK */
1524 #line 237 "tmp.y"
1525  { (yyval.tokenId) = AND_OPERATOR_TOK; }
1526 #line 1527 "patterns.c"
1527  break;
1528 
1529  case 53: /* token: OR_OPERATOR_TOK */
1530 #line 238 "tmp.y"
1531  { (yyval.tokenId) = OR_OPERATOR_TOK; }
1532 #line 1533 "patterns.c"
1533  break;
1534 
1535  case 54: /* token: NOT_OPERATOR_TOK */
1536 #line 239 "tmp.y"
1537  { (yyval.tokenId) = NOT_OPERATOR_TOK; }
1538 #line 1539 "patterns.c"
1539  break;
1540 
1541  case 55: /* token: NON_EQUAL_OPERATOR_TOK */
1542 #line 240 "tmp.y"
1543  { (yyval.tokenId) = NON_EQUAL_OPERATOR_TOK; }
1544 #line 1545 "patterns.c"
1545  break;
1546 
1547  case 56: /* token: EQUIV_OPERATOR_TOK */
1548 #line 241 "tmp.y"
1549  { (yyval.tokenId) = EQUIV_OPERATOR_TOK; }
1550 #line 1551 "patterns.c"
1551  break;
1552 
1553  case 57: /* token: NON_EQUIV_OPERATOR_TOK */
1554 #line 242 "tmp.y"
1555  { (yyval.tokenId) = NON_EQUIV_OPERATOR_TOK; }
1556 #line 1557 "patterns.c"
1557  break;
1558 
1559  case 58: /* token: TRUE_OPERATOR_TOK */
1560 #line 243 "tmp.y"
1561  { (yyval.tokenId) = TRUE_OPERATOR_TOK; }
1562 #line 1563 "patterns.c"
1563  break;
1564 
1565  case 59: /* token: FALSE_OPERATOR_TOK */
1566 #line 244 "tmp.y"
1567  { (yyval.tokenId) = FALSE_OPERATOR_TOK; }
1568 #line 1569 "patterns.c"
1569  break;
1570 
1571  case 60: /* token: GREATER_OR_EQUAL_OPERATOR_TOK */
1572 #line 245 "tmp.y"
1573  { (yyval.tokenId) = GREATER_OR_EQUAL_OPERATOR_TOK; }
1574 #line 1575 "patterns.c"
1575  break;
1576 
1577  case 61: /* token: GREATER_THAN_OPERATOR_TOK */
1578 #line 246 "tmp.y"
1579  { (yyval.tokenId) = GREATER_THAN_OPERATOR_TOK; }
1580 #line 1581 "patterns.c"
1581  break;
1582 
1583  case 62: /* token: LESS_OR_EQUAL_OPERATOR_TOK */
1584 #line 247 "tmp.y"
1585  { (yyval.tokenId) = LESS_OR_EQUAL_OPERATOR_TOK; }
1586 #line 1587 "patterns.c"
1587  break;
1588 
1589  case 63: /* token: LESS_THAN_OPERATOR_TOK */
1590 #line 248 "tmp.y"
1591  { (yyval.tokenId) = LESS_THAN_OPERATOR_TOK; }
1592 #line 1593 "patterns.c"
1593  break;
1594 
1595  case 64: /* token: EQUAL_OPERATOR_TOK */
1596 #line 249 "tmp.y"
1597  { (yyval.tokenId) = EQUAL_OPERATOR_TOK; }
1598 #line 1599 "patterns.c"
1599  break;
1600 
1601  case 65: /* token: PHI_TOK */
1602 #line 250 "tmp.y"
1603  { (yyval.tokenId) = PHI_TOK; }
1604 #line 1605 "patterns.c"
1605  break;
1606 
1607  case 66: /* merge_arguments: ':' arguments_list */
1608 #line 253 "tmp.y"
1609  { (yyval.argsList) = (yyvsp[0].argsList); }
1610 #line 1611 "patterns.c"
1611  break;
1612 
1613  case 67: /* merge_arguments: %empty */
1614 #line 254 "tmp.y"
1615  { (yyval.argsList) = NIL; }
1616 #line 1617 "patterns.c"
1617  break;
1618 
1619  case 68: /* arguments_list: arguments_list ',' argument */
1620 #line 258 "tmp.y"
1621  { (yyval.argsList) = CONS(ARGUMENT, (yyvsp[0].argument), (yyvsp[-2].argsList)); }
1622 #line 1623 "patterns.c"
1623  break;
1624 
1625  case 69: /* arguments_list: argument */
1626 #line 259 "tmp.y"
1627  { (yyval.argsList) = CONS(ARGUMENT, (yyvsp[0].argument), NIL); }
1628 #line 1629 "patterns.c"
1629  break;
1630 
1631  case 70: /* argument: INTEGER_TOK */
1632 #line 262 "tmp.y"
1633  { (yyval.argument) = make_patternArg_static((yyvsp[0].iVal)); }
1634 #line 1635 "patterns.c"
1635  break;
1636 
1637  case 71: /* argument: %empty */
1638 #line 263 "tmp.y"
1639  { (yyval.argument) = make_patternArg_dynamic(); }
1640 #line 1641 "patterns.c"
1641  break;
1642 
1643  case 72: /* transformation: IDENTIFIER_TOK '[' INTEGER_TOK ',' INTEGER_TOK ',' INTEGER_TOK ',' INTEGER_TOK ',' INTEGER_TOK ']' '{' mappings '}' */
1644 #line 267 "tmp.y"
1645  { insert_transformation( (yyvsp[-14].strVal), (yyvsp[-12].iVal), (yyvsp[-10].iVal), (yyvsp[-8].iVal), (yyvsp[-6].iVal), (yyvsp[-4].iVal), (yyvsp[-1].mappingsList)); }
1646 #line 1647 "patterns.c"
1647  break;
1648 
1649  case 73: /* mappings: mappings ',' INTEGER_TOK */
1650 #line 270 "tmp.y"
1651  { (yyval.mappingsList) = CONS(INT, (yyvsp[0].iVal), (yyvsp[-2].mappingsList)); }
1652 #line 1653 "patterns.c"
1653  break;
1654 
1655  case 74: /* mappings: INTEGER_TOK */
1656 #line 271 "tmp.y"
1657  { (yyval.mappingsList) = CONS(INT, (yyvsp[0].iVal), NIL); }
1658 #line 1659 "patterns.c"
1659  break;
1660 
1661 
1662 #line 1663 "patterns.c"
1663 
1664  default: break;
1665  }
1666  /* User semantic actions sometimes alter yychar, and that requires
1667  that yytoken be updated with the new translation. We take the
1668  approach of translating immediately before every use of yytoken.
1669  One alternative is translating here after every semantic action,
1670  but that translation would be missed if the semantic action invokes
1671  YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
1672  if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
1673  incorrect destructor might then be invoked immediately. In the
1674  case of YYERROR or YYBACKUP, subsequent parser actions might lead
1675  to an incorrect destructor call or verbose syntax error message
1676  before the lookahead is translated. */
1677  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
1678 
1679  YYPOPSTACK (yylen);
1680  yylen = 0;
1681 
1682  *++yyvsp = yyval;
1683 
1684  /* Now 'shift' the result of the reduction. Determine what state
1685  that goes to, based on the state we popped back to and the rule
1686  number reduced by. */
1687  {
1688  const int yylhs = yyr1[yyn] - YYNTOKENS;
1689  const int yyi = yypgoto[yylhs] + *yyssp;
1690  yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
1691  ? yytable[yyi]
1692  : yydefgoto[yylhs]);
1693  }
1694 
1695  goto yynewstate;
1696 
1697 
1698 /*--------------------------------------.
1699 | yyerrlab -- here on detecting error. |
1700 `--------------------------------------*/
1701 yyerrlab:
1702  /* Make sure we have latest lookahead translation. See comments at
1703  user semantic actions for why this is necessary. */
1704  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
1705  /* If not already recovering from an error, report this error. */
1706  if (!yyerrstatus)
1707  {
1708  ++yynerrs;
1709  yyerror (YY_("syntax error"));
1710  }
1711 
1712  if (yyerrstatus == 3)
1713  {
1714  /* If just tried and failed to reuse lookahead token after an
1715  error, discard it. */
1716 
1717  if (yychar <= YYEOF)
1718  {
1719  /* Return failure if at end of input. */
1720  if (yychar == YYEOF)
1721  YYABORT;
1722  }
1723  else
1724  {
1725  yydestruct ("Error: discarding",
1726  yytoken, &yylval);
1727  yychar = YYEMPTY;
1728  }
1729  }
1730 
1731  /* Else will try to reuse lookahead token after shifting the error
1732  token. */
1733  goto yyerrlab1;
1734 
1735 
1736 /*---------------------------------------------------.
1737 | yyerrorlab -- error raised explicitly by YYERROR. |
1738 `---------------------------------------------------*/
1739 yyerrorlab:
1740  /* Pacify compilers when the user code never invokes YYERROR and the
1741  label yyerrorlab therefore never appears in user code. */
1742  if (0)
1743  YYERROR;
1744  ++yynerrs;
1745 
1746  /* Do not reclaim the symbols of the rule whose action triggered
1747  this YYERROR. */
1748  YYPOPSTACK (yylen);
1749  yylen = 0;
1750  YY_STACK_PRINT (yyss, yyssp);
1751  yystate = *yyssp;
1752  goto yyerrlab1;
1753 
1754 
1755 /*-------------------------------------------------------------.
1756 | yyerrlab1 -- common code for both syntax error and YYERROR. |
1757 `-------------------------------------------------------------*/
1758 yyerrlab1:
1759  yyerrstatus = 3; /* Each real token shifted decrements this. */
1760 
1761  /* Pop stack until we find a state that shifts the error token. */
1762  for (;;)
1763  {
1764  yyn = yypact[yystate];
1765  if (!yypact_value_is_default (yyn))
1766  {
1767  yyn += YYSYMBOL_YYerror;
1768  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
1769  {
1770  yyn = yytable[yyn];
1771  if (0 < yyn)
1772  break;
1773  }
1774  }
1775 
1776  /* Pop the current state because it cannot handle the error token. */
1777  if (yyssp == yyss)
1778  YYABORT;
1779 
1780 
1781  yydestruct ("Error: popping",
1782  YY_ACCESSING_SYMBOL (yystate), yyvsp);
1783  YYPOPSTACK (1);
1784  yystate = *yyssp;
1785  YY_STACK_PRINT (yyss, yyssp);
1786  }
1787 
1789  *++yyvsp = yylval;
1791 
1792 
1793  /* Shift the error token. */
1794  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
1795 
1796  yystate = yyn;
1797  goto yynewstate;
1798 
1799 
1800 /*-------------------------------------.
1801 | yyacceptlab -- YYACCEPT comes here. |
1802 `-------------------------------------*/
1803 yyacceptlab:
1804  yyresult = 0;
1805  goto yyreturnlab;
1806 
1807 
1808 /*-----------------------------------.
1809 | yyabortlab -- YYABORT comes here. |
1810 `-----------------------------------*/
1811 yyabortlab:
1812  yyresult = 1;
1813  goto yyreturnlab;
1814 
1815 
1816 /*-----------------------------------------------------------.
1817 | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. |
1818 `-----------------------------------------------------------*/
1819 yyexhaustedlab:
1820  yyerror (YY_("memory exhausted"));
1821  yyresult = 2;
1822  goto yyreturnlab;
1823 
1824 
1825 /*----------------------------------------------------------.
1826 | yyreturnlab -- parsing is finished, clean up and return. |
1827 `----------------------------------------------------------*/
1828 yyreturnlab:
1829  if (yychar != YYEMPTY)
1830  {
1831  /* Make sure we have latest lookahead translation. See comments at
1832  user semantic actions for why this is necessary. */
1833  yytoken = YYTRANSLATE (yychar);
1834  yydestruct ("Cleanup: discarding lookahead",
1835  yytoken, &yylval);
1836  }
1837  /* Do not reclaim the symbols of the rule whose action triggered
1838  this YYABORT or YYACCEPT. */
1839  YYPOPSTACK (yylen);
1840  YY_STACK_PRINT (yyss, yyssp);
1841  while (yyssp != yyss)
1842  {
1843  yydestruct ("Cleanup: popping",
1844  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
1845  YYPOPSTACK (1);
1846  }
1847 #ifndef yyoverflow
1848  if (yyss != yyssa)
1849  YYSTACK_FREE (yyss);
1850 #endif
1851 
1852  return yyresult;
1853 }
1854 
1855 #line 273 "tmp.y"
1856 
1857 
1859 {
1860  return 1;
1861 }
1862 
1863 void patterns_yyerror(const char* s)
1864 {
1865  pips_internal_error("patterns parser:%zd: %s\n",sac_lineno, s);
1866 }
patternArg make_patternArg_static(intptr_t _field_)
Definition: sac_private.c:289
patternArg make_patternArg_dynamic(void)
Definition: sac_private.c:292
size_t sac_lineno
patterns.c
Definition: patterns.c:97
#define yyparse
------—.
Definition: patterns.c:68
#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
Definition: patterns.c:390
#define YYMAXDEPTH
YYMAXDEPTH – maximum size the stacks can grow to (effective only if the built-in stack extension meth...
Definition: patterns.c:964
#define YYSTACK_FREE
Definition: patterns.c:452
static const yytype_int8 yytranslate[]
YYTRANSLATE[TOKEN-NUM] – Symbol number corresponding to TOKEN-NUM as returned by yylex.
Definition: patterns.c:566
yysymbol_kind_t
Symbol kind.
Definition: patterns.c:133
@ YYSYMBOL_HI_REF_TOK
QI_REF_TOK
Definition: patterns.c:141
@ YYSYMBOL_GREATER_OR_EQUAL_OPERATOR_TOK
FALSE_OPERATOR_TOK
Definition: patterns.c:182
@ YYSYMBOL_ASSIGN_OPERATOR_TOK
CONSTANT_TOK
Definition: patterns.c:150
@ YYSYMBOL_FALSE_OPERATOR_TOK
TRUE_OPERATOR_TOK
Definition: patterns.c:181
@ YYSYMBOL_MIN_OPERATOR_TOK
MODULO_OPERATOR_TOK
Definition: patterns.c:160
@ YYSYMBOL_NON_EQUAL_OPERATOR_TOK
NOT_OPERATOR_TOK
Definition: patterns.c:177
@ YYSYMBOL_YYUNDEF
error
Definition: patterns.c:137
@ YYSYMBOL_DC_REF_TOK
SC_REF_TOK
Definition: patterns.c:147
@ YYSYMBOL_INVERSE_OPERATOR_TOK
DIVIDE_OPERATOR_TOK
Definition: patterns.c:157
@ YYSYMBOL_60_
','
Definition: patterns.c:195
@ YYSYMBOL_MAX0_OPERATOR_TOK
MAX_OPERATOR_TOK
Definition: patterns.c:167
@ YYSYMBOL_IABS_OPERATOR_TOK
ABS_OPERATOR_TOK
Definition: patterns.c:171
@ YYSYMBOL_TRUE_OPERATOR_TOK
NON_EQUIV_OPERATOR_TOK
Definition: patterns.c:180
@ YYSYMBOL_pattern
opcode
Definition: patterns.c:205
@ YYSYMBOL_58_
'}'
Definition: patterns.c:193
@ YYSYMBOL_ABS_OPERATOR_TOK
DMAX1_OPERATOR_TOK
Definition: patterns.c:170
@ YYSYMBOL_SIN_OPERATOR_TOK
COS_OPERATOR_TOK
Definition: patterns.c:162
@ YYSYMBOL_FLOAT_TOK
INTEGER_TOK
Definition: patterns.c:189
@ YYSYMBOL_arguments_list
merge_arguments
Definition: patterns.c:211
@ YYSYMBOL_YYerror
"end of file"
Definition: patterns.c:136
@ YYSYMBOL_CABS_OPERATOR_TOK
DABS_OPERATOR_TOK
Definition: patterns.c:173
@ YYSYMBOL_operation
definition
Definition: patterns.c:202
@ YYSYMBOL_type
types_list
Definition: patterns.c:207
@ YYSYMBOL_LESS_OR_EQUAL_OPERATOR_TOK
GREATER_THAN_OPERATOR_TOK
Definition: patterns.c:184
@ YYSYMBOL_UNARY_MINUS_OPERATOR_TOK
MINUS_OPERATOR_TOK
Definition: patterns.c:153
@ YYSYMBOL_CONSTANT_TOK
LOG_REF_TOK
Definition: patterns.c:149
@ YYSYMBOL_NOT_OPERATOR_TOK
OR_OPERATOR_TOK
Definition: patterns.c:176
@ YYSYMBOL_EQUIV_OPERATOR_TOK
NON_EQUAL_OPERATOR_TOK
Definition: patterns.c:178
@ YYSYMBOL_MAX_OPERATOR_TOK
DMIN1_OPERATOR_TOK
Definition: patterns.c:166
@ YYSYMBOL_transformation
argument
Definition: patterns.c:213
@ YYSYMBOL_EQUAL_OPERATOR_TOK
LESS_THAN_OPERATOR_TOK
Definition: patterns.c:186
@ YYSYMBOL_MINUS_OPERATOR_TOK
PLUS_OPERATOR_TOK
Definition: patterns.c:152
@ YYSYMBOL_AND_OPERATOR_TOK
CABS_OPERATOR_TOK
Definition: patterns.c:174
@ YYSYMBOL_LESS_THAN_OPERATOR_TOK
LESS_OR_EQUAL_OPERATOR_TOK
Definition: patterns.c:185
@ YYSYMBOL_opcode
opcodes_list
Definition: patterns.c:204
@ YYSYMBOL_mappings
transformation
Definition: patterns.c:214
@ YYSYMBOL_59_
':'
Definition: patterns.c:194
@ YYSYMBOL_DF_REF_TOK
SF_REF_TOK
Definition: patterns.c:145
@ YYSYMBOL_definitions_list
definitions
Definition: patterns.c:200
@ YYSYMBOL_SI_REF_TOK
HI_REF_TOK
Definition: patterns.c:142
@ YYSYMBOL_OR_OPERATOR_TOK
AND_OPERATOR_TOK
Definition: patterns.c:175
@ YYSYMBOL_definition
definitions_list
Definition: patterns.c:201
@ YYSYMBOL_61_
';'
Definition: patterns.c:196
@ YYSYMBOL_SF_REF_TOK
DI_REF_TOK
Definition: patterns.c:144
@ YYSYMBOL_token
tokens_list
Definition: patterns.c:209
@ YYSYMBOL_COS_OPERATOR_TOK
MIN_OPERATOR_TOK
Definition: patterns.c:161
@ YYSYMBOL_SC_REF_TOK
DF_REF_TOK
Definition: patterns.c:146
@ YYSYMBOL_opcodes_list
operation
Definition: patterns.c:203
@ YYSYMBOL_AMIN1_OPERATOR_TOK
MIN0_OPERATOR_TOK
Definition: patterns.c:164
@ YYSYMBOL_IDENTIFIER_TOK
FLOAT_TOK
Definition: patterns.c:190
@ YYSYMBOL_POWER_OPERATOR_TOK
INVERSE_OPERATOR_TOK
Definition: patterns.c:158
@ YYSYMBOL_56_
IDENTIFIER_TOK
Definition: patterns.c:191
@ YYSYMBOL_AMAX1_OPERATOR_TOK
MAX0_OPERATOR_TOK
Definition: patterns.c:168
@ YYSYMBOL_YYACCEPT
']'
Definition: patterns.c:198
@ YYSYMBOL_57_
'{'
Definition: patterns.c:192
@ YYSYMBOL_PLUS_OPERATOR_TOK
ASSIGN_OPERATOR_TOK
Definition: patterns.c:151
@ YYSYMBOL_DMAX1_OPERATOR_TOK
AMAX1_OPERATOR_TOK
Definition: patterns.c:169
@ YYSYMBOL_types_list
pattern
Definition: patterns.c:206
@ YYSYMBOL_YYEOF
Definition: patterns.c:135
@ YYSYMBOL_definitions
$accept
Definition: patterns.c:199
@ YYSYMBOL_tokens_list
type
Definition: patterns.c:208
@ YYSYMBOL_62_
'['
Definition: patterns.c:197
@ YYSYMBOL_MULADD_OPERATOR_TOK
MULTIPLY_OPERATOR_TOK
Definition: patterns.c:155
@ YYSYMBOL_INTEGER_TOK
PHI_TOK
Definition: patterns.c:188
@ YYSYMBOL_REFERENCE_TOK
UNKNOWN_TOK
Definition: patterns.c:139
@ YYSYMBOL_MULTIPLY_OPERATOR_TOK
UNARY_MINUS_OPERATOR_TOK
Definition: patterns.c:154
@ YYSYMBOL_MIN0_OPERATOR_TOK
SIN_OPERATOR_TOK
Definition: patterns.c:163
@ YYSYMBOL_argument
arguments_list
Definition: patterns.c:212
@ YYSYMBOL_PHI_TOK
EQUAL_OPERATOR_TOK
Definition: patterns.c:187
@ YYSYMBOL_YYEMPTY
Definition: patterns.c:134
@ YYSYMBOL_NON_EQUIV_OPERATOR_TOK
EQUIV_OPERATOR_TOK
Definition: patterns.c:179
@ YYSYMBOL_GREATER_THAN_OPERATOR_TOK
GREATER_OR_EQUAL_OPERATOR_TOK
Definition: patterns.c:183
@ YYSYMBOL_MODULO_OPERATOR_TOK
POWER_OPERATOR_TOK
Definition: patterns.c:159
@ YYSYMBOL_QI_REF_TOK
REFERENCE_TOK
Definition: patterns.c:140
@ YYSYMBOL_DMIN1_OPERATOR_TOK
AMIN1_OPERATOR_TOK
Definition: patterns.c:165
@ YYSYMBOL_DIVIDE_OPERATOR_TOK
MULADD_OPERATOR_TOK
Definition: patterns.c:156
@ YYSYMBOL_LOG_REF_TOK
DC_REF_TOK
Definition: patterns.c:148
@ YYSYMBOL_DI_REF_TOK
SI_REF_TOK
Definition: patterns.c:143
@ YYSYMBOL_merge_arguments
token
Definition: patterns.c:210
@ YYSYMBOL_DABS_OPERATOR_TOK
IABS_OPERATOR_TOK
Definition: patterns.c:172
@ YYSYMBOL_UNKNOWN_TOK
"invalid token"
Definition: patterns.c:138
#define YY_ASSERT(E)
Definition: patterns.c:410
#define YY_(Msgid)
Definition: patterns.c:344
static size_t opcode_argc
First part of user prologue.
Definition: patterns.c:96
#define YYNOMEM
Definition: patterns.c:797
#define YY_IGNORE_MAYBE_UNINITIALIZED_END
Definition: patterns.c:391
static const yytype_int8 yydefact[]
YYDEFACT[STATE-NUM] – Default reduction number in state STATE-NUM.
Definition: patterns.c:689
#define YYNSTATES
YYNSTATES – Number of states.
Definition: patterns.c:551
#define YY_IGNORE_USELESS_CAST_END
Definition: patterns.c:406
short yytype_int16
Definition: patterns.c:255
#define yychar
Definition: patterns.c:74
#define YYABORT
Definition: patterns.c:795
#define YYSTACK_BYTES(N)
The size of an array large to enough to hold all stacks, each with N elements.
Definition: patterns.c:495
static const yytype_int8 yycheck[]
Definition: patterns.c:733
#define YY_REDUCE_PRINT(Rule)
Definition: patterns.c:947
#define YY_CAST(Type, Val)
Definition: patterns.c:114
static void yydestruct(const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
-------------------------------------------—.
Definition: patterns.c:977
#define yylex
Definition: patterns.c:69
#define YY_NULLPTR
Definition: patterns.c:126
static const yytype_int8 yypact[]
YYPACT[STATE-NUM] – Index in YYTABLE of the portion describing STATE-NUM.
Definition: patterns.c:672
void * malloc(YYSIZE_T)
#define YYFINAL
!YYCOPY_NEEDED
Definition: patterns.c:540
#define YY_ACCESSING_SYMBOL(State)
Accessing symbol of state STATE.
Definition: patterns.c:618
#define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
Definition: patterns.c:945
void patterns_yyerror(const char *s)
Definition: patterns.c:1863
#define yylval
Definition: patterns.c:73
#define YYNTOKENS
YYNTOKENS – Number of terminals.
Definition: patterns.c:545
unsigned char yytype_uint8
Work around bug in HP-UX 11.23, which defines these macros incorrectly for preprocessor constants.
Definition: patterns.c:276
#define YY_STACK_PRINT(Bottom, Top)
Definition: patterns.c:946
#define YYSIZE_T
Definition: patterns.c:317
#define yydebug
Definition: patterns.c:71
#define YY_IGNORE_USELESS_CAST_BEGIN
Definition: patterns.c:405
static const yytype_int8 yyr2[]
YYR2[RULE-NUM] – Number of symbols on the right-hand side of rule RULE-NUM.
Definition: patterns.c:776
static const yytype_int8 yytable[]
YYTABLE[YYPACT[STATE-NUM]] – What to do in state STATE-NUM.
Definition: patterns.c:720
#define YYPTRDIFF_T
Definition: patterns.c:303
#define yynerrs
Definition: patterns.c:72
#define YYACCEPT
Definition: patterns.c:794
#define yytable_value_is_error(Yyn)
Definition: patterns.c:667
#define YYTRANSLATE(YYX)
YYTRANSLATE(TOKEN-NUM) – Symbol number corresponding to TOKEN-NUM as returned by yylex,...
Definition: patterns.c:559
static const yytype_int8 yystos[]
YYSTOS[STATE-NUM] – The symbol kind of the accessing symbol of state STATE-NUM.
Definition: patterns.c:748
@ YYENOMEM
Definition: patterns.c:789
#define YY_ATTRIBUTE_UNUSED
Definition: patterns.c:361
static const yytype_int8 yypgoto[]
YYPGOTO[NTERM-NUM].
Definition: patterns.c:704
static const yytype_int8 yyr1[]
YYR1[RULE-NUM] – Symbol kind of the left-hand side of rule RULE-NUM.
Definition: patterns.c:763
int patterns_yywrap(void)
Definition: patterns.c:1858
#define YYPOPSTACK(N)
int yy_state_fast_t
State numbers in computations.
Definition: patterns.c:334
unsigned short yytype_uint16
Definition: patterns.c:287
static const yytype_int8 yydefgoto[]
YYDEFGOTO[NTERM-NUM].
Definition: patterns.c:711
#define YYLAST
YYLAST – Last index in YYTABLE.
Definition: patterns.c:542
#define YYSTACK_RELOCATE(Stack_alloc, Stack)
Relocate STACK from its old location to the new one.
Definition: patterns.c:506
#define yypact_value_is_default(Yyn)
Definition: patterns.c:662
#define YYINITDEPTH
!YYDEBUG
Definition: patterns.c:953
signed char yytype_int8
On compilers that do not define PTRDIFF_MAX etc., make sure <limits.h> and (if available) <stdint....
Definition: patterns.c:247
void free(void *)
#define YYERROR
Definition: patterns.c:796
#define YYSIZEOF(X)
Definition: patterns.c:327
#define YYSTACK_ALLOC
The parser invokes alloca or malloc; define the necessary symbols.
Definition: patterns.c:451
yytype_int8 yy_state_t
Stored state numbers (used for stacks).
Definition: patterns.c:331
#define YYDPRINTF(Args)
Enable debugging if requested.
Definition: patterns.c:944
#define YY_USE(E)
Suppress unused-variable warnings by "using" E.
Definition: patterns.c:367
#define yyerror
Definition: patterns.c:70
@ ASSIGN_OPERATOR_TOK
CONSTANT_TOK
Definition: patterns.h:69
@ AMIN1_OPERATOR_TOK
MIN0_OPERATOR_TOK
Definition: patterns.h:83
@ DC_REF_TOK
SC_REF_TOK
Definition: patterns.h:66
@ REFERENCE_TOK
UNKNOWN_TOK
Definition: patterns.h:58
@ MAX_OPERATOR_TOK
DMIN1_OPERATOR_TOK
Definition: patterns.h:85
@ MIN_OPERATOR_TOK
MODULO_OPERATOR_TOK
Definition: patterns.h:79
@ DIVIDE_OPERATOR_TOK
MULADD_OPERATOR_TOK
Definition: patterns.h:75
@ MULTIPLY_OPERATOR_TOK
UNARY_MINUS_OPERATOR_TOK
Definition: patterns.h:73
@ LOG_REF_TOK
DC_REF_TOK
Definition: patterns.h:67
@ POWER_OPERATOR_TOK
INVERSE_OPERATOR_TOK
Definition: patterns.h:77
@ SC_REF_TOK
DF_REF_TOK
Definition: patterns.h:65
@ HI_REF_TOK
QI_REF_TOK
Definition: patterns.h:60
@ DI_REF_TOK
SI_REF_TOK
Definition: patterns.h:62
@ PHI_TOK
EQUAL_OPERATOR_TOK
Definition: patterns.h:106
@ MULADD_OPERATOR_TOK
MULTIPLY_OPERATOR_TOK
Definition: patterns.h:74
@ CONSTANT_TOK
LOG_REF_TOK
Definition: patterns.h:68
@ NON_EQUIV_OPERATOR_TOK
EQUIV_OPERATOR_TOK
Definition: patterns.h:98
@ AMAX1_OPERATOR_TOK
MAX0_OPERATOR_TOK
Definition: patterns.h:87
@ ABS_OPERATOR_TOK
DMAX1_OPERATOR_TOK
Definition: patterns.h:89
@ PLUS_OPERATOR_TOK
ASSIGN_OPERATOR_TOK
Definition: patterns.h:70
@ DMAX1_OPERATOR_TOK
AMAX1_OPERATOR_TOK
Definition: patterns.h:88
@ INVERSE_OPERATOR_TOK
DIVIDE_OPERATOR_TOK
Definition: patterns.h:76
@ IABS_OPERATOR_TOK
ABS_OPERATOR_TOK
Definition: patterns.h:90
@ NON_EQUAL_OPERATOR_TOK
NOT_OPERATOR_TOK
Definition: patterns.h:96
@ FALSE_OPERATOR_TOK
TRUE_OPERATOR_TOK
Definition: patterns.h:100
@ TRUE_OPERATOR_TOK
NON_EQUIV_OPERATOR_TOK
Definition: patterns.h:99
@ GREATER_THAN_OPERATOR_TOK
GREATER_OR_EQUAL_OPERATOR_TOK
Definition: patterns.h:102
@ SI_REF_TOK
HI_REF_TOK
Definition: patterns.h:61
@ QI_REF_TOK
REFERENCE_TOK
Definition: patterns.h:59
@ GREATER_OR_EQUAL_OPERATOR_TOK
FALSE_OPERATOR_TOK
Definition: patterns.h:101
@ COS_OPERATOR_TOK
MIN_OPERATOR_TOK
Definition: patterns.h:80
@ LESS_THAN_OPERATOR_TOK
LESS_OR_EQUAL_OPERATOR_TOK
Definition: patterns.h:104
@ LESS_OR_EQUAL_OPERATOR_TOK
GREATER_THAN_OPERATOR_TOK
Definition: patterns.h:103
@ SF_REF_TOK
DI_REF_TOK
Definition: patterns.h:63
@ AND_OPERATOR_TOK
CABS_OPERATOR_TOK
Definition: patterns.h:93
@ MINUS_OPERATOR_TOK
PLUS_OPERATOR_TOK
Definition: patterns.h:71
@ EQUAL_OPERATOR_TOK
LESS_THAN_OPERATOR_TOK
Definition: patterns.h:105
@ DABS_OPERATOR_TOK
IABS_OPERATOR_TOK
Definition: patterns.h:91
@ UNARY_MINUS_OPERATOR_TOK
MINUS_OPERATOR_TOK
Definition: patterns.h:72
@ EQUIV_OPERATOR_TOK
NON_EQUAL_OPERATOR_TOK
Definition: patterns.h:97
@ NOT_OPERATOR_TOK
OR_OPERATOR_TOK
Definition: patterns.h:95
@ MODULO_OPERATOR_TOK
POWER_OPERATOR_TOK
Definition: patterns.h:78
@ CABS_OPERATOR_TOK
DABS_OPERATOR_TOK
Definition: patterns.h:92
@ DMIN1_OPERATOR_TOK
AMIN1_OPERATOR_TOK
Definition: patterns.h:84
@ MAX0_OPERATOR_TOK
MAX_OPERATOR_TOK
Definition: patterns.h:86
@ SIN_OPERATOR_TOK
COS_OPERATOR_TOK
Definition: patterns.h:81
@ OR_OPERATOR_TOK
AND_OPERATOR_TOK
Definition: patterns.h:94
@ DF_REF_TOK
SF_REF_TOK
Definition: patterns.h:64
@ MIN0_OPERATOR_TOK
SIN_OPERATOR_TOK
Definition: patterns.h:82
@ INT
Definition: atomic.c:48
static const char * yysymbol_name(yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED
The user-facing name of the symbol whose (internal) number is YYSYMBOL.
Definition: cyacc.tab.c:1383
static void yy_symbol_print(FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const *const yyvaluep)
-----------------------—.
Definition: cyacc.tab.c:2447
static const yytype_int16 yyrline[]
YYRLINE[YYN] – Source line where rule number YYN was defined.
Definition: cyacc.tab.c:1279
static void yy_symbol_value_print(FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const *const yyvaluep)
-------------------------------—.
Definition: cyacc.tab.c:2429
static void yy_reduce_print(yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule)
--------------------------------------------—.
Definition: cyacc.tab.c:2486
static const char *const yytname[]
YYTNAME[SYMBOL-NUM] – String name of the symbol SYMBOL-NUM.
Definition: cyacc.tab.c:1327
static void yy_stack_print(yy_state_t *yybottom, yy_state_t *yytop)
--------------------------------------------------------------—.
Definition: cyacc.tab.c:2463
#define YYFPRINTF
Enable debugging if requested.
Definition: cyacc.tab.c:2400
#define YYEOF
Definition: genread.h:85
#define YYerror
Definition: genread.h:86
#define YYUNDEF
Definition: genread.h:87
#define YYEMPTY
Token kinds.
Definition: genread.h:84
yysymbol_kind_t
!YY_GENREAD_Y_TAB_H_INCLUDED
Definition: genread_yacc.c:294
short yytype_int16
Definition: genread_yacc.c:378
int yy_state_fast_t
State numbers in computations.
Definition: genread_yacc.c:457
signed char yytype_int8
On compilers that do not define PTRDIFF_MAX etc., make sure <limits.h> and (if available) <stdint....
Definition: genread_yacc.c:370
yytype_int8 yy_state_t
Stored state numbers (used for stacks).
Definition: genread_yacc.c:454
#define NIL
The empty list (nil in Lisp)
Definition: newgen_list.h:47
size_t gen_length(const list l)
Definition: list.c:150
#define CONS(_t_, _i_, _l_)
List element cell constructor (insert an element at the beginning of a list)
Definition: newgen_list.h:150
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
Definition: misc-local.h:172
#define pips_internal_error
Definition: misc-local.h:149
opcode generate_opcode(string name, list types, float cost)
auto-guess vector size
Definition: codegen.c:276
void insert_transformation(char *, int, int, int, int, int, list)
vectransform.c
Definition: vectransform.c:43
void insert_opcodeClass(char *, int, list)
Definition: treematch.c:267
void insert_pattern(char *, list, list)
Definition: treematch.c:278
#define OPCODE(x)
OPCODE.
Definition: sac_private.h:257
#define uint_least8_t
Definition: stdint.in.h:229
#define int_least16_t
Definition: stdint.in.h:230
#define int_least8_t
7.18.1.2.
Definition: stdint.in.h:228
#define uint_least16_t
Definition: stdint.in.h:231
Polymorphic argument.
Definition: printf-args.h:92
Value type.
Definition: genread.h:115
opcode opVal
Definition: patterns.h:132
list typeList
Definition: patterns.h:123
intptr_t typeId
Definition: patterns.h:121
intptr_t tokenId
Definition: patterns.h:120
list mappingsList
Definition: patterns.h:135
list tokenList
Definition: patterns.h:122
list opcodesList
Definition: patterns.h:133
list argsList
Definition: patterns.h:126
patternArg argument
Definition: patterns.h:125
INFRINGES ON USER NAME SPACE.
Definition: genread_yacc.c:608
YYSTYPE yyvs_alloc
Definition: genread_yacc.c:610
yy_state_t yyss_alloc
Definition: genread_yacc.c:609