From: Shenghou Ma Date: Thu, 3 May 2012 19:24:14 +0000 (+0800) Subject: cmd/5c, cmd/5a, cmd/5l: ARM support for PREFETCH built-in X-Git-Tag: go1.1rc2~3258 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=278d4a583d2e73b04a5460cf269d262adad8f87a;p=gostls13.git cmd/5c, cmd/5a, cmd/5l: ARM support for PREFETCH built-in R=rsc CC=golang-dev https://golang.org/cl/6174049 --- diff --git a/src/cmd/5a/a.y b/src/cmd/5a/a.y index 401abe51d5..45e192e62e 100644 --- a/src/cmd/5a/a.y +++ b/src/cmd/5a/a.y @@ -304,7 +304,7 @@ inst: /* * PLD */ -| LTYPEPLD reg +| LTYPEPLD oreg { outcode($1, Always, &$2, NREG, &nullgen); } diff --git a/src/cmd/5a/y.tab.c b/src/cmd/5a/y.tab.c index 0c4c7db566..0b25671779 100644 --- a/src/cmd/5a/y.tab.c +++ b/src/cmd/5a/y.tab.c @@ -448,7 +448,7 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 609 +#define YYLAST 603 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 70 @@ -549,7 +549,7 @@ static const yytype_int8 yyrhs[] = 77, 102, 63, 104, 63, 95, 63, 96, 63, 96, 103, -1, 34, 77, 90, 63, 90, 63, 91, -1, 35, 77, 90, 63, 90, 63, 90, 63, 95, -1, - 37, 90, -1, 26, 78, -1, -1, 77, 52, -1, + 37, 87, -1, 26, 78, -1, -1, 77, 52, -1, 77, 53, -1, -1, 63, 78, -1, 102, 66, 42, 67, -1, 57, 100, -1, 58, 100, -1, 68, 102, -1, 68, 87, -1, 68, 10, 68, 87, -1, 68, @@ -586,16 +586,16 @@ static const yytype_uint16 yyrline[] = 93, 99, 100, 101, 107, 111, 115, 122, 129, 136, 140, 147, 154, 161, 168, 175, 184, 196, 200, 204, 211, 218, 222, 229, 236, 243, 250, 254, 258, 262, - 269, 291, 298, 307, 315, 321, 324, 328, 333, 334, - 337, 343, 352, 360, 366, 371, 376, 382, 385, 391, - 399, 403, 412, 418, 419, 420, 421, 426, 432, 438, - 444, 445, 448, 449, 457, 466, 467, 476, 477, 483, - 486, 487, 488, 490, 498, 506, 515, 521, 527, 533, - 541, 547, 555, 556, 560, 568, 569, 575, 576, 584, - 585, 588, 594, 602, 610, 618, 628, 631, 635, 641, - 642, 643, 646, 647, 651, 655, 659, 663, 669, 672, - 678, 679, 683, 687, 691, 695, 699, 703, 707, 711, - 715 + 269, 291, 298, 307, 314, 320, 323, 327, 332, 333, + 336, 342, 351, 359, 365, 370, 375, 381, 384, 390, + 398, 402, 411, 417, 418, 419, 420, 425, 431, 437, + 443, 444, 447, 448, 456, 465, 466, 475, 476, 482, + 485, 486, 487, 489, 497, 505, 514, 520, 526, 532, + 540, 546, 554, 555, 559, 567, 568, 574, 575, 583, + 584, 587, 593, 601, 609, 617, 627, 630, 634, 640, + 641, 642, 645, 646, 650, 654, 658, 662, 668, 671, + 677, 678, 682, 686, 690, 694, 698, 702, 706, 710, + 714 }; #endif @@ -684,28 +684,28 @@ static const yytype_uint8 yydefact[] = 0, 11, 4, 0, 13, 0, 0, 0, 48, 48, 0, 48, 0, 0, 48, 48, 0, 0, 112, 106, 113, 0, 0, 0, 0, 0, 0, 44, 0, 0, - 0, 0, 0, 0, 0, 0, 96, 93, 0, 92, - 43, 95, 84, 7, 0, 5, 0, 12, 46, 47, - 0, 0, 81, 80, 82, 84, 0, 0, 101, 67, - 68, 0, 0, 64, 57, 0, 75, 79, 70, 63, - 65, 71, 77, 69, 0, 49, 106, 106, 22, 0, - 0, 0, 0, 0, 0, 0, 0, 30, 115, 114, - 0, 0, 0, 0, 120, 0, 116, 0, 0, 0, - 48, 35, 0, 0, 0, 100, 0, 99, 0, 0, - 0, 0, 21, 0, 0, 0, 0, 0, 83, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, - 56, 54, 53, 0, 0, 0, 0, 106, 19, 20, - 72, 73, 0, 51, 52, 0, 23, 0, 0, 48, - 0, 0, 0, 0, 106, 107, 108, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 117, 31, - 0, 110, 109, 111, 0, 0, 34, 0, 0, 0, - 0, 0, 0, 0, 0, 8, 9, 6, 10, 16, - 84, 0, 0, 0, 0, 17, 0, 74, 59, 0, - 18, 0, 0, 0, 51, 0, 0, 48, 0, 0, - 0, 0, 0, 48, 0, 0, 130, 129, 128, 0, - 0, 121, 122, 123, 124, 125, 0, 103, 0, 36, - 0, 101, 37, 48, 0, 0, 94, 15, 86, 90, - 91, 87, 88, 89, 102, 55, 0, 66, 78, 76, + 0, 0, 0, 0, 0, 0, 0, 75, 79, 43, + 77, 0, 7, 0, 5, 0, 12, 96, 93, 0, + 92, 46, 47, 0, 0, 81, 80, 82, 95, 84, + 0, 0, 101, 67, 68, 0, 64, 57, 0, 70, + 63, 65, 71, 69, 0, 49, 106, 106, 22, 0, + 0, 0, 0, 0, 0, 0, 0, 84, 30, 115, + 114, 0, 0, 0, 0, 120, 0, 116, 0, 0, + 0, 48, 35, 0, 0, 0, 100, 0, 99, 0, + 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 58, 56, 54, 53, 0, 0, 106, 19, + 20, 72, 73, 0, 51, 52, 0, 23, 0, 0, + 48, 0, 0, 0, 0, 106, 107, 108, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, + 31, 0, 110, 109, 111, 0, 0, 34, 0, 0, + 0, 0, 0, 0, 0, 74, 0, 0, 8, 9, + 6, 10, 0, 16, 84, 0, 0, 0, 0, 17, + 0, 59, 0, 18, 0, 51, 0, 0, 48, 0, + 0, 0, 0, 0, 48, 0, 0, 130, 129, 128, + 0, 0, 121, 122, 123, 124, 125, 0, 103, 0, + 36, 0, 101, 37, 48, 0, 0, 78, 76, 94, + 15, 86, 90, 91, 87, 88, 89, 102, 55, 66, 50, 24, 0, 61, 62, 0, 29, 48, 28, 0, 104, 126, 127, 32, 33, 0, 0, 39, 0, 0, 14, 26, 25, 27, 0, 0, 38, 0, 41, 0, @@ -716,59 +716,59 @@ static const yytype_uint8 yydefact[] = /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 3, 32, 146, 144, 33, 35, 105, 108, - 93, 94, 178, 95, 169, 96, 97, 98, 81, 82, - 83, 308, 84, 268, 71, 72, 316, 136, 101, 102, - 123, 204, 124, 327, 125 + -1, 1, 3, 32, 149, 147, 33, 35, 105, 108, + 96, 97, 179, 98, 170, 67, 68, 99, 84, 85, + 86, 308, 87, 271, 88, 117, 316, 137, 102, 70, + 124, 205, 125, 327, 126 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -119 +#define YYPACT_NINF -114 static const yytype_int16 yypact[] = { - -119, 29, -119, 283, -9, -119, -119, -119, -119, -23, - -119, -119, -119, -119, -119, 407, 407, -119, -23, -23, - -119, -119, -119, -119, -119, -119, -23, 383, -24, 16, - 18, -119, -119, 25, -119, 196, 196, 320, 52, -23, - 374, 52, 196, 342, 294, 52, 447, 447, -119, 125, - -119, 447, 447, 45, 47, 109, 174, -119, 62, 98, - 382, 130, 98, 174, 174, 69, -119, -119, 80, -119, - -119, -119, -119, -119, 447, -119, 447, -119, -119, -119, - 447, 96, -119, -119, -119, 24, 105, 95, -119, -119, - -119, 360, 101, -119, -119, 108, -119, -119, -119, -119, - 119, -119, 127, 131, 401, -119, 76, 76, -119, 141, - 224, 111, 383, 154, 149, 69, 162, -119, -119, -119, - 221, 447, 447, 163, -119, 40, -119, 409, 170, 447, - -23, -119, 167, 171, 2, -119, 176, -119, 181, 183, - 184, 383, -119, 447, 283, 530, 283, 540, -119, 383, - 244, 245, 251, 260, 383, 447, 206, 441, 208, -119, - -119, -119, 131, 224, 383, 110, 282, 125, -119, -119, - -119, -119, 213, -119, -119, 238, -119, 383, 220, 9, - 222, 110, 225, 69, 76, -119, -119, 170, 447, 447, - 447, 285, 287, 447, 447, 447, 447, 447, -119, -119, - 247, -119, -119, -119, 263, 248, -119, 71, 447, 276, - 79, 71, 383, 383, 56, -119, -119, -119, -119, -119, - 271, 360, 360, 360, 360, -119, 268, -119, -119, 415, - -119, 270, 277, 281, 163, 60, 293, -23, 280, 383, - 383, 383, 383, 286, 297, 311, 589, 579, 597, 447, - 447, 211, 211, -119, -119, -119, 284, -119, 62, -119, - 520, 318, -119, -23, 321, 322, -119, 383, -119, -119, - -119, -119, -119, -119, -119, -119, 131, -119, -119, -119, - -119, -119, 453, -119, -119, 327, -119, 77, -119, 347, - -119, 478, 478, -119, -119, 383, 71, -119, 330, 383, - -119, -119, -119, -119, 326, 334, -119, 383, -119, 337, - -119, 115, 340, 383, 341, -119, 350, 383, -119, 447, - 115, 354, 86, 367, -119, -119, 447, -119, 570 + -114, 19, -114, 311, -20, -114, -114, -114, -114, -36, + -114, -114, -114, -114, -114, 413, 413, -114, -36, -36, + -114, -114, -114, -114, -114, -114, -36, 427, -22, -9, + -7, -114, -114, 11, -114, 480, 480, 341, 45, -36, + 229, 45, 480, 210, 436, 45, 435, 435, -114, 152, + -114, 435, 435, 25, 15, 79, 517, -114, 24, 134, + 393, 197, 134, 517, 517, 28, 71, -114, -114, -114, + 35, 58, -114, 435, -114, 435, -114, -114, -114, 69, + -114, -114, -114, 435, 51, -114, -114, -114, -114, 46, + 57, 75, -114, -114, -114, 119, -114, -114, 82, -114, + -114, 88, -114, 58, 368, -114, 159, 159, -114, 113, + 373, 114, 411, 120, 123, 28, 145, -114, -114, -114, + -114, 193, 435, 435, 173, -114, 54, -114, 395, 111, + 435, -36, -114, 178, 182, 21, -114, 198, -114, 201, + 207, 212, 411, -114, 206, 168, 558, 311, 310, 311, + 506, 435, -114, 411, 271, 274, 285, 286, 411, 435, + 87, 228, -114, -114, -114, 58, 373, 411, 152, -114, + -114, -114, -114, 231, -114, -114, 257, -114, 411, 235, + 5, 259, 168, 275, 28, 159, -114, -114, 111, 435, + 435, 435, 333, 344, 435, 435, 435, 435, 435, -114, + -114, 289, -114, -114, -114, 300, 308, -114, 151, 435, + 319, 176, 151, 411, 411, -114, 317, 322, -114, -114, + -114, -114, 224, -114, 312, 71, 71, 71, 71, -114, + 323, -114, 427, -114, 328, 173, 64, 329, -36, 315, + 411, 411, 411, 411, 334, 339, 332, 577, 247, 584, + 435, 435, 273, 273, -114, -114, -114, 340, -114, 24, + -114, 350, 351, -114, -36, 353, 365, -114, -114, -114, + 411, -114, -114, -114, -114, -114, -114, -114, -114, -114, + -114, -114, 439, -114, -114, 364, -114, 157, -114, 398, + -114, 518, 518, -114, -114, 411, 151, -114, 374, 411, + -114, -114, -114, -114, 382, 394, -114, 411, -114, 397, + -114, 155, 403, 411, 392, -114, 404, 411, -114, 435, + 155, 401, 299, 406, -114, -114, 435, -114, 568 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -119, -119, -119, -73, -119, -119, -119, 547, -6, 332, - -50, 376, -60, -82, -119, -46, -39, -86, -15, -118, - -22, -119, -27, 152, -111, -35, 118, -119, -45, 8, - -81, 255, 132, -119, 6 + -114, -114, -114, -78, -114, -114, -114, 529, 2, 367, + -50, 415, 48, -88, -114, -48, -40, -21, 47, -113, + -19, -114, -28, 137, -59, -35, 154, -114, -49, 18, + -83, 295, -11, -114, -25 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -778,132 +778,132 @@ static const yytype_int16 yypgoto[] = #define YYTABLE_NINF -61 static const yytype_int16 yytable[] = { - 85, 85, 85, 40, 113, 70, 161, 85, 131, 199, - 100, 209, 57, 58, 132, 99, 137, 138, 239, 142, - 65, 86, 116, 53, 55, 173, 174, 111, 176, 2, - 150, 151, 104, 152, 130, 110, 73, 74, 115, 117, - 39, 139, 140, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 34, 232, 233, 156, 159, 170, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 182, - 233, 215, 39, 217, -60, 85, 75, 179, 153, 76, - 145, 230, 147, 100, 121, 122, 234, 77, 99, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 201, - 202, 203, 236, 244, 78, 79, 156, 198, 127, 46, - 157, 158, 171, 128, 220, 39, 66, 87, 88, 67, - 129, 68, 69, 266, 206, 87, 261, 219, 85, 231, - 92, 120, 225, 121, 122, 141, 100, 243, 293, 48, - 39, 99, 237, 275, 87, 88, 143, 54, 54, 214, - 78, 79, 67, 325, 68, 69, 159, 160, 49, 149, - 50, 155, 259, 314, 315, 262, 263, 91, 154, 103, - 52, 163, 109, 240, 177, 114, 87, 88, 118, 119, - 284, 285, 78, 79, 126, 164, 269, 269, 269, 269, - 264, 265, 133, 165, 246, 247, 248, 166, 134, 251, - 252, 253, 254, 255, 283, 179, 179, 175, 294, 201, - 202, 203, 148, 66, 260, 181, 67, 180, 68, 69, - 286, 195, 196, 197, 162, 183, 78, 79, 184, 187, - 207, 281, 46, 47, 208, 66, 172, 288, 67, 210, - 68, 69, 103, 301, 211, 300, 212, 213, 78, 79, - 221, 306, 222, 185, 186, 291, 292, 297, 223, 200, - 305, 205, 48, 66, 80, 303, 67, 224, 68, 69, - 87, 88, 312, 227, 89, 90, 229, 309, 318, 235, - 236, 49, 321, 50, 4, 238, 241, 226, 242, 119, - 91, 249, 92, 52, 250, 103, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 256, 258, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 201, 202, 203, 67, 322, 68, 69, 46, 47, - 257, 228, 328, 66, 267, 274, 67, 277, 68, 69, - 28, 29, 30, 282, 278, 31, 78, 79, 279, 287, - 46, 47, 80, 270, 270, 270, 270, 39, 48, 66, - 280, 276, 67, 289, 68, 69, 87, 88, 46, 47, - 89, 90, 78, 79, 271, 272, 273, 49, 290, 50, - 48, 296, 46, 47, 298, 299, 91, 304, 92, 52, - 46, 47, 302, 310, 78, 79, 307, 311, 48, 66, - 313, 50, 67, 317, 68, 69, 112, 319, 91, 46, - 47, 52, 48, 320, 114, 46, 47, 46, 47, 50, - 48, 324, 66, 46, 47, 67, 51, 68, 69, 52, - 326, 106, 107, 50, 78, 79, 168, 135, 323, 48, - 51, 50, 245, 52, 0, 48, 0, 48, 51, 46, - 47, 52, 0, 48, 0, 46, 47, 0, 167, 107, - 50, 46, 47, 0, 49, 0, 50, 91, 50, 0, - 52, 0, 49, 51, 50, 51, 52, 80, 52, 48, - 0, 91, 0, 0, 52, 48, 193, 194, 195, 196, - 197, 48, 0, 0, 0, 0, 228, 0, 0, 0, - 50, 0, 0, 0, 0, 0, 50, 51, 0, 0, - 52, 0, 50, 51, 0, 0, 52, 0, 0, 91, - 0, 0, 52, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 36, 37, 38, 0, 41, 42, 43, - 44, 45, 0, 0, 56, 0, 0, 59, 60, 61, - 62, 63, 64, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 295, 190, 191, 192, 193, 194, 195, - 196, 197, 216, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 218, 191, 192, 193, 194, 195, 196, 197 + 89, 89, 89, 113, 54, 54, 69, 89, 132, 101, + 133, 40, 138, 139, 240, 200, 71, 143, 100, 2, + 57, 58, 177, 174, 175, 116, 103, 39, 65, 109, + 210, 144, 114, 53, 55, 119, 120, 131, 72, 73, + 104, 127, 34, 110, 140, 141, 115, 118, 148, 134, + 150, 74, 154, 155, 75, 156, 171, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 183, 39, 218, + -60, 220, 152, 76, 164, 89, 162, 180, 233, 46, + 47, 129, 101, 90, 165, 235, 216, 217, 128, 111, + 130, 100, 95, 173, 142, 46, 47, 81, 82, 103, + 157, 145, 245, 202, 203, 204, 237, 144, 39, 48, + 77, 186, 187, 78, 153, 79, 80, 201, 224, 206, + 158, 199, 172, 217, 146, 48, 222, 46, 160, 161, + 50, 89, 234, 207, 223, 151, 244, 51, 101, 229, + 52, 159, 231, 238, 293, 166, 50, 100, 230, 120, + 202, 203, 204, 51, 167, 103, 52, 48, 121, 260, + 122, 123, 263, 264, 247, 248, 249, 122, 123, 252, + 253, 254, 255, 256, 162, 163, 49, 178, 50, 176, + 91, 92, 241, 181, 261, 66, 81, 82, 52, 182, + 272, 272, 272, 272, 265, 266, 77, 91, 92, 78, + 185, 79, 80, 314, 315, 283, 180, 180, 184, 294, + 78, 278, 79, 80, 273, 273, 273, 273, 46, 47, + 39, 71, 91, 262, 286, 291, 292, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 46, 47, 188, + 281, 208, 301, 91, 92, 209, 288, 306, 48, 81, + 82, 300, 191, 192, 193, 194, 195, 196, 197, 198, + 305, 211, 81, 82, 212, 135, 297, 48, 303, 50, + 213, 114, 312, 215, 112, 214, 66, 225, 318, 52, + 309, 226, 321, 196, 197, 198, 106, 107, 50, 284, + 285, 269, 227, 228, 322, 51, 232, 236, 52, 237, + 239, 328, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 4, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 242, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 243, 250, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 46, + 47, 251, 257, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 274, 275, 276, 325, 258, 28, 29, + 30, 259, 219, 31, 231, 270, 46, 47, 282, 48, + 77, 46, 47, 78, 267, 79, 80, 91, 92, 268, + 277, 93, 94, 81, 82, 279, 280, 287, 49, 290, + 50, 46, 47, 46, 47, 289, 48, 66, 83, 95, + 52, 48, 77, 295, 296, 78, 298, 79, 80, 91, + 92, 46, 47, 93, 94, 168, 107, 50, 299, 302, + 49, 48, 50, 48, 66, 46, 47, 52, 304, 66, + 307, 95, 52, 46, 47, 81, 82, 46, 47, 310, + 77, 48, 50, 78, 50, 79, 80, 311, 319, 51, + 313, 51, 52, 83, 52, 48, 317, 320, 324, 326, + 49, 169, 50, 48, 323, 77, 136, 48, 78, 51, + 79, 80, 52, 246, 49, 0, 50, 0, 81, 82, + 0, 0, 0, 66, 50, 0, 52, 0, 50, 39, + 0, 51, 0, 0, 52, 66, 0, 0, 52, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 77, + 0, 0, 78, 0, 79, 80, 194, 195, 196, 197, + 198, 0, 81, 82, 0, 36, 37, 38, 0, 41, + 42, 43, 44, 45, 0, 0, 56, 0, 83, 59, + 60, 61, 62, 63, 64, 0, 77, 0, 0, 78, + 0, 79, 80, 0, 0, 0, 0, 0, 221, 81, + 82, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 192, 193, 194, 195, 196, 197, 198, 202, 203, 204, + 78, 0, 79, 80 }; static const yytype_int16 yycheck[] = { - 35, 36, 37, 9, 43, 27, 92, 42, 58, 127, - 37, 9, 18, 19, 59, 37, 61, 62, 9, 65, - 26, 36, 44, 15, 16, 106, 107, 42, 110, 0, - 6, 7, 38, 9, 56, 41, 60, 61, 44, 45, - 63, 63, 64, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 62, 165, 166, 91, 55, 104, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 115, - 181, 144, 63, 146, 65, 110, 60, 112, 54, 61, - 74, 163, 76, 110, 8, 9, 167, 62, 110, 3, + 35, 36, 37, 43, 15, 16, 27, 42, 58, 37, + 59, 9, 61, 62, 9, 128, 27, 65, 37, 0, + 18, 19, 110, 106, 107, 44, 37, 63, 26, 40, + 9, 66, 43, 15, 16, 46, 47, 56, 60, 61, + 38, 52, 62, 41, 63, 64, 44, 45, 73, 60, + 75, 60, 6, 7, 61, 9, 104, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 115, 63, 147, + 65, 149, 83, 62, 95, 110, 55, 112, 166, 8, + 9, 66, 110, 36, 95, 168, 145, 146, 63, 42, + 11, 110, 68, 104, 66, 8, 9, 52, 53, 110, + 54, 66, 185, 39, 40, 41, 42, 142, 63, 38, + 39, 122, 123, 42, 63, 44, 45, 128, 153, 130, + 63, 67, 104, 182, 66, 38, 151, 8, 9, 10, + 59, 166, 167, 131, 153, 66, 184, 66, 166, 158, + 69, 66, 55, 178, 257, 63, 59, 166, 159, 160, + 39, 40, 41, 66, 66, 166, 69, 38, 6, 208, + 8, 9, 211, 212, 189, 190, 191, 8, 9, 194, + 195, 196, 197, 198, 55, 56, 57, 63, 59, 66, + 46, 47, 180, 63, 209, 66, 52, 53, 69, 66, + 225, 226, 227, 228, 213, 214, 39, 46, 47, 42, + 7, 44, 45, 48, 49, 240, 241, 242, 63, 259, + 42, 232, 44, 45, 225, 226, 227, 228, 8, 9, + 63, 232, 46, 47, 243, 250, 251, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 8, 9, 66, + 238, 63, 282, 46, 47, 63, 244, 296, 38, 52, + 53, 270, 5, 6, 7, 8, 9, 10, 11, 12, + 295, 63, 52, 53, 63, 68, 264, 38, 287, 59, + 63, 282, 307, 67, 64, 63, 66, 6, 313, 69, + 299, 7, 317, 10, 11, 12, 57, 58, 59, 241, + 242, 67, 7, 7, 319, 66, 68, 66, 69, 42, + 65, 326, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 1, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 64, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 63, 6, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 8, + 9, 7, 63, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 226, 227, 228, 67, 67, 57, 58, + 59, 63, 62, 62, 55, 63, 8, 9, 63, 38, + 39, 8, 9, 42, 67, 44, 45, 46, 47, 67, + 67, 50, 51, 52, 53, 67, 67, 63, 57, 67, + 59, 8, 9, 8, 9, 66, 38, 66, 68, 68, + 69, 38, 39, 63, 63, 42, 63, 44, 45, 46, + 47, 8, 9, 50, 51, 57, 58, 59, 63, 65, + 57, 38, 59, 38, 66, 8, 9, 69, 40, 66, + 66, 68, 69, 8, 9, 52, 53, 8, 9, 67, + 39, 38, 59, 42, 59, 44, 45, 63, 66, 66, + 63, 66, 69, 68, 69, 38, 63, 63, 67, 63, + 57, 104, 59, 38, 320, 39, 61, 38, 42, 66, + 44, 45, 69, 188, 57, -1, 59, -1, 52, 53, + -1, -1, -1, 66, 59, -1, 69, -1, 59, 63, + -1, 66, -1, -1, 69, 66, -1, -1, 69, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 39, - 40, 41, 42, 184, 52, 53, 141, 67, 63, 8, - 9, 10, 104, 66, 149, 63, 39, 46, 47, 42, - 11, 44, 45, 67, 130, 46, 47, 149, 163, 164, - 68, 6, 154, 8, 9, 66, 163, 183, 256, 38, - 63, 163, 177, 229, 46, 47, 66, 15, 16, 143, - 52, 53, 42, 67, 44, 45, 55, 56, 57, 63, - 59, 66, 207, 48, 49, 210, 211, 66, 63, 37, - 69, 63, 40, 179, 63, 43, 46, 47, 46, 47, - 240, 241, 52, 53, 52, 66, 221, 222, 223, 224, - 212, 213, 60, 66, 188, 189, 190, 66, 68, 193, - 194, 195, 196, 197, 239, 240, 241, 66, 258, 39, - 40, 41, 80, 39, 208, 66, 42, 63, 44, 45, - 242, 10, 11, 12, 92, 63, 52, 53, 7, 66, - 63, 237, 8, 9, 63, 39, 104, 243, 42, 63, - 44, 45, 110, 282, 63, 267, 63, 63, 52, 53, - 6, 296, 7, 121, 122, 249, 250, 263, 7, 127, - 295, 129, 38, 39, 68, 287, 42, 7, 44, 45, - 46, 47, 307, 67, 50, 51, 68, 299, 313, 66, - 42, 57, 317, 59, 1, 65, 64, 155, 63, 157, - 66, 6, 68, 69, 7, 163, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 63, 63, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 39, 40, 41, 42, 319, 44, 45, 8, 9, - 67, 55, 326, 39, 63, 67, 42, 67, 44, 45, - 57, 58, 59, 63, 67, 62, 52, 53, 67, 63, - 8, 9, 68, 221, 222, 223, 224, 63, 38, 39, - 67, 229, 42, 66, 44, 45, 46, 47, 8, 9, - 50, 51, 52, 53, 222, 223, 224, 57, 67, 59, - 38, 63, 8, 9, 63, 63, 66, 40, 68, 69, - 8, 9, 65, 67, 52, 53, 66, 63, 38, 39, - 63, 59, 42, 63, 44, 45, 64, 66, 66, 8, - 9, 69, 38, 63, 282, 8, 9, 8, 9, 59, - 38, 67, 39, 8, 9, 42, 66, 44, 45, 69, - 63, 57, 58, 59, 52, 53, 104, 61, 320, 38, - 66, 59, 187, 69, -1, 38, -1, 38, 66, 8, - 9, 69, -1, 38, -1, 8, 9, -1, 57, 58, - 59, 8, 9, -1, 57, -1, 59, 66, 59, -1, - 69, -1, 57, 66, 59, 66, 69, 68, 69, 38, - -1, 66, -1, -1, 69, 38, 8, 9, 10, 11, - 12, 38, -1, -1, -1, -1, 55, -1, -1, -1, - 59, -1, -1, -1, -1, -1, 59, 66, -1, -1, - 69, -1, 59, 66, -1, -1, 69, -1, -1, 66, - -1, -1, 69, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 6, 7, 8, -1, 10, 11, 12, - 13, 14, -1, -1, 17, -1, -1, 20, 21, 22, - 23, 24, 25, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 63, 5, 6, 7, 8, 9, 10, - 11, 12, 62, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 62, 6, 7, 8, 9, 10, 11, 12 + -1, -1, 42, -1, 44, 45, 8, 9, 10, 11, + 12, -1, 52, 53, -1, 6, 7, 8, -1, 10, + 11, 12, 13, 14, -1, -1, 17, -1, 68, 20, + 21, 22, 23, 24, 25, -1, 39, -1, -1, 42, + -1, 44, 45, -1, -1, -1, -1, -1, 62, 52, + 53, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 6, 7, 8, 9, 10, 11, 12, 39, 40, 41, + 42, -1, 44, 45 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -916,28 +916,28 @@ static const yytype_uint8 yystos[] = 59, 62, 73, 76, 62, 77, 77, 77, 77, 63, 78, 77, 77, 77, 77, 77, 8, 9, 38, 57, 59, 66, 69, 99, 102, 99, 77, 78, 78, 77, - 77, 77, 77, 77, 77, 78, 39, 42, 44, 45, - 90, 94, 95, 60, 61, 60, 61, 62, 52, 53, - 68, 88, 89, 90, 92, 95, 88, 46, 47, 50, - 51, 66, 68, 80, 81, 83, 85, 86, 87, 90, - 92, 98, 99, 102, 78, 78, 57, 58, 79, 102, - 78, 88, 64, 86, 102, 78, 90, 78, 102, 102, - 6, 8, 9, 100, 102, 104, 102, 63, 66, 11, - 90, 80, 98, 102, 68, 81, 97, 98, 98, 90, - 90, 66, 85, 66, 75, 104, 74, 104, 102, 63, - 6, 7, 9, 54, 63, 66, 95, 9, 10, 55, - 56, 87, 102, 63, 66, 66, 66, 57, 79, 84, - 85, 99, 102, 100, 100, 66, 83, 63, 82, 95, - 63, 66, 85, 63, 7, 102, 102, 66, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 67, 89, - 102, 39, 40, 41, 101, 102, 78, 63, 63, 9, - 63, 63, 63, 63, 104, 73, 62, 73, 62, 90, - 95, 6, 7, 7, 7, 90, 102, 67, 55, 68, - 83, 95, 94, 94, 100, 66, 42, 95, 65, 9, - 78, 64, 63, 85, 100, 101, 104, 104, 104, 6, - 7, 104, 104, 104, 104, 104, 63, 67, 63, 98, - 104, 47, 98, 98, 90, 90, 67, 63, 93, 95, - 102, 93, 93, 93, 67, 87, 102, 67, 67, 67, + 77, 77, 77, 77, 77, 78, 66, 85, 86, 87, + 99, 102, 60, 61, 60, 61, 62, 39, 42, 44, + 45, 52, 53, 68, 88, 89, 90, 92, 94, 95, + 88, 46, 47, 50, 51, 68, 80, 81, 83, 87, + 90, 92, 98, 102, 78, 78, 57, 58, 79, 102, + 78, 88, 64, 86, 102, 78, 90, 95, 78, 102, + 102, 6, 8, 9, 100, 102, 104, 102, 63, 66, + 11, 90, 80, 98, 102, 68, 81, 97, 98, 98, + 90, 90, 66, 85, 95, 66, 66, 75, 104, 74, + 104, 66, 102, 63, 6, 7, 9, 54, 63, 66, + 9, 10, 55, 56, 87, 102, 63, 66, 57, 79, + 84, 85, 99, 102, 100, 100, 66, 83, 63, 82, + 95, 63, 66, 85, 63, 7, 102, 102, 66, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 67, + 89, 102, 39, 40, 41, 101, 102, 78, 63, 63, + 9, 63, 63, 63, 63, 67, 94, 94, 73, 62, + 73, 62, 104, 90, 95, 6, 7, 7, 7, 90, + 102, 55, 68, 83, 95, 100, 66, 42, 95, 65, + 9, 78, 64, 63, 85, 100, 101, 104, 104, 104, + 6, 7, 104, 104, 104, 104, 104, 63, 67, 63, + 98, 104, 47, 98, 98, 90, 90, 67, 67, 67, + 63, 93, 95, 102, 93, 93, 93, 67, 87, 67, 67, 78, 63, 95, 82, 82, 90, 63, 78, 66, 67, 104, 104, 89, 80, 63, 63, 78, 63, 63, 90, 86, 65, 90, 40, 95, 98, 66, 91, 90, @@ -2097,7 +2097,6 @@ yyreduce: /* Line 1455 of yacc.c */ #line 308 "a.y" { - // TODO outcode((yyvsp[(1) - (2)].lval), Always, &(yyvsp[(2) - (2)].gen), NREG, &nullgen); } break; @@ -2105,7 +2104,7 @@ yyreduce: case 44: /* Line 1455 of yacc.c */ -#line 316 "a.y" +#line 315 "a.y" { outcode((yyvsp[(1) - (2)].lval), Always, &nullgen, NREG, &nullgen); } @@ -2114,7 +2113,7 @@ yyreduce: case 45: /* Line 1455 of yacc.c */ -#line 321 "a.y" +#line 320 "a.y" { (yyval.lval) = Always; } @@ -2123,7 +2122,7 @@ yyreduce: case 46: /* Line 1455 of yacc.c */ -#line 325 "a.y" +#line 324 "a.y" { (yyval.lval) = ((yyvsp[(1) - (2)].lval) & ~C_SCOND) | (yyvsp[(2) - (2)].lval); } @@ -2132,7 +2131,7 @@ yyreduce: case 47: /* Line 1455 of yacc.c */ -#line 329 "a.y" +#line 328 "a.y" { (yyval.lval) = (yyvsp[(1) - (2)].lval) | (yyvsp[(2) - (2)].lval); } @@ -2141,7 +2140,7 @@ yyreduce: case 50: /* Line 1455 of yacc.c */ -#line 338 "a.y" +#line 337 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_BRANCH; @@ -2152,7 +2151,7 @@ yyreduce: case 51: /* Line 1455 of yacc.c */ -#line 344 "a.y" +#line 343 "a.y" { (yyval.gen) = nullgen; if(pass == 2) @@ -2166,7 +2165,7 @@ yyreduce: case 52: /* Line 1455 of yacc.c */ -#line 353 "a.y" +#line 352 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_BRANCH; @@ -2178,7 +2177,7 @@ yyreduce: case 53: /* Line 1455 of yacc.c */ -#line 361 "a.y" +#line 360 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_CONST; @@ -2189,7 +2188,7 @@ yyreduce: case 54: /* Line 1455 of yacc.c */ -#line 367 "a.y" +#line 366 "a.y" { (yyval.gen) = (yyvsp[(2) - (2)].gen); (yyval.gen).type = D_CONST; @@ -2199,7 +2198,7 @@ yyreduce: case 55: /* Line 1455 of yacc.c */ -#line 372 "a.y" +#line 371 "a.y" { (yyval.gen) = (yyvsp[(4) - (4)].gen); (yyval.gen).type = D_OCONST; @@ -2209,7 +2208,7 @@ yyreduce: case 56: /* Line 1455 of yacc.c */ -#line 377 "a.y" +#line 376 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_SCONST; @@ -2220,7 +2219,7 @@ yyreduce: case 58: /* Line 1455 of yacc.c */ -#line 386 "a.y" +#line 385 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_FCONST; @@ -2231,7 +2230,7 @@ yyreduce: case 59: /* Line 1455 of yacc.c */ -#line 392 "a.y" +#line 391 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_FCONST; @@ -2242,7 +2241,7 @@ yyreduce: case 60: /* Line 1455 of yacc.c */ -#line 400 "a.y" +#line 399 "a.y" { (yyval.lval) = 1 << (yyvsp[(1) - (1)].lval); } @@ -2251,7 +2250,7 @@ yyreduce: case 61: /* Line 1455 of yacc.c */ -#line 404 "a.y" +#line 403 "a.y" { int i; (yyval.lval)=0; @@ -2265,7 +2264,7 @@ yyreduce: case 62: /* Line 1455 of yacc.c */ -#line 413 "a.y" +#line 412 "a.y" { (yyval.lval) = (1<<(yyvsp[(1) - (3)].lval)) | (yyvsp[(3) - (3)].lval); } @@ -2274,7 +2273,7 @@ yyreduce: case 66: /* Line 1455 of yacc.c */ -#line 422 "a.y" +#line 421 "a.y" { (yyval.gen) = (yyvsp[(1) - (4)].gen); (yyval.gen).reg = (yyvsp[(3) - (4)].lval); @@ -2284,7 +2283,7 @@ yyreduce: case 67: /* Line 1455 of yacc.c */ -#line 427 "a.y" +#line 426 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_PSR; @@ -2295,7 +2294,7 @@ yyreduce: case 68: /* Line 1455 of yacc.c */ -#line 433 "a.y" +#line 432 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_FPCR; @@ -2306,7 +2305,7 @@ yyreduce: case 69: /* Line 1455 of yacc.c */ -#line 439 "a.y" +#line 438 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_OREG; @@ -2317,7 +2316,7 @@ yyreduce: case 73: /* Line 1455 of yacc.c */ -#line 450 "a.y" +#line 449 "a.y" { (yyval.gen) = (yyvsp[(1) - (1)].gen); if((yyvsp[(1) - (1)].gen).name != D_EXTERN && (yyvsp[(1) - (1)].gen).name != D_STATIC) { @@ -2328,7 +2327,7 @@ yyreduce: case 74: /* Line 1455 of yacc.c */ -#line 458 "a.y" +#line 457 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_OREG; @@ -2340,7 +2339,7 @@ yyreduce: case 76: /* Line 1455 of yacc.c */ -#line 468 "a.y" +#line 467 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_OREG; @@ -2352,7 +2351,7 @@ yyreduce: case 78: /* Line 1455 of yacc.c */ -#line 478 "a.y" +#line 477 "a.y" { (yyval.gen) = (yyvsp[(1) - (4)].gen); (yyval.gen).type = D_OREG; @@ -2363,7 +2362,7 @@ yyreduce: case 83: /* Line 1455 of yacc.c */ -#line 491 "a.y" +#line 490 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_CONST; @@ -2374,7 +2373,7 @@ yyreduce: case 84: /* Line 1455 of yacc.c */ -#line 499 "a.y" +#line 498 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_REG; @@ -2385,7 +2384,7 @@ yyreduce: case 85: /* Line 1455 of yacc.c */ -#line 507 "a.y" +#line 506 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_REGREG; @@ -2397,7 +2396,7 @@ yyreduce: case 86: /* Line 1455 of yacc.c */ -#line 516 "a.y" +#line 515 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_SHIFT; @@ -2408,7 +2407,7 @@ yyreduce: case 87: /* Line 1455 of yacc.c */ -#line 522 "a.y" +#line 521 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_SHIFT; @@ -2419,7 +2418,7 @@ yyreduce: case 88: /* Line 1455 of yacc.c */ -#line 528 "a.y" +#line 527 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_SHIFT; @@ -2430,7 +2429,7 @@ yyreduce: case 89: /* Line 1455 of yacc.c */ -#line 534 "a.y" +#line 533 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_SHIFT; @@ -2441,7 +2440,7 @@ yyreduce: case 90: /* Line 1455 of yacc.c */ -#line 542 "a.y" +#line 541 "a.y" { if((yyval.lval) < 0 || (yyval.lval) >= 16) print("register value out of range\n"); @@ -2452,7 +2451,7 @@ yyreduce: case 91: /* Line 1455 of yacc.c */ -#line 548 "a.y" +#line 547 "a.y" { if((yyval.lval) < 0 || (yyval.lval) >= 32) print("shift value out of range\n"); @@ -2463,7 +2462,7 @@ yyreduce: case 93: /* Line 1455 of yacc.c */ -#line 557 "a.y" +#line 556 "a.y" { (yyval.lval) = REGPC; } @@ -2472,7 +2471,7 @@ yyreduce: case 94: /* Line 1455 of yacc.c */ -#line 561 "a.y" +#line 560 "a.y" { if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= NREG) print("register value out of range\n"); @@ -2483,7 +2482,7 @@ yyreduce: case 96: /* Line 1455 of yacc.c */ -#line 570 "a.y" +#line 569 "a.y" { (yyval.lval) = REGSP; } @@ -2492,7 +2491,7 @@ yyreduce: case 98: /* Line 1455 of yacc.c */ -#line 577 "a.y" +#line 576 "a.y" { if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= NREG) print("register value out of range\n"); @@ -2503,7 +2502,7 @@ yyreduce: case 101: /* Line 1455 of yacc.c */ -#line 589 "a.y" +#line 588 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_FREG; @@ -2514,7 +2513,7 @@ yyreduce: case 102: /* Line 1455 of yacc.c */ -#line 595 "a.y" +#line 594 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_FREG; @@ -2525,7 +2524,7 @@ yyreduce: case 103: /* Line 1455 of yacc.c */ -#line 603 "a.y" +#line 602 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_OREG; @@ -2538,7 +2537,7 @@ yyreduce: case 104: /* Line 1455 of yacc.c */ -#line 611 "a.y" +#line 610 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_OREG; @@ -2551,7 +2550,7 @@ yyreduce: case 105: /* Line 1455 of yacc.c */ -#line 619 "a.y" +#line 618 "a.y" { (yyval.gen) = nullgen; (yyval.gen).type = D_OREG; @@ -2564,7 +2563,7 @@ yyreduce: case 106: /* Line 1455 of yacc.c */ -#line 628 "a.y" +#line 627 "a.y" { (yyval.lval) = 0; } @@ -2573,7 +2572,7 @@ yyreduce: case 107: /* Line 1455 of yacc.c */ -#line 632 "a.y" +#line 631 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } @@ -2582,7 +2581,7 @@ yyreduce: case 108: /* Line 1455 of yacc.c */ -#line 636 "a.y" +#line 635 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } @@ -2591,7 +2590,7 @@ yyreduce: case 113: /* Line 1455 of yacc.c */ -#line 648 "a.y" +#line 647 "a.y" { (yyval.lval) = (yyvsp[(1) - (1)].sym)->value; } @@ -2600,7 +2599,7 @@ yyreduce: case 114: /* Line 1455 of yacc.c */ -#line 652 "a.y" +#line 651 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } @@ -2609,7 +2608,7 @@ yyreduce: case 115: /* Line 1455 of yacc.c */ -#line 656 "a.y" +#line 655 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } @@ -2618,7 +2617,7 @@ yyreduce: case 116: /* Line 1455 of yacc.c */ -#line 660 "a.y" +#line 659 "a.y" { (yyval.lval) = ~(yyvsp[(2) - (2)].lval); } @@ -2627,7 +2626,7 @@ yyreduce: case 117: /* Line 1455 of yacc.c */ -#line 664 "a.y" +#line 663 "a.y" { (yyval.lval) = (yyvsp[(2) - (3)].lval); } @@ -2636,7 +2635,7 @@ yyreduce: case 118: /* Line 1455 of yacc.c */ -#line 669 "a.y" +#line 668 "a.y" { (yyval.lval) = 0; } @@ -2645,7 +2644,7 @@ yyreduce: case 119: /* Line 1455 of yacc.c */ -#line 673 "a.y" +#line 672 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } @@ -2654,7 +2653,7 @@ yyreduce: case 121: /* Line 1455 of yacc.c */ -#line 680 "a.y" +#line 679 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval); } @@ -2663,7 +2662,7 @@ yyreduce: case 122: /* Line 1455 of yacc.c */ -#line 684 "a.y" +#line 683 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval); } @@ -2672,7 +2671,7 @@ yyreduce: case 123: /* Line 1455 of yacc.c */ -#line 688 "a.y" +#line 687 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval); } @@ -2681,7 +2680,7 @@ yyreduce: case 124: /* Line 1455 of yacc.c */ -#line 692 "a.y" +#line 691 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval); } @@ -2690,7 +2689,7 @@ yyreduce: case 125: /* Line 1455 of yacc.c */ -#line 696 "a.y" +#line 695 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval); } @@ -2699,7 +2698,7 @@ yyreduce: case 126: /* Line 1455 of yacc.c */ -#line 700 "a.y" +#line 699 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval); } @@ -2708,7 +2707,7 @@ yyreduce: case 127: /* Line 1455 of yacc.c */ -#line 704 "a.y" +#line 703 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval); } @@ -2717,7 +2716,7 @@ yyreduce: case 128: /* Line 1455 of yacc.c */ -#line 708 "a.y" +#line 707 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval); } @@ -2726,7 +2725,7 @@ yyreduce: case 129: /* Line 1455 of yacc.c */ -#line 712 "a.y" +#line 711 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval); } @@ -2735,7 +2734,7 @@ yyreduce: case 130: /* Line 1455 of yacc.c */ -#line 716 "a.y" +#line 715 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval); } @@ -2744,7 +2743,7 @@ yyreduce: /* Line 1455 of yacc.c */ -#line 2748 "y.tab.c" +#line 2747 "y.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); diff --git a/src/cmd/5c/peep.c b/src/cmd/5c/peep.c index 3a905f0997..cdfb9d7f69 100644 --- a/src/cmd/5c/peep.c +++ b/src/cmd/5c/peep.c @@ -1067,6 +1067,7 @@ copyu(Prog *p, Adr *v, Adr *s) case ABLT: case ABGT: case ABLE: + case APLD: if(s != A) { if(copysub(&p->from, v, s, 1)) return 1; diff --git a/src/cmd/5c/reg.c b/src/cmd/5c/reg.c index 1ccf74a35d..7cd880b9bf 100644 --- a/src/cmd/5c/reg.c +++ b/src/cmd/5c/reg.c @@ -190,6 +190,14 @@ regopt(Prog *p) r->set.b[z] |= bit.b[z]; break; + /* + * right side read + */ + case APLD: + for(z=0; zuse2.b[z] |= bit.b[z]; + break; + /* * funny */ diff --git a/src/cmd/5c/txt.c b/src/cmd/5c/txt.c index ee341905d5..7738de1c30 100644 --- a/src/cmd/5c/txt.c +++ b/src/cmd/5c/txt.c @@ -1197,7 +1197,13 @@ gpseudo(int a, Sym *s, Node *n) void gprefetch(Node *n) { - // nothing + Node n1; + + regalloc(&n1, n, Z); + gmove(n, &n1); + n1.op = OINDREG; + gins(APLD, &n1, Z); + regfree(&n1); } int diff --git a/src/cmd/5l/asm.c b/src/cmd/5l/asm.c index 099c4208cd..538e2c54c5 100644 --- a/src/cmd/5l/asm.c +++ b/src/cmd/5l/asm.c @@ -1429,9 +1429,14 @@ if(debug['G']) print("%ux: %s: arm %d\n", (uint32)(p->pc), p->from.sym->name, p- break; o2 = oshr(p->from.reg, 0, REGTMP, p->scond); break; - case 95: /* PLD reg */ + case 95: /* PLD off(reg) */ o1 = 0xf5d0f000; o1 |= p->from.reg << 16; + if(p->from.offset < 0) { + o1 &= ~(1 << 23); + o1 |= (-p->from.offset) & 0xfff; + } else + o1 |= p->from.offset & 0xfff; } out[0] = o1; diff --git a/src/cmd/5l/optab.c b/src/cmd/5l/optab.c index 92e38cd931..76f2d4dda5 100644 --- a/src/cmd/5l/optab.c +++ b/src/cmd/5l/optab.c @@ -232,7 +232,7 @@ Optab optab[] = { ALDREXD, C_SOREG,C_NONE, C_REG, 91, 4, 0 }, { ASTREXD, C_SOREG,C_REG, C_REG, 92, 4, 0 }, - { APLD, C_REG, C_NONE, C_NONE, 95, 4, 0 }, + { APLD, C_SOREG,C_NONE, C_NONE, 95, 4, 0 }, { AXXX, C_NONE, C_NONE, C_NONE, 0, 4, 0 }, };