10 . "cmd/internal/obj/arm"
14 type yySymType struct {
46 const LTYPEPLD = 57369
72 var yyToknames = []string{
132 var yyStatenames = []string{}
136 const yyMaxDepth = 200
149 const yyPrivate = 57344
151 var yyTokenNames []string
152 var yyStates []string
158 123, 317, 71, 83, 98, 104, 200, 77, 82, 193,
159 89, 127, 271, 73, 113, 85, 3, 106, 227, 134,
160 327, 88, 87, 313, 76, 52, 52, 101, 102, 293,
161 283, 278, 84, 84, 270, 72, 81, 81, 70, 69,
162 84, 84, 84, 142, 269, 268, 81, 257, 84, 220,
163 114, 118, 323, 120, 310, 97, 99, 110, 75, 51,
164 60, 131, 132, 133, 103, 103, 294, 138, 140, 143,
165 137, 144, 103, 90, 121, 149, 92, 204, 111, 246,
166 93, 91, 112, 148, 195, 188, 136, 163, 101, 102,
167 156, 94, 145, 146, 157, 162, 43, 45, 151, 147,
168 108, 126, 302, 251, 106, 252, 62, 101, 102, 57,
169 56, 179, 149, 165, 184, 250, 95, 84, 44, 329,
170 194, 81, 322, 186, 182, 109, 320, 189, 316, 116,
171 199, 198, 122, 124, 206, 207, 197, 314, 54, 90,
172 209, 300, 92, 299, 44, 296, 93, 91, 187, 289,
173 286, 84, 222, 282, 260, 81, 256, 255, 218, 219,
174 44, 55, 217, 216, 215, 84, 131, 229, 59, 81,
175 214, 58, 212, 90, 211, 190, 92, 196, 192, 242,
176 93, 91, 84, 230, 191, 181, 81, 232, 233, 234,
177 235, 236, 249, 180, 239, 240, 241, 247, 178, 44,
178 164, 150, 125, 243, 86, 244, 219, 38, 37, 221,
179 254, 258, 34, 35, 36, 261, 262, 259, 264, 210,
180 57, 56, 228, 231, 272, 272, 272, 272, 273, 273,
181 273, 273, 72, 248, 213, 265, 277, 274, 275, 276,
182 245, 266, 267, 306, 57, 161, 158, 319, 318, 54,
183 135, 194, 305, 287, 194, 88, 87, 280, 281, 238,
184 285, 78, 292, 288, 226, 101, 102, 90, 295, 141,
185 92, 225, 55, 54, 93, 91, 224, 253, 100, 59,
186 291, 160, 58, 57, 56, 152, 153, 205, 154, 303,
187 237, 120, 160, 159, 53, 223, 55, 88, 263, 308,
188 307, 105, 105, 74, 129, 130, 58, 301, 7, 105,
189 312, 315, 54, 96, 304, 90, 2, 321, 92, 107,
190 1, 324, 93, 91, 325, 311, 117, 183, 101, 102,
191 101, 102, 284, 139, 155, 55, 309, 290, 8, 328,
192 119, 44, 74, 326, 0, 58, 0, 297, 0, 331,
193 9, 10, 11, 12, 14, 15, 16, 17, 18, 19,
194 20, 21, 22, 33, 0, 23, 24, 27, 25, 26,
195 28, 29, 13, 30, 57, 56, 202, 201, 203, 248,
196 31, 32, 176, 175, 174, 172, 173, 167, 168, 169,
197 170, 171, 88, 87, 0, 4, 0, 5, 101, 102,
198 6, 57, 56, 54, 90, 92, 0, 92, 0, 93,
199 91, 93, 91, 88, 87, 0, 0, 79, 80, 101,
200 102, 202, 201, 203, 53, 0, 55, 169, 170, 171,
201 54, 90, 0, 74, 92, 85, 58, 0, 93, 91,
202 88, 87, 0, 0, 79, 80, 128, 330, 129, 130,
203 0, 53, 0, 55, 0, 57, 56, 0, 0, 0,
204 74, 0, 85, 58, 176, 175, 174, 172, 173, 167,
205 168, 169, 170, 171, 176, 175, 174, 172, 173, 167,
206 168, 169, 170, 171, 54, 0, 57, 56, 0, 0,
207 57, 56, 0, 0, 57, 56, 202, 201, 203, 92,
208 0, 0, 0, 93, 91, 53, 0, 55, 57, 56,
209 0, 0, 57, 56, 74, 54, 0, 58, 0, 54,
210 0, 57, 56, 54, 0, 57, 56, 0, 0, 279,
211 0, 0, 0, 0, 228, 0, 0, 54, 55, 208,
212 0, 54, 55, 0, 185, 59, 55, 0, 58, 59,
213 54, 106, 58, 74, 54, 0, 58, 0, 115, 0,
214 55, 0, 53, 0, 55, 0, 0, 59, 0, 0,
215 58, 59, 0, 55, 58, 0, 0, 55, 0, 0,
216 59, 0, 0, 58, 74, 0, 0, 58, 176, 175,
217 174, 172, 173, 167, 168, 169, 170, 171, 176, 175,
218 174, 172, 173, 167, 168, 169, 170, 171, 176, 175,
219 174, 172, 173, 167, 168, 169, 170, 171, 90, 0,
220 0, 92, 0, 0, 0, 93, 91, 39, 167, 168,
221 169, 170, 171, 101, 102, 0, 0, 0, 40, 41,
222 42, 0, 0, 46, 47, 48, 49, 50, 0, 298,
223 61, 0, 63, 64, 65, 66, 67, 68, 177, 175,
224 174, 172, 173, 167, 168, 169, 170, 171, 166, 176,
225 175, 174, 172, 173, 167, 168, 169, 170, 171, 174,
226 172, 173, 167, 168, 169, 170, 171, 172, 173, 167,
231 -1000, -1000, 336, -1000, 150, 151, -1000, 144, 143, -1000,
232 -1000, -1000, -1000, 79, 79, -1000, -1000, -1000, -1000, -1000,
233 503, 503, -1000, 79, -1000, -1000, -1000, -1000, -1000, -1000,
234 446, 392, 392, 79, -1000, 512, 512, -1000, -1000, 34,
235 34, 365, 53, 10, 79, 499, 53, 34, 274, 276,
236 53, 137, 33, 439, -1000, -1000, 512, 512, 512, 512,
237 238, 579, -55, 344, -27, 344, 211, 579, 579, -1000,
238 31, -1000, 15, -1000, 100, 136, -1000, -1000, 30, -1000,
239 -1000, 15, -1000, -1000, 278, 235, -1000, -1000, 27, -1000,
240 -1000, -1000, -1000, 19, 135, -1000, 336, 604, -1000, 594,
241 133, -1000, -1000, -1000, -1000, -1000, 512, 128, 120, 485,
242 -1000, 228, -1000, -1000, 17, 295, 392, 119, 113, 228,
243 16, 112, 10, -1000, -1000, 481, 382, 9, 279, 512,
244 512, -1000, -1000, -1000, 470, 512, 79, -1000, 109, 107,
245 -1000, -1000, 224, 105, 99, 98, 97, 363, 457, -20,
246 392, 228, 288, 268, 263, 256, 15, -1000, -52, -1000,
247 -1000, 477, 512, 512, 392, -1000, -1000, 512, 512, 512,
248 512, 512, 283, 251, 512, 512, 512, -1000, 228, -1000,
249 228, 392, -1000, -1000, 11, 439, -1000, -1000, 191, -1000,
250 -1000, 228, 49, 36, 95, 363, 10, 92, -1000, 91,
251 -22, -1000, -1000, -1000, 382, 295, -1000, -1000, -1000, 89,
252 -1000, 207, 249, 165, 207, 512, 228, 228, -24, -25,
253 -1000, -1000, -35, 100, 100, 100, 100, 446, -1000, -38,
254 460, -1000, 416, 416, -1000, -1000, -1000, 512, 512, 680,
255 673, 654, 88, -1000, -1000, -1000, 337, 9, -39, 79,
256 228, 85, 228, 228, 84, 228, -53, -1000, -40, -2,
257 -55, -1000, -1000, 80, 79, 584, 78, 76, -1000, -1000,
258 -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
259 619, 619, 228, -1000, -1000, 35, 516, -1000, -1000, 134,
260 -1000, -1000, 242, -1000, 203, -1000, 207, -1000, 228, -14,
261 228, -1000, -1000, -1000, -1000, 512, -46, -1000, 72, -1000,
262 228, 63, -1000, -1000, 197, 61, 228, 57, -1000, -16,
263 228, -1000, 197, 512, -49, 54, 378, -1000, -1000, 512,
268 0, 4, 19, 339, 6, 11, 10, 0, 1, 12,
269 627, 9, 58, 14, 24, 336, 3, 261, 204, 333,
270 5, 7, 38, 8, 13, 327, 2, 278, 320, 316,
275 0, 28, 29, 28, 31, 30, 30, 30, 30, 30,
276 30, 32, 32, 32, 32, 32, 32, 32, 32, 32,
277 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
278 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
279 32, 32, 32, 32, 32, 10, 10, 10, 33, 33,
280 13, 13, 21, 21, 21, 21, 21, 18, 18, 11,
281 11, 11, 12, 12, 12, 12, 12, 12, 12, 12,
282 12, 25, 25, 24, 26, 26, 23, 23, 23, 27,
283 27, 27, 20, 14, 15, 17, 17, 17, 17, 9,
284 9, 6, 6, 6, 7, 7, 8, 8, 19, 19,
285 16, 16, 22, 22, 22, 5, 5, 5, 4, 4,
286 4, 1, 1, 1, 1, 1, 1, 3, 3, 2,
287 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
291 0, 0, 0, 3, 0, 4, 4, 4, 1, 2,
292 2, 7, 6, 5, 5, 5, 4, 4, 3, 3,
293 4, 6, 7, 7, 7, 6, 6, 3, 4, 6,
294 8, 6, 4, 3, 5, 5, 7, 6, 12, 7,
295 9, 2, 4, 4, 2, 0, 2, 2, 0, 2,
296 4, 2, 2, 2, 4, 2, 1, 2, 3, 1,
297 3, 3, 1, 1, 1, 4, 1, 1, 1, 1,
298 1, 1, 1, 3, 1, 4, 1, 4, 1, 1,
299 1, 1, 2, 1, 5, 4, 4, 4, 4, 1,
300 1, 1, 1, 4, 1, 1, 1, 4, 1, 1,
301 1, 4, 4, 5, 7, 0, 2, 2, 1, 1,
302 1, 1, 1, 2, 2, 2, 3, 0, 2, 1,
303 3, 3, 3, 3, 3, 4, 4, 3, 3, 3,
307 -1000, -28, -29, -30, 59, 61, 64, -32, 2, 14,
308 15, 16, 17, 36, 18, 19, 20, 21, 22, 23,
309 24, 25, 26, 29, 30, 32, 33, 31, 34, 35,
310 37, 44, 45, 27, 62, 63, 63, 64, 64, -10,
311 -10, -10, -10, -33, 65, -33, -10, -10, -10, -10,
312 -10, -22, -1, 59, 38, 61, 10, 9, 71, 68,
313 -22, -10, -33, -10, -10, -10, -10, -10, -10, -23,
314 -22, -26, -1, -24, 68, -12, -14, -21, -17, 52,
315 53, -1, -23, -16, -7, 70, -18, 49, 48, -6,
316 39, 47, 42, 46, -12, -33, -31, -2, -1, -2,
317 -27, 54, 55, -14, -20, -17, 70, -27, -12, -33,
318 -24, 68, -33, -13, -1, 59, -33, -27, -26, 66,
319 -1, -14, -33, -7, -33, 65, 68, -5, 7, 9,
320 10, -1, -1, -1, -2, 12, -14, -21, -16, -19,
321 -16, -18, 70, -16, -1, -14, -14, 68, 68, -7,
322 65, 68, 7, 8, 10, 56, -1, -23, 11, 58,
323 57, 10, 68, 68, 65, -30, 64, 9, 10, 11,
324 12, 13, 7, 8, 6, 5, 4, 64, 65, -1,
325 65, 65, -13, -25, -1, 59, -24, -22, 68, -5,
326 -12, 65, 65, -11, -7, 68, 65, -24, -20, -1,
327 -4, 40, 39, 41, 68, 8, -1, -1, 69, -1,
328 -33, 65, 65, 10, 65, 65, 65, 65, -6, -6,
329 69, -12, -7, 7, 8, 8, 8, 70, 57, -1,
330 -2, -12, -2, -2, -2, -2, -2, 7, 8, -2,
331 -2, -2, -7, -14, -14, -12, 68, -5, 42, -7,
332 66, 67, 10, -33, -24, 65, 65, 69, -4, -5,
333 65, -16, -16, 49, -16, -2, -14, -14, 69, 69,
334 69, -9, -7, -1, -9, -9, -9, -23, 69, 69,
335 -2, -2, 65, 69, -33, -11, 65, -7, -11, 65,
336 -33, -14, -20, 69, 68, -21, 65, -33, 65, 65,
337 65, -14, 67, -26, -14, 10, 40, -16, -7, -15,
338 68, -14, -1, 69, 65, -7, 65, -8, 51, 50,
339 65, -7, 65, 68, -7, -8, -2, 69, -3, 65,
344 1, -2, 0, 3, 0, 0, 8, 0, 0, 45,
345 45, 45, 45, 48, 48, 45, 45, 45, 45, 45,
346 0, 0, 45, 48, 45, 45, 45, 45, 45, 45,
347 0, 0, 0, 48, 4, 0, 0, 9, 10, 0,
348 0, 0, 48, 0, 48, 0, 48, 0, 0, 48,
349 48, 0, 0, 105, 111, 112, 0, 0, 0, 0,
350 0, 0, 0, 0, 0, 0, 0, 0, 0, 41,
351 76, 78, 0, 74, 0, 0, 62, 63, 64, 66,
352 67, 68, 69, 70, 83, 0, 56, 100, 0, 94,
353 95, 91, 92, 0, 0, 44, 0, 0, 119, 0,
354 0, 46, 47, 79, 80, 81, 0, 0, 0, 0,
355 18, 0, 49, 19, 0, 105, 0, 0, 0, 0,
356 0, 0, 0, 83, 27, 0, 0, 0, 0, 0,
357 0, 113, 114, 115, 0, 0, 48, 33, 0, 0,
358 98, 99, 0, 0, 0, 0, 0, 0, 0, 0,
359 0, 0, 0, 0, 0, 0, 52, 53, 0, 55,
360 57, 0, 0, 0, 0, 5, 6, 0, 0, 0,
361 0, 0, 0, 0, 0, 0, 0, 7, 0, 82,
362 0, 0, 16, 17, 0, 105, 71, 72, 0, 51,
363 20, 0, 0, 0, -2, 0, 0, 0, 28, 0,
364 0, 108, 109, 110, 0, 105, 106, 107, 116, 0,
365 32, 0, 0, 0, 0, 0, 0, 0, 0, 0,
366 73, 42, 0, 0, 0, 0, 0, 0, 58, 0,
367 0, 43, 120, 121, 122, 123, 124, 0, 0, 127,
368 128, 129, 83, 13, 14, 15, 0, 51, 0, 48,
369 0, 0, 0, 0, 48, 0, 0, 102, 0, 0,
370 0, 34, 35, 100, 48, 0, 0, 0, 77, 75,
371 65, 85, 89, 90, 86, 87, 88, 54, 101, 93,
372 125, 126, 12, 50, 21, 0, 0, 60, 61, 48,
373 25, 26, 29, 103, 0, 31, 0, 37, 0, 0,
374 0, 11, 22, 23, 24, 0, 0, 36, 0, 39,
375 0, 0, 30, 104, 0, 0, 0, 0, 96, 0,
376 0, 40, 0, 0, 0, 117, 0, 84, 38, 0,
381 1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
382 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
383 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
384 3, 3, 3, 3, 3, 3, 70, 13, 6, 3,
385 68, 69, 11, 9, 65, 10, 3, 12, 3, 3,
386 3, 3, 3, 3, 3, 3, 3, 3, 62, 64,
387 7, 63, 8, 3, 3, 3, 3, 3, 3, 3,
388 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
389 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
390 3, 66, 3, 67, 5, 3, 3, 3, 3, 3,
391 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
392 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
393 3, 3, 3, 3, 4, 3, 71,
397 2, 3, 14, 15, 16, 17, 18, 19, 20, 21,
398 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
399 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
400 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
401 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
409 /* parser for yacc output */
413 type yyLexer interface {
414 Lex(lval *yySymType) int
420 func yyTokname(c int) string {
421 // 4 is TOKSTART above
422 if c >= 4 && c-4 < len(yyToknames) {
423 if yyToknames[c-4] != "" {
424 return yyToknames[c-4]
427 return __yyfmt__.Sprintf("tok-%v", c)
430 func yyStatname(s int) string {
431 if s >= 0 && s < len(yyStatenames) {
432 if yyStatenames[s] != "" {
433 return yyStatenames[s]
436 return __yyfmt__.Sprintf("state-%v", s)
439 func yylex1(lex yyLexer, lval *yySymType) int {
441 char := lex.Lex(lval)
446 if char < len(yyTok1) {
450 if char >= yyPrivate {
451 if char < yyPrivate+len(yyTok2) {
452 c = yyTok2[char-yyPrivate]
456 for i := 0; i < len(yyTok3); i += 2 {
466 c = yyTok2[1] /* unknown char */
469 __yyfmt__.Printf("lex %s(%d)\n", yyTokname(c), uint(char))
474 func yyParse(yylex yyLexer) int {
478 yyS := make([]yySymType, yyMaxDepth)
480 Nerrs := 0 /* number of errors */
481 Errflag := 0 /* error recovery flag */
494 /* put a state and value onto the stack */
496 __yyfmt__.Printf("char %v in %v\n", yyTokname(yychar), yyStatname(yystate))
501 nyys := make([]yySymType, len(yyS)*2)
506 yyS[yyp].yys = yystate
509 yyn = yyPact[yystate]
511 goto yydefault /* simple state */
514 yychar = yylex1(yylex, &yylval)
517 if yyn < 0 || yyn >= yyLast {
521 if yyChk[yyn] == yychar { /* valid shift */
532 /* default state action */
536 yychar = yylex1(yylex, &yylval)
539 /* look through exception table */
542 if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate {
547 for xi += 2; ; xi += 2 {
549 if yyn < 0 || yyn == yychar {
559 /* error ... attempt to resume parsing */
561 case 0: /* brand new error */
562 yylex.Error("syntax error")
565 __yyfmt__.Printf("%s", yyStatname(yystate))
566 __yyfmt__.Printf(" saw %s\n", yyTokname(yychar))
570 case 1, 2: /* incompletely recovered error ... try again */
573 /* find a state where "error" is a legal shift action */
575 yyn = yyPact[yyS[yyp].yys] + yyErrCode
576 if yyn >= 0 && yyn < yyLast {
577 yystate = yyAct[yyn] /* simulate a shift of "error" */
578 if yyChk[yystate] == yyErrCode {
583 /* the current p has no shift on "error", pop stack */
585 __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
589 /* there is no state on the stack with an error shift ... abort */
592 case 3: /* no shift yet; clobber input char */
594 __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yychar))
596 if yychar == yyEofCode {
600 goto yynewstate /* try again in the same state */
604 /* reduction by production yyn */
606 __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
611 _ = yypt // guard against "declared and not used"
614 // yyp is now the index of $0. Perform the default action. Iff the
615 // reduced production is ε, $1 is possibly out of range.
616 if yyp+1 >= len(yyS) {
617 nyys := make([]yySymType, len(yyS)*2)
623 /* consult goto table to find next state */
626 yyj := yyg + yyS[yyp].yys + 1
632 if yyChk[yystate] != -yyn {
636 // dummy call; replaced with literal code
642 stmtline = asm.Lineno
647 yyS[yypt-1].sym = asm.LabelLookup(yyS[yypt-1].sym)
648 if yyS[yypt-1].sym.Type == LLAB && yyS[yypt-1].sym.Value != int64(asm.PC) {
649 yyerror("redeclaration of %s", yyS[yypt-1].sym.Labelname)
651 yyS[yypt-1].sym.Type = LLAB
652 yyS[yypt-1].sym.Value = int64(asm.PC)
657 yyS[yypt-3].sym.Type = LVAR
658 yyS[yypt-3].sym.Value = int64(yyS[yypt-1].lval)
663 if yyS[yypt-3].sym.Value != int64(yyS[yypt-1].lval) {
664 yyerror("redeclaration of %s", yyS[yypt-3].sym.Name)
666 yyS[yypt-3].sym.Value = int64(yyS[yypt-1].lval)
671 outcode(yyS[yypt-6].lval, yyS[yypt-5].lval, &yyS[yypt-4].addr, yyS[yypt-2].lval, &yyS[yypt-0].addr)
676 outcode(yyS[yypt-5].lval, yyS[yypt-4].lval, &yyS[yypt-3].addr, yyS[yypt-1].lval, &nullgen)
681 outcode(yyS[yypt-4].lval, yyS[yypt-3].lval, &yyS[yypt-2].addr, NREG, &yyS[yypt-0].addr)
686 outcode(yyS[yypt-4].lval, yyS[yypt-3].lval, &yyS[yypt-2].addr, NREG, &yyS[yypt-0].addr)
691 outcode(yyS[yypt-4].lval, yyS[yypt-3].lval, &yyS[yypt-2].addr, NREG, &yyS[yypt-0].addr)
696 outcode(yyS[yypt-3].lval, yyS[yypt-2].lval, &nullgen, NREG, &yyS[yypt-0].addr)
701 outcode(yyS[yypt-3].lval, yyS[yypt-2].lval, &nullgen, NREG, &yyS[yypt-0].addr)
706 outcode(yyS[yypt-2].lval, Always, &nullgen, NREG, &yyS[yypt-0].addr)
711 outcode(yyS[yypt-2].lval, Always, &nullgen, NREG, &yyS[yypt-0].addr)
716 outcode(yyS[yypt-3].lval, yyS[yypt-2].lval, &nullgen, NREG, &yyS[yypt-0].addr)
721 outcode(yyS[yypt-5].lval, yyS[yypt-4].lval, &yyS[yypt-3].addr, yyS[yypt-1].lval, &nullgen)
730 g.Offset = int64(yyS[yypt-1].lval)
731 outcode(yyS[yypt-6].lval, yyS[yypt-5].lval, &yyS[yypt-4].addr, NREG, &g)
740 g.Offset = int64(yyS[yypt-3].lval)
741 outcode(yyS[yypt-6].lval, yyS[yypt-5].lval, &g, NREG, &yyS[yypt-0].addr)
746 outcode(yyS[yypt-6].lval, yyS[yypt-5].lval, &yyS[yypt-2].addr, int32(yyS[yypt-4].addr.Reg), &yyS[yypt-0].addr)
751 outcode(yyS[yypt-5].lval, yyS[yypt-4].lval, &yyS[yypt-1].addr, int32(yyS[yypt-3].addr.Reg), &yyS[yypt-3].addr)
756 outcode(yyS[yypt-5].lval, yyS[yypt-4].lval, &yyS[yypt-2].addr, int32(yyS[yypt-0].addr.Reg), &yyS[yypt-0].addr)
761 outcode(yyS[yypt-2].lval, yyS[yypt-1].lval, &nullgen, NREG, &nullgen)
766 asm.Settext(yyS[yypt-2].addr.Sym)
767 yyS[yypt-0].addr.Type_ = D_CONST2
768 yyS[yypt-0].addr.Offset2 = -obj.ArgsSizeUnknown
769 outcode(yyS[yypt-3].lval, Always, &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
774 asm.Settext(yyS[yypt-4].addr.Sym)
775 yyS[yypt-0].addr.Type_ = D_CONST2
776 yyS[yypt-0].addr.Offset2 = -obj.ArgsSizeUnknown
777 outcode(yyS[yypt-5].lval, Always, &yyS[yypt-4].addr, yyS[yypt-2].lval, &yyS[yypt-0].addr)
782 asm.Settext(yyS[yypt-6].addr.Sym)
783 yyS[yypt-2].addr.Type_ = D_CONST2
784 yyS[yypt-2].addr.Offset2 = yyS[yypt-0].lval
785 outcode(yyS[yypt-7].lval, Always, &yyS[yypt-6].addr, yyS[yypt-4].lval, &yyS[yypt-2].addr)
790 outcode(yyS[yypt-5].lval, Always, &yyS[yypt-4].addr, yyS[yypt-2].lval, &yyS[yypt-0].addr)
795 outcode(yyS[yypt-3].lval, yyS[yypt-2].lval, &yyS[yypt-1].addr, NREG, &nullgen)
800 outcode(yyS[yypt-2].lval, Always, &nullgen, NREG, &yyS[yypt-0].addr)
805 outcode(yyS[yypt-4].lval, yyS[yypt-3].lval, &yyS[yypt-2].addr, NREG, &yyS[yypt-0].addr)
810 outcode(yyS[yypt-4].lval, yyS[yypt-3].lval, &yyS[yypt-2].addr, NREG, &yyS[yypt-0].addr)
815 outcode(yyS[yypt-6].lval, yyS[yypt-5].lval, &yyS[yypt-4].addr, yyS[yypt-2].lval, &yyS[yypt-0].addr)
820 outcode(yyS[yypt-5].lval, yyS[yypt-4].lval, &yyS[yypt-3].addr, int32(yyS[yypt-1].addr.Reg), &nullgen)
830 (0xe << 24) | /* opcode */
831 (yyS[yypt-11].lval << 20) | /* MCR/MRC */
832 (yyS[yypt-10].lval << 28) | /* scond */
833 ((yyS[yypt-9].lval & 15) << 8) | /* coprocessor number */
834 ((yyS[yypt-7].lval & 7) << 21) | /* coprocessor operation */
835 ((yyS[yypt-5].lval & 15) << 12) | /* arm register */
836 ((yyS[yypt-3].lval & 15) << 16) | /* Crn */
837 ((yyS[yypt-1].lval & 15) << 0) | /* Crm */
838 ((yyS[yypt-0].lval & 7) << 5) | /* coprocessor information */
839 (1 << 4)) /* must be set */
840 outcode(AMRC, Always, &nullgen, NREG, &g)
845 outcode(yyS[yypt-6].lval, yyS[yypt-5].lval, &yyS[yypt-4].addr, int32(yyS[yypt-2].addr.Reg), &yyS[yypt-0].addr)
850 yyS[yypt-2].addr.Type_ = D_REGREG2
851 yyS[yypt-2].addr.Offset = int64(yyS[yypt-0].lval)
852 outcode(yyS[yypt-8].lval, yyS[yypt-7].lval, &yyS[yypt-6].addr, int32(yyS[yypt-4].addr.Reg), &yyS[yypt-2].addr)
857 outcode(yyS[yypt-1].lval, Always, &yyS[yypt-0].addr, NREG, &nullgen)
862 if yyS[yypt-2].addr.Type_ != D_CONST || yyS[yypt-0].addr.Type_ != D_CONST {
863 yyerror("arguments to PCDATA must be integer constants")
865 outcode(yyS[yypt-3].lval, Always, &yyS[yypt-2].addr, NREG, &yyS[yypt-0].addr)
870 if yyS[yypt-2].addr.Type_ != D_CONST {
871 yyerror("index for FUNCDATA must be integer constant")
873 if yyS[yypt-0].addr.Type_ != D_EXTERN && yyS[yypt-0].addr.Type_ != D_STATIC && yyS[yypt-0].addr.Type_ != D_OREG {
874 yyerror("value for FUNCDATA must be symbol reference")
876 outcode(yyS[yypt-3].lval, Always, &yyS[yypt-2].addr, NREG, &yyS[yypt-0].addr)
881 outcode(yyS[yypt-1].lval, Always, &nullgen, NREG, &nullgen)
891 yyVAL.lval = (yyS[yypt-1].lval & ^C_SCOND) | yyS[yypt-0].lval
896 yyVAL.lval = yyS[yypt-1].lval | yyS[yypt-0].lval
902 yyVAL.addr.Type_ = D_BRANCH
903 yyVAL.addr.Offset = int64(yyS[yypt-3].lval) + int64(asm.PC)
908 yyS[yypt-1].sym = asm.LabelLookup(yyS[yypt-1].sym)
910 if asm.Pass == 2 && yyS[yypt-1].sym.Type != LLAB {
911 yyerror("undefined label: %s", yyS[yypt-1].sym.Labelname)
913 yyVAL.addr.Type_ = D_BRANCH
914 yyVAL.addr.Offset = yyS[yypt-1].sym.Value + int64(yyS[yypt-0].lval)
920 yyVAL.addr.Type_ = D_CONST
921 yyVAL.addr.Offset = int64(yyS[yypt-0].lval)
926 yyVAL.addr = yyS[yypt-0].addr
927 yyVAL.addr.Type_ = D_CONST
932 yyVAL.addr = yyS[yypt-0].addr
933 yyVAL.addr.Type_ = D_OCONST
939 yyVAL.addr.Type_ = D_SCONST
940 yyVAL.addr.U.Sval = yyS[yypt-0].sval
943 yyVAL.addr = yyS[yypt-0].addr
948 yyVAL.addr.Type_ = D_FCONST
949 yyVAL.addr.U.Dval = yyS[yypt-0].dval
955 yyVAL.addr.Type_ = D_FCONST
956 yyVAL.addr.U.Dval = -yyS[yypt-0].dval
961 yyVAL.lval = 1 << uint(yyS[yypt-0].lval)
967 for i := yyS[yypt-2].lval; i <= yyS[yypt-0].lval; i++ {
968 yyVAL.lval |= 1 << uint(i)
970 for i := yyS[yypt-0].lval; i <= yyS[yypt-2].lval; i++ {
971 yyVAL.lval |= 1 << uint(i)
977 yyVAL.lval = (1 << uint(yyS[yypt-2].lval)) | yyS[yypt-0].lval
980 yyVAL.addr = yyS[yypt-0].addr
982 yyVAL.addr = yyS[yypt-0].addr
984 yyVAL.addr = yyS[yypt-0].addr
988 yyVAL.addr = yyS[yypt-3].addr
989 yyVAL.addr.Reg = int8(yyS[yypt-1].lval)
995 yyVAL.addr.Type_ = D_PSR
996 yyVAL.addr.Reg = int8(yyS[yypt-0].lval)
1001 yyVAL.addr = nullgen
1002 yyVAL.addr.Type_ = D_FPCR
1003 yyVAL.addr.Reg = int8(yyS[yypt-0].lval)
1008 yyVAL.addr = nullgen
1009 yyVAL.addr.Type_ = D_OREG
1010 yyVAL.addr.Offset = int64(yyS[yypt-0].lval)
1013 yyVAL.addr = yyS[yypt-0].addr
1015 yyVAL.addr = yyS[yypt-0].addr
1017 yyVAL.addr = yyS[yypt-0].addr
1021 yyVAL.addr = yyS[yypt-0].addr
1022 if yyS[yypt-0].addr.Name != D_EXTERN && yyS[yypt-0].addr.Name != D_STATIC {
1028 yyVAL.addr = nullgen
1029 yyVAL.addr.Type_ = D_OREG
1030 yyVAL.addr.Reg = int8(yyS[yypt-1].lval)
1031 yyVAL.addr.Offset = 0
1034 yyVAL.addr = yyS[yypt-0].addr
1038 yyVAL.addr = nullgen
1039 yyVAL.addr.Type_ = D_OREG
1040 yyVAL.addr.Reg = int8(yyS[yypt-1].lval)
1041 yyVAL.addr.Offset = int64(yyS[yypt-3].lval)
1044 yyVAL.addr = yyS[yypt-0].addr
1048 yyVAL.addr = yyS[yypt-3].addr
1049 yyVAL.addr.Type_ = D_OREG
1050 yyVAL.addr.Reg = int8(yyS[yypt-1].lval)
1053 yyVAL.addr = yyS[yypt-0].addr
1055 yyVAL.addr = yyS[yypt-0].addr
1057 yyVAL.addr = yyS[yypt-0].addr
1059 yyVAL.addr = yyS[yypt-0].addr
1063 yyVAL.addr = nullgen
1064 yyVAL.addr.Type_ = D_CONST
1065 yyVAL.addr.Offset = int64(yyS[yypt-0].lval)
1070 yyVAL.addr = nullgen
1071 yyVAL.addr.Type_ = D_REG
1072 yyVAL.addr.Reg = int8(yyS[yypt-0].lval)
1077 yyVAL.addr = nullgen
1078 yyVAL.addr.Type_ = D_REGREG
1079 yyVAL.addr.Reg = int8(yyS[yypt-3].lval)
1080 yyVAL.addr.Offset = int64(yyS[yypt-1].lval)
1085 yyVAL.addr = nullgen
1086 yyVAL.addr.Type_ = D_SHIFT
1087 yyVAL.addr.Offset = int64(yyS[yypt-3].lval) | int64(yyS[yypt-0].lval) | (0 << 5)
1092 yyVAL.addr = nullgen
1093 yyVAL.addr.Type_ = D_SHIFT
1094 yyVAL.addr.Offset = int64(yyS[yypt-3].lval) | int64(yyS[yypt-0].lval) | (1 << 5)
1099 yyVAL.addr = nullgen
1100 yyVAL.addr.Type_ = D_SHIFT
1101 yyVAL.addr.Offset = int64(yyS[yypt-3].lval) | int64(yyS[yypt-0].lval) | (2 << 5)
1106 yyVAL.addr = nullgen
1107 yyVAL.addr.Type_ = D_SHIFT
1108 yyVAL.addr.Offset = int64(yyS[yypt-3].lval) | int64(yyS[yypt-0].lval) | (3 << 5)
1113 if yyVAL.lval < 0 || yyVAL.lval >= 16 {
1114 print("register value out of range\n")
1116 yyVAL.lval = ((yyS[yypt-0].lval & 15) << 8) | (1 << 4)
1121 if yyVAL.lval < 0 || yyVAL.lval >= 32 {
1122 print("shift value out of range\n")
1124 yyVAL.lval = (yyS[yypt-0].lval & 31) << 7
1127 yyVAL.lval = yyS[yypt-0].lval
1136 if yyS[yypt-1].lval < 0 || yyS[yypt-1].lval >= NREG {
1137 print("register value out of range\n")
1139 yyVAL.lval = yyS[yypt-1].lval
1142 yyVAL.lval = yyS[yypt-0].lval
1149 yyVAL.lval = yyS[yypt-0].lval
1153 if yyS[yypt-1].lval < 0 || yyS[yypt-1].lval >= NREG {
1154 print("register value out of range\n")
1156 yyVAL.lval = yyS[yypt-1].lval
1159 yyVAL.addr = yyS[yypt-0].addr
1161 yyVAL.addr = yyS[yypt-0].addr
1165 yyVAL.addr = nullgen
1166 yyVAL.addr.Type_ = D_FREG
1167 yyVAL.addr.Reg = int8(yyS[yypt-0].lval)
1172 yyVAL.addr = nullgen
1173 yyVAL.addr.Type_ = D_FREG
1174 yyVAL.addr.Reg = int8(yyS[yypt-1].lval)
1179 yyVAL.addr = nullgen
1180 yyVAL.addr.Type_ = D_OREG
1181 yyVAL.addr.Name = int8(yyS[yypt-1].lval)
1182 yyVAL.addr.Sym = nil
1183 yyVAL.addr.Offset = int64(yyS[yypt-3].lval)
1188 yyVAL.addr = nullgen
1189 yyVAL.addr.Type_ = D_OREG
1190 yyVAL.addr.Name = int8(yyS[yypt-1].lval)
1191 yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyS[yypt-4].sym.Name, 0)
1192 yyVAL.addr.Offset = int64(yyS[yypt-3].lval)
1197 yyVAL.addr = nullgen
1198 yyVAL.addr.Type_ = D_OREG
1199 yyVAL.addr.Name = D_STATIC
1200 yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyS[yypt-6].sym.Name, 1)
1201 yyVAL.addr.Offset = int64(yyS[yypt-3].lval)
1211 yyVAL.lval = yyS[yypt-0].lval
1216 yyVAL.lval = -yyS[yypt-0].lval
1219 yyVAL.lval = yyS[yypt-0].lval
1221 yyVAL.lval = yyS[yypt-0].lval
1223 yyVAL.lval = yyS[yypt-0].lval
1225 yyVAL.lval = yyS[yypt-0].lval
1229 yyVAL.lval = int32(yyS[yypt-0].sym.Value)
1234 yyVAL.lval = -yyS[yypt-0].lval
1239 yyVAL.lval = yyS[yypt-0].lval
1244 yyVAL.lval = ^yyS[yypt-0].lval
1249 yyVAL.lval = yyS[yypt-1].lval
1259 yyVAL.lval = yyS[yypt-0].lval
1262 yyVAL.lval = yyS[yypt-0].lval
1266 yyVAL.lval = yyS[yypt-2].lval + yyS[yypt-0].lval
1271 yyVAL.lval = yyS[yypt-2].lval - yyS[yypt-0].lval
1276 yyVAL.lval = yyS[yypt-2].lval * yyS[yypt-0].lval
1281 yyVAL.lval = yyS[yypt-2].lval / yyS[yypt-0].lval
1286 yyVAL.lval = yyS[yypt-2].lval % yyS[yypt-0].lval
1291 yyVAL.lval = yyS[yypt-3].lval << uint(yyS[yypt-0].lval)
1296 yyVAL.lval = yyS[yypt-3].lval >> uint(yyS[yypt-0].lval)
1301 yyVAL.lval = yyS[yypt-2].lval & yyS[yypt-0].lval
1306 yyVAL.lval = yyS[yypt-2].lval ^ yyS[yypt-0].lval
1311 yyVAL.lval = yyS[yypt-2].lval | yyS[yypt-0].lval
1314 goto yystack /* stack new state and value */