#include "as.h"
#include <obstack.h>
-#include "bfin-aux.h" // opcode generating auxiliaries
+#include "bfin-aux.h" /* Opcode generating auxiliaries. */
#include "libbfd.h"
#include "elf/common.h"
#include "elf/bfin.h"
void error (char *format, ...)
{
va_list ap;
- char buffer[2000];
+ static char buffer[2000];
va_start (ap, format);
vsprintf (buffer, format, ap);
va_end (ap);
- as_bad (buffer);
+ as_bad ("%s", buffer);
}
int
/* Auxiliary functions. */
-static void
-neg_value (Expr_Node *expr)
-{
- expr->value.i_value = -expr->value.i_value;
-}
-
static int
valid_dreg_pair (Register *reg1, Expr_Node *reg2)
{
}
+/* Check mac option. */
+
+static int
+check_macfunc_option (Macfunc *a, Opt_mode *opt)
+{
+ /* Default option is always valid. */
+ if (opt->mod == 0)
+ return 0;
+
+ if ((a->w == 1 && a->P == 1
+ && opt->mod != M_FU && opt->mod != M_IS && opt->mod != M_IU
+ && opt->mod != M_S2RND && opt->mod != M_ISS2)
+ || (a->w == 1 && a->P == 0
+ && opt->mod != M_FU && opt->mod != M_IS && opt->mod != M_IU
+ && opt->mod != M_T && opt->mod != M_TFU && opt->mod != M_S2RND
+ && opt->mod != M_ISS2 && opt->mod != M_IH)
+ || (a->w == 0 && a->P == 0
+ && opt->mod != M_FU && opt->mod != M_IS && opt->mod != M_W32))
+ return -1;
+
+ return 0;
+}
+
/* Check (vector) mac funcs and ops. */
static int
Macfunc mtmp;
Opt_mode otmp;
+ /* The option mode should be put at the end of the second instruction
+ of the vector except M, which should follow MAC1 instruction. */
+ if (opa->mod != 0)
+ return yyerror ("Bad opt mode");
+
/* If a0macfunc comes before a1macfunc, swap them. */
if (aa->n == 0)
{
if (opb->MM != 0)
return yyerror ("(M) not allowed with A0MAC");
- if (opa->mod != 0)
- return yyerror ("Bad opt mode");
if (ab->n != 0)
return yyerror ("Vector AxMACs can't be same");
}
/* If both ops are one of 0, 1, or 2, we have multiply_halfregs in both
assignment_or_macfuncs. */
- if (aa->op < 3 && aa->op >=0
- && ab->op < 3 && ab->op >= 0)
+ if ((aa->op == 0 || aa->op == 1 || aa->op == 2)
+ && (ab->op == 0 || ab->op == 1 || ab->op == 2))
{
if (check_multiply_halfregs (aa, ab) < 0)
return -1;
if (aa->w && (aa->dst.regno - ab->dst.regno != 1))
return yyerror ("Destination Dregs must differ by one");
}
- /* We assign to full regs, thus obey even/odd rules. */
- else if ((aa->w && aa->P && IS_EVEN (aa->dst))
- || (ab->w && ab->P && !IS_EVEN (ab->dst)))
- return yyerror ("Even/Odd register assignment mismatch");
- /* We assign to half regs, thus obey hi/low rules. */
- else if ( (aa->w && !aa->P && !IS_H (aa->dst))
- || (ab->w && !aa->P && IS_H (ab->dst)))
- return yyerror ("High/Low register assignment mismatch");
+
+ /* Make sure mod flags get ORed, too. */
+ opb->mod |= opa->mod;
+
+ /* Check option. */
+ if (check_macfunc_option (aa, opb) < 0
+ && check_macfunc_option (ab, opb) < 0)
+ return yyerror ("bad option");
/* Make sure first macfunc has got both P flags ORed. */
aa->P |= ab->P;
- /* Make sure mod flags get ORed, too. */
- opb->mod |= opa->mod;
return 0;
}
return 0;
}
+static INSTR_T
+gen_multi_instr_1 (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2)
+{
+ int mask1 = dsp32 ? insn_regmask (dsp32->value, dsp32->next->value) : 0;
+ int mask2 = dsp16_grp1 ? insn_regmask (dsp16_grp1->value, 0) : 0;
+ int mask3 = dsp16_grp2 ? insn_regmask (dsp16_grp2->value, 0) : 0;
+
+ if ((mask1 & mask2) || (mask1 & mask3) || (mask2 & mask3))
+ yyerror ("resource conflict in multi-issue instruction");
+
+ /* Anomaly 05000074 */
+ if (ENABLE_AC_05000074
+ && dsp32 != NULL && dsp16_grp1 != NULL
+ && (dsp32->value & 0xf780) == 0xc680
+ && ((dsp16_grp1->value & 0xfe40) == 0x9240
+ || (dsp16_grp1->value & 0xfe08) == 0xba08
+ || (dsp16_grp1->value & 0xfc00) == 0xbc00))
+ yyerror ("anomaly 05000074 - Multi-Issue Instruction with \
+dsp32shiftimm in slot1 and P-reg Store in slot2 Not Supported");
+
+ return bfin_gen_multi_instr (dsp32, dsp16_grp1, dsp16_grp2);
+}
+
/* Enabling traces. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
-#line 366 "bfin-parse.y"
+#line 407 "bfin-parse.y"
{
INSTR_T instr;
Expr_Node *expr;
struct { int r0; } r0;
Opt_mode mod;
}
-/* Line 187 of yacc.c. */
-#line 801 "bfin-parse.c"
+/* Line 193 of yacc.c. */
+#line 842 "bfin-parse.c"
YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
/* Line 216 of yacc.c. */
-#line 814 "bfin-parse.c"
+#line 855 "bfin-parse.c"
#ifdef short
# undef short
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
#ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
# define YY_(msgid) dgettext ("bison-runtime", msgid)
#endif
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 145
+#define YYFINAL 150
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 1278
+#define YYLAST 1284
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 175
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 47
/* YYNRULES -- Number of rules. */
-#define YYNRULES 348
+#define YYNRULES 350
/* YYNRULES -- Number of states. */
-#define YYNSTATES 1021
+#define YYNSTATES 1026
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
429, 434, 438, 442, 446, 458, 470, 480, 486, 492,
502, 508, 514, 521, 528, 534, 540, 546, 553, 560,
566, 568, 572, 576, 580, 584, 589, 594, 604, 614,
- 620, 628, 633, 640, 646, 653, 661, 671, 680, 689,
- 701, 711, 716, 722, 729, 737, 744, 749, 756, 762,
- 769, 776, 781, 790, 801, 812, 825, 831, 838, 844,
- 851, 856, 861, 866, 874, 884, 894, 904, 911, 918,
- 925, 934, 943, 950, 956, 962, 971, 976, 984, 986,
- 988, 990, 992, 994, 996, 998, 1000, 1002, 1004, 1007,
- 1010, 1015, 1020, 1027, 1034, 1037, 1040, 1045, 1048, 1051,
- 1054, 1057, 1060, 1063, 1070, 1077, 1083, 1088, 1092, 1096,
- 1100, 1104, 1108, 1112, 1117, 1120, 1125, 1128, 1133, 1136,
- 1141, 1144, 1152, 1161, 1170, 1178, 1186, 1194, 1204, 1212,
- 1221, 1231, 1240, 1247, 1255, 1264, 1274, 1283, 1291, 1299,
- 1306, 1318, 1326, 1338, 1346, 1350, 1353, 1355, 1363, 1373,
- 1385, 1389, 1395, 1403, 1405, 1408, 1411, 1416, 1418, 1425,
- 1432, 1439, 1441, 1443, 1444, 1450, 1456, 1460, 1464, 1468,
- 1472, 1473, 1475, 1477, 1479, 1481, 1483, 1484, 1488, 1489,
- 1493, 1497, 1498, 1502, 1506, 1512, 1518, 1519, 1523, 1527,
- 1528, 1532, 1536, 1537, 1541, 1545, 1549, 1555, 1561, 1562,
- 1566, 1567, 1571, 1573, 1575, 1577, 1579, 1580, 1584, 1588,
- 1592, 1598, 1604, 1606, 1608, 1610, 1611, 1615, 1616, 1620,
- 1625, 1630, 1632, 1634, 1636, 1638, 1640, 1642, 1644, 1646,
- 1650, 1654, 1658, 1662, 1668, 1674, 1680, 1686, 1690, 1694,
- 1700, 1706, 1707, 1709, 1711, 1714, 1717, 1720, 1724, 1726,
- 1732, 1738, 1742, 1745, 1748, 1751, 1755, 1757, 1759, 1761,
- 1763, 1767, 1771, 1775, 1779, 1781, 1783, 1785, 1787, 1791,
- 1793, 1795, 1799, 1801, 1803, 1807, 1810, 1813, 1815, 1819,
- 1823, 1827, 1831, 1835, 1839, 1843, 1847, 1851, 1855
+ 620, 628, 633, 640, 647, 655, 665, 674, 683, 695,
+ 705, 710, 716, 723, 731, 738, 743, 750, 756, 763,
+ 770, 775, 784, 795, 806, 819, 825, 832, 838, 845,
+ 850, 855, 860, 868, 878, 888, 898, 905, 912, 919,
+ 928, 937, 944, 950, 956, 965, 970, 978, 980, 982,
+ 984, 986, 988, 990, 992, 994, 996, 998, 1001, 1004,
+ 1009, 1014, 1021, 1028, 1031, 1034, 1039, 1042, 1045, 1048,
+ 1051, 1054, 1057, 1064, 1071, 1077, 1082, 1086, 1090, 1094,
+ 1098, 1102, 1106, 1111, 1114, 1119, 1122, 1127, 1130, 1135,
+ 1138, 1146, 1155, 1164, 1172, 1180, 1188, 1198, 1206, 1215,
+ 1225, 1234, 1241, 1249, 1258, 1268, 1277, 1285, 1293, 1300,
+ 1312, 1320, 1332, 1340, 1344, 1347, 1349, 1357, 1367, 1379,
+ 1383, 1389, 1397, 1400, 1403, 1405, 1408, 1411, 1416, 1418,
+ 1420, 1427, 1434, 1441, 1443, 1445, 1446, 1452, 1458, 1462,
+ 1466, 1470, 1474, 1475, 1477, 1479, 1481, 1483, 1485, 1486,
+ 1490, 1491, 1495, 1499, 1500, 1504, 1508, 1514, 1520, 1521,
+ 1525, 1529, 1530, 1534, 1538, 1539, 1543, 1547, 1551, 1557,
+ 1563, 1564, 1568, 1569, 1573, 1575, 1577, 1579, 1581, 1582,
+ 1586, 1590, 1594, 1600, 1606, 1608, 1610, 1612, 1613, 1617,
+ 1618, 1622, 1627, 1632, 1634, 1636, 1638, 1640, 1642, 1644,
+ 1646, 1648, 1652, 1656, 1660, 1664, 1670, 1676, 1682, 1688,
+ 1692, 1696, 1702, 1708, 1709, 1711, 1713, 1716, 1719, 1722,
+ 1726, 1728, 1734, 1740, 1744, 1747, 1750, 1753, 1757, 1759,
+ 1761, 1763, 1765, 1769, 1773, 1777, 1781, 1783, 1785, 1787,
+ 1789, 1793, 1795, 1797, 1801, 1803, 1805, 1809, 1812, 1815,
+ 1817, 1821, 1825, 1829, 1833, 1837, 1841, 1845, 1849, 1853,
+ 1857
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
98, 211, 180, -1, 206, 87, 179, 159, 36, -1,
36, 98, 87, 36, 159, 36, 191, -1, 206, 179,
91, 220, -1, 26, 98, 26, 91, 220, 189, -1,
- 36, 98, 36, 91, 220, -1, 36, 98, 36, 91,
- 220, 191, -1, 26, 98, 87, 26, 159, 36, 189,
- -1, 36, 98, 19, 163, 26, 158, 36, 162, 190,
- -1, 36, 98, 19, 163, 36, 158, 36, 162, -1,
- 26, 98, 18, 163, 26, 158, 26, 162, -1, 26,
- 98, 18, 163, 26, 158, 26, 162, 163, 133, 162,
- -1, 26, 98, 17, 163, 26, 158, 36, 162, 187,
- -1, 206, 179, 93, 220, -1, 206, 86, 179, 159,
- 36, -1, 36, 98, 86, 36, 159, 36, -1, 26,
- 98, 86, 26, 159, 36, 190, -1, 26, 98, 85,
- 26, 159, 36, -1, 206, 179, 92, 220, -1, 26,
- 98, 26, 92, 220, 190, -1, 36, 98, 36, 92,
- 220, -1, 36, 98, 36, 93, 220, 191, -1, 26,
- 98, 26, 93, 220, 189, -1, 36, 98, 21, 26,
- -1, 26, 98, 11, 163, 36, 158, 36, 162, -1,
- 36, 98, 28, 98, 88, 163, 179, 158, 26, 162,
- -1, 36, 98, 28, 98, 69, 163, 179, 158, 26,
- 162, -1, 36, 98, 28, 98, 69, 163, 179, 158,
- 179, 158, 28, 162, -1, 206, 90, 179, 159, 36,
- -1, 26, 98, 90, 26, 159, 36, -1, 206, 90,
- 179, 159, 220, -1, 26, 98, 90, 26, 159, 220,
- -1, 36, 98, 23, 179, -1, 36, 98, 23, 26,
- -1, 36, 98, 23, 36, -1, 36, 98, 16, 163,
- 26, 162, 181, -1, 26, 98, 16, 163, 26, 158,
- 26, 162, 181, -1, 150, 163, 26, 158, 26, 158,
- 179, 162, 181, -1, 206, 88, 163, 179, 158, 179,
- 158, 28, 162, -1, 147, 163, 26, 158, 220, 162,
- -1, 148, 163, 26, 158, 220, 162, -1, 146, 163,
- 26, 158, 220, 162, -1, 28, 105, 149, 163, 26,
- 158, 220, 162, -1, 28, 98, 149, 163, 26, 158,
- 220, 162, -1, 157, 64, 28, 26, 98, 26, -1,
- 157, 28, 26, 98, 26, -1, 157, 64, 28, 57,
- 220, -1, 157, 64, 28, 57, 220, 163, 131, 162,
- -1, 157, 28, 57, 220, -1, 157, 28, 57, 220,
- 163, 131, 162, -1, 37, -1, 39, -1, 38, -1,
- 40, -1, 41, -1, 42, -1, 44, -1, 47, -1,
- 48, -1, 49, -1, 46, 26, -1, 45, 26, -1,
- 57, 163, 26, 162, -1, 60, 163, 26, 162, -1,
- 60, 163, 27, 71, 26, 162, -1, 57, 163, 27,
- 71, 26, 162, -1, 50, 220, -1, 51, 220, -1,
- 120, 163, 26, 162, -1, 57, 220, -1, 58, 220,
- -1, 59, 220, -1, 59, 218, -1, 60, 220, -1,
- 60, 218, -1, 97, 163, 26, 158, 26, 162, -1,
- 96, 163, 26, 158, 26, 162, -1, 26, 98, 70,
- 26, 189, -1, 26, 98, 63, 26, -1, 26, 95,
- 26, -1, 26, 95, 220, -1, 26, 89, 26, -1,
- 26, 94, 26, -1, 26, 94, 220, -1, 26, 89,
- 220, -1, 114, 164, 26, 165, -1, 114, 199, -1,
- 113, 164, 26, 165, -1, 113, 199, -1, 115, 164,
- 26, 165, -1, 115, 199, -1, 116, 164, 26, 165,
- -1, 116, 199, -1, 123, 164, 26, 205, 165, 98,
- 26, -1, 123, 164, 26, 202, 220, 165, 98, 26,
- -1, 124, 164, 26, 202, 220, 165, 98, 26, -1,
- 124, 164, 26, 205, 165, 98, 26, -1, 124, 164,
- 26, 205, 165, 98, 36, -1, 164, 26, 202, 220,
- 165, 98, 26, -1, 26, 98, 124, 164, 26, 202,
- 220, 165, 187, -1, 36, 98, 124, 164, 26, 205,
- 165, -1, 26, 98, 124, 164, 26, 205, 165, 187,
- -1, 26, 98, 124, 164, 26, 84, 26, 165, 187,
- -1, 36, 98, 124, 164, 26, 84, 26, 165, -1,
- 164, 26, 205, 165, 98, 26, -1, 164, 26, 84,
- 26, 165, 98, 26, -1, 124, 164, 26, 84, 26,
- 165, 98, 36, -1, 26, 98, 123, 164, 26, 202,
- 220, 165, 187, -1, 26, 98, 123, 164, 26, 205,
- 165, 187, -1, 26, 98, 164, 26, 84, 26, 165,
- -1, 26, 98, 164, 26, 202, 217, 165, -1, 26,
- 98, 164, 26, 205, 165, -1, 198, 98, 163, 26,
- 160, 220, 158, 26, 160, 220, 162, -1, 198, 98,
- 163, 26, 160, 220, 162, -1, 163, 26, 160, 220,
- 158, 26, 160, 220, 162, 98, 199, -1, 163, 26,
- 160, 220, 162, 98, 199, -1, 198, 98, 26, -1,
- 24, 220, -1, 25, -1, 52, 163, 220, 158, 220,
- 162, 26, -1, 52, 163, 220, 158, 220, 162, 26,
- 98, 26, -1, 52, 163, 220, 158, 220, 162, 26,
- 98, 26, 92, 220, -1, 53, 220, 26, -1, 53,
- 220, 26, 98, 26, -1, 53, 220, 26, 98, 26,
- 92, 220, -1, 154, -1, 154, 179, -1, 154, 26,
- -1, 156, 163, 26, 162, -1, 153, -1, 155, 163,
- 36, 158, 220, 162, -1, 152, 163, 26, 158, 220,
- 162, -1, 151, 163, 26, 158, 220, 162, -1, 30,
- -1, 31, -1, -1, 163, 135, 158, 136, 162, -1,
- 163, 136, 158, 135, 162, -1, 163, 136, 162, -1,
- 163, 135, 162, -1, 163, 121, 162, -1, 163, 122,
- 162, -1, -1, 126, -1, 127, -1, 128, -1, 121,
- -1, 122, -1, -1, 163, 182, 162, -1, -1, 163,
- 125, 162, -1, 163, 126, 162, -1, -1, 163, 183,
- 162, -1, 163, 182, 162, -1, 163, 183, 158, 182,
- 162, -1, 163, 182, 158, 183, 162, -1, -1, 163,
- 134, 162, -1, 163, 133, 162, -1, -1, 163, 133,
- 162, -1, 163, 134, 162, -1, -1, 163, 125, 162,
- -1, 163, 126, 162, -1, 163, 143, 162, -1, 163,
- 143, 158, 126, 162, -1, 163, 126, 158, 143, 162,
- -1, -1, 163, 143, 162, -1, -1, 163, 126, 162,
- -1, 108, -1, 111, -1, 110, -1, 109, -1, -1,
- 163, 137, 162, -1, 163, 137, 162, -1, 163, 136,
- 162, -1, 163, 136, 158, 137, 162, -1, 163, 137,
- 158, 136, 162, -1, 13, -1, 14, -1, 15, -1,
- -1, 163, 136, 162, -1, -1, 163, 136, 162, -1,
- 164, 83, 26, 165, -1, 164, 26, 84, 165, -1,
- 75, -1, 76, -1, 79, -1, 80, -1, 81, -1,
- 82, -1, 71, -1, 70, -1, 163, 140, 162, -1,
- 163, 129, 162, -1, 163, 139, 162, -1, 163, 130,
- 162, -1, 163, 140, 158, 137, 162, -1, 163, 129,
- 158, 137, 162, -1, 163, 139, 158, 137, 162, -1,
- 163, 130, 158, 137, 162, -1, 163, 144, 162, -1,
- 163, 145, 162, -1, 163, 144, 158, 137, 162, -1,
- 163, 145, 158, 137, 162, -1, -1, 84, -1, 83,
- -1, 179, 98, -1, 179, 103, -1, 179, 104, -1,
- 26, 98, 179, -1, 210, -1, 26, 98, 163, 210,
- 162, -1, 36, 98, 163, 210, 162, -1, 36, 98,
- 179, -1, 206, 211, -1, 208, 211, -1, 207, 211,
- -1, 36, 72, 36, -1, 98, -1, 100, -1, 102,
- -1, 101, -1, 28, 212, 166, -1, 28, 212, 143,
- -1, 166, 212, 28, -1, 143, 212, 28, -1, 168,
- -1, 170, -1, 171, -1, 172, -1, 214, 173, 215,
- -1, 216, -1, 220, -1, 214, 173, 174, -1, 169,
- -1, 214, -1, 163, 221, 162, -1, 63, 221, -1,
- 70, 221, -1, 221, -1, 221, 72, 221, -1, 221,
- 73, 221, -1, 221, 67, 221, -1, 221, 71, 221,
- -1, 221, 70, 221, -1, 221, 91, 221, -1, 221,
- 92, 221, -1, 221, 65, 221, -1, 221, 68, 221,
- -1, 221, 66, 221, -1, 219, -1
+ 36, 98, 36, 91, 220, 191, -1, 26, 98, 87,
+ 26, 159, 36, 189, -1, 36, 98, 19, 163, 26,
+ 158, 36, 162, 190, -1, 36, 98, 19, 163, 36,
+ 158, 36, 162, -1, 26, 98, 18, 163, 26, 158,
+ 26, 162, -1, 26, 98, 18, 163, 26, 158, 26,
+ 162, 163, 133, 162, -1, 26, 98, 17, 163, 26,
+ 158, 36, 162, 187, -1, 206, 179, 93, 220, -1,
+ 206, 86, 179, 159, 36, -1, 36, 98, 86, 36,
+ 159, 36, -1, 26, 98, 86, 26, 159, 36, 190,
+ -1, 26, 98, 85, 26, 159, 36, -1, 206, 179,
+ 92, 220, -1, 26, 98, 26, 92, 220, 190, -1,
+ 36, 98, 36, 92, 220, -1, 36, 98, 36, 93,
+ 220, 191, -1, 26, 98, 26, 93, 220, 189, -1,
+ 36, 98, 21, 26, -1, 26, 98, 11, 163, 36,
+ 158, 36, 162, -1, 36, 98, 28, 98, 88, 163,
+ 179, 158, 26, 162, -1, 36, 98, 28, 98, 69,
+ 163, 179, 158, 26, 162, -1, 36, 98, 28, 98,
+ 69, 163, 179, 158, 179, 158, 28, 162, -1, 206,
+ 90, 179, 159, 36, -1, 26, 98, 90, 26, 159,
+ 36, -1, 206, 90, 179, 159, 220, -1, 26, 98,
+ 90, 26, 159, 220, -1, 36, 98, 23, 179, -1,
+ 36, 98, 23, 26, -1, 36, 98, 23, 36, -1,
+ 36, 98, 16, 163, 26, 162, 181, -1, 26, 98,
+ 16, 163, 26, 158, 26, 162, 181, -1, 150, 163,
+ 26, 158, 26, 158, 179, 162, 181, -1, 206, 88,
+ 163, 179, 158, 179, 158, 28, 162, -1, 147, 163,
+ 26, 158, 220, 162, -1, 148, 163, 26, 158, 220,
+ 162, -1, 146, 163, 26, 158, 220, 162, -1, 28,
+ 105, 149, 163, 26, 158, 220, 162, -1, 28, 98,
+ 149, 163, 26, 158, 220, 162, -1, 157, 64, 28,
+ 26, 98, 26, -1, 157, 28, 26, 98, 26, -1,
+ 157, 64, 28, 57, 220, -1, 157, 64, 28, 57,
+ 220, 163, 131, 162, -1, 157, 28, 57, 220, -1,
+ 157, 28, 57, 220, 163, 131, 162, -1, 37, -1,
+ 39, -1, 38, -1, 40, -1, 41, -1, 42, -1,
+ 44, -1, 47, -1, 48, -1, 49, -1, 46, 26,
+ -1, 45, 26, -1, 57, 163, 26, 162, -1, 60,
+ 163, 26, 162, -1, 60, 163, 27, 71, 26, 162,
+ -1, 57, 163, 27, 71, 26, 162, -1, 50, 220,
+ -1, 51, 220, -1, 120, 163, 26, 162, -1, 57,
+ 220, -1, 58, 220, -1, 59, 220, -1, 59, 218,
+ -1, 60, 220, -1, 60, 218, -1, 97, 163, 26,
+ 158, 26, 162, -1, 96, 163, 26, 158, 26, 162,
+ -1, 26, 98, 70, 26, 189, -1, 26, 98, 63,
+ 26, -1, 26, 95, 26, -1, 26, 95, 220, -1,
+ 26, 89, 26, -1, 26, 94, 26, -1, 26, 94,
+ 220, -1, 26, 89, 220, -1, 114, 164, 26, 165,
+ -1, 114, 199, -1, 113, 164, 26, 165, -1, 113,
+ 199, -1, 115, 164, 26, 165, -1, 115, 199, -1,
+ 116, 164, 26, 165, -1, 116, 199, -1, 123, 164,
+ 26, 205, 165, 98, 26, -1, 123, 164, 26, 202,
+ 220, 165, 98, 26, -1, 124, 164, 26, 202, 220,
+ 165, 98, 26, -1, 124, 164, 26, 205, 165, 98,
+ 26, -1, 124, 164, 26, 205, 165, 98, 36, -1,
+ 164, 26, 202, 220, 165, 98, 26, -1, 26, 98,
+ 124, 164, 26, 202, 220, 165, 187, -1, 36, 98,
+ 124, 164, 26, 205, 165, -1, 26, 98, 124, 164,
+ 26, 205, 165, 187, -1, 26, 98, 124, 164, 26,
+ 84, 26, 165, 187, -1, 36, 98, 124, 164, 26,
+ 84, 26, 165, -1, 164, 26, 205, 165, 98, 26,
+ -1, 164, 26, 84, 26, 165, 98, 26, -1, 124,
+ 164, 26, 84, 26, 165, 98, 36, -1, 26, 98,
+ 123, 164, 26, 202, 220, 165, 187, -1, 26, 98,
+ 123, 164, 26, 205, 165, 187, -1, 26, 98, 164,
+ 26, 84, 26, 165, -1, 26, 98, 164, 26, 202,
+ 217, 165, -1, 26, 98, 164, 26, 205, 165, -1,
+ 198, 98, 163, 26, 160, 220, 158, 26, 160, 220,
+ 162, -1, 198, 98, 163, 26, 160, 220, 162, -1,
+ 163, 26, 160, 220, 158, 26, 160, 220, 162, 98,
+ 199, -1, 163, 26, 160, 220, 162, 98, 199, -1,
+ 198, 98, 26, -1, 24, 220, -1, 25, -1, 52,
+ 163, 220, 158, 220, 162, 26, -1, 52, 163, 220,
+ 158, 220, 162, 26, 98, 26, -1, 52, 163, 220,
+ 158, 220, 162, 26, 98, 26, 92, 220, -1, 53,
+ 220, 26, -1, 53, 220, 26, 98, 26, -1, 53,
+ 220, 26, 98, 26, 92, 220, -1, 54, 220, -1,
+ 55, 220, -1, 154, -1, 154, 179, -1, 154, 26,
+ -1, 156, 163, 26, 162, -1, 153, -1, 43, -1,
+ 155, 163, 36, 158, 220, 162, -1, 152, 163, 26,
+ 158, 220, 162, -1, 151, 163, 26, 158, 220, 162,
+ -1, 30, -1, 31, -1, -1, 163, 135, 158, 136,
+ 162, -1, 163, 136, 158, 135, 162, -1, 163, 136,
+ 162, -1, 163, 135, 162, -1, 163, 121, 162, -1,
+ 163, 122, 162, -1, -1, 126, -1, 127, -1, 128,
+ -1, 121, -1, 122, -1, -1, 163, 182, 162, -1,
+ -1, 163, 125, 162, -1, 163, 126, 162, -1, -1,
+ 163, 183, 162, -1, 163, 182, 162, -1, 163, 183,
+ 158, 182, 162, -1, 163, 182, 158, 183, 162, -1,
+ -1, 163, 134, 162, -1, 163, 133, 162, -1, -1,
+ 163, 133, 162, -1, 163, 134, 162, -1, -1, 163,
+ 125, 162, -1, 163, 126, 162, -1, 163, 143, 162,
+ -1, 163, 143, 158, 126, 162, -1, 163, 126, 158,
+ 143, 162, -1, -1, 163, 143, 162, -1, -1, 163,
+ 126, 162, -1, 108, -1, 111, -1, 110, -1, 109,
+ -1, -1, 163, 137, 162, -1, 163, 137, 162, -1,
+ 163, 136, 162, -1, 163, 136, 158, 137, 162, -1,
+ 163, 137, 158, 136, 162, -1, 13, -1, 14, -1,
+ 15, -1, -1, 163, 136, 162, -1, -1, 163, 136,
+ 162, -1, 164, 83, 26, 165, -1, 164, 26, 84,
+ 165, -1, 75, -1, 76, -1, 79, -1, 80, -1,
+ 81, -1, 82, -1, 71, -1, 70, -1, 163, 140,
+ 162, -1, 163, 129, 162, -1, 163, 139, 162, -1,
+ 163, 130, 162, -1, 163, 140, 158, 137, 162, -1,
+ 163, 129, 158, 137, 162, -1, 163, 139, 158, 137,
+ 162, -1, 163, 130, 158, 137, 162, -1, 163, 144,
+ 162, -1, 163, 145, 162, -1, 163, 144, 158, 137,
+ 162, -1, 163, 145, 158, 137, 162, -1, -1, 84,
+ -1, 83, -1, 179, 98, -1, 179, 103, -1, 179,
+ 104, -1, 26, 98, 179, -1, 210, -1, 26, 98,
+ 163, 210, 162, -1, 36, 98, 163, 210, 162, -1,
+ 36, 98, 179, -1, 206, 211, -1, 208, 211, -1,
+ 207, 211, -1, 36, 72, 36, -1, 98, -1, 100,
+ -1, 102, -1, 101, -1, 28, 212, 166, -1, 28,
+ 212, 143, -1, 166, 212, 28, -1, 143, 212, 28,
+ -1, 168, -1, 170, -1, 171, -1, 172, -1, 214,
+ 173, 215, -1, 216, -1, 220, -1, 214, 173, 174,
+ -1, 169, -1, 214, -1, 163, 221, 162, -1, 63,
+ 221, -1, 70, 221, -1, 221, -1, 221, 72, 221,
+ -1, 221, 73, 221, -1, 221, 67, 221, -1, 221,
+ 71, 221, -1, 221, 70, 221, -1, 221, 91, 221,
+ -1, 221, 92, 221, -1, 221, 65, 221, -1, 221,
+ 68, 221, -1, 221, 66, 221, -1, 219, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 567, 567, 568, 580, 582, 615, 642, 653, 657,
- 692, 712, 717, 727, 737, 742, 747, 763, 779, 791,
- 801, 814, 833, 851, 874, 896, 901, 911, 922, 933,
- 947, 962, 978, 994, 1010, 1021, 1035, 1061, 1079, 1084,
- 1090, 1102, 1113, 1124, 1135, 1146, 1157, 1168, 1194, 1208,
- 1218, 1263, 1282, 1293, 1304, 1315, 1326, 1337, 1353, 1370,
- 1386, 1397, 1408, 1439, 1450, 1463, 1474, 1513, 1523, 1533,
- 1553, 1563, 1573, 1583, 1594, 1602, 1612, 1622, 1633, 1657,
- 1668, 1674, 1685, 1696, 1707, 1715, 1736, 1762, 1791, 1822,
- 1836, 1847, 1861, 1895, 1905, 1915, 1940, 1952, 1970, 1981,
- 1992, 2003, 2016, 2027, 2038, 2049, 2060, 2071, 2104, 2114,
- 2127, 2147, 2158, 2169, 2182, 2195, 2206, 2217, 2228, 2239,
- 2249, 2260, 2271, 2283, 2294, 2305, 2316, 2329, 2341, 2353,
- 2364, 2375, 2386, 2398, 2410, 2421, 2432, 2443, 2453, 2459,
- 2465, 2471, 2477, 2483, 2489, 2495, 2501, 2507, 2513, 2524,
- 2535, 2546, 2557, 2568, 2579, 2590, 2596, 2607, 2618, 2629,
- 2640, 2651, 2661, 2674, 2682, 2690, 2714, 2725, 2736, 2747,
- 2758, 2769, 2781, 2794, 2803, 2814, 2825, 2837, 2848, 2859,
- 2870, 2884, 2896, 2911, 2930, 2941, 2959, 2993, 3011, 3028,
- 3039, 3050, 3061, 3082, 3101, 3114, 3128, 3140, 3156, 3196,
- 3227, 3243, 3262, 3276, 3295, 3311, 3319, 3328, 3339, 3351,
- 3365, 3373, 3383, 3395, 3400, 3405, 3411, 3419, 3425, 3431,
- 3437, 3450, 3454, 3464, 3468, 3473, 3478, 3483, 3490, 3494,
- 3501, 3505, 3510, 3515, 3523, 3527, 3534, 3538, 3546, 3551,
- 3557, 3566, 3571, 3577, 3583, 3589, 3598, 3601, 3605, 3612,
- 3615, 3619, 3626, 3631, 3637, 3643, 3649, 3654, 3662, 3665,
- 3672, 3675, 3682, 3686, 3690, 3694, 3701, 3704, 3711, 3716,
- 3723, 3730, 3742, 3746, 3750, 3757, 3760, 3770, 3773, 3782,
- 3788, 3797, 3801, 3808, 3812, 3816, 3820, 3827, 3831, 3838,
- 3846, 3854, 3862, 3870, 3877, 3884, 3892, 3902, 3907, 3912,
- 3917, 3925, 3928, 3932, 3941, 3948, 3955, 3962, 3977, 3983,
- 3991, 3999, 4017, 4024, 4031, 4041, 4054, 4058, 4062, 4066,
- 4073, 4079, 4085, 4091, 4101, 4110, 4112, 4114, 4118, 4126,
- 4130, 4137, 4143, 4149, 4153, 4157, 4161, 4167, 4173, 4177,
- 4181, 4185, 4189, 4193, 4197, 4201, 4205, 4209, 4213
+ 0, 608, 608, 609, 621, 623, 656, 683, 694, 698,
+ 736, 756, 761, 771, 781, 786, 791, 807, 823, 835,
+ 845, 858, 877, 895, 918, 940, 945, 955, 966, 977,
+ 991, 1006, 1022, 1038, 1054, 1065, 1079, 1105, 1123, 1128,
+ 1134, 1146, 1157, 1168, 1179, 1190, 1201, 1212, 1238, 1252,
+ 1262, 1307, 1326, 1337, 1348, 1359, 1370, 1381, 1397, 1414,
+ 1430, 1441, 1452, 1485, 1496, 1509, 1520, 1559, 1569, 1579,
+ 1599, 1609, 1619, 1630, 1644, 1655, 1668, 1678, 1690, 1705,
+ 1716, 1722, 1742, 1753, 1764, 1772, 1798, 1828, 1857, 1888,
+ 1902, 1913, 1927, 1961, 1979, 2004, 2016, 2034, 2045, 2056,
+ 2067, 2080, 2091, 2102, 2113, 2124, 2135, 2168, 2178, 2191,
+ 2211, 2222, 2233, 2246, 2259, 2270, 2281, 2292, 2303, 2313,
+ 2324, 2335, 2347, 2358, 2369, 2380, 2393, 2405, 2417, 2428,
+ 2439, 2450, 2462, 2474, 2485, 2496, 2507, 2517, 2523, 2529,
+ 2535, 2541, 2547, 2553, 2559, 2565, 2571, 2577, 2588, 2599,
+ 2610, 2621, 2632, 2643, 2654, 2660, 2671, 2682, 2693, 2704,
+ 2715, 2725, 2738, 2746, 2754, 2778, 2789, 2800, 2811, 2822,
+ 2833, 2845, 2858, 2867, 2878, 2889, 2901, 2912, 2923, 2934,
+ 2948, 2960, 2986, 3016, 3027, 3052, 3089, 3117, 3142, 3153,
+ 3164, 3175, 3201, 3220, 3234, 3258, 3270, 3289, 3335, 3372,
+ 3388, 3407, 3421, 3440, 3456, 3464, 3473, 3484, 3496, 3510,
+ 3518, 3528, 3540, 3550, 3561, 3566, 3571, 3577, 3585, 3591,
+ 3597, 3603, 3609, 3622, 3626, 3636, 3640, 3645, 3650, 3655,
+ 3662, 3666, 3673, 3677, 3682, 3687, 3695, 3699, 3706, 3710,
+ 3718, 3723, 3729, 3738, 3743, 3749, 3755, 3761, 3770, 3773,
+ 3777, 3784, 3787, 3791, 3798, 3803, 3809, 3815, 3821, 3826,
+ 3834, 3837, 3844, 3847, 3854, 3858, 3862, 3866, 3873, 3876,
+ 3883, 3888, 3895, 3902, 3914, 3918, 3922, 3929, 3932, 3942,
+ 3945, 3954, 3960, 3969, 3973, 3980, 3984, 3988, 3992, 3999,
+ 4003, 4010, 4018, 4026, 4034, 4042, 4049, 4056, 4064, 4074,
+ 4079, 4084, 4089, 4097, 4100, 4104, 4113, 4120, 4127, 4134,
+ 4149, 4155, 4168, 4181, 4199, 4206, 4213, 4223, 4236, 4240,
+ 4244, 4248, 4255, 4261, 4267, 4273, 4283, 4292, 4294, 4296,
+ 4300, 4308, 4312, 4319, 4325, 4331, 4335, 4339, 4343, 4349,
+ 4355, 4359, 4363, 4367, 4371, 4375, 4379, 4383, 4387, 4391,
+ 4395
};
#endif
178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
- 178, 179, 179, 180, 180, 180, 180, 180, 181, 181,
- 182, 182, 182, 182, 183, 183, 184, 184, 185, 185,
- 185, 186, 186, 186, 186, 186, 187, 187, 187, 188,
- 188, 188, 189, 189, 189, 189, 189, 189, 190, 190,
- 191, 191, 192, 192, 192, 192, 193, 193, 194, 194,
- 194, 194, 195, 195, 195, 196, 196, 197, 197, 198,
- 199, 200, 200, 201, 201, 201, 201, 202, 202, 203,
- 203, 203, 203, 203, 203, 203, 203, 204, 204, 204,
- 204, 205, 205, 205, 206, 207, 208, 209, 209, 209,
- 209, 209, 210, 210, 210, 211, 212, 212, 212, 212,
- 213, 213, 213, 213, 214, 215, 215, 215, 216, 217,
- 217, 218, 219, 219, 219, 219, 219, 220, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221
+ 178, 178, 178, 179, 179, 180, 180, 180, 180, 180,
+ 181, 181, 182, 182, 182, 182, 183, 183, 184, 184,
+ 185, 185, 185, 186, 186, 186, 186, 186, 187, 187,
+ 187, 188, 188, 188, 189, 189, 189, 189, 189, 189,
+ 190, 190, 191, 191, 192, 192, 192, 192, 193, 193,
+ 194, 194, 194, 194, 195, 195, 195, 196, 196, 197,
+ 197, 198, 199, 200, 200, 201, 201, 201, 201, 202,
+ 202, 203, 203, 203, 203, 203, 203, 203, 203, 204,
+ 204, 204, 204, 205, 205, 205, 206, 207, 208, 209,
+ 209, 209, 209, 209, 210, 210, 210, 211, 212, 212,
+ 212, 212, 213, 213, 213, 213, 214, 215, 215, 215,
+ 216, 217, 217, 218, 219, 219, 219, 219, 219, 220,
+ 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
+ 221
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
4, 3, 3, 3, 11, 11, 9, 5, 5, 9,
5, 5, 6, 6, 5, 5, 5, 6, 6, 5,
1, 3, 3, 3, 3, 4, 4, 9, 9, 5,
- 7, 4, 6, 5, 6, 7, 9, 8, 8, 11,
- 9, 4, 5, 6, 7, 6, 4, 6, 5, 6,
- 6, 4, 8, 10, 10, 12, 5, 6, 5, 6,
- 4, 4, 4, 7, 9, 9, 9, 6, 6, 6,
- 8, 8, 6, 5, 5, 8, 4, 7, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
- 4, 4, 6, 6, 2, 2, 4, 2, 2, 2,
- 2, 2, 2, 6, 6, 5, 4, 3, 3, 3,
- 3, 3, 3, 4, 2, 4, 2, 4, 2, 4,
- 2, 7, 8, 8, 7, 7, 7, 9, 7, 8,
- 9, 8, 6, 7, 8, 9, 8, 7, 7, 6,
- 11, 7, 11, 7, 3, 2, 1, 7, 9, 11,
- 3, 5, 7, 1, 2, 2, 4, 1, 6, 6,
- 6, 1, 1, 0, 5, 5, 3, 3, 3, 3,
- 0, 1, 1, 1, 1, 1, 0, 3, 0, 3,
- 3, 0, 3, 3, 5, 5, 0, 3, 3, 0,
- 3, 3, 0, 3, 3, 3, 5, 5, 0, 3,
- 0, 3, 1, 1, 1, 1, 0, 3, 3, 3,
- 5, 5, 1, 1, 1, 0, 3, 0, 3, 4,
- 4, 1, 1, 1, 1, 1, 1, 1, 1, 3,
- 3, 3, 3, 5, 5, 5, 5, 3, 3, 5,
- 5, 0, 1, 1, 2, 2, 2, 3, 1, 5,
- 5, 3, 2, 2, 2, 3, 1, 1, 1, 1,
- 3, 3, 3, 3, 1, 1, 1, 1, 3, 1,
- 1, 3, 1, 1, 3, 2, 2, 1, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 1
+ 7, 4, 6, 6, 7, 9, 8, 8, 11, 9,
+ 4, 5, 6, 7, 6, 4, 6, 5, 6, 6,
+ 4, 8, 10, 10, 12, 5, 6, 5, 6, 4,
+ 4, 4, 7, 9, 9, 9, 6, 6, 6, 8,
+ 8, 6, 5, 5, 8, 4, 7, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 2, 2, 4,
+ 4, 6, 6, 2, 2, 4, 2, 2, 2, 2,
+ 2, 2, 6, 6, 5, 4, 3, 3, 3, 3,
+ 3, 3, 4, 2, 4, 2, 4, 2, 4, 2,
+ 7, 8, 8, 7, 7, 7, 9, 7, 8, 9,
+ 8, 6, 7, 8, 9, 8, 7, 7, 6, 11,
+ 7, 11, 7, 3, 2, 1, 7, 9, 11, 3,
+ 5, 7, 2, 2, 1, 2, 2, 4, 1, 1,
+ 6, 6, 6, 1, 1, 0, 5, 5, 3, 3,
+ 3, 3, 0, 1, 1, 1, 1, 1, 0, 3,
+ 0, 3, 3, 0, 3, 3, 5, 5, 0, 3,
+ 3, 0, 3, 3, 0, 3, 3, 3, 5, 5,
+ 0, 3, 0, 3, 1, 1, 1, 1, 0, 3,
+ 3, 3, 5, 5, 1, 1, 1, 0, 3, 0,
+ 3, 4, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 3, 3, 3, 3, 5, 5, 5, 5, 3,
+ 3, 5, 5, 0, 1, 1, 2, 2, 2, 3,
+ 1, 5, 5, 3, 2, 2, 2, 3, 1, 1,
+ 1, 1, 3, 3, 3, 3, 1, 1, 1, 1,
+ 3, 1, 1, 3, 1, 1, 3, 2, 2, 1,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 1
};
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
means the default is an error. */
static const yytype_uint16 yydefact[] =
{
- 0, 7, 0, 0, 206, 0, 0, 221, 222, 0,
- 0, 0, 0, 0, 138, 140, 139, 141, 142, 143,
- 144, 0, 0, 145, 146, 147, 0, 0, 0, 0,
- 11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 7, 0, 0, 205, 0, 0, 223, 224, 0,
+ 0, 0, 0, 0, 137, 139, 138, 140, 141, 142,
+ 219, 143, 0, 0, 144, 145, 146, 0, 0, 0,
+ 0, 0, 0, 11, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 217, 213, 0, 0, 0, 0, 0, 0, 8,
- 0, 3, 0, 0, 0, 0, 0, 0, 223, 308,
- 80, 0, 0, 0, 0, 324, 332, 333, 348, 205,
- 337, 0, 0, 0, 0, 0, 0, 0, 316, 317,
- 319, 318, 0, 0, 0, 0, 0, 0, 0, 149,
- 148, 154, 155, 0, 0, 0, 157, 158, 333, 160,
- 159, 0, 162, 161, 0, 0, 0, 176, 0, 174,
- 0, 178, 0, 180, 0, 0, 0, 316, 0, 0,
- 0, 0, 0, 0, 0, 215, 214, 0, 0, 0,
- 0, 0, 301, 0, 0, 1, 0, 4, 304, 305,
- 306, 0, 46, 0, 0, 0, 0, 0, 0, 0,
- 45, 0, 312, 49, 275, 314, 313, 0, 9, 0,
- 335, 336, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 169, 172, 170, 171, 167, 168, 0,
- 0, 0, 0, 0, 0, 272, 273, 274, 0, 0,
- 0, 81, 83, 246, 0, 246, 0, 0, 281, 282,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 307,
- 0, 0, 223, 249, 63, 59, 57, 61, 62, 82,
- 0, 0, 84, 0, 321, 320, 26, 14, 27, 15,
- 0, 0, 0, 0, 51, 0, 0, 0, 0, 0,
- 0, 311, 223, 48, 0, 210, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 301, 301,
- 323, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 288, 287, 303, 302, 0, 0,
- 0, 322, 0, 275, 204, 0, 0, 38, 25, 0,
- 0, 0, 0, 0, 0, 0, 0, 40, 0, 56,
- 0, 0, 0, 0, 334, 345, 347, 340, 346, 342,
- 341, 338, 339, 343, 344, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 287, 283, 284,
- 285, 286, 0, 0, 0, 0, 0, 0, 53, 0,
- 47, 166, 252, 258, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 301, 0, 0, 0,
- 86, 0, 50, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 111, 121, 122, 120, 0, 0,
+ 0, 0, 0, 0, 218, 214, 0, 0, 0, 0,
+ 0, 0, 8, 0, 3, 0, 0, 0, 0, 0,
+ 0, 225, 310, 80, 0, 0, 0, 0, 326, 334,
+ 335, 350, 204, 339, 0, 0, 0, 0, 0, 0,
+ 0, 318, 319, 321, 320, 0, 0, 0, 0, 0,
+ 0, 0, 148, 147, 153, 154, 0, 0, 212, 213,
+ 0, 156, 157, 335, 159, 158, 0, 161, 160, 0,
+ 0, 0, 175, 0, 173, 0, 177, 0, 179, 0,
+ 0, 0, 318, 0, 0, 0, 0, 0, 0, 0,
+ 216, 215, 0, 0, 0, 0, 0, 303, 0, 0,
+ 1, 0, 4, 306, 307, 308, 0, 46, 0, 0,
+ 0, 0, 0, 0, 0, 45, 0, 314, 49, 277,
+ 316, 315, 0, 9, 0, 337, 338, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 168, 171,
+ 169, 170, 166, 167, 0, 0, 0, 0, 0, 0,
+ 274, 275, 276, 0, 0, 0, 81, 83, 248, 0,
+ 248, 0, 0, 283, 284, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 309, 0, 0, 225, 251, 63,
+ 59, 57, 61, 62, 82, 0, 0, 84, 0, 323,
+ 322, 26, 14, 27, 15, 0, 0, 0, 0, 51,
+ 0, 0, 0, 0, 0, 0, 313, 225, 48, 0,
+ 209, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 303, 303, 325, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 290,
+ 289, 305, 304, 0, 0, 0, 324, 0, 277, 203,
+ 0, 0, 38, 25, 0, 0, 0, 0, 0, 0,
+ 0, 0, 40, 0, 56, 0, 0, 0, 0, 336,
+ 347, 349, 342, 348, 344, 343, 340, 341, 345, 346,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 85, 0, 0, 150, 0, 331, 151, 0, 0,
- 0, 0, 175, 173, 177, 179, 156, 302, 0, 0,
- 302, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 216, 0, 136, 0, 0, 0, 0, 0, 0, 0,
- 279, 0, 6, 60, 0, 315, 0, 0, 0, 0,
- 0, 0, 91, 106, 101, 0, 0, 0, 227, 0,
- 226, 0, 0, 223, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 79, 67, 68, 0, 252, 258,
- 252, 236, 238, 0, 0, 0, 0, 165, 0, 24,
- 0, 0, 0, 0, 301, 301, 0, 306, 0, 309,
- 302, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 277, 277, 74, 75, 277, 277, 0, 76, 70, 71,
- 0, 0, 0, 0, 0, 0, 0, 0, 93, 108,
- 260, 0, 238, 0, 0, 301, 0, 310, 0, 0,
- 211, 0, 0, 0, 0, 280, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 133, 0,
- 0, 134, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 102, 89, 0, 116, 118, 41, 276,
- 0, 0, 0, 0, 10, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 92, 107, 110, 0,
- 230, 52, 0, 0, 36, 248, 247, 0, 0, 0,
- 0, 0, 105, 258, 252, 117, 119, 0, 0, 302,
- 0, 0, 0, 12, 0, 333, 329, 0, 330, 199,
- 0, 0, 0, 0, 250, 251, 58, 0, 77, 78,
- 72, 73, 0, 0, 0, 0, 0, 42, 0, 0,
- 0, 0, 94, 109, 0, 39, 103, 260, 302, 0,
- 13, 0, 0, 0, 153, 152, 164, 163, 0, 0,
- 0, 0, 0, 129, 127, 128, 0, 220, 219, 218,
- 0, 132, 0, 0, 0, 0, 0, 0, 192, 5,
- 0, 0, 0, 0, 0, 224, 225, 0, 307, 0,
+ 0, 0, 289, 285, 286, 287, 288, 0, 0, 0,
+ 0, 0, 0, 53, 0, 47, 165, 254, 260, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 231, 232, 233, 0, 0, 0, 0, 0,
- 253, 0, 254, 0, 255, 259, 104, 95, 0, 246,
- 0, 0, 246, 0, 197, 0, 198, 0, 0, 0,
- 0, 0, 0, 0, 0, 123, 0, 0, 0, 0,
- 0, 0, 0, 0, 90, 0, 188, 0, 207, 212,
- 0, 181, 0, 0, 184, 185, 0, 137, 0, 0,
- 0, 0, 0, 0, 0, 203, 193, 186, 0, 201,
- 55, 54, 0, 0, 0, 0, 0, 0, 0, 34,
- 112, 0, 246, 98, 0, 0, 237, 0, 239, 240,
- 0, 0, 0, 246, 196, 246, 246, 189, 0, 325,
- 326, 327, 328, 0, 28, 258, 223, 278, 131, 130,
- 0, 0, 258, 97, 43, 44, 0, 0, 261, 0,
- 191, 223, 0, 182, 194, 183, 0, 135, 0, 0,
+ 0, 303, 0, 0, 0, 86, 0, 50, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 110,
+ 120, 121, 119, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 85, 0, 0, 149,
+ 0, 333, 150, 0, 0, 0, 0, 174, 172, 176,
+ 178, 155, 304, 0, 0, 304, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 217, 0, 135, 0, 0,
+ 0, 0, 0, 0, 0, 281, 0, 6, 60, 0,
+ 317, 0, 0, 0, 0, 0, 0, 91, 105, 100,
+ 0, 0, 0, 229, 0, 228, 0, 0, 225, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,
+ 67, 68, 0, 254, 260, 254, 238, 240, 0, 0,
+ 0, 0, 164, 0, 24, 0, 0, 0, 0, 303,
+ 303, 0, 308, 0, 311, 304, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 279, 279, 74, 75, 279,
+ 279, 0, 76, 70, 71, 0, 0, 0, 0, 0,
+ 0, 0, 0, 262, 107, 262, 0, 240, 0, 0,
+ 303, 0, 312, 0, 0, 210, 0, 0, 0, 0,
+ 282, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 132, 0, 0, 133, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 101, 89,
+ 0, 115, 117, 41, 278, 0, 0, 0, 0, 10,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 124, 100, 0, 69, 0, 0, 0, 257,
- 256, 195, 190, 187, 66, 0, 37, 88, 228, 229,
- 96, 0, 0, 0, 0, 87, 208, 125, 0, 0,
- 0, 0, 0, 0, 126, 0, 266, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 114, 0, 113, 0,
- 0, 0, 0, 266, 262, 265, 264, 263, 0, 0,
- 0, 0, 0, 64, 0, 0, 0, 0, 99, 241,
- 238, 20, 238, 0, 0, 209, 0, 0, 18, 19,
- 202, 200, 65, 0, 30, 0, 0, 0, 230, 23,
- 22, 21, 115, 0, 0, 0, 267, 0, 29, 0,
- 31, 32, 0, 33, 234, 235, 0, 0, 0, 0,
+ 0, 92, 106, 109, 0, 232, 52, 0, 0, 36,
+ 250, 249, 0, 0, 0, 0, 0, 104, 260, 254,
+ 116, 118, 0, 0, 304, 0, 0, 0, 12, 0,
+ 335, 331, 0, 332, 198, 0, 0, 0, 0, 252,
+ 253, 58, 0, 77, 78, 72, 73, 0, 0, 0,
+ 0, 0, 42, 0, 0, 0, 0, 93, 108, 0,
+ 39, 102, 262, 304, 0, 13, 0, 0, 0, 152,
+ 151, 163, 162, 0, 0, 0, 0, 0, 128, 126,
+ 127, 0, 222, 221, 220, 0, 131, 0, 0, 0,
+ 0, 0, 0, 191, 5, 0, 0, 0, 0, 0,
+ 226, 227, 0, 309, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 233, 234, 235,
+ 0, 0, 0, 0, 0, 255, 0, 256, 0, 257,
+ 261, 103, 94, 0, 248, 0, 0, 248, 0, 196,
+ 0, 197, 0, 0, 0, 0, 0, 0, 0, 0,
+ 122, 0, 0, 0, 0, 0, 0, 0, 0, 90,
+ 0, 187, 0, 206, 211, 0, 180, 0, 0, 183,
+ 184, 0, 136, 0, 0, 0, 0, 0, 0, 0,
+ 202, 192, 185, 0, 200, 55, 54, 0, 0, 0,
+ 0, 0, 0, 0, 34, 111, 0, 248, 97, 0,
+ 0, 239, 0, 241, 242, 0, 0, 0, 248, 195,
+ 248, 248, 188, 0, 327, 328, 329, 330, 0, 28,
+ 260, 225, 280, 130, 129, 0, 0, 260, 96, 43,
+ 44, 0, 0, 263, 0, 190, 225, 0, 181, 193,
+ 182, 0, 134, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 123, 99, 0,
+ 69, 0, 0, 0, 259, 258, 194, 189, 186, 66,
+ 0, 37, 88, 230, 231, 95, 0, 0, 0, 0,
+ 87, 207, 124, 0, 0, 0, 0, 0, 0, 125,
+ 0, 268, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 113, 0, 112, 0, 0, 0, 0, 268, 264,
+ 267, 266, 265, 0, 0, 0, 0, 0, 64, 0,
+ 0, 0, 0, 98, 243, 240, 20, 240, 0, 0,
+ 208, 0, 0, 18, 19, 201, 199, 65, 0, 30,
+ 0, 0, 0, 232, 23, 22, 21, 114, 0, 0,
+ 0, 269, 0, 29, 0, 31, 32, 0, 33, 236,
+ 237, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 245, 232, 244, 0, 0,
+ 0, 0, 271, 0, 270, 0, 292, 0, 294, 0,
+ 293, 0, 291, 0, 299, 0, 300, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 243, 230, 242, 0, 0, 0, 0, 269, 0, 268,
- 0, 290, 0, 292, 0, 291, 0, 289, 0, 297,
- 0, 298, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 245, 244, 0, 266, 266,
- 270, 271, 294, 296, 295, 293, 299, 300, 35, 16,
- 17
+ 247, 246, 0, 268, 268, 272, 273, 296, 298, 297,
+ 295, 301, 302, 35, 16, 17
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 60, 61, 62, 361, 168, 745, 715, 957, 601,
- 604, 939, 348, 372, 487, 489, 652, 908, 913, 948,
- 220, 309, 638, 64, 117, 221, 345, 288, 950, 953,
- 289, 362, 363, 67, 68, 69, 166, 93, 70, 77,
- 812, 626, 627, 109, 78, 79, 80
+ -1, 63, 64, 65, 366, 173, 750, 720, 962, 606,
+ 609, 944, 353, 377, 492, 494, 657, 913, 918, 953,
+ 225, 314, 643, 67, 122, 226, 350, 293, 955, 958,
+ 294, 367, 368, 70, 71, 72, 171, 96, 73, 80,
+ 817, 631, 632, 114, 81, 82, 83
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -907
+#define YYPACT_NINF -875
static const yytype_int16 yypact[] =
{
- 878, -907, -120, 291, -907, 614, 439, -907, -907, -35,
- -11, 31, 61, 81, -907, -907, -907, -907, -907, -907,
- -907, 183, 202, -907, -907, -907, 291, 291, -56, 291,
- -907, 351, 291, 291, 354, 96, 111, 86, 160, 162,
- 168, 122, 170, 172, 318, 134, 146, 196, 200, 217,
- 228, -907, 230, 233, 252, 46, 207, 26, 318, -907,
- 412, -907, -48, 195, 324, 270, 274, 394, 271, -907,
- -907, 418, 291, 291, 291, -907, -907, -907, -907, -907,
- 561, 55, 69, 71, 482, 421, 80, 107, 70, -907,
- -907, -907, 5, -107, 414, 419, 422, 440, 121, -907,
- -907, -907, -907, 291, 465, 42, -907, -907, 321, -907,
- -907, 52, -907, -907, 479, 489, 495, -907, 502, -907,
- 520, -907, 558, -907, 560, 569, 593, -907, 594, 599,
- 604, 609, 630, 640, 643, -907, -907, 638, 650, 27,
- 657, -22, 237, 663, 667, -907, 1024, -907, -907, -907,
- 186, 9, -907, 568, 272, 186, 186, 186, 547, 186,
- 174, 291, -907, -907, 548, -907, -907, 147, 556, 555,
- -907, -907, 459, 291, 291, 291, 291, 291, 291, 291,
- 291, 291, 291, -907, -907, -907, -907, -907, -907, 562,
- 563, 564, 565, 567, 570, -907, -907, -907, 572, 573,
- 574, 508, -907, 575, 645, -52, 159, 201, -907, -907,
- 697, 698, 703, 705, 706, 576, 577, 20, 708, 668,
- 579, 580, 271, 581, -907, -907, -907, 582, -907, 239,
- 583, 320, -907, 585, -907, -907, -907, -907, -907, -907,
- 586, 587, 725, 145, 15, 654, 411, 717, 718, 591,
- 272, -907, 271, -907, 598, 659, 597, 689, 588, 601,
- 690, 606, 607, -46, -39, -37, -4, 605, 301, 323,
- -907, 610, 613, 615, 616, 617, 618, 619, 621, 671,
- 291, 47, 740, 291, -907, -907, -907, 744, 291, 620,
- 622, -907, -47, 548, -907, 746, 742, 623, 626, 627,
- 629, 186, 631, 291, 291, 291, 653, -907, 644, -907,
- -42, -31, 374, 291, -907, 608, 571, -907, 600, 397,
- 397, -907, -907, 510, 510, 763, 765, 766, 768, 769,
- 760, 771, 772, 773, 774, 775, 776, 641, -907, -907,
- -907, -907, 291, 291, 291, 777, 779, 219, -907, 778,
- -907, -907, 646, 647, 648, 649, 652, 655, 780, 786,
- 745, 403, 394, 394, 274, 656, 382, 186, 789, 791,
- 661, 249, -907, 688, 218, 260, 268, 795, 186, 186,
- 186, 796, 798, 154, -907, -907, -907, -907, 687, 800,
- 33, 291, 291, 291, 805, 792, 670, 672, 804, 274,
- 673, 674, 291, 807, -907, 808, -907, -907, 811, 812,
- 813, 675, -907, -907, -907, -907, -907, -907, 291, 676,
- 816, 291, 678, 291, 291, 291, 818, 291, 291, 291,
- -907, 819, 683, 749, 291, 686, 0, 684, 685, 753,
- -907, 1024, -907, -907, 692, -907, 186, 186, 817, 820,
- 700, 210, -907, -907, -907, 693, 704, 723, -907, 730,
- -907, 762, 770, 271, 709, 710, 711, 712, 713, 719,
- 722, 726, 727, 728, -907, -907, -907, 843, 646, 647,
- 646, 24, 105, 721, 729, 731, 87, -907, 738, -907,
- 851, 852, 856, 305, 301, 464, 867, -907, 732, -907,
- 869, 291, 733, 739, 741, 743, 870, 759, 781, 782,
- 737, 737, -907, -907, 737, 737, 783, -907, -907, -907,
- 784, 785, 787, 788, 790, 793, 794, 797, 799, -907,
- 799, 801, 802, 871, 896, 481, 806, -907, 897, 809,
- 847, 810, 814, 815, 821, -907, 822, 842, 823, 824,
- 853, 828, 833, 834, 803, 835, 837, 838, -907, 827,
- 924, 840, 855, 928, 857, 861, 865, 940, 825, 291,
- 872, 899, 890, -907, -907, 186, -907, -907, 826, -907,
- 844, 845, 11, 40, -907, 947, 291, 291, 291, 291,
- 952, 943, 954, 945, 956, 894, -907, -907, -907, 978,
- 428, -907, 979, 487, -907, -907, -907, 982, 848, 44,
- 73, 849, -907, 647, 646, -907, -907, 291, 850, 983,
- 291, 854, 858, -907, 862, 839, -907, 873, -907, -907,
- 987, 988, 990, 919, -907, -907, -907, 882, -907, -907,
- -907, -907, 291, 291, 859, 1001, 1003, -907, 513, 186,
- 186, 914, -907, -907, 1007, -907, -907, 799, 997, 881,
- -907, 949, 1025, 291, -907, -907, -907, -907, 955, 1041,
- 980, 981, 178, -907, -907, -907, 186, -907, -907, -907,
- 923, -907, 957, 238, 926, 925, 1061, 1064, -907, -907,
- 133, 186, 186, 933, 186, -907, -907, 186, -907, 186,
- 932, 935, 936, 937, 938, 939, 941, 942, 944, 946,
- 291, 999, -907, -907, -907, 948, 1000, 950, 951, 1002,
- -907, 959, -907, 973, -907, -907, -907, -907, 953, 575,
- 958, 960, 575, 1014, -907, 477, -907, 1009, 962, 964,
- 394, 965, 966, 967, 566, -907, 968, 969, 970, 971,
- 961, 976, 974, 984, -907, 977, -907, 394, 1011, -907,
- 1085, -907, 1078, 1089, -907, -907, 989, -907, 991, 972,
- 986, 1090, 1091, 291, 1096, -907, -907, -907, 1115, -907,
- -907, -907, 1117, 186, 291, 1124, 1126, 1128, 1129, -907,
- -907, 859, 575, 993, 995, 1132, -907, 1133, -907, -907,
- 1111, 998, 1004, 575, -907, 575, 575, -907, 291, -907,
- -907, -907, -907, 186, -907, 647, 271, -907, -907, -907,
- 1006, 1020, 647, -907, -907, -907, 313, 1135, -907, 1092,
- -907, 271, 1136, -907, -907, -907, 859, -907, 1137, 1139,
- 1013, 1021, 1023, 1099, 1026, 1027, 1029, 1031, 1034, 1035,
- 1036, 1037, -907, -907, 1065, -907, 398, 612, 1098, -907,
- -907, -907, -907, -907, -907, 1130, -907, -907, -907, -907,
- -907, 1039, 1044, 1042, 1163, -907, 1113, -907, 1043, 1046,
- 291, 611, 1109, 291, -907, 1082, 1047, 291, 291, 291,
- 291, 1049, 1183, 1186, 1180, 186, -907, 1187, -907, 1143,
- 291, 291, 291, 1047, -907, -907, -907, -907, 1054, 925,
- 1055, 1056, 1083, -907, 1057, 1059, 1060, 1062, -907, 1063,
- 802, -907, 802, 1066, 1201, -907, 1067, 1069, -907, -907,
- -907, -907, -907, 1068, 1070, 1071, 1071, 1072, 476, -907,
- -907, -907, -907, 1073, 1203, 1205, -907, 557, -907, 332,
- -907, -907, 553, -907, -907, -907, 167, 380, 1196, 1077,
- 1079, 391, 408, 413, 453, 456, 462, 499, 506, 584,
- -907, 428, -907, 1076, 291, 291, 1103, -907, 1105, -907,
- 1106, -907, 1107, -907, 1108, -907, 1110, -907, 1112, -907,
- 1114, -907, 1080, 1084, 1176, 1088, 1093, 1094, 1095, 1097,
- 1100, 1101, 1102, 1104, 1116, -907, -907, 1216, 1047, 1047,
- -907, -907, -907, -907, -907, -907, -907, -907, -907, -907,
- -907
+ 862, -875, -87, -20, -875, 493, 421, -875, -875, -8,
+ 25, 44, 56, 93, -875, -875, -875, -875, -875, -875,
+ -875, -875, 213, 241, -875, -875, -875, -20, -20, 67,
+ -20, -20, -20, -875, 205, -20, -20, 263, 134, 147,
+ 154, 161, 163, 179, 209, 220, 233, 459, 245, 251,
+ 253, 259, 286, 306, -875, 316, 336, 345, 28, 492,
+ 22, 459, -875, 511, -875, -11, 208, 443, 1, 356,
+ 522, 400, -875, -875, 542, -20, -20, -20, -875, -875,
+ -875, -875, -875, 605, 126, 168, 171, 499, 554, 192,
+ 214, 105, -875, -875, -875, 10, -60, 547, 557, 576,
+ 581, 88, -875, -875, -875, -875, -20, 602, -875, -875,
+ 59, -875, -875, 471, -875, -875, 130, -875, -875, 619,
+ 635, 638, -875, 639, -875, 640, -875, 643, -875, 648,
+ 653, 656, -875, 655, 658, 659, 661, 667, 672, 673,
+ -875, -875, 664, 676, 27, 681, 118, 189, 684, 683,
+ -875, 1008, -875, -875, -875, 149, 8, -875, 641, -2,
+ 149, 149, 149, 549, 149, 123, -20, -875, -875, 551,
+ -875, -875, 117, 560, 564, -875, -875, 559, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -875, -875,
+ -875, -875, -875, -875, 556, 563, 565, 566, 567, 568,
+ -875, -875, -875, 569, 570, 571, 624, -875, 572, 649,
+ -33, 222, 275, -875, -875, 701, 710, 711, 712, 713,
+ 577, 578, 102, 714, 674, 580, 583, 400, 584, -875,
+ -875, -875, 585, -875, 330, 586, 376, -875, 587, -875,
+ -875, -875, -875, -875, -875, 589, 590, 718, 409, -16,
+ 657, 237, 720, 721, 594, -2, -875, 400, -875, 596,
+ 662, 597, 690, 591, 601, 693, 608, 609, -40, -19,
+ 36, 54, 606, 232, 295, -875, 611, 612, 613, 614,
+ 615, 616, 617, 618, 678, -20, 46, 751, -20, -875,
+ -875, -875, 752, -20, 620, 622, -875, -1, 551, -875,
+ 753, 745, 625, 626, 623, 629, 149, 630, -20, -20,
+ -20, 665, -875, 654, -875, -50, 55, 454, -20, -875,
+ 153, 481, -875, 403, 352, 352, -875, -875, 430, 430,
+ 766, 767, 768, 769, 770, 761, 772, 773, 774, 775,
+ 776, 777, 642, -875, -875, -875, -875, -20, -20, -20,
+ 778, 780, 225, -875, 781, -875, -875, 644, 645, 650,
+ 651, 652, 660, 786, 787, 744, 436, 522, 522, 356,
+ 663, 350, 149, 791, 792, 666, 325, -875, 688, 278,
+ 293, 318, 795, 149, 149, 149, 796, 797, 137, -875,
+ -875, -875, -875, 689, 800, 57, -20, -20, -20, 806,
+ 793, 671, 675, 805, 356, 670, 677, -20, 807, -875,
+ 810, -875, -875, 811, 812, 813, 680, -875, -875, -875,
+ -875, -875, -875, -20, 682, 814, -20, 685, -20, -20,
+ -20, 815, -20, -20, -20, -875, 816, 686, 748, -20,
+ 691, 138, 687, 694, 750, -875, 1008, -875, -875, 695,
+ -875, 149, 149, 818, 820, 702, 74, -875, -875, -875,
+ 707, 708, 715, -875, 729, -875, 779, 783, 400, 717,
+ 716, 722, 723, 725, 731, 733, 765, 771, 782, -875,
+ -875, -875, 817, 644, 645, 644, 204, 297, 709, 762,
+ 784, 162, -875, 730, -875, 836, 889, 891, 387, 232,
+ 381, 902, -875, 785, -875, 904, -20, 789, 788, 790,
+ 798, 905, 799, 801, 802, 794, 794, -875, -875, 794,
+ 794, 804, -875, -875, -875, 808, 803, 809, 821, 819,
+ 824, 825, 826, 827, -875, 827, 828, 829, 896, 897,
+ 292, 822, -875, 898, 831, 843, 832, 833, 834, 835,
+ -875, 837, 838, 839, 841, 840, 845, 849, 859, 842,
+ 860, 861, 865, -875, 852, 911, 867, 846, 913, 847,
+ 851, 853, 915, 863, -20, 857, 873, 883, -875, -875,
+ 149, -875, -875, 877, -875, 869, 875, 15, 21, -875,
+ 924, -20, -20, -20, -20, 942, 933, 944, 935, 946,
+ 882, -875, -875, -875, 948, 223, -875, 954, 341, -875,
+ -875, -875, 972, 907, 242, 362, 908, -875, 645, 644,
+ -875, -875, -20, 906, 973, -20, 909, 910, -875, 912,
+ 830, -875, 914, -875, -875, 975, 1047, 1049, 978, -875,
+ -875, -875, 945, -875, -875, -875, -875, -20, -20, 917,
+ 1042, 1046, -875, 402, 149, 149, 957, -875, -875, 1048,
+ -875, -875, 827, 1059, 921, -875, 989, 1062, -20, -875,
+ -875, -875, -875, 991, 1064, 993, 994, 156, -875, -875,
+ -875, 149, -875, -875, -875, 931, -875, 963, 260, 936,
+ 934, 1069, 1071, -875, -875, 419, 149, 149, 941, 149,
+ -875, -875, 149, -875, 149, 940, 943, 949, 950, 951,
+ 952, 953, 955, 956, 958, -20, 1004, -875, -875, -875,
+ 964, 1005, 965, 967, 1012, -875, 968, -875, 980, -875,
+ -875, -875, -875, 947, 572, 960, 969, 572, 1022, -875,
+ 321, -875, 1018, 971, 974, 522, 976, 977, 979, 457,
+ -875, 981, 982, 983, 984, 961, 990, 985, 987, -875,
+ 970, -875, 522, 1032, -875, 1111, -875, 1104, 1116, -875,
+ -875, 988, -875, 995, 1003, 1006, 1126, 1127, -20, 1141,
+ -875, -875, -875, 1142, -875, -875, -875, 1145, 149, -20,
+ 1144, 1150, 1151, 1152, -875, -875, 917, 572, 1016, 1019,
+ 1154, -875, 1156, -875, -875, 1153, 1021, 1024, 572, -875,
+ 572, 572, -875, -20, -875, -875, -875, -875, 149, -875,
+ 645, 400, -875, -875, -875, 1025, 1026, 645, -875, -875,
+ -875, 363, 1158, -875, 1117, -875, 400, 1164, -875, -875,
+ -875, 917, -875, 1165, 1166, 1033, 1031, 1034, 1113, 1035,
+ 1036, 1037, 1039, 1043, 1044, 1045, 1050, -875, -875, 1066,
+ -875, 573, 500, 1131, -875, -875, -875, -875, -875, -875,
+ 1136, -875, -875, -875, -875, -875, 1051, 1053, 1052, 1171,
+ -875, 1120, -875, 1055, 1056, -20, 548, 1110, -20, -875,
+ 1083, 1054, -20, -20, -20, -20, 1057, 1192, 1194, 1188,
+ 149, -875, 1195, -875, 1155, -20, -20, -20, 1054, -875,
+ -875, -875, -875, 1060, 934, 1063, 1065, 1087, -875, 1067,
+ 1068, 1070, 1072, -875, 1073, 829, -875, 829, 1075, 1206,
+ -875, 1077, 1080, -875, -875, -875, -875, -875, 1078, 1076,
+ 1079, 1079, 1081, 410, -875, -875, -875, -875, 1082, 1205,
+ 1207, -875, 465, -875, 288, -875, -875, 504, -875, -875,
+ -875, 432, 441, 1210, 1088, 1089, 446, 449, 475, 476,
+ 477, 478, 484, 485, 488, -875, 223, -875, 1085, -20,
+ -20, 1106, -875, 1105, -875, 1114, -875, 1115, -875, 1118,
+ -875, 1119, -875, 1121, -875, 1122, -875, 1091, 1092, 1178,
+ 1095, 1098, 1099, 1100, 1101, 1102, 1103, 1107, 1108, 1109,
+ -875, -875, 1230, 1054, 1054, -875, -875, -875, -875, -875,
+ -875, -875, -875, -875, -875, -875
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -907, -907, -907, -122, 10, -208, -737, -906, 284, -907,
- -509, -907, -196, -907, -451, -460, -502, -907, -863, -907,
- -907, 975, -69, -907, -27, -907, 402, -180, 325, -907,
- -243, 2, 22, -168, 963, -213, -50, 59, -907, -16,
- -907, -907, -907, 1220, -907, -26, 19
+ -875, -875, -875, -129, 26, -221, -700, -874, 294, -875,
+ -512, -875, -192, -875, -443, -463, -500, -875, -815, -875,
+ -875, 986, -287, -875, -30, -875, 406, -176, 331, -875,
+ -250, 2, 17, -140, 959, -206, -54, 19, -875, -17,
+ -875, -875, -875, 1236, -875, -27, 24
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
#define YYTABLE_NINF -3
static const yytype_int16 yytable[] =
{
- 101, 102, 65, 104, 365, 106, 107, 110, 113, 350,
- 63, 119, 121, 123, 370, 162, 165, 108, 108, 597,
- 296, 346, 66, 655, 292, 419, 422, 596, 653, 598,
- 146, 441, 956, 232, 222, 294, 234, 400, 411, 163,
- 928, 7, 8, 71, 401, 411, 360, 411, 252, 364,
- 7, 8, 142, 279, 852, 184, 186, 188, 223, 235,
- 226, 228, 136, 94, 389, 993, 395, 161, 256, 257,
- 7, 8, 253, 433, 139, 160, 164, 254, 259, 260,
- 411, 183, 399, 72, 280, 284, 285, 95, 418, 421,
- 73, 170, 171, 172, 219, 185, 229, 187, 231, 877,
- 7, 8, 526, 128, 434, 72, 225, 103, 251, 143,
- 140, 347, 73, 147, 442, 72, 457, 144, 72, 412,
- 458, 527, 73, 502, 172, 73, 413, 459, 414, 96,
- 172, 460, 72, 227, 72, 307, 282, 240, 283, 73,
- 241, 73, 242, 72, 243, 1019, 1020, 244, 65, 245,
- 73, 7, 8, 726, 233, 754, 63, 246, 563, 97,
- 293, 415, 564, 727, 297, 298, 299, 300, 66, 302,
- 72, 385, 295, 171, 697, 7, 8, 73, 388, 98,
- 522, 386, 599, 74, 72, 351, 501, 600, 75, 76,
- 523, 73, 315, 316, 317, 318, 319, 320, 321, 322,
- 323, 324, 721, 699, 764, 74, 722, 247, 248, 99,
- 75, 76, 608, 609, 765, 74, 7, 8, 74, 230,
- 75, 76, 72, 75, 76, 170, 171, 352, 100, 73,
- 610, 723, 74, 141, 74, 724, 172, 75, 76, 75,
- 76, 769, 770, 74, 510, 249, 576, 771, 75, 76,
- 116, 618, 621, 387, 432, 584, 135, 436, 772, 114,
- 7, 8, 438, 602, 72, 303, 304, 305, 603, 172,
- 74, 73, 148, 72, 115, 75, 76, 452, 453, 454,
- 73, 72, 310, 311, 250, 124, 512, 464, 73, 75,
- 76, 778, 659, 148, 514, 779, 152, 129, 149, 150,
- 7, 8, 7, 8, 7, 8, 153, 284, 285, 130,
- 153, 450, 162, 165, 617, 620, 478, 479, 480, 568,
- 286, 287, 74, 72, 118, 969, 120, 75, 76, 970,
- 73, 72, 122, 72, 125, 72, 126, 306, 73, 871,
- 154, 615, 73, 7, 8, 374, 375, 155, 511, 513,
- 515, 376, 483, 484, 72, 866, 156, 157, 158, 131,
- 159, 73, 870, 132, 74, 528, 529, 530, 72, 75,
- 76, 284, 285, 74, 498, 73, 539, 503, 75, 76,
- 133, 74, 507, 508, 286, 417, 75, 76, 517, 518,
- 519, 134, 546, 284, 285, 549, 137, 551, 552, 553,
- 461, 555, 556, 557, 7, 8, 286, 420, 561, 536,
- 462, 940, 145, 941, 72, 138, 127, 72, 89, 90,
- 91, 73, 151, 74, 73, 577, 378, 379, 75, 76,
- 153, 74, 380, 74, 167, 74, 75, 76, 75, 76,
- 75, 76, 639, 65, 169, 640, 641, 224, 571, 572,
- 236, 63, 284, 285, 74, 237, 570, 570, 238, 75,
- 76, 963, 964, 66, 175, 286, 500, 616, 74, 179,
- 180, 965, 966, 75, 76, 628, 239, 338, 339, 340,
- 341, 284, 285, 296, 365, 625, 400, 189, 190, 191,
- 192, 255, 193, 194, 258, 195, 196, 197, 198, 199,
- 200, 148, 391, 392, 393, 261, 149, 497, 201, 394,
- 202, 203, 7, 8, 105, 262, 204, 111, 205, 75,
- 76, 263, 75, 76, 173, 174, 175, 176, 264, 177,
- 178, 179, 180, 804, 284, 285, 807, 88, 971, 89,
- 90, 91, 972, 690, 92, 206, 265, 286, 619, 976,
- 181, 182, 207, 977, 712, 713, 714, 208, 209, 210,
- 701, 702, 703, 704, 286, 658, 978, 211, 212, 213,
- 979, 980, 214, 334, 335, 981, 336, 175, 284, 337,
- 177, 178, 179, 180, 266, 693, 267, 338, 339, 340,
- 341, 728, 698, 251, 731, 268, 853, 954, 955, 342,
- 343, 344, 712, 713, 714, 215, 216, 861, 867, 862,
- 863, 982, 717, 718, 984, 983, 742, 743, 985, 269,
- 986, 314, 270, 875, 987, 271, 173, 174, 175, 176,
- 272, 177, 178, 179, 180, 273, 173, 759, 175, 176,
- 296, 177, 178, 179, 180, 217, 218, 809, 810, 811,
- 75, 76, 181, 182, 748, 749, 274, 988, 775, 750,
- 751, 989, 181, 182, 990, 173, 275, 175, 991, 276,
- 177, 178, 179, 180, 277, 175, 278, 893, 177, 178,
- 179, 180, 284, 285, 794, 281, 766, 820, 821, 290,
- 816, 181, 182, 961, 962, 291, 783, 967, 968, 181,
- 182, 780, 781, 81, 570, 954, 955, 831, 82, 83,
- 301, 308, 84, 85, 312, 313, 349, 86, 87, 904,
- 905, 906, 907, 353, 354, 325, 326, 327, 328, 355,
- 329, 356, 357, 330, 366, 331, 332, 333, 347, 367,
- 358, 359, 368, 369, 371, 373, 377, 842, 381, 382,
- 383, 384, 390, 396, 397, 398, 402, 403, 847, 404,
- 405, 408, 406, 407, 409, 410, 435, 416, 423, 431,
- 437, 424, 444, 425, 426, 427, 428, 429, 445, 455,
- 456, 446, 864, 430, 447, 439, 448, 440, 449, 465,
- 451, 466, 467, 846, 468, 469, 470, 471, 472, 473,
- 474, 475, 476, 481, 477, 482, 494, 490, 491, 486,
- 488, 492, 495, 485, 493, 504, 496, 505, 499, 506,
- 509, 516, 520, 865, 521, 524, 525, 531, 532, 533,
- 535, 534, 538, 540, 541, 537, 872, 542, 543, 544,
- 545, 547, 548, 550, 554, 558, 559, 560, 562, 565,
- 566, 567, 569, 573, 903, 578, 574, 910, 575, 580,
- 582, 914, 915, 916, 917, 581, 579, 585, 583, 595,
- 586, 587, 588, 589, 925, 926, 927, 590, -2, 1,
- 591, 611, 930, 605, 592, 593, 594, 612, 613, 607,
- 2, 606, 614, 622, 623, 624, 633, 630, 629, 631,
- 637, 632, 3, 4, 5, 922, 6, 656, 7, 8,
+ 104, 105, 68, 107, 108, 109, 375, 111, 112, 115,
+ 118, 124, 126, 128, 167, 170, 370, 69, 355, 113,
+ 113, 602, 297, 424, 427, 660, 66, 157, 7, 8,
+ 351, 7, 8, 227, 299, 658, 406, 158, 237, 301,
+ 601, 168, 603, 75, 416, 7, 8, 257, 147, 405,
+ 76, 7, 8, 284, 289, 290, 144, 189, 191, 193,
+ 228, 75, 231, 233, 75, 416, 133, 151, 76, 961,
+ 166, 159, 438, 394, 258, 400, 74, 446, 160, 259,
+ 149, 141, 369, 239, 285, 261, 262, 161, 162, 163,
+ 97, 164, 145, 933, 165, 169, 857, 423, 426, 175,
+ 176, 177, 998, 439, 245, 148, 240, 246, 462, 247,
+ 581, 248, 463, 224, 249, 404, 250, 236, 7, 8,
+ 416, 507, 75, 98, 251, 417, 531, 256, 365, 76,
+ 352, 234, 7, 8, 177, 7, 8, 75, 416, 312,
+ 177, 882, 99, 77, 76, 532, 418, 393, 78, 79,
+ 152, 75, 188, 68, 100, 731, 264, 265, 76, 238,
+ 447, 77, 759, 527, 77, 75, 78, 79, 69, 78,
+ 79, 300, 76, 528, 252, 253, 732, 66, 702, 7,
+ 8, 298, 769, 176, 704, 302, 303, 304, 305, 75,
+ 307, 101, 770, 75, 190, 506, 76, 192, 1024, 1025,
+ 76, 419, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 254, 464, 308, 309, 310, 465, 230, 420,
+ 180, 153, 77, 182, 183, 184, 185, 78, 79, 644,
+ 106, 75, 645, 646, 75, 175, 176, 77, 76, 102,
+ 232, 76, 78, 79, 186, 187, 177, 589, 356, 623,
+ 626, 255, 315, 316, 235, 75, 78, 79, 437, 289,
+ 290, 441, 76, 774, 775, 77, 443, 103, 75, 776,
+ 78, 79, 291, 292, 392, 76, 287, 75, 288, 177,
+ 777, 457, 458, 459, 76, 75, 311, 613, 614, 77,
+ 664, 469, 76, 77, 78, 79, 568, 119, 78, 79,
+ 569, 357, 289, 290, 515, 615, 153, 289, 290, 301,
+ 120, 154, 155, 167, 170, 291, 422, 573, 121, 517,
+ 483, 484, 485, 622, 625, 123, 75, 125, 396, 397,
+ 398, 77, 455, 76, 77, 399, 78, 79, 75, 78,
+ 79, 75, 140, 127, 519, 76, 7, 8, 76, 717,
+ 718, 719, 516, 518, 520, 77, 75, 871, 488, 489,
+ 78, 79, 604, 76, 875, 289, 290, 605, 110, 533,
+ 534, 535, 129, 78, 79, 291, 663, 77, 291, 425,
+ 544, 75, 78, 79, 130, 77, 7, 8, 76, 876,
+ 78, 79, 158, 7, 8, 503, 551, 131, 508, 554,
+ 726, 556, 557, 558, 727, 560, 561, 562, 134, 522,
+ 523, 524, 566, 945, 135, 946, 136, 968, 969, 180,
+ 289, 290, 137, 620, 184, 185, 116, 970, 971, 582,
+ 541, 78, 79, 291, 505, 390, 379, 380, 77, 7,
+ 8, 77, 381, 78, 79, 391, 78, 79, 68, 138,
+ 75, 289, 290, 576, 577, 607, 77, 76, 512, 513,
+ 608, 78, 79, 69, 291, 624, 722, 723, 178, 139,
+ 180, 621, 66, 182, 183, 184, 185, 575, 575, 633,
+ 466, 77, 383, 384, 7, 8, 78, 79, 385, 630,
+ 467, 814, 815, 816, 186, 187, 370, 180, 405, 142,
+ 182, 183, 184, 185, 194, 195, 196, 197, 143, 198,
+ 199, 150, 200, 201, 202, 203, 204, 205, 146, 91,
+ 728, 92, 93, 94, 729, 206, 95, 207, 208, 7,
+ 8, 959, 960, 209, 153, 210, 717, 718, 719, 154,
+ 502, 156, 809, 753, 754, 812, 178, 695, 180, 181,
+ 77, 182, 183, 184, 185, 78, 79, 132, 158, 92,
+ 93, 94, 211, 172, 706, 707, 708, 709, 174, 212,
+ 289, 290, 186, 187, 213, 214, 215, 783, 825, 826,
+ 229, 784, 84, 241, 216, 217, 218, 85, 86, 219,
+ 974, 87, 88, 242, 975, 733, 89, 90, 736, 976,
+ 872, 966, 967, 977, 981, 858, 698, 983, 982, 959,
+ 960, 984, 243, 703, 256, 880, 866, 244, 867, 868,
+ 747, 748, 220, 221, 178, 179, 180, 181, 260, 182,
+ 183, 184, 185, 985, 987, 989, 991, 986, 988, 990,
+ 992, 764, 993, 995, 263, 266, 994, 996, 972, 973,
+ 186, 187, 343, 344, 345, 346, 909, 910, 911, 912,
+ 780, 267, 222, 223, 268, 269, 270, 78, 79, 271,
+ 178, 179, 180, 181, 272, 182, 183, 184, 185, 273,
+ 755, 756, 274, 275, 276, 277, 898, 278, 799, 339,
+ 340, 821, 341, 279, 289, 342, 186, 187, 280, 281,
+ 282, 788, 283, 343, 344, 345, 346, 771, 836, 286,
+ 295, 296, 306, 301, 313, 347, 348, 349, 317, 330,
+ 354, 319, 785, 786, 318, 575, 331, 358, 332, 333,
+ 334, 335, 336, 337, 338, 352, 359, 360, 361, 362,
+ 371, 363, 364, 373, 389, 372, 374, 376, 378, 382,
+ 386, 847, 387, 388, 407, 395, 401, 402, 403, 409,
+ 408, 410, 852, 412, 413, 411, 414, 415, 421, 428,
+ 429, 430, 431, 432, 433, 434, 436, 440, 442, 449,
+ 435, 450, 453, 451, 452, 444, 869, 445, 454, 456,
+ 461, 460, 470, 471, 472, 473, 474, 475, 476, 477,
+ 478, 479, 480, 481, 486, 482, 487, 491, 493, 495,
+ 496, 497, 499, 500, 851, 501, 490, 509, 510, 498,
+ 514, 521, 525, 526, 511, 504, 530, 529, 536, 537,
+ 538, 540, 542, 545, 539, 543, 546, 547, 548, 549,
+ 553, 559, 563, 600, 870, 550, 565, 552, 572, 564,
+ 555, 585, 570, 567, 578, 574, 579, 877, 908, 571,
+ 580, 915, -2, 1, 586, 919, 920, 921, 922, 583,
+ 584, 610, 617, 616, 2, 590, 591, 587, 930, 931,
+ 932, 588, 592, 593, 935, 594, 3, 4, 5, 595,
+ 6, 596, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 597, 611, 618, 927, 619, 627, 598,
+ 629, 638, 661, 662, 666, 668, 674, 686, 677, 689,
+ 599, 693, 612, 696, 688, 690, 635, 628, 636, 691,
+ 705, 692, 1000, 1001, 634, 153, 637, 642, 38, 39,
+ 697, 639, 647, 640, 641, 649, 648, 650, 710, 711,
+ 712, 713, 714, 715, 716, 40, 41, 42, 43, 651,
+ 721, 652, 44, 685, 665, 45, 46, 653, 654, 655,
+ 656, 659, 608, 667, 669, 670, 671, 672, 724, 735,
+ 681, 742, 673, 740, 675, 47, 676, 678, 48, 49,
+ 50, 679, 51, 52, 53, 54, 55, 56, 57, 58,
+ 2, 680, 682, 683, 694, 59, 60, 684, 61, 62,
+ 687, 700, 3, 4, 5, 699, 6, 701, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 634, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 657, 661, 30, 31, 32, 33, 34, 663,
- 669, 642, 643, 635, 636, 645, 646, 644, 995, 996,
- 681, 672, 647, 683, 684, 685, 648, 649, 680, 686,
- 650, 676, 651, 687, 654, 603, 688, 692, 660, 691,
- 148, 662, 664, 700, 35, 36, 665, 666, 705, 706,
- 707, 708, 709, 667, 694, 710, 689, 668, 670, 671,
- 673, 37, 38, 39, 40, 674, 675, 677, 41, 678,
- 679, 42, 43, 682, 711, 716, 695, 696, 719, 730,
- 720, 725, 735, 737, 738, 729, 739, 740, 741, 732,
- 733, 44, 744, 755, 45, 46, 47, 734, 48, 49,
- 50, 51, 52, 53, 54, 55, 2, 746, 736, 747,
- 752, 56, 57, 753, 58, 59, 756, 757, 3, 4,
- 5, 758, 6, 760, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 761, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 762, 763,
- 30, 31, 32, 33, 34, 767, 773, 776, 768, 774,
- 777, 782, 784, 785, 786, 787, 788, 795, 797, 802,
- 800, 789, 801, 790, 791, 808, 792, 813, 793, 832,
- 796, 833, 798, 799, 834, 835, 840, 841, 803, 826,
- 35, 36, 843, 805, 814, 806, 815, 817, 818, 819,
- 822, 823, 824, 825, 827, 838, 828, 37, 38, 39,
- 40, 844, 830, 858, 41, 845, 829, 42, 43, 839,
- 848, 836, 849, 837, 850, 851, 854, 855, 856, 857,
- 859, 873, 876, 878, 874, 879, 860, 44, 868, 894,
- 45, 46, 47, 880, 48, 49, 50, 51, 52, 53,
- 54, 55, 869, 411, 881, 882, 883, 56, 57, 884,
- 58, 59, 885, 886, 887, 888, 889, 890, 891, 899,
- 895, 896, 897, 901, 898, 900, 902, 909, 911, 919,
- 912, 918, 920, 921, 924, 923, 929, 931, 932, 934,
- 933, 935, 936, 943, 937, 944, 938, 945, 942, 959,
- 946, 960, 973, 947, 949, 952, 958, 974, 994, 975,
- 997, 998, 1005, 999, 1000, 1001, 1006, 1002, 1007, 1003,
- 1008, 1004, 1018, 992, 112, 1009, 1010, 1011, 892, 1012,
- 0, 951, 1013, 1014, 1015, 0, 1016, 0, 443, 0,
- 0, 0, 0, 0, 0, 463, 0, 0, 1017
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 725,
+ 730, 734, 738, 743, 737, 744, 745, 739, 751, 741,
+ 749, 746, 752, 757, 758, 760, 761, 762, 763, 765,
+ 766, 767, 768, 772, 773, 781, 778, 782, 779, 787,
+ 789, 790, 800, 802, 38, 39, 807, 791, 792, 793,
+ 805, 806, 808, 813, 794, 795, 818, 796, 797, 831,
+ 798, 40, 41, 42, 43, 810, 801, 803, 44, 804,
+ 837, 45, 46, 819, 811, 835, 820, 838, 822, 823,
+ 839, 824, 840, 827, 828, 829, 830, 833, 832, 834,
+ 841, 47, 845, 846, 48, 49, 50, 842, 51, 52,
+ 53, 54, 55, 56, 57, 58, 843, 848, 849, 844,
+ 853, 59, 60, 850, 61, 62, 854, 855, 856, 859,
+ 861, 860, 862, 864, 878, 863, 865, 873, 874, 879,
+ 881, 883, 884, 885, 886, 888, 887, 416, 889, 896,
+ 890, 891, 899, 892, 893, 894, 900, 904, 914, 916,
+ 895, 902, 905, 901, 903, 906, 907, 917, 924, 923,
+ 925, 926, 934, 928, 938, 936, 929, 937, 948, 939,
+ 940, 964, 941, 965, 942, 949, 943, 947, 950, 952,
+ 951, 1003, 954, 1002, 957, 963, 978, 999, 979, 980,
+ 1012, 1004, 1005, 1010, 1011, 1006, 1007, 1013, 1008, 1009,
+ 1014, 1015, 1016, 1017, 1018, 1019, 1023, 897, 997, 1020,
+ 1021, 1022, 956, 117, 0, 0, 468, 0, 0, 0,
+ 0, 0, 0, 0, 448
};
static const yytype_int16 yycheck[] =
{
- 26, 27, 0, 29, 217, 31, 32, 33, 34, 205,
- 0, 38, 39, 40, 222, 65, 66, 33, 34, 479,
- 72, 201, 0, 532, 146, 268, 269, 478, 530, 480,
- 78, 78, 938, 28, 84, 26, 143, 250, 84, 65,
- 903, 30, 31, 163, 252, 84, 26, 84, 98, 217,
- 30, 31, 26, 26, 791, 81, 82, 83, 84, 166,
- 86, 87, 52, 98, 244, 971, 246, 65, 26, 27,
- 30, 31, 98, 26, 28, 65, 66, 103, 26, 27,
- 84, 26, 250, 63, 57, 70, 71, 98, 268, 269,
- 70, 72, 73, 74, 84, 26, 26, 26, 88, 836,
- 30, 31, 69, 44, 57, 63, 26, 163, 98, 83,
- 64, 163, 70, 161, 161, 63, 158, 58, 63, 165,
- 162, 88, 70, 366, 105, 70, 165, 158, 165, 98,
- 111, 162, 63, 26, 63, 161, 158, 16, 160, 70,
- 19, 70, 21, 63, 23, 1008, 1009, 26, 146, 28,
- 70, 30, 31, 613, 149, 657, 146, 36, 158, 98,
- 150, 165, 162, 614, 154, 155, 156, 157, 146, 159,
- 63, 26, 163, 154, 163, 30, 31, 70, 163, 98,
- 26, 36, 158, 163, 63, 26, 366, 163, 168, 169,
- 36, 70, 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 158, 163, 26, 163, 162, 86, 87, 26,
- 168, 169, 125, 126, 36, 163, 30, 31, 163, 149,
- 168, 169, 63, 168, 169, 206, 207, 26, 26, 70,
- 143, 158, 163, 26, 163, 162, 217, 168, 169, 168,
- 169, 3, 4, 163, 26, 124, 36, 9, 168, 169,
- 164, 494, 495, 243, 280, 463, 26, 283, 20, 163,
- 30, 31, 288, 158, 63, 91, 92, 93, 163, 250,
- 163, 70, 98, 63, 163, 168, 169, 303, 304, 305,
- 70, 63, 135, 136, 163, 163, 26, 313, 70, 168,
- 169, 158, 535, 98, 26, 162, 26, 163, 103, 104,
- 30, 31, 30, 31, 30, 31, 36, 70, 71, 163,
- 36, 301, 362, 363, 494, 495, 342, 343, 344, 441,
- 83, 84, 163, 63, 164, 158, 164, 168, 169, 162,
- 70, 63, 164, 63, 164, 63, 164, 163, 70, 26,
- 70, 36, 70, 30, 31, 106, 107, 77, 374, 375,
- 376, 112, 133, 134, 63, 815, 86, 87, 88, 163,
- 90, 70, 822, 163, 163, 391, 392, 393, 63, 168,
- 169, 70, 71, 163, 364, 70, 402, 367, 168, 169,
- 163, 163, 133, 134, 83, 84, 168, 169, 378, 379,
- 380, 163, 418, 70, 71, 421, 163, 423, 424, 425,
- 26, 427, 428, 429, 30, 31, 83, 84, 434, 399,
- 36, 920, 0, 922, 63, 163, 98, 63, 100, 101,
- 102, 70, 98, 163, 70, 451, 106, 107, 168, 169,
- 36, 163, 112, 163, 163, 163, 168, 169, 168, 169,
- 168, 169, 511, 441, 26, 514, 515, 26, 446, 447,
- 36, 441, 70, 71, 163, 36, 446, 447, 36, 168,
- 169, 129, 130, 441, 67, 83, 84, 493, 163, 72,
- 73, 139, 140, 168, 169, 501, 36, 79, 80, 81,
- 82, 70, 71, 72, 697, 501, 699, 5, 6, 7,
- 8, 26, 10, 11, 173, 13, 14, 15, 16, 17,
- 18, 98, 91, 92, 93, 26, 103, 104, 26, 98,
- 28, 29, 30, 31, 163, 26, 34, 163, 36, 168,
- 169, 26, 168, 169, 65, 66, 67, 68, 26, 70,
- 71, 72, 73, 729, 70, 71, 732, 98, 158, 100,
- 101, 102, 162, 569, 105, 63, 26, 83, 84, 158,
- 91, 92, 70, 162, 126, 127, 128, 75, 76, 77,
- 586, 587, 588, 589, 83, 84, 158, 85, 86, 87,
- 162, 158, 90, 65, 66, 162, 68, 67, 70, 71,
- 70, 71, 72, 73, 26, 575, 26, 79, 80, 81,
- 82, 617, 582, 583, 620, 26, 792, 121, 122, 91,
- 92, 93, 126, 127, 128, 123, 124, 803, 816, 805,
- 806, 158, 125, 126, 158, 162, 642, 643, 162, 26,
- 158, 162, 28, 831, 162, 26, 65, 66, 67, 68,
- 26, 70, 71, 72, 73, 26, 65, 663, 67, 68,
- 72, 70, 71, 72, 73, 163, 164, 170, 171, 172,
- 168, 169, 91, 92, 141, 142, 26, 158, 685, 649,
- 650, 162, 91, 92, 158, 65, 26, 67, 162, 26,
- 70, 71, 72, 73, 36, 67, 26, 857, 70, 71,
- 72, 73, 70, 71, 710, 28, 676, 121, 122, 26,
- 740, 91, 92, 136, 137, 28, 694, 144, 145, 91,
- 92, 691, 692, 89, 694, 121, 122, 757, 94, 95,
- 163, 163, 98, 99, 158, 160, 71, 103, 104, 108,
- 109, 110, 111, 26, 26, 163, 163, 163, 163, 26,
- 163, 26, 26, 163, 26, 163, 163, 163, 163, 71,
- 164, 164, 163, 163, 163, 163, 163, 773, 163, 163,
- 163, 26, 98, 36, 36, 164, 158, 98, 784, 162,
- 71, 71, 174, 162, 158, 158, 26, 162, 158, 98,
- 26, 158, 26, 158, 158, 158, 158, 158, 36, 126,
- 136, 158, 808, 162, 158, 165, 159, 165, 159, 26,
- 159, 26, 26, 783, 26, 26, 36, 26, 26, 26,
- 26, 26, 26, 26, 163, 26, 26, 159, 159, 163,
- 163, 159, 26, 35, 159, 26, 71, 26, 162, 158,
- 132, 26, 26, 813, 26, 138, 26, 22, 36, 159,
- 26, 159, 158, 26, 26, 162, 826, 26, 26, 26,
- 165, 165, 26, 165, 26, 26, 163, 98, 162, 165,
- 165, 98, 160, 36, 880, 162, 36, 883, 158, 136,
- 98, 887, 888, 889, 890, 135, 162, 158, 98, 26,
- 160, 160, 160, 160, 900, 901, 902, 158, 0, 1,
- 158, 143, 909, 162, 158, 158, 158, 36, 36, 158,
- 12, 162, 36, 26, 162, 26, 26, 158, 165, 158,
- 163, 158, 24, 25, 26, 895, 28, 36, 30, 31,
+ 27, 28, 0, 30, 31, 32, 227, 34, 35, 36,
+ 37, 41, 42, 43, 68, 69, 222, 0, 210, 36,
+ 37, 484, 151, 273, 274, 537, 0, 26, 30, 31,
+ 206, 30, 31, 87, 26, 535, 257, 36, 28, 72,
+ 483, 68, 485, 63, 84, 30, 31, 101, 26, 255,
+ 70, 30, 31, 26, 70, 71, 28, 84, 85, 86,
+ 87, 63, 89, 90, 63, 84, 47, 78, 70, 943,
+ 68, 70, 26, 249, 101, 251, 163, 78, 77, 106,
+ 61, 55, 222, 143, 57, 26, 27, 86, 87, 88,
+ 98, 90, 64, 908, 68, 69, 796, 273, 274, 75,
+ 76, 77, 976, 57, 16, 83, 166, 19, 158, 21,
+ 36, 23, 162, 87, 26, 255, 28, 91, 30, 31,
+ 84, 371, 63, 98, 36, 165, 69, 101, 26, 70,
+ 163, 26, 30, 31, 110, 30, 31, 63, 84, 166,
+ 116, 841, 98, 163, 70, 88, 165, 163, 168, 169,
+ 161, 63, 26, 151, 98, 618, 26, 27, 70, 149,
+ 161, 163, 662, 26, 163, 63, 168, 169, 151, 168,
+ 169, 163, 70, 36, 86, 87, 619, 151, 163, 30,
+ 31, 155, 26, 159, 163, 159, 160, 161, 162, 63,
+ 164, 98, 36, 63, 26, 371, 70, 26, 1013, 1014,
+ 70, 165, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 124, 158, 91, 92, 93, 162, 26, 165,
+ 67, 98, 163, 70, 71, 72, 73, 168, 169, 516,
+ 163, 63, 519, 520, 63, 211, 212, 163, 70, 26,
+ 26, 70, 168, 169, 91, 92, 222, 468, 26, 499,
+ 500, 163, 135, 136, 149, 63, 168, 169, 285, 70,
+ 71, 288, 70, 3, 4, 163, 293, 26, 63, 9,
+ 168, 169, 83, 84, 248, 70, 158, 63, 160, 255,
+ 20, 308, 309, 310, 70, 63, 163, 125, 126, 163,
+ 540, 318, 70, 163, 168, 169, 158, 163, 168, 169,
+ 162, 26, 70, 71, 26, 143, 98, 70, 71, 72,
+ 163, 103, 104, 367, 368, 83, 84, 446, 164, 26,
+ 347, 348, 349, 499, 500, 164, 63, 164, 91, 92,
+ 93, 163, 306, 70, 163, 98, 168, 169, 63, 168,
+ 169, 63, 26, 164, 26, 70, 30, 31, 70, 126,
+ 127, 128, 379, 380, 381, 163, 63, 820, 133, 134,
+ 168, 169, 158, 70, 827, 70, 71, 163, 163, 396,
+ 397, 398, 163, 168, 169, 83, 84, 163, 83, 84,
+ 407, 63, 168, 169, 164, 163, 30, 31, 70, 26,
+ 168, 169, 36, 30, 31, 369, 423, 164, 372, 426,
+ 158, 428, 429, 430, 162, 432, 433, 434, 163, 383,
+ 384, 385, 439, 925, 163, 927, 163, 129, 130, 67,
+ 70, 71, 163, 36, 72, 73, 163, 139, 140, 456,
+ 404, 168, 169, 83, 84, 26, 106, 107, 163, 30,
+ 31, 163, 112, 168, 169, 36, 168, 169, 446, 163,
+ 63, 70, 71, 451, 452, 158, 163, 70, 133, 134,
+ 163, 168, 169, 446, 83, 84, 125, 126, 65, 163,
+ 67, 498, 446, 70, 71, 72, 73, 451, 452, 506,
+ 26, 163, 106, 107, 30, 31, 168, 169, 112, 506,
+ 36, 170, 171, 172, 91, 92, 702, 67, 704, 163,
+ 70, 71, 72, 73, 5, 6, 7, 8, 163, 10,
+ 11, 0, 13, 14, 15, 16, 17, 18, 26, 98,
+ 158, 100, 101, 102, 162, 26, 105, 28, 29, 30,
+ 31, 121, 122, 34, 98, 36, 126, 127, 128, 103,
+ 104, 98, 734, 141, 142, 737, 65, 574, 67, 68,
+ 163, 70, 71, 72, 73, 168, 169, 98, 36, 100,
+ 101, 102, 63, 163, 591, 592, 593, 594, 26, 70,
+ 70, 71, 91, 92, 75, 76, 77, 158, 121, 122,
+ 26, 162, 89, 36, 85, 86, 87, 94, 95, 90,
+ 158, 98, 99, 36, 162, 622, 103, 104, 625, 158,
+ 821, 136, 137, 162, 158, 797, 580, 158, 162, 121,
+ 122, 162, 36, 587, 588, 836, 808, 36, 810, 811,
+ 647, 648, 123, 124, 65, 66, 67, 68, 26, 70,
+ 71, 72, 73, 158, 158, 158, 158, 162, 162, 162,
+ 162, 668, 158, 158, 173, 26, 162, 162, 144, 145,
+ 91, 92, 79, 80, 81, 82, 108, 109, 110, 111,
+ 690, 26, 163, 164, 26, 26, 26, 168, 169, 26,
+ 65, 66, 67, 68, 26, 70, 71, 72, 73, 26,
+ 654, 655, 26, 28, 26, 26, 862, 26, 715, 65,
+ 66, 745, 68, 26, 70, 71, 91, 92, 26, 26,
+ 36, 699, 26, 79, 80, 81, 82, 681, 762, 28,
+ 26, 28, 163, 72, 163, 91, 92, 93, 158, 163,
+ 71, 162, 696, 697, 160, 699, 163, 26, 163, 163,
+ 163, 163, 163, 163, 163, 163, 26, 26, 26, 26,
+ 26, 164, 164, 163, 26, 71, 163, 163, 163, 163,
+ 163, 778, 163, 163, 158, 98, 36, 36, 164, 162,
+ 98, 71, 789, 162, 71, 174, 158, 158, 162, 158,
+ 158, 158, 158, 158, 158, 158, 98, 26, 26, 26,
+ 162, 36, 159, 158, 158, 165, 813, 165, 159, 159,
+ 136, 126, 26, 26, 26, 26, 26, 36, 26, 26,
+ 26, 26, 26, 26, 26, 163, 26, 163, 163, 159,
+ 159, 159, 26, 26, 788, 71, 35, 26, 26, 159,
+ 132, 26, 26, 26, 158, 162, 26, 138, 22, 36,
+ 159, 26, 162, 26, 159, 158, 26, 26, 26, 26,
+ 26, 26, 26, 26, 818, 165, 98, 165, 98, 163,
+ 165, 136, 165, 162, 36, 160, 36, 831, 885, 165,
+ 158, 888, 0, 1, 135, 892, 893, 894, 895, 162,
+ 162, 162, 36, 143, 12, 158, 160, 98, 905, 906,
+ 907, 98, 160, 160, 914, 160, 24, 25, 26, 158,
+ 28, 158, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 158, 162, 36, 900, 36, 26, 158,
+ 26, 26, 36, 36, 36, 92, 98, 26, 98, 26,
+ 158, 26, 158, 70, 98, 98, 158, 162, 158, 98,
+ 26, 98, 979, 980, 165, 98, 158, 163, 96, 97,
+ 77, 162, 158, 162, 162, 162, 158, 158, 26, 36,
+ 26, 36, 26, 91, 26, 113, 114, 115, 116, 158,
+ 26, 162, 120, 131, 162, 123, 124, 163, 163, 163,
+ 163, 163, 163, 162, 162, 162, 162, 162, 26, 26,
+ 158, 26, 165, 173, 165, 143, 165, 162, 146, 147,
+ 148, 162, 150, 151, 152, 153, 154, 155, 156, 157,
+ 12, 162, 162, 162, 161, 163, 164, 162, 166, 167,
+ 163, 162, 24, 25, 26, 158, 28, 162, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 162, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 36, 36, 56, 57, 58, 59, 60, 92,
- 98, 158, 158, 162, 162, 158, 158, 162, 974, 975,
- 26, 98, 162, 98, 26, 98, 163, 163, 131, 98,
- 163, 158, 163, 98, 163, 163, 26, 77, 162, 70,
- 98, 162, 162, 26, 96, 97, 162, 162, 26, 36,
- 26, 36, 26, 162, 158, 91, 161, 165, 165, 165,
- 162, 113, 114, 115, 116, 162, 162, 162, 120, 162,
- 162, 123, 124, 163, 26, 26, 162, 162, 26, 26,
- 162, 162, 173, 26, 26, 165, 26, 98, 136, 165,
- 162, 143, 163, 26, 146, 147, 148, 165, 150, 151,
- 152, 153, 154, 155, 156, 157, 12, 36, 165, 36,
- 126, 163, 164, 36, 166, 167, 165, 98, 24, 25,
- 26, 26, 28, 98, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 26, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 98, 98,
- 56, 57, 58, 59, 60, 162, 160, 26, 131, 164,
- 26, 158, 160, 158, 158, 158, 158, 98, 98, 126,
- 98, 162, 143, 162, 162, 91, 162, 98, 162, 98,
- 162, 26, 162, 162, 36, 26, 26, 26, 165, 158,
- 96, 97, 26, 165, 162, 165, 162, 162, 162, 162,
- 162, 162, 162, 162, 158, 163, 162, 113, 114, 115,
- 116, 26, 165, 32, 120, 28, 162, 123, 124, 163,
- 26, 162, 26, 162, 26, 26, 163, 162, 26, 26,
- 162, 26, 26, 26, 72, 26, 162, 143, 162, 71,
- 146, 147, 148, 160, 150, 151, 152, 153, 154, 155,
- 156, 157, 162, 84, 163, 162, 160, 163, 164, 162,
- 166, 167, 163, 162, 160, 160, 160, 160, 133, 36,
- 70, 162, 158, 160, 162, 92, 160, 98, 126, 26,
- 163, 162, 26, 33, 71, 28, 162, 162, 162, 162,
- 137, 162, 162, 22, 162, 158, 163, 158, 162, 26,
- 162, 26, 36, 163, 163, 163, 163, 160, 162, 160,
- 137, 136, 162, 137, 137, 137, 162, 137, 72, 137,
- 162, 137, 36, 969, 34, 162, 162, 162, 856, 162,
- -1, 936, 162, 162, 162, -1, 162, -1, 293, -1,
- -1, -1, -1, -1, -1, 312, -1, -1, 162
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 162,
+ 162, 165, 162, 26, 165, 26, 98, 165, 36, 165,
+ 163, 136, 36, 126, 36, 26, 165, 98, 26, 98,
+ 26, 98, 98, 162, 131, 26, 160, 26, 164, 158,
+ 160, 158, 98, 98, 96, 97, 126, 158, 158, 158,
+ 98, 143, 165, 91, 162, 162, 98, 162, 162, 158,
+ 162, 113, 114, 115, 116, 165, 162, 162, 120, 162,
+ 98, 123, 124, 162, 165, 165, 162, 26, 162, 162,
+ 36, 162, 26, 162, 162, 162, 162, 162, 158, 162,
+ 162, 143, 26, 26, 146, 147, 148, 162, 150, 151,
+ 152, 153, 154, 155, 156, 157, 163, 26, 26, 163,
+ 26, 163, 164, 28, 166, 167, 26, 26, 26, 163,
+ 26, 162, 26, 162, 26, 32, 162, 162, 162, 72,
+ 26, 26, 26, 160, 163, 160, 162, 84, 162, 133,
+ 163, 162, 71, 160, 160, 160, 70, 36, 98, 126,
+ 160, 158, 92, 162, 162, 160, 160, 163, 26, 162,
+ 26, 33, 162, 28, 137, 162, 71, 162, 22, 162,
+ 162, 26, 162, 26, 162, 158, 163, 162, 158, 163,
+ 162, 136, 163, 137, 163, 163, 36, 162, 160, 160,
+ 72, 137, 137, 162, 162, 137, 137, 162, 137, 137,
+ 162, 162, 162, 162, 162, 162, 36, 861, 974, 162,
+ 162, 162, 941, 37, -1, -1, 317, -1, -1, -1,
+ -1, -1, -1, -1, 298
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
{
0, 1, 12, 24, 25, 26, 28, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 56, 57, 58, 59, 60, 96, 97, 113, 114, 115,
- 116, 120, 123, 124, 143, 146, 147, 148, 150, 151,
- 152, 153, 154, 155, 156, 157, 163, 164, 166, 167,
- 176, 177, 178, 179, 198, 206, 207, 208, 209, 210,
- 213, 163, 63, 70, 163, 168, 169, 214, 219, 220,
- 221, 89, 94, 95, 98, 99, 103, 104, 98, 100,
- 101, 102, 105, 212, 98, 98, 98, 98, 98, 26,
- 26, 220, 220, 163, 220, 163, 220, 220, 214, 218,
- 220, 163, 218, 220, 163, 163, 164, 199, 164, 199,
- 164, 199, 164, 199, 163, 164, 164, 98, 212, 163,
- 163, 163, 163, 163, 163, 26, 179, 163, 163, 28,
- 64, 26, 26, 83, 212, 0, 78, 161, 98, 103,
- 104, 98, 26, 36, 70, 77, 86, 87, 88, 90,
- 179, 206, 211, 220, 179, 211, 211, 163, 180, 26,
- 221, 221, 221, 65, 66, 67, 68, 70, 71, 72,
- 73, 91, 92, 26, 220, 26, 220, 26, 220, 5,
- 6, 7, 8, 10, 11, 13, 14, 15, 16, 17,
- 18, 26, 28, 29, 34, 36, 63, 70, 75, 76,
- 77, 85, 86, 87, 90, 123, 124, 163, 164, 179,
- 195, 200, 211, 220, 26, 26, 220, 26, 220, 26,
- 149, 179, 28, 149, 143, 166, 36, 36, 36, 36,
- 16, 19, 21, 23, 26, 28, 36, 86, 87, 124,
- 163, 179, 211, 220, 220, 26, 26, 27, 173, 26,
- 27, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 28, 26, 26, 26, 26, 26, 26, 36, 26, 26,
- 57, 28, 158, 160, 70, 71, 83, 84, 202, 205,
- 26, 28, 178, 179, 26, 163, 72, 179, 179, 179,
- 179, 163, 179, 91, 92, 93, 163, 220, 163, 196,
- 135, 136, 158, 160, 162, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 163, 163, 163, 163, 163,
- 163, 163, 163, 163, 65, 66, 68, 71, 79, 80,
- 81, 82, 91, 92, 93, 201, 202, 163, 187, 71,
- 187, 26, 26, 26, 26, 26, 26, 26, 164, 164,
- 26, 179, 206, 207, 208, 210, 26, 71, 163, 163,
- 180, 163, 188, 163, 106, 107, 112, 163, 106, 107,
- 112, 163, 163, 163, 26, 26, 36, 179, 163, 202,
- 98, 91, 92, 93, 98, 202, 36, 36, 164, 208,
- 210, 180, 158, 98, 162, 71, 174, 162, 71, 158,
- 158, 84, 165, 165, 165, 165, 162, 84, 202, 205,
- 84, 202, 205, 158, 158, 158, 158, 158, 158, 158,
- 162, 98, 220, 26, 57, 26, 220, 26, 220, 165,
- 165, 78, 161, 196, 26, 36, 158, 158, 159, 159,
- 179, 159, 220, 220, 220, 126, 136, 158, 162, 158,
- 162, 26, 36, 209, 220, 26, 26, 26, 26, 26,
- 36, 26, 26, 26, 26, 26, 26, 163, 220, 220,
- 220, 26, 26, 133, 134, 35, 163, 189, 163, 190,
- 159, 159, 159, 159, 26, 26, 71, 104, 179, 162,
- 84, 202, 205, 179, 26, 26, 158, 133, 134, 132,
- 26, 220, 26, 220, 26, 220, 26, 179, 179, 179,
- 26, 26, 26, 36, 138, 26, 69, 88, 220, 220,
- 220, 22, 36, 159, 159, 26, 179, 162, 158, 220,
- 26, 26, 26, 26, 26, 165, 220, 165, 26, 220,
- 165, 220, 220, 220, 26, 220, 220, 220, 26, 163,
- 98, 220, 162, 158, 162, 165, 165, 98, 178, 160,
- 179, 206, 206, 36, 36, 158, 36, 220, 162, 162,
- 136, 135, 98, 98, 180, 158, 160, 160, 160, 160,
- 158, 158, 158, 158, 158, 26, 189, 190, 189, 158,
- 163, 184, 158, 163, 185, 162, 162, 158, 125, 126,
- 143, 143, 36, 36, 36, 36, 220, 202, 205, 84,
- 202, 205, 26, 162, 26, 214, 216, 217, 220, 165,
- 158, 158, 158, 26, 162, 162, 162, 163, 197, 197,
- 197, 197, 158, 158, 162, 158, 158, 162, 163, 163,
- 163, 163, 191, 191, 163, 185, 36, 36, 84, 205,
- 162, 36, 162, 92, 162, 162, 162, 162, 165, 98,
- 165, 165, 98, 162, 162, 162, 158, 162, 162, 162,
- 131, 26, 163, 98, 26, 98, 98, 98, 26, 161,
- 220, 70, 77, 179, 158, 162, 162, 163, 179, 163,
- 26, 220, 220, 220, 220, 26, 36, 26, 36, 26,
- 91, 26, 126, 127, 128, 182, 26, 125, 126, 26,
- 162, 158, 162, 158, 162, 162, 190, 189, 220, 165,
- 26, 220, 165, 162, 165, 173, 165, 26, 26, 26,
- 98, 136, 220, 220, 163, 181, 36, 36, 141, 142,
- 179, 179, 126, 36, 191, 26, 165, 98, 26, 220,
- 98, 26, 98, 98, 26, 36, 179, 162, 131, 3,
- 4, 9, 20, 160, 164, 199, 26, 26, 158, 162,
- 179, 179, 158, 206, 160, 158, 158, 158, 158, 162,
- 162, 162, 162, 162, 220, 98, 162, 98, 162, 162,
- 98, 143, 126, 165, 187, 165, 165, 187, 91, 170,
- 171, 172, 215, 98, 162, 162, 211, 162, 162, 162,
- 121, 122, 162, 162, 162, 162, 158, 158, 162, 162,
- 165, 211, 98, 26, 36, 26, 162, 162, 163, 163,
- 26, 26, 220, 26, 26, 28, 179, 220, 26, 26,
- 26, 26, 181, 187, 163, 162, 26, 26, 32, 162,
- 162, 187, 187, 187, 220, 179, 190, 180, 162, 162,
- 190, 26, 179, 26, 72, 180, 26, 181, 26, 26,
- 160, 163, 162, 160, 162, 163, 162, 160, 160, 160,
- 160, 133, 201, 202, 71, 70, 162, 158, 162, 36,
- 92, 160, 160, 220, 108, 109, 110, 111, 192, 98,
- 220, 126, 163, 193, 220, 220, 220, 220, 162, 26,
- 26, 33, 179, 28, 71, 220, 220, 220, 193, 162,
- 199, 162, 162, 137, 162, 162, 162, 162, 163, 186,
- 185, 185, 162, 22, 158, 158, 162, 163, 194, 163,
- 203, 203, 163, 204, 121, 122, 182, 183, 163, 26,
- 26, 136, 137, 129, 130, 139, 140, 144, 145, 158,
- 162, 158, 162, 36, 160, 160, 158, 162, 158, 162,
- 158, 162, 158, 162, 158, 162, 158, 162, 158, 162,
- 158, 162, 183, 182, 162, 220, 220, 137, 136, 137,
- 137, 137, 137, 137, 137, 162, 162, 72, 162, 162,
- 162, 162, 162, 162, 162, 162, 162, 162, 36, 193,
- 193
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 96, 97,
+ 113, 114, 115, 116, 120, 123, 124, 143, 146, 147,
+ 148, 150, 151, 152, 153, 154, 155, 156, 157, 163,
+ 164, 166, 167, 176, 177, 178, 179, 198, 206, 207,
+ 208, 209, 210, 213, 163, 63, 70, 163, 168, 169,
+ 214, 219, 220, 221, 89, 94, 95, 98, 99, 103,
+ 104, 98, 100, 101, 102, 105, 212, 98, 98, 98,
+ 98, 98, 26, 26, 220, 220, 163, 220, 220, 220,
+ 163, 220, 220, 214, 218, 220, 163, 218, 220, 163,
+ 163, 164, 199, 164, 199, 164, 199, 164, 199, 163,
+ 164, 164, 98, 212, 163, 163, 163, 163, 163, 163,
+ 26, 179, 163, 163, 28, 64, 26, 26, 83, 212,
+ 0, 78, 161, 98, 103, 104, 98, 26, 36, 70,
+ 77, 86, 87, 88, 90, 179, 206, 211, 220, 179,
+ 211, 211, 163, 180, 26, 221, 221, 221, 65, 66,
+ 67, 68, 70, 71, 72, 73, 91, 92, 26, 220,
+ 26, 220, 26, 220, 5, 6, 7, 8, 10, 11,
+ 13, 14, 15, 16, 17, 18, 26, 28, 29, 34,
+ 36, 63, 70, 75, 76, 77, 85, 86, 87, 90,
+ 123, 124, 163, 164, 179, 195, 200, 211, 220, 26,
+ 26, 220, 26, 220, 26, 149, 179, 28, 149, 143,
+ 166, 36, 36, 36, 36, 16, 19, 21, 23, 26,
+ 28, 36, 86, 87, 124, 163, 179, 211, 220, 220,
+ 26, 26, 27, 173, 26, 27, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 28, 26, 26, 26, 26,
+ 26, 26, 36, 26, 26, 57, 28, 158, 160, 70,
+ 71, 83, 84, 202, 205, 26, 28, 178, 179, 26,
+ 163, 72, 179, 179, 179, 179, 163, 179, 91, 92,
+ 93, 163, 220, 163, 196, 135, 136, 158, 160, 162,
+ 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
+ 163, 163, 163, 163, 163, 163, 163, 163, 163, 65,
+ 66, 68, 71, 79, 80, 81, 82, 91, 92, 93,
+ 201, 202, 163, 187, 71, 187, 26, 26, 26, 26,
+ 26, 26, 26, 164, 164, 26, 179, 206, 207, 208,
+ 210, 26, 71, 163, 163, 180, 163, 188, 163, 106,
+ 107, 112, 163, 106, 107, 112, 163, 163, 163, 26,
+ 26, 36, 179, 163, 202, 98, 91, 92, 93, 98,
+ 202, 36, 36, 164, 208, 210, 180, 158, 98, 162,
+ 71, 174, 162, 71, 158, 158, 84, 165, 165, 165,
+ 165, 162, 84, 202, 205, 84, 202, 205, 158, 158,
+ 158, 158, 158, 158, 158, 162, 98, 220, 26, 57,
+ 26, 220, 26, 220, 165, 165, 78, 161, 196, 26,
+ 36, 158, 158, 159, 159, 179, 159, 220, 220, 220,
+ 126, 136, 158, 162, 158, 162, 26, 36, 209, 220,
+ 26, 26, 26, 26, 26, 36, 26, 26, 26, 26,
+ 26, 26, 163, 220, 220, 220, 26, 26, 133, 134,
+ 35, 163, 189, 163, 190, 159, 159, 159, 159, 26,
+ 26, 71, 104, 179, 162, 84, 202, 205, 179, 26,
+ 26, 158, 133, 134, 132, 26, 220, 26, 220, 26,
+ 220, 26, 179, 179, 179, 26, 26, 26, 36, 138,
+ 26, 69, 88, 220, 220, 220, 22, 36, 159, 159,
+ 26, 179, 162, 158, 220, 26, 26, 26, 26, 26,
+ 165, 220, 165, 26, 220, 165, 220, 220, 220, 26,
+ 220, 220, 220, 26, 163, 98, 220, 162, 158, 162,
+ 165, 165, 98, 178, 160, 179, 206, 206, 36, 36,
+ 158, 36, 220, 162, 162, 136, 135, 98, 98, 180,
+ 158, 160, 160, 160, 160, 158, 158, 158, 158, 158,
+ 26, 189, 190, 189, 158, 163, 184, 158, 163, 185,
+ 162, 162, 158, 125, 126, 143, 143, 36, 36, 36,
+ 36, 220, 202, 205, 84, 202, 205, 26, 162, 26,
+ 214, 216, 217, 220, 165, 158, 158, 158, 26, 162,
+ 162, 162, 163, 197, 197, 197, 197, 158, 158, 162,
+ 158, 158, 162, 163, 163, 163, 163, 191, 191, 163,
+ 185, 36, 36, 84, 205, 162, 36, 162, 92, 162,
+ 162, 162, 162, 165, 98, 165, 165, 98, 162, 162,
+ 162, 158, 162, 162, 162, 131, 26, 163, 98, 26,
+ 98, 98, 98, 26, 161, 220, 70, 77, 179, 158,
+ 162, 162, 163, 179, 163, 26, 220, 220, 220, 220,
+ 26, 36, 26, 36, 26, 91, 26, 126, 127, 128,
+ 182, 26, 125, 126, 26, 162, 158, 162, 158, 162,
+ 162, 190, 189, 220, 165, 26, 220, 165, 162, 165,
+ 173, 165, 26, 26, 26, 98, 136, 220, 220, 163,
+ 181, 36, 36, 141, 142, 179, 179, 126, 36, 191,
+ 26, 165, 98, 26, 220, 98, 26, 98, 98, 26,
+ 36, 179, 162, 131, 3, 4, 9, 20, 160, 164,
+ 199, 26, 26, 158, 162, 179, 179, 158, 206, 160,
+ 158, 158, 158, 158, 162, 162, 162, 162, 162, 220,
+ 98, 162, 98, 162, 162, 98, 143, 126, 165, 187,
+ 165, 165, 187, 91, 170, 171, 172, 215, 98, 162,
+ 162, 211, 162, 162, 162, 121, 122, 162, 162, 162,
+ 162, 158, 158, 162, 162, 165, 211, 98, 26, 36,
+ 26, 162, 162, 163, 163, 26, 26, 220, 26, 26,
+ 28, 179, 220, 26, 26, 26, 26, 181, 187, 163,
+ 162, 26, 26, 32, 162, 162, 187, 187, 187, 220,
+ 179, 190, 180, 162, 162, 190, 26, 179, 26, 72,
+ 180, 26, 181, 26, 26, 160, 163, 162, 160, 162,
+ 163, 162, 160, 160, 160, 160, 133, 201, 202, 71,
+ 70, 162, 158, 162, 36, 92, 160, 160, 220, 108,
+ 109, 110, 111, 192, 98, 220, 126, 163, 193, 220,
+ 220, 220, 220, 162, 26, 26, 33, 179, 28, 71,
+ 220, 220, 220, 193, 162, 199, 162, 162, 137, 162,
+ 162, 162, 162, 163, 186, 185, 185, 162, 22, 158,
+ 158, 162, 163, 194, 163, 203, 203, 163, 204, 121,
+ 122, 182, 183, 163, 26, 26, 136, 137, 129, 130,
+ 139, 140, 144, 145, 158, 162, 158, 162, 36, 160,
+ 160, 158, 162, 158, 162, 158, 162, 158, 162, 158,
+ 162, 158, 162, 158, 162, 158, 162, 183, 182, 162,
+ 220, 220, 137, 136, 137, 137, 137, 137, 137, 137,
+ 162, 162, 72, 162, 162, 162, 162, 162, 162, 162,
+ 162, 162, 162, 36, 193, 193
};
#define yyerrok (yyerrstatus = 0)
we won't break user code: when these are the locations we know. */
#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
# define YY_LOCATION_PRINT(File, Loc) \
fprintf (File, "%d.%d-%d.%d", \
(Loc).first_line, (Loc).first_column, \
switch (yyn)
{
case 3:
-#line 569 "bfin-parse.y"
+#line 610 "bfin-parse.y"
{
insn = (yyvsp[(1) - (1)].instr);
if (insn == (INSTR_T) 0)
break;
case 5:
-#line 583 "bfin-parse.y"
+#line 624 "bfin-parse.y"
{
if (((yyvsp[(1) - (6)].instr)->value & 0xf800) == 0xc000)
{
if (is_group1 ((yyvsp[(3) - (6)].instr)) && is_group2 ((yyvsp[(5) - (6)].instr)))
- (yyval.instr) = bfin_gen_multi_instr ((yyvsp[(1) - (6)].instr), (yyvsp[(3) - (6)].instr), (yyvsp[(5) - (6)].instr));
+ (yyval.instr) = gen_multi_instr_1 ((yyvsp[(1) - (6)].instr), (yyvsp[(3) - (6)].instr), (yyvsp[(5) - (6)].instr));
else if (is_group2 ((yyvsp[(3) - (6)].instr)) && is_group1 ((yyvsp[(5) - (6)].instr)))
- (yyval.instr) = bfin_gen_multi_instr ((yyvsp[(1) - (6)].instr), (yyvsp[(5) - (6)].instr), (yyvsp[(3) - (6)].instr));
+ (yyval.instr) = gen_multi_instr_1 ((yyvsp[(1) - (6)].instr), (yyvsp[(5) - (6)].instr), (yyvsp[(3) - (6)].instr));
else
return yyerror ("Wrong 16 bit instructions groups, slot 2 and slot 3 must be 16-bit instrution group");
}
else if (((yyvsp[(3) - (6)].instr)->value & 0xf800) == 0xc000)
{
if (is_group1 ((yyvsp[(1) - (6)].instr)) && is_group2 ((yyvsp[(5) - (6)].instr)))
- (yyval.instr) = bfin_gen_multi_instr ((yyvsp[(3) - (6)].instr), (yyvsp[(1) - (6)].instr), (yyvsp[(5) - (6)].instr));
+ (yyval.instr) = gen_multi_instr_1 ((yyvsp[(3) - (6)].instr), (yyvsp[(1) - (6)].instr), (yyvsp[(5) - (6)].instr));
else if (is_group2 ((yyvsp[(1) - (6)].instr)) && is_group1 ((yyvsp[(5) - (6)].instr)))
- (yyval.instr) = bfin_gen_multi_instr ((yyvsp[(3) - (6)].instr), (yyvsp[(5) - (6)].instr), (yyvsp[(1) - (6)].instr));
+ (yyval.instr) = gen_multi_instr_1 ((yyvsp[(3) - (6)].instr), (yyvsp[(5) - (6)].instr), (yyvsp[(1) - (6)].instr));
else
return yyerror ("Wrong 16 bit instructions groups, slot 1 and slot 3 must be 16-bit instrution group");
}
else if (((yyvsp[(5) - (6)].instr)->value & 0xf800) == 0xc000)
{
if (is_group1 ((yyvsp[(1) - (6)].instr)) && is_group2 ((yyvsp[(3) - (6)].instr)))
- (yyval.instr) = bfin_gen_multi_instr ((yyvsp[(5) - (6)].instr), (yyvsp[(1) - (6)].instr), (yyvsp[(3) - (6)].instr));
+ (yyval.instr) = gen_multi_instr_1 ((yyvsp[(5) - (6)].instr), (yyvsp[(1) - (6)].instr), (yyvsp[(3) - (6)].instr));
else if (is_group2 ((yyvsp[(1) - (6)].instr)) && is_group1 ((yyvsp[(3) - (6)].instr)))
- (yyval.instr) = bfin_gen_multi_instr ((yyvsp[(5) - (6)].instr), (yyvsp[(3) - (6)].instr), (yyvsp[(1) - (6)].instr));
+ (yyval.instr) = gen_multi_instr_1 ((yyvsp[(5) - (6)].instr), (yyvsp[(3) - (6)].instr), (yyvsp[(1) - (6)].instr));
else
return yyerror ("Wrong 16 bit instructions groups, slot 1 and slot 2 must be 16-bit instrution group");
}
break;
case 6:
-#line 616 "bfin-parse.y"
+#line 657 "bfin-parse.y"
{
if (((yyvsp[(1) - (4)].instr)->value & 0xf800) == 0xc000)
{
if (is_group1 ((yyvsp[(3) - (4)].instr)))
- (yyval.instr) = bfin_gen_multi_instr ((yyvsp[(1) - (4)].instr), (yyvsp[(3) - (4)].instr), 0);
+ (yyval.instr) = gen_multi_instr_1 ((yyvsp[(1) - (4)].instr), (yyvsp[(3) - (4)].instr), 0);
else if (is_group2 ((yyvsp[(3) - (4)].instr)))
- (yyval.instr) = bfin_gen_multi_instr ((yyvsp[(1) - (4)].instr), 0, (yyvsp[(3) - (4)].instr));
+ (yyval.instr) = gen_multi_instr_1 ((yyvsp[(1) - (4)].instr), 0, (yyvsp[(3) - (4)].instr));
else
return yyerror ("Wrong 16 bit instructions groups, slot 2 must be the 16-bit instruction group");
}
else if (((yyvsp[(3) - (4)].instr)->value & 0xf800) == 0xc000)
{
if (is_group1 ((yyvsp[(1) - (4)].instr)))
- (yyval.instr) = bfin_gen_multi_instr ((yyvsp[(3) - (4)].instr), (yyvsp[(1) - (4)].instr), 0);
+ (yyval.instr) = gen_multi_instr_1 ((yyvsp[(3) - (4)].instr), (yyvsp[(1) - (4)].instr), 0);
else if (is_group2 ((yyvsp[(1) - (4)].instr)))
- (yyval.instr) = bfin_gen_multi_instr ((yyvsp[(3) - (4)].instr), 0, (yyvsp[(1) - (4)].instr));
+ (yyval.instr) = gen_multi_instr_1 ((yyvsp[(3) - (4)].instr), 0, (yyvsp[(1) - (4)].instr));
else
return yyerror ("Wrong 16 bit instructions groups, slot 1 must be the 16-bit instruction group");
}
else if (is_group1 ((yyvsp[(1) - (4)].instr)) && is_group2 ((yyvsp[(3) - (4)].instr)))
- (yyval.instr) = bfin_gen_multi_instr (0, (yyvsp[(1) - (4)].instr), (yyvsp[(3) - (4)].instr));
+ (yyval.instr) = gen_multi_instr_1 (0, (yyvsp[(1) - (4)].instr), (yyvsp[(3) - (4)].instr));
else if (is_group2 ((yyvsp[(1) - (4)].instr)) && is_group1 ((yyvsp[(3) - (4)].instr)))
- (yyval.instr) = bfin_gen_multi_instr (0, (yyvsp[(3) - (4)].instr), (yyvsp[(1) - (4)].instr));
+ (yyval.instr) = gen_multi_instr_1 (0, (yyvsp[(3) - (4)].instr), (yyvsp[(1) - (4)].instr));
else
return yyerror ("Wrong 16 bit instructions groups, slot 1 and slot 2 must be the 16-bit instruction group");
}
break;
case 7:
-#line 643 "bfin-parse.y"
+#line 684 "bfin-parse.y"
{
(yyval.instr) = 0;
yyerror ("");
break;
case 8:
-#line 654 "bfin-parse.y"
+#line 695 "bfin-parse.y"
{
(yyval.instr) = DSP32MAC (3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0);
}
break;
case 9:
-#line 658 "bfin-parse.y"
+#line 699 "bfin-parse.y"
{
int op0, op1;
int w0 = 0, w1 = 0;
int h00, h10, h01, h11;
+ if (check_macfunc_option (&(yyvsp[(1) - (2)].macfunc), &(yyvsp[(2) - (2)].mod)) < 0)
+ return yyerror ("bad option");
+
if ((yyvsp[(1) - (2)].macfunc).n == 0)
{
if ((yyvsp[(2) - (2)].mod).MM)
break;
case 10:
-#line 693 "bfin-parse.y"
+#line 737 "bfin-parse.y"
{
Register *dst;
break;
case 11:
-#line 713 "bfin-parse.y"
+#line 757 "bfin-parse.y"
{
notethat ("dsp32alu: DISALGNEXCPT\n");
(yyval.instr) = DSP32ALU (18, 0, 0, 0, 0, 0, 0, 0, 3);
break;
case 12:
-#line 718 "bfin-parse.y"
+#line 762 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (6)].reg)) && !IS_A1 ((yyvsp[(4) - (6)].reg)) && IS_A1 ((yyvsp[(5) - (6)].reg)))
{
break;
case 13:
-#line 728 "bfin-parse.y"
+#line 772 "bfin-parse.y"
{
if (!IS_A1 ((yyvsp[(4) - (6)].reg)) && IS_A1 ((yyvsp[(5) - (6)].reg)))
{
break;
case 14:
-#line 738 "bfin-parse.y"
+#line 782 "bfin-parse.y"
{
notethat ("dsp32alu: A_ZERO_DOT_H = dregs_hi\n");
(yyval.instr) = DSP32ALU (9, IS_H ((yyvsp[(3) - (3)].reg)), 0, 0, &(yyvsp[(3) - (3)].reg), 0, 0, 0, 0);
break;
case 15:
-#line 743 "bfin-parse.y"
+#line 787 "bfin-parse.y"
{
notethat ("dsp32alu: A_ZERO_DOT_H = dregs_hi\n");
(yyval.instr) = DSP32ALU (9, IS_H ((yyvsp[(3) - (3)].reg)), 0, 0, &(yyvsp[(3) - (3)].reg), 0, 0, 0, 2);
break;
case 16:
-#line 749 "bfin-parse.y"
+#line 793 "bfin-parse.y"
{
if (!IS_DREG ((yyvsp[(2) - (17)].reg)) || !IS_DREG ((yyvsp[(4) - (17)].reg)))
return yyerror ("Dregs expected");
break;
case 17:
-#line 765 "bfin-parse.y"
+#line 809 "bfin-parse.y"
{
- if (!IS_DREG ((yyvsp[(2) - (17)].reg)) || !IS_DREG((yyvsp[(4) - (17)].reg)))
+ if (!IS_DREG ((yyvsp[(2) - (17)].reg)) || !IS_DREG ((yyvsp[(4) - (17)].reg)))
return yyerror ("Dregs expected");
else if (!valid_dreg_pair (&(yyvsp[(9) - (17)].reg), (yyvsp[(11) - (17)].expr)))
return yyerror ("Bad dreg pair");
break;
case 18:
-#line 780 "bfin-parse.y"
+#line 824 "bfin-parse.y"
{
if (!IS_DREG ((yyvsp[(2) - (11)].reg)) || !IS_DREG ((yyvsp[(4) - (11)].reg)))
return yyerror ("Dregs expected");
break;
case 19:
-#line 792 "bfin-parse.y"
+#line 836 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(2) - (11)].reg)) && IS_DREG ((yyvsp[(4) - (11)].reg)) && IS_DREG ((yyvsp[(8) - (11)].reg)))
{
break;
case 20:
-#line 803 "bfin-parse.y"
+#line 847 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (11)].reg)) && IS_DREG ((yyvsp[(7) - (11)].reg)))
{
break;
case 21:
-#line 815 "bfin-parse.y"
+#line 859 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (12)].reg)) && IS_DREG ((yyvsp[(7) - (12)].reg)) && !REG_SAME ((yyvsp[(3) - (12)].reg), (yyvsp[(5) - (12)].reg))
&& IS_A1 ((yyvsp[(9) - (12)].reg)) && !IS_A1 ((yyvsp[(11) - (12)].reg)))
break;
case 22:
-#line 834 "bfin-parse.y"
+#line 878 "bfin-parse.y"
{
if ((yyvsp[(4) - (12)].r0).r0 == (yyvsp[(10) - (12)].r0).r0)
return yyerror ("Operators must differ");
break;
case 23:
-#line 852 "bfin-parse.y"
+#line 896 "bfin-parse.y"
{
if (!REG_SAME ((yyvsp[(3) - (12)].reg), (yyvsp[(9) - (12)].reg)) || !REG_SAME ((yyvsp[(5) - (12)].reg), (yyvsp[(11) - (12)].reg)))
return yyerror ("Differing source registers");
break;
case 24:
-#line 875 "bfin-parse.y"
+#line 919 "bfin-parse.y"
{
int op;
break;
case 25:
-#line 897 "bfin-parse.y"
+#line 941 "bfin-parse.y"
{
notethat ("dsp32alu: Ax = ABS Ax\n");
(yyval.instr) = DSP32ALU (16, IS_A1 ((yyvsp[(1) - (3)].reg)), 0, 0, 0, 0, 0, 0, IS_A1 ((yyvsp[(3) - (3)].reg)));
break;
case 26:
-#line 902 "bfin-parse.y"
+#line 946 "bfin-parse.y"
{
if (IS_DREG_L ((yyvsp[(3) - (3)].reg)))
{
break;
case 27:
-#line 912 "bfin-parse.y"
+#line 956 "bfin-parse.y"
{
if (IS_DREG_L ((yyvsp[(3) - (3)].reg)))
{
break;
case 28:
-#line 923 "bfin-parse.y"
+#line 967 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (8)].reg)) && IS_DREG ((yyvsp[(5) - (8)].reg)) && IS_DREG ((yyvsp[(7) - (8)].reg)))
{
break;
case 29:
-#line 934 "bfin-parse.y"
+#line 978 "bfin-parse.y"
{
if (!IS_DREG ((yyvsp[(1) - (13)].reg)))
return yyerror ("Dregs expected");
break;
case 30:
-#line 948 "bfin-parse.y"
+#line 992 "bfin-parse.y"
{
if (!IS_DREG ((yyvsp[(1) - (12)].reg)))
return yyerror ("Dregs expected");
break;
case 31:
-#line 964 "bfin-parse.y"
+#line 1008 "bfin-parse.y"
{
if (!IS_DREG ((yyvsp[(1) - (13)].reg)))
return yyerror ("Dregs expected");
break;
case 32:
-#line 980 "bfin-parse.y"
+#line 1024 "bfin-parse.y"
{
if (!IS_DREG ((yyvsp[(1) - (13)].reg)))
return yyerror ("Dregs expected");
break;
case 33:
-#line 996 "bfin-parse.y"
+#line 1040 "bfin-parse.y"
{
if (!IS_DREG ((yyvsp[(1) - (13)].reg)))
return yyerror ("Dregs expected");
break;
case 34:
-#line 1011 "bfin-parse.y"
+#line 1055 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (8)].reg)) && IS_DREG ((yyvsp[(5) - (8)].reg)) && IS_DREG ((yyvsp[(7) - (8)].reg)))
{
break;
case 35:
-#line 1023 "bfin-parse.y"
+#line 1067 "bfin-parse.y"
{
if (IS_HCOMPL ((yyvsp[(1) - (17)].reg), (yyvsp[(3) - (17)].reg)) && IS_HCOMPL ((yyvsp[(7) - (17)].reg), (yyvsp[(14) - (17)].reg)) && IS_HCOMPL ((yyvsp[(10) - (17)].reg), (yyvsp[(17) - (17)].reg)))
{
break;
case 36:
-#line 1036 "bfin-parse.y"
+#line 1080 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_DREG ((yyvsp[(5) - (6)].reg)))
{
break;
case 37:
-#line 1062 "bfin-parse.y"
+#line 1106 "bfin-parse.y"
{
int op;
break;
case 38:
-#line 1080 "bfin-parse.y"
+#line 1124 "bfin-parse.y"
{
notethat ("dsp32alu: Ax = - Ax\n");
(yyval.instr) = DSP32ALU (14, IS_A1 ((yyvsp[(1) - (3)].reg)), 0, 0, 0, 0, 0, 0, IS_A1 ((yyvsp[(3) - (3)].reg)));
break;
case 39:
-#line 1085 "bfin-parse.y"
+#line 1129 "bfin-parse.y"
{
notethat ("dsp32alu: dregs_lo = dregs_lo +- dregs_lo (amod1)\n");
(yyval.instr) = DSP32ALU (2 | (yyvsp[(4) - (6)].r0).r0, IS_H ((yyvsp[(1) - (6)].reg)), 0, &(yyvsp[(1) - (6)].reg), &(yyvsp[(3) - (6)].reg), &(yyvsp[(5) - (6)].reg),
break;
case 40:
-#line 1091 "bfin-parse.y"
+#line 1135 "bfin-parse.y"
{
if (EXPR_VALUE ((yyvsp[(3) - (3)].expr)) == 0 && !REG_SAME ((yyvsp[(1) - (3)].reg), (yyvsp[(2) - (3)].reg)))
{
break;
case 41:
-#line 1103 "bfin-parse.y"
+#line 1147 "bfin-parse.y"
{
if (REG_SAME ((yyvsp[(1) - (5)].reg), (yyvsp[(2) - (5)].reg)))
{
break;
case 42:
-#line 1114 "bfin-parse.y"
+#line 1158 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(3) - (6)].reg)))
{
break;
case 43:
-#line 1125 "bfin-parse.y"
+#line 1169 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(3) - (8)].reg)) && IS_DREG ((yyvsp[(5) - (8)].reg)))
{
break;
case 44:
-#line 1136 "bfin-parse.y"
+#line 1180 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(3) - (8)].reg)) && IS_DREG ((yyvsp[(5) - (8)].reg)))
{
break;
case 45:
-#line 1147 "bfin-parse.y"
+#line 1191 "bfin-parse.y"
{
if (!REG_SAME ((yyvsp[(1) - (2)].reg), (yyvsp[(2) - (2)].reg)))
{
break;
case 46:
-#line 1158 "bfin-parse.y"
+#line 1202 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(2) - (2)].reg)))
{
break;
case 47:
-#line 1169 "bfin-parse.y"
+#line 1213 "bfin-parse.y"
{
if (!IS_H ((yyvsp[(3) - (4)].reg)))
{
break;
case 48:
-#line 1195 "bfin-parse.y"
+#line 1239 "bfin-parse.y"
{
notethat ("LDIMMhalf: pregs_half = imm16\n");
break;
case 49:
-#line 1209 "bfin-parse.y"
+#line 1253 "bfin-parse.y"
{
notethat ("dsp32alu: An = 0\n");
break;
case 50:
-#line 1219 "bfin-parse.y"
+#line 1263 "bfin-parse.y"
{
if (!IS_DREG ((yyvsp[(1) - (4)].reg)) && !IS_PREG ((yyvsp[(1) - (4)].reg)) && !IS_IREG ((yyvsp[(1) - (4)].reg))
&& !IS_MREG ((yyvsp[(1) - (4)].reg)) && !IS_BREG ((yyvsp[(1) - (4)].reg)) && !IS_LREG ((yyvsp[(1) - (4)].reg)))
break;
case 51:
-#line 1264 "bfin-parse.y"
+#line 1308 "bfin-parse.y"
{
if (IS_H ((yyvsp[(1) - (3)].reg)))
return yyerror ("Low reg expected");
break;
case 52:
-#line 1283 "bfin-parse.y"
+#line 1327 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_DREG ((yyvsp[(5) - (6)].reg)))
{
break;
case 53:
-#line 1294 "bfin-parse.y"
+#line 1338 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (4)].reg)) && IS_DREG ((yyvsp[(3) - (4)].reg)))
{
break;
case 54:
-#line 1305 "bfin-parse.y"
+#line 1349 "bfin-parse.y"
{
if (REG_SAME ((yyvsp[(1) - (7)].reg), (yyvsp[(3) - (7)].reg)) && REG_SAME ((yyvsp[(5) - (7)].reg), (yyvsp[(7) - (7)].reg)) && !REG_SAME ((yyvsp[(1) - (7)].reg), (yyvsp[(5) - (7)].reg)))
{
break;
case 55:
-#line 1316 "bfin-parse.y"
+#line 1360 "bfin-parse.y"
{
if (REG_SAME ((yyvsp[(1) - (7)].reg), (yyvsp[(3) - (7)].reg)) && REG_SAME ((yyvsp[(5) - (7)].reg), (yyvsp[(7) - (7)].reg)) && !REG_SAME ((yyvsp[(1) - (7)].reg), (yyvsp[(5) - (7)].reg)))
{
break;
case 56:
-#line 1327 "bfin-parse.y"
+#line 1371 "bfin-parse.y"
{
if (!IS_A1 ((yyvsp[(1) - (3)].reg)) && IS_A1 ((yyvsp[(2) - (3)].reg)))
{
break;
case 57:
-#line 1338 "bfin-parse.y"
+#line 1382 "bfin-parse.y"
{
if (IS_IREG ((yyvsp[(1) - (3)].reg)) && EXPR_VALUE ((yyvsp[(3) - (3)].expr)) == 4)
{
break;
case 58:
-#line 1354 "bfin-parse.y"
+#line 1398 "bfin-parse.y"
{
if (IS_IREG ((yyvsp[(1) - (6)].reg)) && IS_MREG ((yyvsp[(3) - (6)].reg)))
{
break;
case 59:
-#line 1371 "bfin-parse.y"
+#line 1415 "bfin-parse.y"
{
if (IS_IREG ((yyvsp[(1) - (3)].reg)) && IS_MREG ((yyvsp[(3) - (3)].reg)))
{
break;
case 60:
-#line 1387 "bfin-parse.y"
+#line 1431 "bfin-parse.y"
{
if (!IS_A1 ((yyvsp[(1) - (4)].reg)) && IS_A1 ((yyvsp[(3) - (4)].reg)))
{
break;
case 61:
-#line 1398 "bfin-parse.y"
+#line 1442 "bfin-parse.y"
{
if (IS_IREG ((yyvsp[(1) - (3)].reg)) && IS_MREG ((yyvsp[(3) - (3)].reg)))
{
break;
case 62:
-#line 1409 "bfin-parse.y"
+#line 1453 "bfin-parse.y"
{
if (IS_IREG ((yyvsp[(1) - (3)].reg)))
{
notethat ("COMPI2opD: dregs += imm7\n");
(yyval.instr) = COMPI2OPD (&(yyvsp[(1) - (3)].reg), imm7 ((yyvsp[(3) - (3)].expr)), 1);
}
+ else if ((IS_DREG ((yyvsp[(1) - (3)].reg)) || IS_PREG ((yyvsp[(1) - (3)].reg))) && IS_CONST ((yyvsp[(3) - (3)].expr)))
+ return yyerror ("Immediate value out of range");
else
return yyerror ("Register mismatch");
}
break;
case 63:
-#line 1440 "bfin-parse.y"
+#line 1486 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_DREG ((yyvsp[(3) - (3)].reg)))
{
break;
case 64:
-#line 1451 "bfin-parse.y"
+#line 1497 "bfin-parse.y"
{
if (!valid_dreg_pair (&(yyvsp[(3) - (11)].reg), (yyvsp[(5) - (11)].expr)))
return yyerror ("Bad dreg pair");
break;
case 65:
-#line 1464 "bfin-parse.y"
+#line 1510 "bfin-parse.y"
{
if (REG_SAME ((yyvsp[(1) - (11)].reg), (yyvsp[(2) - (11)].reg)) && REG_SAME ((yyvsp[(7) - (11)].reg), (yyvsp[(8) - (11)].reg)) && !REG_SAME ((yyvsp[(1) - (11)].reg), (yyvsp[(7) - (11)].reg)))
{
break;
case 66:
-#line 1475 "bfin-parse.y"
+#line 1521 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (9)].reg)) && IS_DREG ((yyvsp[(4) - (9)].reg)) && IS_DREG ((yyvsp[(6) - (9)].reg))
&& REG_SAME ((yyvsp[(1) - (9)].reg), (yyvsp[(4) - (9)].reg)))
break;
case 67:
-#line 1514 "bfin-parse.y"
+#line 1560 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (5)].reg)) && IS_DREG ((yyvsp[(3) - (5)].reg)) && IS_DREG ((yyvsp[(5) - (5)].reg)))
{
break;
case 68:
-#line 1524 "bfin-parse.y"
+#line 1570 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (5)].reg)) && IS_DREG ((yyvsp[(3) - (5)].reg)) && IS_DREG ((yyvsp[(5) - (5)].reg)))
{
break;
case 69:
-#line 1534 "bfin-parse.y"
+#line 1580 "bfin-parse.y"
{
if (IS_PREG ((yyvsp[(1) - (9)].reg)) && IS_PREG ((yyvsp[(3) - (9)].reg)) && IS_PREG ((yyvsp[(6) - (9)].reg)))
{
break;
case 70:
-#line 1554 "bfin-parse.y"
+#line 1600 "bfin-parse.y"
{
- if (!REG_SAME ((yyvsp[(3) - (5)].reg), (yyvsp[(5) - (5)].reg)))
+ if ((yyvsp[(3) - (5)].reg).regno == REG_A0 && (yyvsp[(5) - (5)].reg).regno == REG_A1)
{
notethat ("CCflag: CC = A0 == A1\n");
(yyval.instr) = CCFLAG (0, 0, 5, 0, 0);
}
else
- return yyerror ("CC register expected");
+ return yyerror ("AREGs are in bad order or same");
}
break;
case 71:
-#line 1564 "bfin-parse.y"
+#line 1610 "bfin-parse.y"
{
- if (!REG_SAME ((yyvsp[(3) - (5)].reg), (yyvsp[(5) - (5)].reg)))
+ if ((yyvsp[(3) - (5)].reg).regno == REG_A0 && (yyvsp[(5) - (5)].reg).regno == REG_A1)
{
notethat ("CCflag: CC = A0 < A1\n");
(yyval.instr) = CCFLAG (0, 0, 6, 0, 0);
}
else
- return yyerror ("Register mismatch");
+ return yyerror ("AREGs are in bad order or same");
}
break;
case 72:
-#line 1574 "bfin-parse.y"
+#line 1620 "bfin-parse.y"
{
- if (REG_CLASS((yyvsp[(3) - (6)].reg)) == REG_CLASS((yyvsp[(5) - (6)].reg)))
+ if ((IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_DREG ((yyvsp[(5) - (6)].reg)))
+ || (IS_PREG ((yyvsp[(3) - (6)].reg)) && IS_PREG ((yyvsp[(5) - (6)].reg))))
{
notethat ("CCflag: CC = dpregs < dpregs\n");
(yyval.instr) = CCFLAG (&(yyvsp[(3) - (6)].reg), (yyvsp[(5) - (6)].reg).regno & CODE_MASK, (yyvsp[(6) - (6)].r0).r0, 0, IS_PREG ((yyvsp[(3) - (6)].reg)) ? 1 : 0);
}
else
- return yyerror ("Compare only of same register class");
+ return yyerror ("Bad register in comparison");
}
break;
case 73:
-#line 1584 "bfin-parse.y"
+#line 1631 "bfin-parse.y"
{
+ if (!IS_DREG ((yyvsp[(3) - (6)].reg)) && !IS_PREG ((yyvsp[(3) - (6)].reg)))
+ return yyerror ("Bad register in comparison");
+
if (((yyvsp[(6) - (6)].r0).r0 == 1 && IS_IMM ((yyvsp[(5) - (6)].expr), 3))
|| ((yyvsp[(6) - (6)].r0).r0 == 3 && IS_UIMM ((yyvsp[(5) - (6)].expr), 3)))
{
break;
case 74:
-#line 1595 "bfin-parse.y"
+#line 1645 "bfin-parse.y"
{
- if (REG_CLASS((yyvsp[(3) - (5)].reg)) == REG_CLASS((yyvsp[(5) - (5)].reg)))
+ if ((IS_DREG ((yyvsp[(3) - (5)].reg)) && IS_DREG ((yyvsp[(5) - (5)].reg)))
+ || (IS_PREG ((yyvsp[(3) - (5)].reg)) && IS_PREG ((yyvsp[(5) - (5)].reg))))
{
notethat ("CCflag: CC = dpregs == dpregs\n");
(yyval.instr) = CCFLAG (&(yyvsp[(3) - (5)].reg), (yyvsp[(5) - (5)].reg).regno & CODE_MASK, 0, 0, IS_PREG ((yyvsp[(3) - (5)].reg)) ? 1 : 0);
- }
+ }
+ else
+ return yyerror ("Bad register in comparison");
}
break;
case 75:
-#line 1603 "bfin-parse.y"
+#line 1656 "bfin-parse.y"
{
+ if (!IS_DREG ((yyvsp[(3) - (5)].reg)) && !IS_PREG ((yyvsp[(3) - (5)].reg)))
+ return yyerror ("Bad register in comparison");
+
if (IS_IMM ((yyvsp[(5) - (5)].expr), 3))
{
notethat ("CCflag: CC = dpregs == imm3\n");
break;
case 76:
-#line 1613 "bfin-parse.y"
+#line 1669 "bfin-parse.y"
{
- if (!REG_SAME ((yyvsp[(3) - (5)].reg), (yyvsp[(5) - (5)].reg)))
+ if ((yyvsp[(3) - (5)].reg).regno == REG_A0 && (yyvsp[(5) - (5)].reg).regno == REG_A1)
{
notethat ("CCflag: CC = A0 <= A1\n");
(yyval.instr) = CCFLAG (0, 0, 7, 0, 0);
}
else
- return yyerror ("CC register expected");
+ return yyerror ("AREGs are in bad order or same");
}
break;
case 77:
-#line 1623 "bfin-parse.y"
+#line 1679 "bfin-parse.y"
{
- if (REG_CLASS((yyvsp[(3) - (6)].reg)) == REG_CLASS((yyvsp[(5) - (6)].reg)))
+ if ((IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_DREG ((yyvsp[(5) - (6)].reg)))
+ || (IS_PREG ((yyvsp[(3) - (6)].reg)) && IS_PREG ((yyvsp[(5) - (6)].reg))))
{
- notethat ("CCflag: CC = pregs <= pregs (..)\n");
+ notethat ("CCflag: CC = dpregs <= dpregs (..)\n");
(yyval.instr) = CCFLAG (&(yyvsp[(3) - (6)].reg), (yyvsp[(5) - (6)].reg).regno & CODE_MASK,
1 + (yyvsp[(6) - (6)].r0).r0, 0, IS_PREG ((yyvsp[(3) - (6)].reg)) ? 1 : 0);
}
else
- return yyerror ("Compare only of same register class");
+ return yyerror ("Bad register in comparison");
}
break;
case 78:
-#line 1634 "bfin-parse.y"
+#line 1691 "bfin-parse.y"
{
+ if (!IS_DREG ((yyvsp[(3) - (6)].reg)) && !IS_PREG ((yyvsp[(3) - (6)].reg)))
+ return yyerror ("Bad register in comparison");
+
if (((yyvsp[(6) - (6)].r0).r0 == 1 && IS_IMM ((yyvsp[(5) - (6)].expr), 3))
|| ((yyvsp[(6) - (6)].r0).r0 == 3 && IS_UIMM ((yyvsp[(5) - (6)].expr), 3)))
{
- if (IS_DREG ((yyvsp[(3) - (6)].reg)))
- {
- notethat ("CCflag: CC = dregs <= (u)imm3\n");
- /* x y opc I G */
- (yyval.instr) = CCFLAG (&(yyvsp[(3) - (6)].reg), imm3 ((yyvsp[(5) - (6)].expr)), 1 + (yyvsp[(6) - (6)].r0).r0, 1, 0);
- }
- else if (IS_PREG ((yyvsp[(3) - (6)].reg)))
- {
- notethat ("CCflag: CC = pregs <= (u)imm3\n");
- /* x y opc I G */
- (yyval.instr) = CCFLAG (&(yyvsp[(3) - (6)].reg), imm3 ((yyvsp[(5) - (6)].expr)), 1 + (yyvsp[(6) - (6)].r0).r0, 1, 1);
- }
- else
- return yyerror ("Dreg or Preg expected");
+ notethat ("CCflag: CC = dpregs <= (u)imm3\n");
+ (yyval.instr) = CCFLAG (&(yyvsp[(3) - (6)].reg), imm3 ((yyvsp[(5) - (6)].expr)), 1 + (yyvsp[(6) - (6)].r0).r0, 1, IS_PREG ((yyvsp[(3) - (6)].reg)) ? 1 : 0);
}
else
return yyerror ("Bad constant value");
break;
case 79:
-#line 1658 "bfin-parse.y"
+#line 1706 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (5)].reg)) && IS_DREG ((yyvsp[(3) - (5)].reg)) && IS_DREG ((yyvsp[(5) - (5)].reg)))
{
break;
case 80:
-#line 1669 "bfin-parse.y"
+#line 1717 "bfin-parse.y"
{
notethat ("CC2stat operation\n");
(yyval.instr) = bfin_gen_cc2stat ((yyvsp[(1) - (1)].modcodes).r0, (yyvsp[(1) - (1)].modcodes).x0, (yyvsp[(1) - (1)].modcodes).s0);
break;
case 81:
-#line 1675 "bfin-parse.y"
- {
- if (IS_ALLREG ((yyvsp[(1) - (3)].reg)) && IS_ALLREG ((yyvsp[(3) - (3)].reg)))
+#line 1723 "bfin-parse.y"
+ {
+ if ((IS_GENREG ((yyvsp[(1) - (3)].reg)) && IS_GENREG ((yyvsp[(3) - (3)].reg)))
+ || (IS_GENREG ((yyvsp[(1) - (3)].reg)) && IS_DAGREG ((yyvsp[(3) - (3)].reg)))
+ || (IS_DAGREG ((yyvsp[(1) - (3)].reg)) && IS_GENREG ((yyvsp[(3) - (3)].reg)))
+ || (IS_DAGREG ((yyvsp[(1) - (3)].reg)) && IS_DAGREG ((yyvsp[(3) - (3)].reg)))
+ || (IS_GENREG ((yyvsp[(1) - (3)].reg)) && (yyvsp[(3) - (3)].reg).regno == REG_USP)
+ || ((yyvsp[(1) - (3)].reg).regno == REG_USP && IS_GENREG ((yyvsp[(3) - (3)].reg)))
+ || (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_SYSREG ((yyvsp[(3) - (3)].reg)))
+ || (IS_PREG ((yyvsp[(1) - (3)].reg)) && IS_SYSREG ((yyvsp[(3) - (3)].reg)))
+ || (IS_SYSREG ((yyvsp[(1) - (3)].reg)) && IS_DREG ((yyvsp[(3) - (3)].reg)))
+ || (IS_SYSREG ((yyvsp[(1) - (3)].reg)) && IS_PREG ((yyvsp[(3) - (3)].reg)))
+ || (IS_SYSREG ((yyvsp[(1) - (3)].reg)) && (yyvsp[(3) - (3)].reg).regno == REG_USP))
{
- notethat ("REGMV: allregs = allregs\n");
(yyval.instr) = bfin_gen_regmv (&(yyvsp[(3) - (3)].reg), &(yyvsp[(1) - (3)].reg));
}
else
break;
case 82:
-#line 1686 "bfin-parse.y"
+#line 1743 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(3) - (3)].reg)))
{
break;
case 83:
-#line 1697 "bfin-parse.y"
+#line 1754 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (3)].reg)))
{
break;
case 84:
-#line 1708 "bfin-parse.y"
+#line 1765 "bfin-parse.y"
{
notethat ("CC2dreg: CC =! CC\n");
(yyval.instr) = bfin_gen_cc2dreg (3, 0);
break;
case 85:
-#line 1716 "bfin-parse.y"
+#line 1773 "bfin-parse.y"
{
notethat ("dsp32mult: dregs_half = multiply_halfregs (opt_mode)\n");
if (!IS_H ((yyvsp[(1) - (4)].reg)) && (yyvsp[(4) - (4)].mod).MM)
return yyerror ("(M) not allowed with MAC0");
+ if ((yyvsp[(4) - (4)].mod).mod != 0 && (yyvsp[(4) - (4)].mod).mod != M_FU && (yyvsp[(4) - (4)].mod).mod != M_IS
+ && (yyvsp[(4) - (4)].mod).mod != M_IU && (yyvsp[(4) - (4)].mod).mod != M_T && (yyvsp[(4) - (4)].mod).mod != M_TFU
+ && (yyvsp[(4) - (4)].mod).mod != M_S2RND && (yyvsp[(4) - (4)].mod).mod != M_ISS2 && (yyvsp[(4) - (4)].mod).mod != M_IH)
+ return yyerror ("bad option.");
+
if (IS_H ((yyvsp[(1) - (4)].reg)))
{
(yyval.instr) = DSP32MULT (0, (yyvsp[(4) - (4)].mod).MM, (yyvsp[(4) - (4)].mod).mod, 1, 0,
break;
case 86:
-#line 1737 "bfin-parse.y"
+#line 1799 "bfin-parse.y"
{
/* Odd registers can use (M). */
if (!IS_DREG ((yyvsp[(1) - (4)].reg)))
if (IS_EVEN ((yyvsp[(1) - (4)].reg)) && (yyvsp[(4) - (4)].mod).MM)
return yyerror ("(M) not allowed with MAC0");
+ if ((yyvsp[(4) - (4)].mod).mod != 0 && (yyvsp[(4) - (4)].mod).mod != M_FU && (yyvsp[(4) - (4)].mod).mod != M_IS
+ && (yyvsp[(4) - (4)].mod).mod != M_S2RND && (yyvsp[(4) - (4)].mod).mod != M_ISS2)
+ return yyerror ("bad option");
+
if (!IS_EVEN ((yyvsp[(1) - (4)].reg)))
{
notethat ("dsp32mult: dregs = multiply_halfregs (opt_mode)\n");
break;
case 87:
-#line 1764 "bfin-parse.y"
+#line 1830 "bfin-parse.y"
{
if (!IS_DREG ((yyvsp[(1) - (9)].reg)) || !IS_DREG ((yyvsp[(6) - (9)].reg)))
return yyerror ("Dregs expected");
break;
case 88:
-#line 1792 "bfin-parse.y"
+#line 1858 "bfin-parse.y"
{
if (!IS_DREG ((yyvsp[(1) - (9)].reg)) || !IS_DREG ((yyvsp[(6) - (9)].reg)))
return yyerror ("Dregs expected");
break;
case 89:
-#line 1823 "bfin-parse.y"
+#line 1889 "bfin-parse.y"
{
if (!REG_SAME ((yyvsp[(1) - (5)].reg), (yyvsp[(3) - (5)].reg)))
return yyerror ("Aregs must be same");
break;
case 90:
-#line 1837 "bfin-parse.y"
+#line 1903 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(6) - (7)].reg)) && !IS_H ((yyvsp[(6) - (7)].reg)))
{
break;
case 91:
-#line 1848 "bfin-parse.y"
+#line 1914 "bfin-parse.y"
{
if (!REG_SAME ((yyvsp[(1) - (4)].reg), (yyvsp[(2) - (4)].reg)))
return yyerror ("Aregs must be same");
break;
case 92:
-#line 1862 "bfin-parse.y"
+#line 1928 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_UIMM ((yyvsp[(5) - (6)].expr), 5))
{
break;
case 93:
-#line 1896 "bfin-parse.y"
- {
- if (IS_UIMM ((yyvsp[(5) - (5)].expr), 4))
- {
- notethat ("dsp32shiftimm: dregs_half = dregs_half << uimm4\n");
- (yyval.instr) = DSP32SHIFTIMM (0x0, &(yyvsp[(1) - (5)].reg), imm5 ((yyvsp[(5) - (5)].expr)), &(yyvsp[(3) - (5)].reg), 2, HL2 ((yyvsp[(1) - (5)].reg), (yyvsp[(3) - (5)].reg)));
- }
- else
- return yyerror ("Bad shift value");
- }
- break;
-
- case 94:
-#line 1906 "bfin-parse.y"
+#line 1962 "bfin-parse.y"
{
if (IS_UIMM ((yyvsp[(5) - (6)].expr), 4))
{
- notethat ("dsp32shiftimm: dregs_half = dregs_half << uimm4\n");
- (yyval.instr) = DSP32SHIFTIMM (0x0, &(yyvsp[(1) - (6)].reg), imm5 ((yyvsp[(5) - (6)].expr)), &(yyvsp[(3) - (6)].reg), (yyvsp[(6) - (6)].modcodes).s0, HL2 ((yyvsp[(1) - (6)].reg), (yyvsp[(3) - (6)].reg)));
+ if ((yyvsp[(6) - (6)].modcodes).s0)
+ {
+ notethat ("dsp32shiftimm: dregs_half = dregs_half << uimm4 (S)\n");
+ (yyval.instr) = DSP32SHIFTIMM (0x0, &(yyvsp[(1) - (6)].reg), imm5 ((yyvsp[(5) - (6)].expr)), &(yyvsp[(3) - (6)].reg), (yyvsp[(6) - (6)].modcodes).s0, HL2 ((yyvsp[(1) - (6)].reg), (yyvsp[(3) - (6)].reg)));
+ }
+ else
+ {
+ notethat ("dsp32shiftimm: dregs_half = dregs_half << uimm4\n");
+ (yyval.instr) = DSP32SHIFTIMM (0x0, &(yyvsp[(1) - (6)].reg), imm5 ((yyvsp[(5) - (6)].expr)), &(yyvsp[(3) - (6)].reg), 2, HL2 ((yyvsp[(1) - (6)].reg), (yyvsp[(3) - (6)].reg)));
+ }
}
else
return yyerror ("Bad shift value");
}
break;
- case 95:
-#line 1916 "bfin-parse.y"
+ case 94:
+#line 1980 "bfin-parse.y"
{
int op;
}
break;
- case 96:
-#line 1941 "bfin-parse.y"
+ case 95:
+#line 2005 "bfin-parse.y"
{
if (IS_DREG_L ((yyvsp[(1) - (9)].reg)) && IS_DREG_L ((yyvsp[(5) - (9)].reg)) && IS_DREG_L ((yyvsp[(7) - (9)].reg)))
{
}
break;
- case 97:
-#line 1953 "bfin-parse.y"
+ case 96:
+#line 2017 "bfin-parse.y"
{
if (IS_DREG_L ((yyvsp[(1) - (8)].reg)) && IS_DREG_L ((yyvsp[(5) - (8)].reg)) && IS_DREG_L ((yyvsp[(7) - (8)].reg)))
{
}
break;
- case 98:
-#line 1971 "bfin-parse.y"
+ case 97:
+#line 2035 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (8)].reg)) && IS_DREG ((yyvsp[(5) - (8)].reg)) && IS_DREG ((yyvsp[(7) - (8)].reg)))
{
}
break;
- case 99:
-#line 1982 "bfin-parse.y"
+ case 98:
+#line 2046 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (11)].reg)) && IS_DREG ((yyvsp[(5) - (11)].reg)) && IS_DREG ((yyvsp[(7) - (11)].reg)))
{
}
break;
- case 100:
-#line 1993 "bfin-parse.y"
+ case 99:
+#line 2057 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (9)].reg)) && IS_DREG ((yyvsp[(5) - (9)].reg)) && IS_DREG_L ((yyvsp[(7) - (9)].reg)))
{
}
break;
- case 101:
-#line 2004 "bfin-parse.y"
+ case 100:
+#line 2068 "bfin-parse.y"
{
if (!REG_SAME ((yyvsp[(1) - (4)].reg), (yyvsp[(2) - (4)].reg)))
return yyerror ("Aregs must be same");
}
break;
- case 102:
-#line 2017 "bfin-parse.y"
+ case 101:
+#line 2081 "bfin-parse.y"
{
if (REG_SAME ((yyvsp[(1) - (5)].reg), (yyvsp[(3) - (5)].reg)) && IS_DREG_L ((yyvsp[(5) - (5)].reg)))
{
}
break;
- case 103:
-#line 2028 "bfin-parse.y"
+ case 102:
+#line 2092 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(4) - (6)].reg)) && IS_DREG_L ((yyvsp[(6) - (6)].reg)))
{
}
break;
- case 104:
-#line 2039 "bfin-parse.y"
+ case 103:
+#line 2103 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (7)].reg)) && IS_DREG ((yyvsp[(4) - (7)].reg)) && IS_DREG_L ((yyvsp[(6) - (7)].reg)))
{
}
break;
- case 105:
-#line 2050 "bfin-parse.y"
+ case 104:
+#line 2114 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(4) - (6)].reg)) && IS_DREG_L ((yyvsp[(6) - (6)].reg)))
{
}
break;
- case 106:
-#line 2061 "bfin-parse.y"
+ case 105:
+#line 2125 "bfin-parse.y"
{
if (REG_SAME ((yyvsp[(1) - (4)].reg), (yyvsp[(2) - (4)].reg)) && IS_IMM ((yyvsp[(4) - (4)].expr), 6) >= 0)
{
}
break;
- case 107:
-#line 2072 "bfin-parse.y"
+ case 106:
+#line 2136 "bfin-parse.y"
{
if ((yyvsp[(6) - (6)].r0).r0 == 1)
{
}
break;
- case 108:
-#line 2105 "bfin-parse.y"
+ case 107:
+#line 2169 "bfin-parse.y"
{
if (IS_UIMM ((yyvsp[(5) - (5)].expr), 5))
{
}
break;
- case 109:
-#line 2115 "bfin-parse.y"
+ case 108:
+#line 2179 "bfin-parse.y"
{
if (IS_UIMM ((yyvsp[(5) - (6)].expr), 5))
{
}
break;
- case 110:
-#line 2128 "bfin-parse.y"
+ case 109:
+#line 2192 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_UIMM ((yyvsp[(5) - (6)].expr), 5))
{
}
break;
- case 111:
-#line 2148 "bfin-parse.y"
+ case 110:
+#line 2212 "bfin-parse.y"
{
if (IS_DREG_L ((yyvsp[(1) - (4)].reg)) && IS_DREG ((yyvsp[(4) - (4)].reg)))
{
}
break;
- case 112:
-#line 2159 "bfin-parse.y"
+ case 111:
+#line 2223 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (8)].reg)) && IS_DREG ((yyvsp[(5) - (8)].reg)) && IS_DREG ((yyvsp[(7) - (8)].reg)))
{
}
break;
- case 113:
-#line 2170 "bfin-parse.y"
+ case 112:
+#line 2234 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (10)].reg))
&& (yyvsp[(7) - (10)].reg).regno == REG_A0
}
break;
- case 114:
-#line 2183 "bfin-parse.y"
+ case 113:
+#line 2247 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (10)].reg))
&& (yyvsp[(7) - (10)].reg).regno == REG_A0
}
break;
- case 115:
-#line 2196 "bfin-parse.y"
+ case 114:
+#line 2260 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (12)].reg)) && !IS_H ((yyvsp[(1) - (12)].reg)) && !REG_SAME ((yyvsp[(7) - (12)].reg), (yyvsp[(9) - (12)].reg)))
{
}
break;
- case 116:
-#line 2207 "bfin-parse.y"
+ case 115:
+#line 2271 "bfin-parse.y"
{
if (REG_SAME ((yyvsp[(1) - (5)].reg), (yyvsp[(3) - (5)].reg)) && IS_DREG_L ((yyvsp[(5) - (5)].reg)))
{
}
break;
- case 117:
-#line 2218 "bfin-parse.y"
+ case 116:
+#line 2282 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(4) - (6)].reg)) && IS_DREG_L ((yyvsp[(6) - (6)].reg)))
{
}
break;
- case 118:
-#line 2229 "bfin-parse.y"
+ case 117:
+#line 2293 "bfin-parse.y"
{
if (IS_IMM ((yyvsp[(5) - (5)].expr), 6))
{
}
break;
- case 119:
-#line 2240 "bfin-parse.y"
+ case 118:
+#line 2304 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(4) - (6)].reg)) && IS_IMM ((yyvsp[(6) - (6)].expr), 6))
{
}
break;
- case 120:
-#line 2250 "bfin-parse.y"
+ case 119:
+#line 2314 "bfin-parse.y"
{
if (IS_DREG_L ((yyvsp[(1) - (4)].reg)))
{
}
break;
- case 121:
-#line 2261 "bfin-parse.y"
+ case 120:
+#line 2325 "bfin-parse.y"
{
if (IS_DREG_L ((yyvsp[(1) - (4)].reg)) && IS_DREG ((yyvsp[(4) - (4)].reg)))
{
}
break;
- case 122:
-#line 2272 "bfin-parse.y"
+ case 121:
+#line 2336 "bfin-parse.y"
{
if (IS_DREG_L ((yyvsp[(1) - (4)].reg)))
{
}
break;
- case 123:
-#line 2284 "bfin-parse.y"
+ case 122:
+#line 2348 "bfin-parse.y"
{
if (IS_DREG_L ((yyvsp[(1) - (7)].reg)) && IS_DREG ((yyvsp[(5) - (7)].reg)))
{
}
break;
- case 124:
-#line 2295 "bfin-parse.y"
+ case 123:
+#line 2359 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (9)].reg)) && IS_DREG ((yyvsp[(5) - (9)].reg)) && IS_DREG ((yyvsp[(7) - (9)].reg)))
{
}
break;
- case 125:
-#line 2306 "bfin-parse.y"
+ case 124:
+#line 2370 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(3) - (9)].reg)) && IS_DREG ((yyvsp[(5) - (9)].reg)) && !IS_A1 ((yyvsp[(7) - (9)].reg)))
{
}
break;
- case 126:
-#line 2317 "bfin-parse.y"
+ case 125:
+#line 2381 "bfin-parse.y"
{
if (!IS_A1 ((yyvsp[(1) - (9)].reg)) && !IS_A1 ((yyvsp[(4) - (9)].reg)) && IS_A1 ((yyvsp[(6) - (9)].reg)))
{
}
break;
- case 127:
-#line 2330 "bfin-parse.y"
+ case 126:
+#line 2394 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_UIMM ((yyvsp[(5) - (6)].expr), 5))
{
}
break;
- case 128:
-#line 2342 "bfin-parse.y"
+ case 127:
+#line 2406 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_UIMM ((yyvsp[(5) - (6)].expr), 5))
{
}
break;
- case 129:
-#line 2354 "bfin-parse.y"
+ case 128:
+#line 2418 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_UIMM ((yyvsp[(5) - (6)].expr), 5))
{
}
break;
- case 130:
-#line 2365 "bfin-parse.y"
+ case 129:
+#line 2429 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(5) - (8)].reg)) && IS_UIMM ((yyvsp[(7) - (8)].expr), 5))
{
}
break;
- case 131:
-#line 2376 "bfin-parse.y"
+ case 130:
+#line 2440 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(5) - (8)].reg)) && IS_UIMM ((yyvsp[(7) - (8)].expr), 5))
{
}
break;
- case 132:
-#line 2387 "bfin-parse.y"
+ case 131:
+#line 2451 "bfin-parse.y"
{
if ((IS_DREG ((yyvsp[(4) - (6)].reg)) || IS_PREG ((yyvsp[(4) - (6)].reg)))
&& (IS_DREG ((yyvsp[(6) - (6)].reg)) || IS_PREG ((yyvsp[(6) - (6)].reg))))
}
break;
- case 133:
-#line 2399 "bfin-parse.y"
+ case 132:
+#line 2463 "bfin-parse.y"
{
if ((IS_DREG ((yyvsp[(5) - (5)].reg)) || IS_PREG ((yyvsp[(5) - (5)].reg)))
&& (IS_DREG ((yyvsp[(3) - (5)].reg)) || IS_PREG ((yyvsp[(3) - (5)].reg))))
}
break;
- case 134:
-#line 2411 "bfin-parse.y"
+ case 133:
+#line 2475 "bfin-parse.y"
{
if (IS_PCREL10 ((yyvsp[(5) - (5)].expr)))
{
}
break;
- case 135:
-#line 2422 "bfin-parse.y"
+ case 134:
+#line 2486 "bfin-parse.y"
{
if (IS_PCREL10 ((yyvsp[(5) - (8)].expr)))
{
}
break;
- case 136:
-#line 2433 "bfin-parse.y"
+ case 135:
+#line 2497 "bfin-parse.y"
{
if (IS_PCREL10 ((yyvsp[(4) - (4)].expr)))
{
}
break;
- case 137:
-#line 2444 "bfin-parse.y"
+ case 136:
+#line 2508 "bfin-parse.y"
{
if (IS_PCREL10 ((yyvsp[(4) - (7)].expr)))
{
}
break;
- case 138:
-#line 2454 "bfin-parse.y"
+ case 137:
+#line 2518 "bfin-parse.y"
{
notethat ("ProgCtrl: NOP\n");
(yyval.instr) = PROGCTRL (0, 0);
}
break;
- case 139:
-#line 2460 "bfin-parse.y"
+ case 138:
+#line 2524 "bfin-parse.y"
{
notethat ("ProgCtrl: RTS\n");
(yyval.instr) = PROGCTRL (1, 0);
}
break;
- case 140:
-#line 2466 "bfin-parse.y"
+ case 139:
+#line 2530 "bfin-parse.y"
{
notethat ("ProgCtrl: RTI\n");
(yyval.instr) = PROGCTRL (1, 1);
}
break;
- case 141:
-#line 2472 "bfin-parse.y"
+ case 140:
+#line 2536 "bfin-parse.y"
{
notethat ("ProgCtrl: RTX\n");
(yyval.instr) = PROGCTRL (1, 2);
}
break;
- case 142:
-#line 2478 "bfin-parse.y"
+ case 141:
+#line 2542 "bfin-parse.y"
{
notethat ("ProgCtrl: RTN\n");
(yyval.instr) = PROGCTRL (1, 3);
}
break;
- case 143:
-#line 2484 "bfin-parse.y"
+ case 142:
+#line 2548 "bfin-parse.y"
{
notethat ("ProgCtrl: RTE\n");
(yyval.instr) = PROGCTRL (1, 4);
}
break;
- case 144:
-#line 2490 "bfin-parse.y"
+ case 143:
+#line 2554 "bfin-parse.y"
{
notethat ("ProgCtrl: IDLE\n");
(yyval.instr) = PROGCTRL (2, 0);
}
break;
- case 145:
-#line 2496 "bfin-parse.y"
+ case 144:
+#line 2560 "bfin-parse.y"
{
notethat ("ProgCtrl: CSYNC\n");
(yyval.instr) = PROGCTRL (2, 3);
}
break;
- case 146:
-#line 2502 "bfin-parse.y"
+ case 145:
+#line 2566 "bfin-parse.y"
{
notethat ("ProgCtrl: SSYNC\n");
(yyval.instr) = PROGCTRL (2, 4);
}
break;
- case 147:
-#line 2508 "bfin-parse.y"
+ case 146:
+#line 2572 "bfin-parse.y"
{
notethat ("ProgCtrl: EMUEXCPT\n");
(yyval.instr) = PROGCTRL (2, 5);
}
break;
- case 148:
-#line 2514 "bfin-parse.y"
+ case 147:
+#line 2578 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(2) - (2)].reg)))
{
}
break;
- case 149:
-#line 2525 "bfin-parse.y"
+ case 148:
+#line 2589 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(2) - (2)].reg)))
{
}
break;
- case 150:
-#line 2536 "bfin-parse.y"
+ case 149:
+#line 2600 "bfin-parse.y"
{
if (IS_PREG ((yyvsp[(3) - (4)].reg)))
{
}
break;
- case 151:
-#line 2547 "bfin-parse.y"
+ case 150:
+#line 2611 "bfin-parse.y"
{
if (IS_PREG ((yyvsp[(3) - (4)].reg)))
{
}
break;
- case 152:
-#line 2558 "bfin-parse.y"
+ case 151:
+#line 2622 "bfin-parse.y"
{
if (IS_PREG ((yyvsp[(5) - (6)].reg)))
{
}
break;
- case 153:
-#line 2569 "bfin-parse.y"
+ case 152:
+#line 2633 "bfin-parse.y"
{
if (IS_PREG ((yyvsp[(5) - (6)].reg)))
{
}
break;
- case 154:
-#line 2580 "bfin-parse.y"
+ case 153:
+#line 2644 "bfin-parse.y"
{
if (IS_UIMM ((yyvsp[(2) - (2)].expr), 4))
{
}
break;
- case 155:
-#line 2591 "bfin-parse.y"
+ case 154:
+#line 2655 "bfin-parse.y"
{
notethat ("ProgCtrl: EMUEXCPT\n");
(yyval.instr) = PROGCTRL (10, uimm4 ((yyvsp[(2) - (2)].expr)));
}
break;
- case 156:
-#line 2597 "bfin-parse.y"
+ case 155:
+#line 2661 "bfin-parse.y"
{
if (IS_PREG ((yyvsp[(3) - (4)].reg)))
{
}
break;
- case 157:
-#line 2608 "bfin-parse.y"
+ case 156:
+#line 2672 "bfin-parse.y"
{
if (IS_PCREL12 ((yyvsp[(2) - (2)].expr)))
{
}
break;
- case 158:
-#line 2619 "bfin-parse.y"
+ case 157:
+#line 2683 "bfin-parse.y"
{
if (IS_PCREL12 ((yyvsp[(2) - (2)].expr)))
{
}
break;
- case 159:
-#line 2630 "bfin-parse.y"
+ case 158:
+#line 2694 "bfin-parse.y"
{
if (IS_PCREL24 ((yyvsp[(2) - (2)].expr)))
{
}
break;
- case 160:
-#line 2641 "bfin-parse.y"
+ case 159:
+#line 2705 "bfin-parse.y"
{
if (IS_PCREL24 ((yyvsp[(2) - (2)].expr)))
{
}
break;
- case 161:
-#line 2652 "bfin-parse.y"
+ case 160:
+#line 2716 "bfin-parse.y"
{
if (IS_PCREL24 ((yyvsp[(2) - (2)].expr)))
{
}
break;
- case 162:
-#line 2662 "bfin-parse.y"
+ case 161:
+#line 2726 "bfin-parse.y"
{
if (IS_PCREL24 ((yyvsp[(2) - (2)].expr)))
{
}
break;
- case 163:
-#line 2675 "bfin-parse.y"
+ case 162:
+#line 2739 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_DREG ((yyvsp[(5) - (6)].reg)))
(yyval.instr) = ALU2OP (&(yyvsp[(3) - (6)].reg), &(yyvsp[(5) - (6)].reg), 8);
}
break;
- case 164:
-#line 2683 "bfin-parse.y"
+ case 163:
+#line 2747 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_DREG ((yyvsp[(5) - (6)].reg)))
(yyval.instr) = ALU2OP (&(yyvsp[(3) - (6)].reg), &(yyvsp[(5) - (6)].reg), 9);
}
break;
- case 165:
-#line 2691 "bfin-parse.y"
+ case 164:
+#line 2755 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (5)].reg)) && IS_DREG ((yyvsp[(4) - (5)].reg)))
{
}
break;
- case 166:
-#line 2715 "bfin-parse.y"
+ case 165:
+#line 2779 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (4)].reg)) && IS_DREG ((yyvsp[(4) - (4)].reg)))
{
}
break;
- case 167:
-#line 2726 "bfin-parse.y"
+ case 166:
+#line 2790 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_DREG ((yyvsp[(3) - (3)].reg)))
{
}
break;
- case 168:
-#line 2737 "bfin-parse.y"
+ case 167:
+#line 2801 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_UIMM ((yyvsp[(3) - (3)].expr), 5))
{
}
break;
- case 169:
-#line 2748 "bfin-parse.y"
+ case 168:
+#line 2812 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_DREG ((yyvsp[(3) - (3)].reg)))
{
}
break;
- case 170:
-#line 2759 "bfin-parse.y"
+ case 169:
+#line 2823 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_DREG ((yyvsp[(3) - (3)].reg)))
{
}
break;
- case 171:
-#line 2770 "bfin-parse.y"
+ case 170:
+#line 2834 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_UIMM ((yyvsp[(3) - (3)].expr), 5))
{
}
break;
- case 172:
-#line 2782 "bfin-parse.y"
+ case 171:
+#line 2846 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_UIMM ((yyvsp[(3) - (3)].expr), 5))
{
}
break;
- case 173:
-#line 2795 "bfin-parse.y"
+ case 172:
+#line 2859 "bfin-parse.y"
{
notethat ("CaCTRL: FLUSH [ pregs ]\n");
if (IS_PREG ((yyvsp[(3) - (4)].reg)))
}
break;
- case 174:
-#line 2804 "bfin-parse.y"
+ case 173:
+#line 2868 "bfin-parse.y"
{
if (IS_PREG ((yyvsp[(2) - (2)].reg)))
{
}
break;
- case 175:
-#line 2815 "bfin-parse.y"
+ case 174:
+#line 2879 "bfin-parse.y"
{
if (IS_PREG ((yyvsp[(3) - (4)].reg)))
{
}
break;
- case 176:
-#line 2826 "bfin-parse.y"
+ case 175:
+#line 2890 "bfin-parse.y"
{
if (IS_PREG ((yyvsp[(2) - (2)].reg)))
{
}
break;
- case 177:
-#line 2838 "bfin-parse.y"
+ case 176:
+#line 2902 "bfin-parse.y"
{
if (IS_PREG ((yyvsp[(3) - (4)].reg)))
{
}
break;
- case 178:
-#line 2849 "bfin-parse.y"
+ case 177:
+#line 2913 "bfin-parse.y"
{
if (IS_PREG ((yyvsp[(2) - (2)].reg)))
{
}
break;
- case 179:
-#line 2860 "bfin-parse.y"
+ case 178:
+#line 2924 "bfin-parse.y"
{
if (IS_PREG ((yyvsp[(3) - (4)].reg)))
{
}
break;
- case 180:
-#line 2871 "bfin-parse.y"
+ case 179:
+#line 2935 "bfin-parse.y"
{
if (IS_PREG ((yyvsp[(2) - (2)].reg)))
{
}
break;
- case 181:
-#line 2885 "bfin-parse.y"
+ case 180:
+#line 2949 "bfin-parse.y"
{
- if (IS_PREG ((yyvsp[(3) - (7)].reg)) && IS_DREG ((yyvsp[(7) - (7)].reg)))
- {
- notethat ("LDST: B [ pregs <post_op> ] = dregs\n");
- (yyval.instr) = LDST (&(yyvsp[(3) - (7)].reg), &(yyvsp[(7) - (7)].reg), (yyvsp[(4) - (7)].modcodes).x0, 2, 0, 1);
- }
- else
- return yyerror ("Register mismatch");
+ if (!IS_DREG ((yyvsp[(7) - (7)].reg)))
+ return yyerror ("Dreg expected for source operand");
+ if (!IS_PREG ((yyvsp[(3) - (7)].reg)))
+ return yyerror ("Preg expected in address");
+
+ notethat ("LDST: B [ pregs <post_op> ] = dregs\n");
+ (yyval.instr) = LDST (&(yyvsp[(3) - (7)].reg), &(yyvsp[(7) - (7)].reg), (yyvsp[(4) - (7)].modcodes).x0, 2, 0, 1);
}
break;
- case 182:
-#line 2897 "bfin-parse.y"
+ case 181:
+#line 2961 "bfin-parse.y"
{
- if (IS_PREG ((yyvsp[(3) - (8)].reg)) && IS_RANGE(16, (yyvsp[(5) - (8)].expr), (yyvsp[(4) - (8)].r0).r0, 1) && IS_DREG ((yyvsp[(8) - (8)].reg)))
+ Expr_Node *tmp = (yyvsp[(5) - (8)].expr);
+
+ if (!IS_DREG ((yyvsp[(8) - (8)].reg)))
+ return yyerror ("Dreg expected for source operand");
+ if (!IS_PREG ((yyvsp[(3) - (8)].reg)))
+ return yyerror ("Preg expected in address");
+
+ if (IS_RELOC ((yyvsp[(5) - (8)].expr)))
+ return yyerror ("Plain symbol used as offset");
+
+ if ((yyvsp[(4) - (8)].r0).r0)
+ tmp = unary (Expr_Op_Type_NEG, tmp);
+
+ if (in_range_p (tmp, -32768, 32767, 0))
{
notethat ("LDST: B [ pregs + imm16 ] = dregs\n");
- if ((yyvsp[(4) - (8)].r0).r0)
- neg_value ((yyvsp[(5) - (8)].expr));
(yyval.instr) = LDSTIDXI (&(yyvsp[(3) - (8)].reg), &(yyvsp[(8) - (8)].reg), 1, 2, 0, (yyvsp[(5) - (8)].expr));
}
else
- return yyerror ("Register mismatch or const size wrong");
+ return yyerror ("Displacement out of range");
}
break;
- case 183:
-#line 2912 "bfin-parse.y"
+ case 182:
+#line 2987 "bfin-parse.y"
{
- if (IS_PREG ((yyvsp[(3) - (8)].reg)) && IS_URANGE (4, (yyvsp[(5) - (8)].expr), (yyvsp[(4) - (8)].r0).r0, 2) && IS_DREG ((yyvsp[(8) - (8)].reg)))
+ Expr_Node *tmp = (yyvsp[(5) - (8)].expr);
+
+ if (!IS_DREG ((yyvsp[(8) - (8)].reg)))
+ return yyerror ("Dreg expected for source operand");
+ if (!IS_PREG ((yyvsp[(3) - (8)].reg)))
+ return yyerror ("Preg expected in address");
+
+ if ((yyvsp[(4) - (8)].r0).r0)
+ tmp = unary (Expr_Op_Type_NEG, tmp);
+
+ if (IS_RELOC ((yyvsp[(5) - (8)].expr)))
+ return yyerror ("Plain symbol used as offset");
+
+ if (in_range_p (tmp, 0, 30, 1))
{
notethat ("LDSTii: W [ pregs +- uimm5m2 ] = dregs\n");
- (yyval.instr) = LDSTII (&(yyvsp[(3) - (8)].reg), &(yyvsp[(8) - (8)].reg), (yyvsp[(5) - (8)].expr), 1, 1);
+ (yyval.instr) = LDSTII (&(yyvsp[(3) - (8)].reg), &(yyvsp[(8) - (8)].reg), tmp, 1, 1);
}
- else if (IS_PREG ((yyvsp[(3) - (8)].reg)) && IS_RANGE(16, (yyvsp[(5) - (8)].expr), (yyvsp[(4) - (8)].r0).r0, 2) && IS_DREG ((yyvsp[(8) - (8)].reg)))
+ else if (in_range_p (tmp, -65536, 65535, 1))
{
notethat ("LDSTidxI: W [ pregs + imm17m2 ] = dregs\n");
- if ((yyvsp[(4) - (8)].r0).r0)
- neg_value ((yyvsp[(5) - (8)].expr));
- (yyval.instr) = LDSTIDXI (&(yyvsp[(3) - (8)].reg), &(yyvsp[(8) - (8)].reg), 1, 1, 0, (yyvsp[(5) - (8)].expr));
+ (yyval.instr) = LDSTIDXI (&(yyvsp[(3) - (8)].reg), &(yyvsp[(8) - (8)].reg), 1, 1, 0, tmp);
}
else
- return yyerror ("Bad register(s) or wrong constant size");
+ return yyerror ("Displacement out of range");
}
break;
- case 184:
-#line 2931 "bfin-parse.y"
+ case 183:
+#line 3017 "bfin-parse.y"
{
- if (IS_PREG ((yyvsp[(3) - (7)].reg)) && IS_DREG ((yyvsp[(7) - (7)].reg)))
- {
- notethat ("LDST: W [ pregs <post_op> ] = dregs\n");
- (yyval.instr) = LDST (&(yyvsp[(3) - (7)].reg), &(yyvsp[(7) - (7)].reg), (yyvsp[(4) - (7)].modcodes).x0, 1, 0, 1);
- }
- else
- return yyerror ("Bad register(s) for STORE");
+ if (!IS_DREG ((yyvsp[(7) - (7)].reg)))
+ return yyerror ("Dreg expected for source operand");
+ if (!IS_PREG ((yyvsp[(3) - (7)].reg)))
+ return yyerror ("Preg expected in address");
+
+ notethat ("LDST: W [ pregs <post_op> ] = dregs\n");
+ (yyval.instr) = LDST (&(yyvsp[(3) - (7)].reg), &(yyvsp[(7) - (7)].reg), (yyvsp[(4) - (7)].modcodes).x0, 1, 0, 1);
}
break;
- case 185:
-#line 2942 "bfin-parse.y"
+ case 184:
+#line 3028 "bfin-parse.y"
{
+ if (!IS_DREG ((yyvsp[(7) - (7)].reg)))
+ return yyerror ("Dreg expected for source operand");
+ if ((yyvsp[(4) - (7)].modcodes).x0 == 2)
+ {
+ if (!IS_IREG ((yyvsp[(3) - (7)].reg)) && !IS_PREG ((yyvsp[(3) - (7)].reg)))
+ return yyerror ("Ireg or Preg expected in address");
+ }
+ else if (!IS_IREG ((yyvsp[(3) - (7)].reg)))
+ return yyerror ("Ireg expected in address");
+
if (IS_IREG ((yyvsp[(3) - (7)].reg)))
{
notethat ("dspLDST: W [ iregs <post_op> ] = dregs_half\n");
(yyval.instr) = DSPLDST (&(yyvsp[(3) - (7)].reg), 1 + IS_H ((yyvsp[(7) - (7)].reg)), &(yyvsp[(7) - (7)].reg), (yyvsp[(4) - (7)].modcodes).x0, 1);
}
- else if ((yyvsp[(4) - (7)].modcodes).x0 == 2 && IS_PREG ((yyvsp[(3) - (7)].reg)) && IS_DREG ((yyvsp[(7) - (7)].reg)))
+ else
{
- notethat ("LDSTpmod: W [ pregs <post_op>] = dregs_half\n");
+ notethat ("LDSTpmod: W [ pregs ] = dregs_half\n");
(yyval.instr) = LDSTPMOD (&(yyvsp[(3) - (7)].reg), &(yyvsp[(7) - (7)].reg), &(yyvsp[(3) - (7)].reg), 1 + IS_H ((yyvsp[(7) - (7)].reg)), 1);
-
}
- else
- return yyerror ("Bad register(s) for STORE");
}
break;
- case 186:
-#line 2960 "bfin-parse.y"
+ case 185:
+#line 3053 "bfin-parse.y"
{
Expr_Node *tmp = (yyvsp[(4) - (7)].expr);
int ispreg = IS_PREG ((yyvsp[(7) - (7)].reg));
if (!IS_PREG ((yyvsp[(2) - (7)].reg)))
- return yyerror ("Preg expected for indirect");
+ return yyerror ("Preg expected in address");
if (!IS_DREG ((yyvsp[(7) - (7)].reg)) && !ispreg)
- return yyerror ("Bad source register for STORE");
+ return yyerror ("Preg expected for source operand");
if ((yyvsp[(3) - (7)].r0).r0)
tmp = unary (Expr_Op_Type_NEG, tmp);
+ if (IS_RELOC ((yyvsp[(4) - (7)].expr)))
+ return yyerror ("Plain symbol used as offset");
+
if (in_range_p (tmp, 0, 63, 3))
{
notethat ("LDSTii: dpregs = [ pregs + uimm6m4 ]\n");
else if (in_range_p (tmp, -131072, 131071, 3))
{
notethat ("LDSTidxI: [ pregs + imm18m4 ] = dpregs\n");
- (yyval.instr) = LDSTIDXI (&(yyvsp[(2) - (7)].reg), &(yyvsp[(7) - (7)].reg), 1, 0, ispreg ? 1: 0, tmp);
+ (yyval.instr) = LDSTIDXI (&(yyvsp[(2) - (7)].reg), &(yyvsp[(7) - (7)].reg), 1, 0, ispreg ? 1 : 0, tmp);
}
else
- return yyerror ("Displacement out of range for store");
+ return yyerror ("Displacement out of range");
}
break;
- case 187:
-#line 2994 "bfin-parse.y"
+ case 186:
+#line 3090 "bfin-parse.y"
{
- if (IS_DREG ((yyvsp[(1) - (9)].reg)) && IS_PREG ((yyvsp[(5) - (9)].reg)) && IS_URANGE (4, (yyvsp[(7) - (9)].expr), (yyvsp[(6) - (9)].r0).r0, 2))
+ Expr_Node *tmp = (yyvsp[(7) - (9)].expr);
+ if (!IS_DREG ((yyvsp[(1) - (9)].reg)))
+ return yyerror ("Dreg expected for destination operand");
+ if (!IS_PREG ((yyvsp[(5) - (9)].reg)))
+ return yyerror ("Preg expected in address");
+
+ if ((yyvsp[(6) - (9)].r0).r0)
+ tmp = unary (Expr_Op_Type_NEG, tmp);
+
+ if (IS_RELOC ((yyvsp[(7) - (9)].expr)))
+ return yyerror ("Plain symbol used as offset");
+
+ if (in_range_p (tmp, 0, 30, 1))
{
- notethat ("LDSTii: dregs = W [ pregs + uimm4s2 ] (.)\n");
- (yyval.instr) = LDSTII (&(yyvsp[(5) - (9)].reg), &(yyvsp[(1) - (9)].reg), (yyvsp[(7) - (9)].expr), 0, 1 << (yyvsp[(9) - (9)].r0).r0);
+ notethat ("LDSTii: dregs = W [ pregs + uimm5m2 ] (.)\n");
+ (yyval.instr) = LDSTII (&(yyvsp[(5) - (9)].reg), &(yyvsp[(1) - (9)].reg), tmp, 0, 1 << (yyvsp[(9) - (9)].r0).r0);
}
- else if (IS_DREG ((yyvsp[(1) - (9)].reg)) && IS_PREG ((yyvsp[(5) - (9)].reg)) && IS_RANGE(16, (yyvsp[(7) - (9)].expr), (yyvsp[(6) - (9)].r0).r0, 2))
+ else if (in_range_p (tmp, -65536, 65535, 1))
{
notethat ("LDSTidxI: dregs = W [ pregs + imm17m2 ] (.)\n");
- if ((yyvsp[(6) - (9)].r0).r0)
- neg_value ((yyvsp[(7) - (9)].expr));
- (yyval.instr) = LDSTIDXI (&(yyvsp[(5) - (9)].reg), &(yyvsp[(1) - (9)].reg), 0, 1, (yyvsp[(9) - (9)].r0).r0, (yyvsp[(7) - (9)].expr));
+ (yyval.instr) = LDSTIDXI (&(yyvsp[(5) - (9)].reg), &(yyvsp[(1) - (9)].reg), 0, 1, (yyvsp[(9) - (9)].r0).r0, tmp);
}
else
- return yyerror ("Bad register or constant for LOAD");
+ return yyerror ("Displacement out of range");
}
break;
- case 188:
-#line 3012 "bfin-parse.y"
+ case 187:
+#line 3118 "bfin-parse.y"
{
+ if (!IS_DREG ((yyvsp[(1) - (7)].reg)))
+ return yyerror ("Dreg expected for source operand");
+ if ((yyvsp[(6) - (7)].modcodes).x0 == 2)
+ {
+ if (!IS_IREG ((yyvsp[(5) - (7)].reg)) && !IS_PREG ((yyvsp[(5) - (7)].reg)))
+ return yyerror ("Ireg or Preg expected in address");
+ }
+ else if (!IS_IREG ((yyvsp[(5) - (7)].reg)))
+ return yyerror ("Ireg expected in address");
+
if (IS_IREG ((yyvsp[(5) - (7)].reg)))
{
- notethat ("dspLDST: dregs_half = W [ iregs ]\n");
+ notethat ("dspLDST: dregs_half = W [ iregs <post_op> ]\n");
(yyval.instr) = DSPLDST(&(yyvsp[(5) - (7)].reg), 1 + IS_H ((yyvsp[(1) - (7)].reg)), &(yyvsp[(1) - (7)].reg), (yyvsp[(6) - (7)].modcodes).x0, 0);
}
- else if ((yyvsp[(6) - (7)].modcodes).x0 == 2 && IS_DREG ((yyvsp[(1) - (7)].reg)) && IS_PREG ((yyvsp[(5) - (7)].reg)))
+ else
{
- notethat ("LDSTpmod: dregs_half = W [ pregs ]\n");
+ notethat ("LDSTpmod: dregs_half = W [ pregs <post_op> ]\n");
(yyval.instr) = LDSTPMOD (&(yyvsp[(5) - (7)].reg), &(yyvsp[(1) - (7)].reg), &(yyvsp[(5) - (7)].reg), 1 + IS_H ((yyvsp[(1) - (7)].reg)), 0);
}
- else
- return yyerror ("Bad register or post_op for LOAD");
}
break;
- case 189:
-#line 3029 "bfin-parse.y"
+ case 188:
+#line 3143 "bfin-parse.y"
{
- if (IS_DREG ((yyvsp[(1) - (8)].reg)) && IS_PREG ((yyvsp[(5) - (8)].reg)))
- {
- notethat ("LDST: dregs = W [ pregs <post_op> ] (.)\n");
- (yyval.instr) = LDST (&(yyvsp[(5) - (8)].reg), &(yyvsp[(1) - (8)].reg), (yyvsp[(6) - (8)].modcodes).x0, 1, (yyvsp[(8) - (8)].r0).r0, 0);
- }
- else
- return yyerror ("Bad register for LOAD");
+ if (!IS_DREG ((yyvsp[(1) - (8)].reg)))
+ return yyerror ("Dreg expected for destination operand");
+ if (!IS_PREG ((yyvsp[(5) - (8)].reg)))
+ return yyerror ("Preg expected in address");
+
+ notethat ("LDST: dregs = W [ pregs <post_op> ] (.)\n");
+ (yyval.instr) = LDST (&(yyvsp[(5) - (8)].reg), &(yyvsp[(1) - (8)].reg), (yyvsp[(6) - (8)].modcodes).x0, 1, (yyvsp[(8) - (8)].r0).r0, 0);
}
break;
- case 190:
-#line 3040 "bfin-parse.y"
+ case 189:
+#line 3154 "bfin-parse.y"
{
- if (IS_DREG ((yyvsp[(1) - (9)].reg)) && IS_PREG ((yyvsp[(5) - (9)].reg)) && IS_PREG ((yyvsp[(7) - (9)].reg)))
- {
- notethat ("LDSTpmod: dregs = W [ pregs ++ pregs ] (.)\n");
- (yyval.instr) = LDSTPMOD (&(yyvsp[(5) - (9)].reg), &(yyvsp[(1) - (9)].reg), &(yyvsp[(7) - (9)].reg), 3, (yyvsp[(9) - (9)].r0).r0);
- }
- else
- return yyerror ("Bad register for LOAD");
+ if (!IS_DREG ((yyvsp[(1) - (9)].reg)))
+ return yyerror ("Dreg expected for destination operand");
+ if (!IS_PREG ((yyvsp[(5) - (9)].reg)) || !IS_PREG ((yyvsp[(7) - (9)].reg)))
+ return yyerror ("Preg expected in address");
+
+ notethat ("LDSTpmod: dregs = W [ pregs ++ pregs ] (.)\n");
+ (yyval.instr) = LDSTPMOD (&(yyvsp[(5) - (9)].reg), &(yyvsp[(1) - (9)].reg), &(yyvsp[(7) - (9)].reg), 3, (yyvsp[(9) - (9)].r0).r0);
}
break;
- case 191:
-#line 3051 "bfin-parse.y"
+ case 190:
+#line 3165 "bfin-parse.y"
{
- if (IS_DREG ((yyvsp[(1) - (8)].reg)) && IS_PREG ((yyvsp[(5) - (8)].reg)) && IS_PREG ((yyvsp[(7) - (8)].reg)))
- {
- notethat ("LDSTpmod: dregs_half = W [ pregs ++ pregs ]\n");
- (yyval.instr) = LDSTPMOD (&(yyvsp[(5) - (8)].reg), &(yyvsp[(1) - (8)].reg), &(yyvsp[(7) - (8)].reg), 1 + IS_H ((yyvsp[(1) - (8)].reg)), 0);
- }
- else
- return yyerror ("Bad register for LOAD");
+ if (!IS_DREG ((yyvsp[(1) - (8)].reg)))
+ return yyerror ("Dreg expected for destination operand");
+ if (!IS_PREG ((yyvsp[(5) - (8)].reg)) || !IS_PREG ((yyvsp[(7) - (8)].reg)))
+ return yyerror ("Preg expected in address");
+
+ notethat ("LDSTpmod: dregs_half = W [ pregs ++ pregs ]\n");
+ (yyval.instr) = LDSTPMOD (&(yyvsp[(5) - (8)].reg), &(yyvsp[(1) - (8)].reg), &(yyvsp[(7) - (8)].reg), 1 + IS_H ((yyvsp[(1) - (8)].reg)), 0);
}
break;
- case 192:
-#line 3062 "bfin-parse.y"
+ case 191:
+#line 3176 "bfin-parse.y"
{
- if (IS_IREG ((yyvsp[(2) - (6)].reg)) && IS_DREG ((yyvsp[(6) - (6)].reg)))
+ if (!IS_IREG ((yyvsp[(2) - (6)].reg)) && !IS_PREG ((yyvsp[(2) - (6)].reg)))
+ return yyerror ("Ireg or Preg expected in address");
+ else if (IS_IREG ((yyvsp[(2) - (6)].reg)) && !IS_DREG ((yyvsp[(6) - (6)].reg)))
+ return yyerror ("Dreg expected for source operand");
+ else if (IS_PREG ((yyvsp[(2) - (6)].reg)) && !IS_DREG ((yyvsp[(6) - (6)].reg)) && !IS_PREG ((yyvsp[(6) - (6)].reg)))
+ return yyerror ("Dreg or Preg expected for source operand");
+
+ if (IS_IREG ((yyvsp[(2) - (6)].reg)))
{
notethat ("dspLDST: [ iregs <post_op> ] = dregs\n");
(yyval.instr) = DSPLDST(&(yyvsp[(2) - (6)].reg), 0, &(yyvsp[(6) - (6)].reg), (yyvsp[(3) - (6)].modcodes).x0, 1);
}
- else if (IS_PREG ((yyvsp[(2) - (6)].reg)) && IS_DREG ((yyvsp[(6) - (6)].reg)))
+ else if (IS_DREG ((yyvsp[(6) - (6)].reg)))
{
notethat ("LDST: [ pregs <post_op> ] = dregs\n");
(yyval.instr) = LDST (&(yyvsp[(2) - (6)].reg), &(yyvsp[(6) - (6)].reg), (yyvsp[(3) - (6)].modcodes).x0, 0, 0, 1);
}
- else if (IS_PREG ((yyvsp[(2) - (6)].reg)) && IS_PREG ((yyvsp[(6) - (6)].reg)))
+ else
{
notethat ("LDST: [ pregs <post_op> ] = pregs\n");
(yyval.instr) = LDST (&(yyvsp[(2) - (6)].reg), &(yyvsp[(6) - (6)].reg), (yyvsp[(3) - (6)].modcodes).x0, 0, 1, 1);
}
- else
- return yyerror ("Bad register for STORE");
}
break;
- case 193:
-#line 3083 "bfin-parse.y"
+ case 192:
+#line 3202 "bfin-parse.y"
{
- if (! IS_DREG ((yyvsp[(7) - (7)].reg)))
- return yyerror ("Expected Dreg for last argument");
+ if (!IS_DREG ((yyvsp[(7) - (7)].reg)))
+ return yyerror ("Dreg expected for source operand");
if (IS_IREG ((yyvsp[(2) - (7)].reg)) && IS_MREG ((yyvsp[(4) - (7)].reg)))
{
(yyval.instr) = LDSTPMOD (&(yyvsp[(2) - (7)].reg), &(yyvsp[(7) - (7)].reg), &(yyvsp[(4) - (7)].reg), 0, 1);
}
else
- return yyerror ("Bad register for STORE");
+ return yyerror ("Preg ++ Preg or Ireg ++ Mreg expected in address");
}
break;
- case 194:
-#line 3102 "bfin-parse.y"
+ case 193:
+#line 3221 "bfin-parse.y"
{
if (!IS_DREG ((yyvsp[(8) - (8)].reg)))
- return yyerror ("Expect Dreg as last argument");
+ return yyerror ("Dreg expected for source operand");
+
if (IS_PREG ((yyvsp[(3) - (8)].reg)) && IS_PREG ((yyvsp[(5) - (8)].reg)))
{
notethat ("LDSTpmod: W [ pregs ++ pregs ] = dregs_half\n");
(yyval.instr) = LDSTPMOD (&(yyvsp[(3) - (8)].reg), &(yyvsp[(8) - (8)].reg), &(yyvsp[(5) - (8)].reg), 1 + IS_H ((yyvsp[(8) - (8)].reg)), 1);
}
else
- return yyerror ("Bad register for STORE");
+ return yyerror ("Preg ++ Preg expected in address");
}
break;
- case 195:
-#line 3115 "bfin-parse.y"
+ case 194:
+#line 3235 "bfin-parse.y"
{
- if (IS_DREG ((yyvsp[(1) - (9)].reg)) && IS_PREG ((yyvsp[(5) - (9)].reg)) && IS_RANGE(16, (yyvsp[(7) - (9)].expr), (yyvsp[(6) - (9)].r0).r0, 1))
+ Expr_Node *tmp = (yyvsp[(7) - (9)].expr);
+ if (!IS_DREG ((yyvsp[(1) - (9)].reg)))
+ return yyerror ("Dreg expected for destination operand");
+ if (!IS_PREG ((yyvsp[(5) - (9)].reg)))
+ return yyerror ("Preg expected in address");
+
+ if ((yyvsp[(6) - (9)].r0).r0)
+ tmp = unary (Expr_Op_Type_NEG, tmp);
+
+ if (IS_RELOC ((yyvsp[(7) - (9)].expr)))
+ return yyerror ("Plain symbol used as offset");
+
+ if (in_range_p (tmp, -32768, 32767, 0))
{
notethat ("LDSTidxI: dregs = B [ pregs + imm16 ] (%c)\n",
(yyvsp[(9) - (9)].r0).r0 ? 'X' : 'Z');
- if ((yyvsp[(6) - (9)].r0).r0)
- neg_value ((yyvsp[(7) - (9)].expr));
- (yyval.instr) = LDSTIDXI (&(yyvsp[(5) - (9)].reg), &(yyvsp[(1) - (9)].reg), 0, 2, (yyvsp[(9) - (9)].r0).r0, (yyvsp[(7) - (9)].expr));
+ (yyval.instr) = LDSTIDXI (&(yyvsp[(5) - (9)].reg), &(yyvsp[(1) - (9)].reg), 0, 2, (yyvsp[(9) - (9)].r0).r0, tmp);
}
else
- return yyerror ("Bad register or value for LOAD");
+ return yyerror ("Displacement out of range");
}
break;
- case 196:
-#line 3129 "bfin-parse.y"
+ case 195:
+#line 3259 "bfin-parse.y"
{
- if (IS_DREG ((yyvsp[(1) - (8)].reg)) && IS_PREG ((yyvsp[(5) - (8)].reg)))
- {
- notethat ("LDST: dregs = B [ pregs <post_op> ] (%c)\n",
- (yyvsp[(8) - (8)].r0).r0 ? 'X' : 'Z');
- (yyval.instr) = LDST (&(yyvsp[(5) - (8)].reg), &(yyvsp[(1) - (8)].reg), (yyvsp[(6) - (8)].modcodes).x0, 2, (yyvsp[(8) - (8)].r0).r0, 0);
- }
- else
- return yyerror ("Bad register for LOAD");
+ if (!IS_DREG ((yyvsp[(1) - (8)].reg)))
+ return yyerror ("Dreg expected for destination operand");
+ if (!IS_PREG ((yyvsp[(5) - (8)].reg)))
+ return yyerror ("Preg expected in address");
+
+ notethat ("LDST: dregs = B [ pregs <post_op> ] (%c)\n",
+ (yyvsp[(8) - (8)].r0).r0 ? 'X' : 'Z');
+ (yyval.instr) = LDST (&(yyvsp[(5) - (8)].reg), &(yyvsp[(1) - (8)].reg), (yyvsp[(6) - (8)].modcodes).x0, 2, (yyvsp[(8) - (8)].r0).r0, 0);
}
break;
- case 197:
-#line 3141 "bfin-parse.y"
+ case 196:
+#line 3271 "bfin-parse.y"
{
- if (IS_DREG ((yyvsp[(1) - (7)].reg)) && IS_IREG ((yyvsp[(4) - (7)].reg)) && IS_MREG ((yyvsp[(6) - (7)].reg)))
+ if (!IS_DREG ((yyvsp[(1) - (7)].reg)))
+ return yyerror ("Dreg expected for destination operand");
+
+ if (IS_IREG ((yyvsp[(4) - (7)].reg)) && IS_MREG ((yyvsp[(6) - (7)].reg)))
{
notethat ("dspLDST: dregs = [ iregs ++ mregs ]\n");
(yyval.instr) = DSPLDST(&(yyvsp[(4) - (7)].reg), (yyvsp[(6) - (7)].reg).regno & CODE_MASK, &(yyvsp[(1) - (7)].reg), 3, 0);
}
- else if (IS_DREG ((yyvsp[(1) - (7)].reg)) && IS_PREG ((yyvsp[(4) - (7)].reg)) && IS_PREG ((yyvsp[(6) - (7)].reg)))
+ else if (IS_PREG ((yyvsp[(4) - (7)].reg)) && IS_PREG ((yyvsp[(6) - (7)].reg)))
{
notethat ("LDSTpmod: dregs = [ pregs ++ pregs ]\n");
(yyval.instr) = LDSTPMOD (&(yyvsp[(4) - (7)].reg), &(yyvsp[(1) - (7)].reg), &(yyvsp[(6) - (7)].reg), 0, 0);
}
else
- return yyerror ("Bad register for LOAD");
+ return yyerror ("Preg ++ Preg or Ireg ++ Mreg expected in address");
}
break;
- case 198:
-#line 3157 "bfin-parse.y"
+ case 197:
+#line 3290 "bfin-parse.y"
{
Expr_Node *tmp = (yyvsp[(6) - (7)].expr);
int ispreg = IS_PREG ((yyvsp[(1) - (7)].reg));
int isgot = IS_RELOC((yyvsp[(6) - (7)].expr));
if (!IS_PREG ((yyvsp[(4) - (7)].reg)))
- return yyerror ("Preg expected for indirect");
+ return yyerror ("Preg expected in address");
if (!IS_DREG ((yyvsp[(1) - (7)].reg)) && !ispreg)
- return yyerror ("Bad destination register for LOAD");
+ return yyerror ("Dreg or Preg expected for destination operand");
+
+ if (tmp->type == Expr_Node_Reloc
+ && strcmp (tmp->value.s_value,
+ "_current_shared_library_p5_offset_") != 0)
+ return yyerror ("Plain symbol used as offset");
if ((yyvsp[(5) - (7)].r0).r0)
tmp = unary (Expr_Op_Type_NEG, tmp);
- if(isgot){
+ if (isgot)
+ {
notethat ("LDSTidxI: dpregs = [ pregs + sym@got ]\n");
- (yyval.instr) = LDSTIDXI (&(yyvsp[(4) - (7)].reg), &(yyvsp[(1) - (7)].reg), 0, 0, ispreg ? 1: 0, tmp);
- }
+ (yyval.instr) = LDSTIDXI (&(yyvsp[(4) - (7)].reg), &(yyvsp[(1) - (7)].reg), 0, 0, ispreg ? 1 : 0, tmp);
+ }
else if (in_range_p (tmp, 0, 63, 3))
{
notethat ("LDSTii: dpregs = [ pregs + uimm7m4 ]\n");
else if (in_range_p (tmp, -131072, 131071, 3))
{
notethat ("LDSTidxI: dpregs = [ pregs + imm18m4 ]\n");
- (yyval.instr) = LDSTIDXI (&(yyvsp[(4) - (7)].reg), &(yyvsp[(1) - (7)].reg), 0, 0, ispreg ? 1: 0, tmp);
+ (yyval.instr) = LDSTIDXI (&(yyvsp[(4) - (7)].reg), &(yyvsp[(1) - (7)].reg), 0, 0, ispreg ? 1 : 0, tmp);
}
else
- return yyerror ("Displacement out of range for load");
+ return yyerror ("Displacement out of range");
}
break;
- case 199:
-#line 3197 "bfin-parse.y"
+ case 198:
+#line 3336 "bfin-parse.y"
{
- if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_IREG ((yyvsp[(4) - (6)].reg)))
+ if (!IS_IREG ((yyvsp[(4) - (6)].reg)) && !IS_PREG ((yyvsp[(4) - (6)].reg)))
+ return yyerror ("Ireg or Preg expected in address");
+ else if (IS_IREG ((yyvsp[(4) - (6)].reg)) && !IS_DREG ((yyvsp[(1) - (6)].reg)))
+ return yyerror ("Dreg expected in destination operand");
+ else if (IS_PREG ((yyvsp[(4) - (6)].reg)) && !IS_DREG ((yyvsp[(1) - (6)].reg)) && !IS_PREG ((yyvsp[(1) - (6)].reg))
+ && ((yyvsp[(4) - (6)].reg).regno != REG_SP || !IS_ALLREG ((yyvsp[(1) - (6)].reg)) || (yyvsp[(5) - (6)].modcodes).x0 != 0))
+ return yyerror ("Dreg or Preg expected in destination operand");
+
+ if (IS_IREG ((yyvsp[(4) - (6)].reg)))
{
notethat ("dspLDST: dregs = [ iregs <post_op> ]\n");
(yyval.instr) = DSPLDST (&(yyvsp[(4) - (6)].reg), 0, &(yyvsp[(1) - (6)].reg), (yyvsp[(5) - (6)].modcodes).x0, 0);
}
- else if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_PREG ((yyvsp[(4) - (6)].reg)))
+ else if (IS_DREG ((yyvsp[(1) - (6)].reg)))
{
notethat ("LDST: dregs = [ pregs <post_op> ]\n");
(yyval.instr) = LDST (&(yyvsp[(4) - (6)].reg), &(yyvsp[(1) - (6)].reg), (yyvsp[(5) - (6)].modcodes).x0, 0, 0, 0);
}
- else if (IS_PREG ((yyvsp[(1) - (6)].reg)) && IS_PREG ((yyvsp[(4) - (6)].reg)))
+ else if (IS_PREG ((yyvsp[(1) - (6)].reg)))
{
if (REG_SAME ((yyvsp[(1) - (6)].reg), (yyvsp[(4) - (6)].reg)) && (yyvsp[(5) - (6)].modcodes).x0 != 2)
return yyerror ("Pregs can't be same");
notethat ("LDST: pregs = [ pregs <post_op> ]\n");
(yyval.instr) = LDST (&(yyvsp[(4) - (6)].reg), &(yyvsp[(1) - (6)].reg), (yyvsp[(5) - (6)].modcodes).x0, 0, 1, 0);
}
- else if ((yyvsp[(4) - (6)].reg).regno == REG_SP && IS_ALLREG ((yyvsp[(1) - (6)].reg)) && (yyvsp[(5) - (6)].modcodes).x0 == 0)
+ else
{
notethat ("PushPopReg: allregs = [ SP ++ ]\n");
(yyval.instr) = PUSHPOPREG (&(yyvsp[(1) - (6)].reg), 0);
}
- else
- return yyerror ("Bad register or value");
}
break;
- case 200:
-#line 3228 "bfin-parse.y"
+ case 199:
+#line 3373 "bfin-parse.y"
{
if ((yyvsp[(1) - (11)].reg).regno != REG_SP)
yyerror ("Stack Pointer expected");
}
break;
- case 201:
-#line 3244 "bfin-parse.y"
+ case 200:
+#line 3389 "bfin-parse.y"
{
if ((yyvsp[(1) - (7)].reg).regno != REG_SP)
yyerror ("Stack Pointer expected");
}
break;
- case 202:
-#line 3263 "bfin-parse.y"
+ case 201:
+#line 3408 "bfin-parse.y"
{
if ((yyvsp[(11) - (11)].reg).regno != REG_SP)
yyerror ("Stack Pointer expected");
}
break;
- case 203:
-#line 3277 "bfin-parse.y"
+ case 202:
+#line 3422 "bfin-parse.y"
{
if ((yyvsp[(7) - (7)].reg).regno != REG_SP)
yyerror ("Stack Pointer expected");
}
break;
- case 204:
-#line 3296 "bfin-parse.y"
+ case 203:
+#line 3441 "bfin-parse.y"
{
if ((yyvsp[(1) - (3)].reg).regno != REG_SP)
yyerror ("Stack Pointer expected");
}
break;
- case 205:
-#line 3312 "bfin-parse.y"
+ case 204:
+#line 3457 "bfin-parse.y"
{
if (IS_URANGE (16, (yyvsp[(2) - (2)].expr), 0, 4))
(yyval.instr) = LINKAGE (0, uimm16s4 ((yyvsp[(2) - (2)].expr)));
}
break;
- case 206:
-#line 3320 "bfin-parse.y"
+ case 205:
+#line 3465 "bfin-parse.y"
{
notethat ("linkage: UNLINK\n");
(yyval.instr) = LINKAGE (1, 0);
}
break;
- case 207:
-#line 3329 "bfin-parse.y"
+ case 206:
+#line 3474 "bfin-parse.y"
{
if (IS_PCREL4 ((yyvsp[(3) - (7)].expr)) && IS_LPPCREL10 ((yyvsp[(5) - (7)].expr)) && IS_CREG ((yyvsp[(7) - (7)].reg)))
{
}
break;
- case 208:
-#line 3340 "bfin-parse.y"
+ case 207:
+#line 3485 "bfin-parse.y"
{
if (IS_PCREL4 ((yyvsp[(3) - (9)].expr)) && IS_LPPCREL10 ((yyvsp[(5) - (9)].expr))
&& IS_PREG ((yyvsp[(9) - (9)].reg)) && IS_CREG ((yyvsp[(7) - (9)].reg)))
}
break;
- case 209:
-#line 3352 "bfin-parse.y"
+ case 208:
+#line 3497 "bfin-parse.y"
{
if (IS_PCREL4 ((yyvsp[(3) - (11)].expr)) && IS_LPPCREL10 ((yyvsp[(5) - (11)].expr))
&& IS_PREG ((yyvsp[(9) - (11)].reg)) && IS_CREG ((yyvsp[(7) - (11)].reg))
}
break;
- case 210:
-#line 3366 "bfin-parse.y"
+ case 209:
+#line 3511 "bfin-parse.y"
{
if (!IS_RELOC ((yyvsp[(2) - (3)].expr)))
return yyerror ("Invalid expression in loop statement");
}
break;
- case 211:
-#line 3374 "bfin-parse.y"
+ case 210:
+#line 3519 "bfin-parse.y"
{
if (IS_RELOC ((yyvsp[(2) - (5)].expr)) && IS_PREG ((yyvsp[(5) - (5)].reg)) && IS_CREG ((yyvsp[(3) - (5)].reg)))
{
}
break;
- case 212:
-#line 3384 "bfin-parse.y"
+ case 211:
+#line 3529 "bfin-parse.y"
{
if (IS_RELOC ((yyvsp[(2) - (7)].expr)) && IS_PREG ((yyvsp[(5) - (7)].reg)) && IS_CREG ((yyvsp[(3) - (7)].reg)) && EXPR_VALUE ((yyvsp[(7) - (7)].expr)) == 1)
{
}
break;
+ case 212:
+#line 3541 "bfin-parse.y"
+ {
+ if (!IS_RELOC ((yyvsp[(2) - (2)].expr)))
+ return yyerror ("Invalid expression in LOOP_BEGIN statement");
+
+ bfin_loop_beginend ((yyvsp[(2) - (2)].expr), 1);
+ (yyval.instr) = 0;
+ }
+ break;
+
case 213:
-#line 3396 "bfin-parse.y"
+#line 3551 "bfin-parse.y"
+ {
+ if (!IS_RELOC ((yyvsp[(2) - (2)].expr)))
+ return yyerror ("Invalid expression in LOOP_END statement");
+
+ bfin_loop_beginend ((yyvsp[(2) - (2)].expr), 0);
+ (yyval.instr) = 0;
+ }
+ break;
+
+ case 214:
+#line 3562 "bfin-parse.y"
{
notethat ("pseudoDEBUG: DBG\n");
(yyval.instr) = bfin_gen_pseudodbg (3, 7, 0);
}
break;
- case 214:
-#line 3401 "bfin-parse.y"
+ case 215:
+#line 3567 "bfin-parse.y"
{
notethat ("pseudoDEBUG: DBG REG_A\n");
(yyval.instr) = bfin_gen_pseudodbg (3, IS_A1 ((yyvsp[(2) - (2)].reg)), 0);
}
break;
- case 215:
-#line 3406 "bfin-parse.y"
+ case 216:
+#line 3572 "bfin-parse.y"
{
notethat ("pseudoDEBUG: DBG allregs\n");
(yyval.instr) = bfin_gen_pseudodbg (0, (yyvsp[(2) - (2)].reg).regno & CODE_MASK, (yyvsp[(2) - (2)].reg).regno & CLASS_MASK);
}
break;
- case 216:
-#line 3412 "bfin-parse.y"
+ case 217:
+#line 3578 "bfin-parse.y"
{
if (!IS_DREG ((yyvsp[(3) - (4)].reg)))
return yyerror ("Dregs expected");
}
break;
- case 217:
-#line 3420 "bfin-parse.y"
+ case 218:
+#line 3586 "bfin-parse.y"
{
notethat ("psedoDEBUG: DBGHALT\n");
(yyval.instr) = bfin_gen_pseudodbg (3, 5, 0);
}
break;
- case 218:
-#line 3426 "bfin-parse.y"
+ case 219:
+#line 3592 "bfin-parse.y"
{
- notethat ("pseudodbg_assert: DBGA (dregs_lo , uimm16 )\n");
+ notethat ("psedoDEBUG: HLT\n");
+ (yyval.instr) = bfin_gen_pseudodbg (3, 4, 0);
+ }
+ break;
+
+ case 220:
+#line 3598 "bfin-parse.y"
+ {
+ notethat ("pseudodbg_assert: DBGA (regs_lo/hi , uimm16 )\n");
(yyval.instr) = bfin_gen_pseudodbg_assert (IS_H ((yyvsp[(3) - (6)].reg)), &(yyvsp[(3) - (6)].reg), uimm16 ((yyvsp[(5) - (6)].expr)));
}
break;
- case 219:
-#line 3432 "bfin-parse.y"
+ case 221:
+#line 3604 "bfin-parse.y"
{
- notethat ("pseudodbg_assert: DBGAH (dregs , uimm16 )\n");
+ notethat ("pseudodbg_assert: DBGAH (regs , uimm16 )\n");
(yyval.instr) = bfin_gen_pseudodbg_assert (3, &(yyvsp[(3) - (6)].reg), uimm16 ((yyvsp[(5) - (6)].expr)));
}
break;
- case 220:
-#line 3438 "bfin-parse.y"
+ case 222:
+#line 3610 "bfin-parse.y"
{
- notethat ("psedodbg_assert: DBGAL (dregs , uimm16 )\n");
+ notethat ("psedodbg_assert: DBGAL (regs , uimm16 )\n");
(yyval.instr) = bfin_gen_pseudodbg_assert (2, &(yyvsp[(3) - (6)].reg), uimm16 ((yyvsp[(5) - (6)].expr)));
}
break;
- case 221:
-#line 3451 "bfin-parse.y"
+ case 223:
+#line 3623 "bfin-parse.y"
{
(yyval.reg) = (yyvsp[(1) - (1)].reg);
}
break;
- case 222:
-#line 3455 "bfin-parse.y"
+ case 224:
+#line 3627 "bfin-parse.y"
{
(yyval.reg) = (yyvsp[(1) - (1)].reg);
}
break;
- case 223:
-#line 3464 "bfin-parse.y"
+ case 225:
+#line 3636 "bfin-parse.y"
{
(yyval.mod).MM = 0;
(yyval.mod).mod = 0;
}
break;
- case 224:
-#line 3469 "bfin-parse.y"
+ case 226:
+#line 3641 "bfin-parse.y"
{
(yyval.mod).MM = 1;
(yyval.mod).mod = (yyvsp[(4) - (5)].value);
}
break;
- case 225:
-#line 3474 "bfin-parse.y"
+ case 227:
+#line 3646 "bfin-parse.y"
{
(yyval.mod).MM = 1;
(yyval.mod).mod = (yyvsp[(2) - (5)].value);
}
break;
- case 226:
-#line 3479 "bfin-parse.y"
+ case 228:
+#line 3651 "bfin-parse.y"
{
(yyval.mod).MM = 0;
(yyval.mod).mod = (yyvsp[(2) - (3)].value);
}
break;
- case 227:
-#line 3484 "bfin-parse.y"
+ case 229:
+#line 3656 "bfin-parse.y"
{
(yyval.mod).MM = 1;
(yyval.mod).mod = 0;
}
break;
- case 228:
-#line 3491 "bfin-parse.y"
+ case 230:
+#line 3663 "bfin-parse.y"
{
(yyval.r0).r0 = 1;
}
break;
- case 229:
-#line 3495 "bfin-parse.y"
+ case 231:
+#line 3667 "bfin-parse.y"
{
(yyval.r0).r0 = 0;
}
break;
- case 230:
-#line 3501 "bfin-parse.y"
+ case 232:
+#line 3673 "bfin-parse.y"
{
(yyval.modcodes).s0 = 0;
(yyval.modcodes).x0 = 0;
}
break;
- case 231:
-#line 3506 "bfin-parse.y"
+ case 233:
+#line 3678 "bfin-parse.y"
{
(yyval.modcodes).s0 = 1;
(yyval.modcodes).x0 = 0;
}
break;
- case 232:
-#line 3511 "bfin-parse.y"
+ case 234:
+#line 3683 "bfin-parse.y"
{
(yyval.modcodes).s0 = 0;
(yyval.modcodes).x0 = 1;
}
break;
- case 233:
-#line 3516 "bfin-parse.y"
+ case 235:
+#line 3688 "bfin-parse.y"
{
(yyval.modcodes).s0 = 1;
(yyval.modcodes).x0 = 1;
}
break;
- case 234:
-#line 3524 "bfin-parse.y"
+ case 236:
+#line 3696 "bfin-parse.y"
{
(yyval.r0).r0 = 1;
}
break;
- case 235:
-#line 3528 "bfin-parse.y"
+ case 237:
+#line 3700 "bfin-parse.y"
{
(yyval.r0).r0 = 0;
}
break;
- case 236:
-#line 3534 "bfin-parse.y"
+ case 238:
+#line 3706 "bfin-parse.y"
{
(yyval.modcodes).s0 = 0;
(yyval.modcodes).x0 = 0;
}
break;
- case 237:
-#line 3539 "bfin-parse.y"
+ case 239:
+#line 3711 "bfin-parse.y"
{
(yyval.modcodes).s0 = (yyvsp[(2) - (3)].modcodes).s0;
(yyval.modcodes).x0 = (yyvsp[(2) - (3)].modcodes).x0;
}
break;
- case 238:
-#line 3546 "bfin-parse.y"
+ case 240:
+#line 3718 "bfin-parse.y"
{
(yyval.modcodes).s0 = 0;
(yyval.modcodes).x0 = 0;
}
break;
- case 239:
-#line 3552 "bfin-parse.y"
+ case 241:
+#line 3724 "bfin-parse.y"
{
(yyval.modcodes).s0 = 0;
(yyval.modcodes).x0 = 0;
}
break;
- case 240:
-#line 3558 "bfin-parse.y"
+ case 242:
+#line 3730 "bfin-parse.y"
{
(yyval.modcodes).s0 = 1;
(yyval.modcodes).x0 = 0;
}
break;
- case 241:
-#line 3566 "bfin-parse.y"
+ case 243:
+#line 3738 "bfin-parse.y"
{
(yyval.modcodes).r0 = 0;
(yyval.modcodes).s0 = 0;
}
break;
- case 242:
-#line 3572 "bfin-parse.y"
+ case 244:
+#line 3744 "bfin-parse.y"
{
(yyval.modcodes).r0 = 2 + (yyvsp[(2) - (3)].r0).r0;
(yyval.modcodes).s0 = 0;
}
break;
- case 243:
-#line 3578 "bfin-parse.y"
+ case 245:
+#line 3750 "bfin-parse.y"
{
(yyval.modcodes).r0 = 0;
(yyval.modcodes).s0 = (yyvsp[(2) - (3)].modcodes).s0;
}
break;
- case 244:
-#line 3584 "bfin-parse.y"
+ case 246:
+#line 3756 "bfin-parse.y"
{
(yyval.modcodes).r0 = 2 + (yyvsp[(2) - (5)].r0).r0;
(yyval.modcodes).s0 = (yyvsp[(4) - (5)].modcodes).s0;
}
break;
- case 245:
-#line 3590 "bfin-parse.y"
+ case 247:
+#line 3762 "bfin-parse.y"
{
(yyval.modcodes).r0 = 2 + (yyvsp[(4) - (5)].r0).r0;
(yyval.modcodes).s0 = (yyvsp[(2) - (5)].modcodes).s0;
}
break;
- case 246:
-#line 3598 "bfin-parse.y"
+ case 248:
+#line 3770 "bfin-parse.y"
{
(yyval.r0).r0 = 0;
}
break;
- case 247:
-#line 3602 "bfin-parse.y"
+ case 249:
+#line 3774 "bfin-parse.y"
{
(yyval.r0).r0 = 0;
}
break;
- case 248:
-#line 3606 "bfin-parse.y"
+ case 250:
+#line 3778 "bfin-parse.y"
{
(yyval.r0).r0 = 1;
}
break;
- case 249:
-#line 3612 "bfin-parse.y"
+ case 251:
+#line 3784 "bfin-parse.y"
{
(yyval.r0).r0 = 0;
}
break;
- case 250:
-#line 3616 "bfin-parse.y"
+ case 252:
+#line 3788 "bfin-parse.y"
{
(yyval.r0).r0 = 0;
}
break;
- case 251:
-#line 3620 "bfin-parse.y"
+ case 253:
+#line 3792 "bfin-parse.y"
{
(yyval.r0).r0 = 1;
}
break;
- case 252:
-#line 3626 "bfin-parse.y"
+ case 254:
+#line 3798 "bfin-parse.y"
{
(yyval.modcodes).r0 = 0;
(yyval.modcodes).s0 = 0;
}
break;
- case 253:
-#line 3632 "bfin-parse.y"
+ case 255:
+#line 3804 "bfin-parse.y"
{
(yyval.modcodes).r0 = 0;
(yyval.modcodes).s0 = 0;
}
break;
- case 254:
-#line 3638 "bfin-parse.y"
+ case 256:
+#line 3810 "bfin-parse.y"
{
(yyval.modcodes).r0 = 0;
(yyval.modcodes).s0 = 1;
}
break;
- case 255:
-#line 3644 "bfin-parse.y"
+ case 257:
+#line 3816 "bfin-parse.y"
{
(yyval.modcodes).r0 = 1;
(yyval.modcodes).s0 = 0;
}
break;
- case 256:
-#line 3650 "bfin-parse.y"
+ case 258:
+#line 3822 "bfin-parse.y"
{
(yyval.modcodes).r0 = 1;
(yyval.modcodes).s0 = 1;
}
break;
- case 257:
-#line 3655 "bfin-parse.y"
+ case 259:
+#line 3827 "bfin-parse.y"
{
(yyval.modcodes).r0 = 1;
(yyval.modcodes).s0 = 1;
}
break;
- case 258:
-#line 3662 "bfin-parse.y"
+ case 260:
+#line 3834 "bfin-parse.y"
{
(yyval.r0).r0 = 0;
}
break;
- case 259:
-#line 3666 "bfin-parse.y"
+ case 261:
+#line 3838 "bfin-parse.y"
{
(yyval.r0).r0 = 1;
}
break;
- case 260:
-#line 3672 "bfin-parse.y"
+ case 262:
+#line 3844 "bfin-parse.y"
{
(yyval.modcodes).s0 = 0;
}
break;
- case 261:
-#line 3676 "bfin-parse.y"
+ case 263:
+#line 3848 "bfin-parse.y"
{
(yyval.modcodes).s0 = 1;
}
break;
- case 262:
-#line 3683 "bfin-parse.y"
+ case 264:
+#line 3855 "bfin-parse.y"
{
(yyval.r0).r0 = 1;
}
break;
- case 263:
-#line 3687 "bfin-parse.y"
+ case 265:
+#line 3859 "bfin-parse.y"
{
(yyval.r0).r0 = 0;
}
break;
- case 264:
-#line 3691 "bfin-parse.y"
+ case 266:
+#line 3863 "bfin-parse.y"
{
(yyval.r0).r0 = 3;
}
break;
- case 265:
-#line 3695 "bfin-parse.y"
+ case 267:
+#line 3867 "bfin-parse.y"
{
(yyval.r0).r0 = 2;
}
break;
- case 266:
-#line 3701 "bfin-parse.y"
+ case 268:
+#line 3873 "bfin-parse.y"
{
(yyval.r0).r0 = 0;
}
break;
- case 267:
-#line 3705 "bfin-parse.y"
+ case 269:
+#line 3877 "bfin-parse.y"
{
(yyval.r0).r0 = 1;
}
break;
- case 268:
-#line 3712 "bfin-parse.y"
+ case 270:
+#line 3884 "bfin-parse.y"
{
(yyval.modcodes).r0 = 0;
(yyval.modcodes).s0 = 1;
}
break;
- case 269:
-#line 3717 "bfin-parse.y"
+ case 271:
+#line 3889 "bfin-parse.y"
{
if ((yyvsp[(2) - (3)].value) != M_T)
return yyerror ("Bad modifier");
}
break;
- case 270:
-#line 3724 "bfin-parse.y"
+ case 272:
+#line 3896 "bfin-parse.y"
{
if ((yyvsp[(2) - (5)].value) != M_T)
return yyerror ("Bad modifier");
}
break;
- case 271:
-#line 3731 "bfin-parse.y"
+ case 273:
+#line 3903 "bfin-parse.y"
{
if ((yyvsp[(4) - (5)].value) != M_T)
return yyerror ("Bad modifier");
}
break;
- case 272:
-#line 3743 "bfin-parse.y"
+ case 274:
+#line 3915 "bfin-parse.y"
{
(yyval.r0).r0 = 0;
}
break;
- case 273:
-#line 3747 "bfin-parse.y"
+ case 275:
+#line 3919 "bfin-parse.y"
{
(yyval.r0).r0 = 1;
}
break;
- case 274:
-#line 3751 "bfin-parse.y"
+ case 276:
+#line 3923 "bfin-parse.y"
{
(yyval.r0).r0 = 2;
}
break;
- case 275:
-#line 3757 "bfin-parse.y"
+ case 277:
+#line 3929 "bfin-parse.y"
{
(yyval.r0).r0 = 0;
}
break;
- case 276:
-#line 3761 "bfin-parse.y"
+ case 278:
+#line 3933 "bfin-parse.y"
{
if ((yyvsp[(2) - (3)].value) == M_W32)
(yyval.r0).r0 = 1;
}
break;
- case 277:
-#line 3770 "bfin-parse.y"
+ case 279:
+#line 3942 "bfin-parse.y"
{
(yyval.r0).r0 = 1;
}
break;
- case 278:
-#line 3774 "bfin-parse.y"
+ case 280:
+#line 3946 "bfin-parse.y"
{
if ((yyvsp[(2) - (3)].value) == M_IU)
(yyval.r0).r0 = 3;
}
break;
- case 279:
-#line 3783 "bfin-parse.y"
+ case 281:
+#line 3955 "bfin-parse.y"
{
(yyval.reg) = (yyvsp[(3) - (4)].reg);
}
break;
- case 280:
-#line 3789 "bfin-parse.y"
+ case 282:
+#line 3961 "bfin-parse.y"
{
(yyval.reg) = (yyvsp[(2) - (4)].reg);
}
break;
- case 281:
-#line 3798 "bfin-parse.y"
+ case 283:
+#line 3970 "bfin-parse.y"
{
(yyval.r0).r0 = 1;
}
break;
- case 282:
-#line 3802 "bfin-parse.y"
+ case 284:
+#line 3974 "bfin-parse.y"
{
(yyval.r0).r0 = 0;
}
break;
- case 283:
-#line 3809 "bfin-parse.y"
+ case 285:
+#line 3981 "bfin-parse.y"
{
(yyval.r0).r0 = 0;
}
break;
- case 284:
-#line 3813 "bfin-parse.y"
+ case 286:
+#line 3985 "bfin-parse.y"
{
(yyval.r0).r0 = 1;
}
break;
- case 285:
-#line 3817 "bfin-parse.y"
+ case 287:
+#line 3989 "bfin-parse.y"
{
(yyval.r0).r0 = 2;
}
break;
- case 286:
-#line 3821 "bfin-parse.y"
+ case 288:
+#line 3993 "bfin-parse.y"
{
(yyval.r0).r0 = 3;
}
break;
- case 287:
-#line 3828 "bfin-parse.y"
+ case 289:
+#line 4000 "bfin-parse.y"
{
(yyval.r0).r0 = 0;
}
break;
- case 288:
-#line 3832 "bfin-parse.y"
+ case 290:
+#line 4004 "bfin-parse.y"
{
(yyval.r0).r0 = 1;
}
break;
- case 289:
-#line 3839 "bfin-parse.y"
+ case 291:
+#line 4011 "bfin-parse.y"
{
(yyval.modcodes).r0 = 1; /* HL. */
(yyval.modcodes).s0 = 0; /* s. */
}
break;
- case 290:
-#line 3847 "bfin-parse.y"
+ case 292:
+#line 4019 "bfin-parse.y"
{
(yyval.modcodes).r0 = 1; /* HL. */
(yyval.modcodes).s0 = 0; /* s. */
}
break;
- case 291:
-#line 3855 "bfin-parse.y"
+ case 293:
+#line 4027 "bfin-parse.y"
{
(yyval.modcodes).r0 = 0; /* HL. */
(yyval.modcodes).s0 = 0; /* s. */
}
break;
- case 292:
-#line 3863 "bfin-parse.y"
+ case 294:
+#line 4035 "bfin-parse.y"
{
(yyval.modcodes).r0 = 0; /* HL. */
(yyval.modcodes).s0 = 0; /* s. */
}
break;
- case 293:
-#line 3871 "bfin-parse.y"
+ case 295:
+#line 4043 "bfin-parse.y"
{
(yyval.modcodes).r0 = 1; /* HL. */
(yyval.modcodes).s0 = 1; /* s. */
}
break;
- case 294:
-#line 3878 "bfin-parse.y"
+ case 296:
+#line 4050 "bfin-parse.y"
{
(yyval.modcodes).r0 = 1; /* HL. */
(yyval.modcodes).s0 = 1; /* s. */
}
break;
- case 295:
-#line 3885 "bfin-parse.y"
+ case 297:
+#line 4057 "bfin-parse.y"
{
(yyval.modcodes).r0 = 0; /* HL. */
(yyval.modcodes).s0 = 1; /* s. */
}
break;
- case 296:
-#line 3893 "bfin-parse.y"
+ case 298:
+#line 4065 "bfin-parse.y"
{
(yyval.modcodes).r0 = 0; /* HL. */
(yyval.modcodes).s0 = 1; /* s. */
}
break;
- case 297:
-#line 3903 "bfin-parse.y"
+ case 299:
+#line 4075 "bfin-parse.y"
{
(yyval.modcodes).s0 = 0; /* s. */
(yyval.modcodes).x0 = 0; /* HL. */
}
break;
- case 298:
-#line 3908 "bfin-parse.y"
+ case 300:
+#line 4080 "bfin-parse.y"
{
(yyval.modcodes).s0 = 0; /* s. */
(yyval.modcodes).x0 = 1; /* HL. */
}
break;
- case 299:
-#line 3913 "bfin-parse.y"
+ case 301:
+#line 4085 "bfin-parse.y"
{
(yyval.modcodes).s0 = 1; /* s. */
(yyval.modcodes).x0 = 0; /* HL. */
}
break;
- case 300:
-#line 3918 "bfin-parse.y"
+ case 302:
+#line 4090 "bfin-parse.y"
{
(yyval.modcodes).s0 = 1; /* s. */
(yyval.modcodes).x0 = 1; /* HL. */
}
break;
- case 301:
-#line 3925 "bfin-parse.y"
+ case 303:
+#line 4097 "bfin-parse.y"
{
(yyval.modcodes).x0 = 2;
}
break;
- case 302:
-#line 3929 "bfin-parse.y"
+ case 304:
+#line 4101 "bfin-parse.y"
{
(yyval.modcodes).x0 = 0;
}
break;
- case 303:
-#line 3933 "bfin-parse.y"
+ case 305:
+#line 4105 "bfin-parse.y"
{
(yyval.modcodes).x0 = 1;
}
break;
- case 304:
-#line 3942 "bfin-parse.y"
+ case 306:
+#line 4114 "bfin-parse.y"
{
(yyval.reg) = (yyvsp[(1) - (2)].reg);
}
break;
- case 305:
-#line 3949 "bfin-parse.y"
+ case 307:
+#line 4121 "bfin-parse.y"
{
(yyval.reg) = (yyvsp[(1) - (2)].reg);
}
break;
- case 306:
-#line 3956 "bfin-parse.y"
+ case 308:
+#line 4128 "bfin-parse.y"
{
(yyval.reg) = (yyvsp[(1) - (2)].reg);
}
break;
- case 307:
-#line 3963 "bfin-parse.y"
+ case 309:
+#line 4135 "bfin-parse.y"
{
+ if (IS_A1 ((yyvsp[(3) - (3)].reg)) && IS_EVEN ((yyvsp[(1) - (3)].reg)))
+ return yyerror ("Cannot move A1 to even register");
+ else if (!IS_A1 ((yyvsp[(3) - (3)].reg)) && !IS_EVEN ((yyvsp[(1) - (3)].reg)))
+ return yyerror ("Cannot move A0 to odd register");
+
(yyval.macfunc).w = 1;
(yyval.macfunc).P = 1;
(yyval.macfunc).n = IS_A1 ((yyvsp[(3) - (3)].reg));
(yyval.macfunc).dst = (yyvsp[(1) - (3)].reg);
(yyval.macfunc).s0.regno = 0;
(yyval.macfunc).s1.regno = 0;
-
- if (IS_A1 ((yyvsp[(3) - (3)].reg)) && IS_EVEN ((yyvsp[(1) - (3)].reg)))
- return yyerror ("Cannot move A1 to even register");
- else if (!IS_A1 ((yyvsp[(3) - (3)].reg)) && !IS_EVEN ((yyvsp[(1) - (3)].reg)))
- return yyerror ("Cannot move A0 to odd register");
}
break;
- case 308:
-#line 3978 "bfin-parse.y"
+ case 310:
+#line 4150 "bfin-parse.y"
{
(yyval.macfunc) = (yyvsp[(1) - (1)].macfunc);
(yyval.macfunc).w = 0; (yyval.macfunc).P = 0;
}
break;
- case 309:
-#line 3984 "bfin-parse.y"
+ case 311:
+#line 4156 "bfin-parse.y"
{
+ if ((yyvsp[(4) - (5)].macfunc).n && IS_EVEN ((yyvsp[(1) - (5)].reg)))
+ return yyerror ("Cannot move A1 to even register");
+ else if (!(yyvsp[(4) - (5)].macfunc).n && !IS_EVEN ((yyvsp[(1) - (5)].reg)))
+ return yyerror ("Cannot move A0 to odd register");
+
(yyval.macfunc) = (yyvsp[(4) - (5)].macfunc);
(yyval.macfunc).w = 1;
(yyval.macfunc).P = 1;
}
break;
- case 310:
-#line 3992 "bfin-parse.y"
+ case 312:
+#line 4169 "bfin-parse.y"
{
+ if ((yyvsp[(4) - (5)].macfunc).n && !IS_H ((yyvsp[(1) - (5)].reg)))
+ return yyerror ("Cannot move A1 to low half of register");
+ else if (!(yyvsp[(4) - (5)].macfunc).n && IS_H ((yyvsp[(1) - (5)].reg)))
+ return yyerror ("Cannot move A0 to high half of register");
+
(yyval.macfunc) = (yyvsp[(4) - (5)].macfunc);
(yyval.macfunc).w = 1;
(yyval.macfunc).P = 0;
}
break;
- case 311:
-#line 4000 "bfin-parse.y"
+ case 313:
+#line 4182 "bfin-parse.y"
{
+ if (IS_A1 ((yyvsp[(3) - (3)].reg)) && !IS_H ((yyvsp[(1) - (3)].reg)))
+ return yyerror ("Cannot move A1 to low half of register");
+ else if (!IS_A1 ((yyvsp[(3) - (3)].reg)) && IS_H ((yyvsp[(1) - (3)].reg)))
+ return yyerror ("Cannot move A0 to high half of register");
+
(yyval.macfunc).w = 1;
(yyval.macfunc).P = 0;
(yyval.macfunc).n = IS_A1 ((yyvsp[(3) - (3)].reg));
(yyval.macfunc).dst = (yyvsp[(1) - (3)].reg);
(yyval.macfunc).s0.regno = 0;
(yyval.macfunc).s1.regno = 0;
-
- if (IS_A1 ((yyvsp[(3) - (3)].reg)) && !IS_H ((yyvsp[(1) - (3)].reg)))
- return yyerror ("Cannot move A1 to low half of register");
- else if (!IS_A1 ((yyvsp[(3) - (3)].reg)) && IS_H ((yyvsp[(1) - (3)].reg)))
- return yyerror ("Cannot move A0 to high half of register");
}
break;
- case 312:
-#line 4018 "bfin-parse.y"
+ case 314:
+#line 4200 "bfin-parse.y"
{
(yyval.macfunc).n = IS_A1 ((yyvsp[(1) - (2)].reg));
(yyval.macfunc).op = 0;
}
break;
- case 313:
-#line 4025 "bfin-parse.y"
+ case 315:
+#line 4207 "bfin-parse.y"
{
(yyval.macfunc).n = IS_A1 ((yyvsp[(1) - (2)].reg));
(yyval.macfunc).op = 1;
}
break;
- case 314:
-#line 4032 "bfin-parse.y"
+ case 316:
+#line 4214 "bfin-parse.y"
{
(yyval.macfunc).n = IS_A1 ((yyvsp[(1) - (2)].reg));
(yyval.macfunc).op = 2;
}
break;
- case 315:
-#line 4042 "bfin-parse.y"
+ case 317:
+#line 4224 "bfin-parse.y"
{
if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_DREG ((yyvsp[(3) - (3)].reg)))
{
}
break;
- case 316:
-#line 4055 "bfin-parse.y"
+ case 318:
+#line 4237 "bfin-parse.y"
{
(yyval.r0).r0 = 0;
}
break;
- case 317:
-#line 4059 "bfin-parse.y"
+ case 319:
+#line 4241 "bfin-parse.y"
{
(yyval.r0).r0 = 1;
}
break;
- case 318:
-#line 4063 "bfin-parse.y"
+ case 320:
+#line 4245 "bfin-parse.y"
{
(yyval.r0).r0 = 2;
}
break;
- case 319:
-#line 4067 "bfin-parse.y"
+ case 321:
+#line 4249 "bfin-parse.y"
{
(yyval.r0).r0 = 3;
}
break;
- case 320:
-#line 4074 "bfin-parse.y"
+ case 322:
+#line 4256 "bfin-parse.y"
{
- (yyval.modcodes).r0 = (yyvsp[(3) - (3)].reg).regno;
- (yyval.modcodes).x0 = (yyvsp[(2) - (3)].r0).r0;
- (yyval.modcodes).s0 = 0;
+ (yyval.modcodes).r0 = (yyvsp[(3) - (3)].reg).regno;
+ (yyval.modcodes).x0 = (yyvsp[(2) - (3)].r0).r0;
+ (yyval.modcodes).s0 = 0;
}
break;
- case 321:
-#line 4080 "bfin-parse.y"
+ case 323:
+#line 4262 "bfin-parse.y"
{
- (yyval.modcodes).r0 = 0x18;
- (yyval.modcodes).x0 = (yyvsp[(2) - (3)].r0).r0;
- (yyval.modcodes).s0 = 0;
+ (yyval.modcodes).r0 = 0x18;
+ (yyval.modcodes).x0 = (yyvsp[(2) - (3)].r0).r0;
+ (yyval.modcodes).s0 = 0;
}
break;
- case 322:
-#line 4086 "bfin-parse.y"
+ case 324:
+#line 4268 "bfin-parse.y"
{
- (yyval.modcodes).r0 = (yyvsp[(1) - (3)].reg).regno;
- (yyval.modcodes).x0 = (yyvsp[(2) - (3)].r0).r0;
- (yyval.modcodes).s0 = 1;
+ (yyval.modcodes).r0 = (yyvsp[(1) - (3)].reg).regno;
+ (yyval.modcodes).x0 = (yyvsp[(2) - (3)].r0).r0;
+ (yyval.modcodes).s0 = 1;
}
break;
- case 323:
-#line 4092 "bfin-parse.y"
+ case 325:
+#line 4274 "bfin-parse.y"
{
- (yyval.modcodes).r0 = 0x18;
- (yyval.modcodes).x0 = (yyvsp[(2) - (3)].r0).r0;
- (yyval.modcodes).s0 = 1;
+ (yyval.modcodes).r0 = 0x18;
+ (yyval.modcodes).x0 = (yyvsp[(2) - (3)].r0).r0;
+ (yyval.modcodes).s0 = 1;
}
break;
- case 324:
-#line 4102 "bfin-parse.y"
+ case 326:
+#line 4284 "bfin-parse.y"
{
Expr_Node_Value val;
val.s_value = S_GET_NAME((yyvsp[(1) - (1)].symbol));
}
break;
- case 325:
-#line 4111 "bfin-parse.y"
+ case 327:
+#line 4293 "bfin-parse.y"
{ (yyval.value) = BFD_RELOC_BFIN_GOT; }
break;
- case 326:
-#line 4113 "bfin-parse.y"
+ case 328:
+#line 4295 "bfin-parse.y"
{ (yyval.value) = BFD_RELOC_BFIN_GOT17M4; }
break;
- case 327:
-#line 4115 "bfin-parse.y"
+ case 329:
+#line 4297 "bfin-parse.y"
{ (yyval.value) = BFD_RELOC_BFIN_FUNCDESC_GOT17M4; }
break;
- case 328:
-#line 4119 "bfin-parse.y"
+ case 330:
+#line 4301 "bfin-parse.y"
{
Expr_Node_Value val;
val.i_value = (yyvsp[(3) - (3)].value);
}
break;
- case 329:
-#line 4127 "bfin-parse.y"
+ case 331:
+#line 4309 "bfin-parse.y"
{
(yyval.expr) = (yyvsp[(1) - (1)].expr);
}
break;
- case 330:
-#line 4131 "bfin-parse.y"
+ case 332:
+#line 4313 "bfin-parse.y"
{
(yyval.expr) = (yyvsp[(1) - (1)].expr);
}
break;
- case 331:
-#line 4138 "bfin-parse.y"
+ case 333:
+#line 4320 "bfin-parse.y"
{
(yyval.expr) = (yyvsp[(1) - (3)].expr);
}
break;
- case 332:
-#line 4144 "bfin-parse.y"
+ case 334:
+#line 4326 "bfin-parse.y"
{
Expr_Node_Value val;
val.i_value = (yyvsp[(1) - (1)].value);
}
break;
- case 333:
-#line 4150 "bfin-parse.y"
+ case 335:
+#line 4332 "bfin-parse.y"
{
(yyval.expr) = (yyvsp[(1) - (1)].expr);
}
break;
- case 334:
-#line 4154 "bfin-parse.y"
+ case 336:
+#line 4336 "bfin-parse.y"
{
(yyval.expr) = (yyvsp[(2) - (3)].expr);
}
break;
- case 335:
-#line 4158 "bfin-parse.y"
+ case 337:
+#line 4340 "bfin-parse.y"
{
(yyval.expr) = unary (Expr_Op_Type_COMP, (yyvsp[(2) - (2)].expr));
}
break;
- case 336:
-#line 4162 "bfin-parse.y"
+ case 338:
+#line 4344 "bfin-parse.y"
{
(yyval.expr) = unary (Expr_Op_Type_NEG, (yyvsp[(2) - (2)].expr));
}
break;
- case 337:
-#line 4168 "bfin-parse.y"
+ case 339:
+#line 4350 "bfin-parse.y"
{
(yyval.expr) = (yyvsp[(1) - (1)].expr);
}
break;
- case 338:
-#line 4174 "bfin-parse.y"
+ case 340:
+#line 4356 "bfin-parse.y"
{
(yyval.expr) = binary (Expr_Op_Type_Mult, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
}
break;
- case 339:
-#line 4178 "bfin-parse.y"
+ case 341:
+#line 4360 "bfin-parse.y"
{
(yyval.expr) = binary (Expr_Op_Type_Div, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
}
break;
- case 340:
-#line 4182 "bfin-parse.y"
+ case 342:
+#line 4364 "bfin-parse.y"
{
(yyval.expr) = binary (Expr_Op_Type_Mod, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
}
break;
- case 341:
-#line 4186 "bfin-parse.y"
+ case 343:
+#line 4368 "bfin-parse.y"
{
(yyval.expr) = binary (Expr_Op_Type_Add, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
}
break;
- case 342:
-#line 4190 "bfin-parse.y"
+ case 344:
+#line 4372 "bfin-parse.y"
{
(yyval.expr) = binary (Expr_Op_Type_Sub, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
}
break;
- case 343:
-#line 4194 "bfin-parse.y"
+ case 345:
+#line 4376 "bfin-parse.y"
{
(yyval.expr) = binary (Expr_Op_Type_Lshift, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
}
break;
- case 344:
-#line 4198 "bfin-parse.y"
+ case 346:
+#line 4380 "bfin-parse.y"
{
(yyval.expr) = binary (Expr_Op_Type_Rshift, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
}
break;
- case 345:
-#line 4202 "bfin-parse.y"
+ case 347:
+#line 4384 "bfin-parse.y"
{
(yyval.expr) = binary (Expr_Op_Type_BAND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
}
break;
- case 346:
-#line 4206 "bfin-parse.y"
+ case 348:
+#line 4388 "bfin-parse.y"
{
(yyval.expr) = binary (Expr_Op_Type_LOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
}
break;
- case 347:
-#line 4210 "bfin-parse.y"
+ case 349:
+#line 4392 "bfin-parse.y"
{
(yyval.expr) = binary (Expr_Op_Type_BOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr));
}
break;
- case 348:
-#line 4214 "bfin-parse.y"
+ case 350:
+#line 4396 "bfin-parse.y"
{
(yyval.expr) = (yyvsp[(1) - (1)].expr);
}
/* Line 1267 of yacc.c. */
-#line 7266 "bfin-parse.c"
+#line 7454 "bfin-parse.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
}
-#line 4220 "bfin-parse.y"
+#line 4402 "bfin-parse.y"
EXPR_T
static int
value_match (Expr_Node *expr, int sz, int sign, int mul, int issigned)
{
- long umax = (1L << sz) - 1;
- long min = -1L << (sz - 1);
- long max = (1L << (sz - 1)) - 1;
+ int umax = (1 << sz) - 1;
+ int min = -1 << (sz - 1);
+ int max = (1 << (sz - 1)) - 1;
- long v = EXPR_VALUE (expr);
+ int v = (EXPR_VALUE (expr)) & 0xffffffff;
if ((v % mul) != 0)
{
break;
default:
- error ("%s:%d: Internal compiler error\n", __FILE__, __LINE__);
+ error ("%s:%d: Internal assembler error\n", __FILE__, __LINE__);
}
return x;
}
x->value.i_value = ~x->value.i_value;
break;
default:
- error ("%s:%d: Internal compiler error\n", __FILE__, __LINE__);
+ error ("%s:%d: Internal assembler error\n", __FILE__, __LINE__);
}
return x;
}