delocate: support floating point literals in AArch64 asm. fcmp supports comparing a register against zero without needing to load zero into a register. This is expressed in the asm as: fcmp d0, #0.0 I.e. a literal floating-point zero, which delocate cannot currently parse. LLVM starts generating such instructions with [1]. [1] https://github.com/llvm/llvm-project/commit/97ff96173abc0e914d5c8716ccc6356342aca043 Bug: 383435112 Change-Id: I9c2cdd9f3377f56ba56a7287beed26061c2ac98f Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/74227 Reviewed-by: David Benjamin <davidben@google.com> Commit-Queue: Adam Langley <agl@google.com>
diff --git a/util/fipstools/delocate/delocate.peg b/util/fipstools/delocate/delocate.peg index 1c41714..9ebe647 100644 --- a/util/fipstools/delocate/delocate.peg +++ b/util/fipstools/delocate/delocate.peg
@@ -77,8 +77,10 @@ TOCRefHigh <- '.TOC.-' ('0b' / ('.L' [a-zA-Z_0-9]+)) "@ha" TOCRefLow <- '.TOC.-' ('0b' / ('.L' [a-zA-Z_0-9]+)) "@l" IndirectionIndicator <- '*' +Float <- [0-9]+ '.' [0-9]* RegisterOrConstant <- (('%'[[A-Z]][[A-Z0-9]]*) / ('$'? ((Offset Offset) / Offset)) / + ('#' Float ) / ('#' Offset ('*' [0-9]+ ('-' [0-9] [0-9]*)?)? ) / ('#' '~'? '(' [0-9] WS? "<<" WS? [0-9] ')' ) / ARMRegister)
diff --git a/util/fipstools/delocate/delocate.peg.go b/util/fipstools/delocate/delocate.peg.go index ee8a108..7baa0e7 100644 --- a/util/fipstools/delocate/delocate.peg.go +++ b/util/fipstools/delocate/delocate.peg.go
@@ -61,6 +61,7 @@ ruleTOCRefHigh ruleTOCRefLow ruleIndirectionIndicator + ruleFloat ruleRegisterOrConstant ruleARMConstantTweak ruleARMRegister @@ -125,6 +126,7 @@ "TOCRefHigh", "TOCRefLow", "IndirectionIndicator", + "Float", "RegisterOrConstant", "ARMConstantTweak", "ARMRegister", @@ -256,7 +258,7 @@ type Asm struct { Buffer string buffer []rune - rules [61]func() bool + rules [62]func() bool parse func(rule ...int) error reset func() Pretty bool @@ -4626,424 +4628,428 @@ position, tokenIndex = position549, tokenIndex549 return false }, - /* 43 RegisterOrConstant <- <((('%' ([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))*) / ('$'? ((Offset Offset) / Offset)) / ('#' Offset ('*' [0-9]+ ('-' [0-9] [0-9]*)?)?) / ('#' '~'? '(' [0-9] WS? ('<' '<') WS? [0-9] ')') / ARMRegister) !('f' / 'b' / ':' / '(' / '+' / '-'))> */ + /* 43 Float <- <([0-9]+ '.' [0-9]*)> */ func() bool { position551, tokenIndex551 := position, tokenIndex { position552 := position + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l551 + } + position++ + l553: { - position553, tokenIndex553 := position, tokenIndex - if buffer[position] != rune('%') { + position554, tokenIndex554 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { goto l554 } position++ - { - position555, tokenIndex555 := position, tokenIndex - if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l556 - } - position++ - goto l555 - l556: - position, tokenIndex = position555, tokenIndex555 - if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l554 - } - position++ - } - l555: - l557: - { - position558, tokenIndex558 := position, tokenIndex - { - position559, tokenIndex559 := position, tokenIndex - if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l560 - } - position++ - goto l559 - l560: - position, tokenIndex = position559, tokenIndex559 - if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l561 - } - position++ - goto l559 - l561: - position, tokenIndex = position559, tokenIndex559 - { - position562, tokenIndex562 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l563 - } - position++ - goto l562 - l563: - position, tokenIndex = position562, tokenIndex562 - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l558 - } - position++ - } - l562: - } - l559: - goto l557 - l558: - position, tokenIndex = position558, tokenIndex558 - } goto l553 l554: - position, tokenIndex = position553, tokenIndex553 - { - position565, tokenIndex565 := position, tokenIndex - if buffer[position] != rune('$') { - goto l565 - } - position++ - goto l566 - l565: - position, tokenIndex = position565, tokenIndex565 - } - l566: - { - position567, tokenIndex567 := position, tokenIndex - if !_rules[ruleOffset]() { - goto l568 - } - if !_rules[ruleOffset]() { - goto l568 - } - goto l567 - l568: - position, tokenIndex = position567, tokenIndex567 - if !_rules[ruleOffset]() { - goto l564 - } - } - l567: - goto l553 - l564: - position, tokenIndex = position553, tokenIndex553 - if buffer[position] != rune('#') { - goto l569 - } - position++ - if !_rules[ruleOffset]() { - goto l569 - } - { - position570, tokenIndex570 := position, tokenIndex - if buffer[position] != rune('*') { - goto l570 - } - position++ - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l570 - } - position++ - l572: - { - position573, tokenIndex573 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l573 - } - position++ - goto l572 - l573: - position, tokenIndex = position573, tokenIndex573 - } - { - position574, tokenIndex574 := position, tokenIndex - if buffer[position] != rune('-') { - goto l574 - } - position++ - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l574 - } - position++ - l576: - { - position577, tokenIndex577 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l577 - } - position++ - goto l576 - l577: - position, tokenIndex = position577, tokenIndex577 - } - goto l575 - l574: - position, tokenIndex = position574, tokenIndex574 - } - l575: - goto l571 - l570: - position, tokenIndex = position570, tokenIndex570 - } - l571: - goto l553 - l569: - position, tokenIndex = position553, tokenIndex553 - if buffer[position] != rune('#') { - goto l578 - } - position++ - { - position579, tokenIndex579 := position, tokenIndex - if buffer[position] != rune('~') { - goto l579 - } - position++ - goto l580 - l579: - position, tokenIndex = position579, tokenIndex579 - } - l580: - if buffer[position] != rune('(') { - goto l578 - } - position++ - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l578 - } - position++ - { - position581, tokenIndex581 := position, tokenIndex - if !_rules[ruleWS]() { - goto l581 - } - goto l582 - l581: - position, tokenIndex = position581, tokenIndex581 - } - l582: - if buffer[position] != rune('<') { - goto l578 - } - position++ - if buffer[position] != rune('<') { - goto l578 - } - position++ - { - position583, tokenIndex583 := position, tokenIndex - if !_rules[ruleWS]() { - goto l583 - } - goto l584 - l583: - position, tokenIndex = position583, tokenIndex583 - } - l584: - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l578 - } - position++ - if buffer[position] != rune(')') { - goto l578 - } - position++ - goto l553 - l578: - position, tokenIndex = position553, tokenIndex553 - if !_rules[ruleARMRegister]() { - goto l551 - } + position, tokenIndex = position554, tokenIndex554 } - l553: - { - position585, tokenIndex585 := position, tokenIndex - { - position586, tokenIndex586 := position, tokenIndex - if buffer[position] != rune('f') { - goto l587 - } - position++ - goto l586 - l587: - position, tokenIndex = position586, tokenIndex586 - if buffer[position] != rune('b') { - goto l588 - } - position++ - goto l586 - l588: - position, tokenIndex = position586, tokenIndex586 - if buffer[position] != rune(':') { - goto l589 - } - position++ - goto l586 - l589: - position, tokenIndex = position586, tokenIndex586 - if buffer[position] != rune('(') { - goto l590 - } - position++ - goto l586 - l590: - position, tokenIndex = position586, tokenIndex586 - if buffer[position] != rune('+') { - goto l591 - } - position++ - goto l586 - l591: - position, tokenIndex = position586, tokenIndex586 - if buffer[position] != rune('-') { - goto l585 - } - position++ - } - l586: + if buffer[position] != rune('.') { goto l551 - l585: - position, tokenIndex = position585, tokenIndex585 } - add(ruleRegisterOrConstant, position552) + position++ + l555: + { + position556, tokenIndex556 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l556 + } + position++ + goto l555 + l556: + position, tokenIndex = position556, tokenIndex556 + } + add(ruleFloat, position552) } return true l551: position, tokenIndex = position551, tokenIndex551 return false }, - /* 44 ARMConstantTweak <- <((((('u' / 's') (('x' / 'X') ('t' / 'T')) ('x' / 'w' / 'h' / 'b')) / (('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R'))) (WS '#' Offset)?) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' ('v' / 'V') ('l' / 'L')) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' '#' [0-9]))> */ + /* 44 RegisterOrConstant <- <((('%' ([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))*) / ('$'? ((Offset Offset) / Offset)) / ('#' Float) / ('#' Offset ('*' [0-9]+ ('-' [0-9] [0-9]*)?)?) / ('#' '~'? '(' [0-9] WS? ('<' '<') WS? [0-9] ')') / ARMRegister) !('f' / 'b' / ':' / '(' / '+' / '-'))> */ func() bool { - position592, tokenIndex592 := position, tokenIndex + position557, tokenIndex557 := position, tokenIndex { - position593 := position + position558 := position { - position594, tokenIndex594 := position, tokenIndex + position559, tokenIndex559 := position, tokenIndex + if buffer[position] != rune('%') { + goto l560 + } + position++ { - position596, tokenIndex596 := position, tokenIndex + position561, tokenIndex561 := position, tokenIndex + if c := buffer[position]; c < rune('a') || c > rune('z') { + goto l562 + } + position++ + goto l561 + l562: + position, tokenIndex = position561, tokenIndex561 + if c := buffer[position]; c < rune('A') || c > rune('Z') { + goto l560 + } + position++ + } + l561: + l563: + { + position564, tokenIndex564 := position, tokenIndex { - position598, tokenIndex598 := position, tokenIndex - if buffer[position] != rune('u') { - goto l599 + position565, tokenIndex565 := position, tokenIndex + if c := buffer[position]; c < rune('a') || c > rune('z') { + goto l566 } position++ + goto l565 + l566: + position, tokenIndex = position565, tokenIndex565 + if c := buffer[position]; c < rune('A') || c > rune('Z') { + goto l567 + } + position++ + goto l565 + l567: + position, tokenIndex = position565, tokenIndex565 + { + position568, tokenIndex568 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l569 + } + position++ + goto l568 + l569: + position, tokenIndex = position568, tokenIndex568 + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l564 + } + position++ + } + l568: + } + l565: + goto l563 + l564: + position, tokenIndex = position564, tokenIndex564 + } + goto l559 + l560: + position, tokenIndex = position559, tokenIndex559 + { + position571, tokenIndex571 := position, tokenIndex + if buffer[position] != rune('$') { + goto l571 + } + position++ + goto l572 + l571: + position, tokenIndex = position571, tokenIndex571 + } + l572: + { + position573, tokenIndex573 := position, tokenIndex + if !_rules[ruleOffset]() { + goto l574 + } + if !_rules[ruleOffset]() { + goto l574 + } + goto l573 + l574: + position, tokenIndex = position573, tokenIndex573 + if !_rules[ruleOffset]() { + goto l570 + } + } + l573: + goto l559 + l570: + position, tokenIndex = position559, tokenIndex559 + if buffer[position] != rune('#') { + goto l575 + } + position++ + if !_rules[ruleFloat]() { + goto l575 + } + goto l559 + l575: + position, tokenIndex = position559, tokenIndex559 + if buffer[position] != rune('#') { + goto l576 + } + position++ + if !_rules[ruleOffset]() { + goto l576 + } + { + position577, tokenIndex577 := position, tokenIndex + if buffer[position] != rune('*') { + goto l577 + } + position++ + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l577 + } + position++ + l579: + { + position580, tokenIndex580 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l580 + } + position++ + goto l579 + l580: + position, tokenIndex = position580, tokenIndex580 + } + { + position581, tokenIndex581 := position, tokenIndex + if buffer[position] != rune('-') { + goto l581 + } + position++ + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l581 + } + position++ + l583: + { + position584, tokenIndex584 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l584 + } + position++ + goto l583 + l584: + position, tokenIndex = position584, tokenIndex584 + } + goto l582 + l581: + position, tokenIndex = position581, tokenIndex581 + } + l582: + goto l578 + l577: + position, tokenIndex = position577, tokenIndex577 + } + l578: + goto l559 + l576: + position, tokenIndex = position559, tokenIndex559 + if buffer[position] != rune('#') { + goto l585 + } + position++ + { + position586, tokenIndex586 := position, tokenIndex + if buffer[position] != rune('~') { + goto l586 + } + position++ + goto l587 + l586: + position, tokenIndex = position586, tokenIndex586 + } + l587: + if buffer[position] != rune('(') { + goto l585 + } + position++ + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l585 + } + position++ + { + position588, tokenIndex588 := position, tokenIndex + if !_rules[ruleWS]() { + goto l588 + } + goto l589 + l588: + position, tokenIndex = position588, tokenIndex588 + } + l589: + if buffer[position] != rune('<') { + goto l585 + } + position++ + if buffer[position] != rune('<') { + goto l585 + } + position++ + { + position590, tokenIndex590 := position, tokenIndex + if !_rules[ruleWS]() { + goto l590 + } + goto l591 + l590: + position, tokenIndex = position590, tokenIndex590 + } + l591: + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l585 + } + position++ + if buffer[position] != rune(')') { + goto l585 + } + position++ + goto l559 + l585: + position, tokenIndex = position559, tokenIndex559 + if !_rules[ruleARMRegister]() { + goto l557 + } + } + l559: + { + position592, tokenIndex592 := position, tokenIndex + { + position593, tokenIndex593 := position, tokenIndex + if buffer[position] != rune('f') { + goto l594 + } + position++ + goto l593 + l594: + position, tokenIndex = position593, tokenIndex593 + if buffer[position] != rune('b') { + goto l595 + } + position++ + goto l593 + l595: + position, tokenIndex = position593, tokenIndex593 + if buffer[position] != rune(':') { + goto l596 + } + position++ + goto l593 + l596: + position, tokenIndex = position593, tokenIndex593 + if buffer[position] != rune('(') { + goto l597 + } + position++ + goto l593 + l597: + position, tokenIndex = position593, tokenIndex593 + if buffer[position] != rune('+') { goto l598 - l599: - position, tokenIndex = position598, tokenIndex598 - if buffer[position] != rune('s') { - goto l597 - } - position++ } + position++ + goto l593 l598: - { - position600, tokenIndex600 := position, tokenIndex - if buffer[position] != rune('x') { - goto l601 - } - position++ - goto l600 - l601: - position, tokenIndex = position600, tokenIndex600 - if buffer[position] != rune('X') { - goto l597 - } - position++ + position, tokenIndex = position593, tokenIndex593 + if buffer[position] != rune('-') { + goto l592 } - l600: + position++ + } + l593: + goto l557 + l592: + position, tokenIndex = position592, tokenIndex592 + } + add(ruleRegisterOrConstant, position558) + } + return true + l557: + position, tokenIndex = position557, tokenIndex557 + return false + }, + /* 45 ARMConstantTweak <- <((((('u' / 's') (('x' / 'X') ('t' / 'T')) ('x' / 'w' / 'h' / 'b')) / (('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R'))) (WS '#' Offset)?) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' ('v' / 'V') ('l' / 'L')) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' '#' [0-9]))> */ + func() bool { + position599, tokenIndex599 := position, tokenIndex + { + position600 := position + { + position601, tokenIndex601 := position, tokenIndex + { + position603, tokenIndex603 := position, tokenIndex { - position602, tokenIndex602 := position, tokenIndex - if buffer[position] != rune('t') { - goto l603 - } - position++ - goto l602 - l603: - position, tokenIndex = position602, tokenIndex602 - if buffer[position] != rune('T') { - goto l597 - } - position++ - } - l602: - { - position604, tokenIndex604 := position, tokenIndex - if buffer[position] != rune('x') { - goto l605 - } - position++ - goto l604 - l605: - position, tokenIndex = position604, tokenIndex604 - if buffer[position] != rune('w') { + position605, tokenIndex605 := position, tokenIndex + if buffer[position] != rune('u') { goto l606 } position++ - goto l604 + goto l605 l606: - position, tokenIndex = position604, tokenIndex604 - if buffer[position] != rune('h') { - goto l607 - } - position++ - goto l604 - l607: - position, tokenIndex = position604, tokenIndex604 - if buffer[position] != rune('b') { - goto l597 + position, tokenIndex = position605, tokenIndex605 + if buffer[position] != rune('s') { + goto l604 } position++ } - l604: - goto l596 - l597: - position, tokenIndex = position596, tokenIndex596 + l605: + { + position607, tokenIndex607 := position, tokenIndex + if buffer[position] != rune('x') { + goto l608 + } + position++ + goto l607 + l608: + position, tokenIndex = position607, tokenIndex607 + if buffer[position] != rune('X') { + goto l604 + } + position++ + } + l607: { position609, tokenIndex609 := position, tokenIndex - if buffer[position] != rune('l') { + if buffer[position] != rune('t') { goto l610 } position++ goto l609 l610: position, tokenIndex = position609, tokenIndex609 - if buffer[position] != rune('L') { - goto l608 + if buffer[position] != rune('T') { + goto l604 } position++ } l609: { position611, tokenIndex611 := position, tokenIndex - if buffer[position] != rune('s') { + if buffer[position] != rune('x') { goto l612 } position++ goto l611 l612: position, tokenIndex = position611, tokenIndex611 - if buffer[position] != rune('S') { - goto l608 + if buffer[position] != rune('w') { + goto l613 + } + position++ + goto l611 + l613: + position, tokenIndex = position611, tokenIndex611 + if buffer[position] != rune('h') { + goto l614 + } + position++ + goto l611 + l614: + position, tokenIndex = position611, tokenIndex611 + if buffer[position] != rune('b') { + goto l604 } position++ } l611: - { - position613, tokenIndex613 := position, tokenIndex - if buffer[position] != rune('l') { - goto l614 - } - position++ - goto l613 - l614: - position, tokenIndex = position613, tokenIndex613 - if buffer[position] != rune('L') { - goto l608 - } - position++ - } - l613: - goto l596 - l608: - position, tokenIndex = position596, tokenIndex596 + goto l603 + l604: + position, tokenIndex = position603, tokenIndex603 { position616, tokenIndex616 := position, tokenIndex if buffer[position] != rune('l') { @@ -5076,32 +5082,32 @@ l618: { position620, tokenIndex620 := position, tokenIndex - if buffer[position] != rune('r') { + if buffer[position] != rune('l') { goto l621 } position++ goto l620 l621: position, tokenIndex = position620, tokenIndex620 - if buffer[position] != rune('R') { + if buffer[position] != rune('L') { goto l615 } position++ } l620: - goto l596 + goto l603 l615: - position, tokenIndex = position596, tokenIndex596 + position, tokenIndex = position603, tokenIndex603 { position623, tokenIndex623 := position, tokenIndex - if buffer[position] != rune('r') { + if buffer[position] != rune('l') { goto l624 } position++ goto l623 l624: position, tokenIndex = position623, tokenIndex623 - if buffer[position] != rune('R') { + if buffer[position] != rune('L') { goto l622 } position++ @@ -5109,14 +5115,14 @@ l623: { position625, tokenIndex625 := position, tokenIndex - if buffer[position] != rune('o') { + if buffer[position] != rune('s') { goto l626 } position++ goto l625 l626: position, tokenIndex = position625, tokenIndex625 - if buffer[position] != rune('O') { + if buffer[position] != rune('S') { goto l622 } position++ @@ -5137,390 +5143,390 @@ position++ } l627: - goto l596 + goto l603 l622: - position, tokenIndex = position596, tokenIndex596 + position, tokenIndex = position603, tokenIndex603 { - position629, tokenIndex629 := position, tokenIndex - if buffer[position] != rune('a') { - goto l630 - } - position++ - goto l629 - l630: - position, tokenIndex = position629, tokenIndex629 - if buffer[position] != rune('A') { - goto l595 - } - position++ - } - l629: - { - position631, tokenIndex631 := position, tokenIndex - if buffer[position] != rune('s') { - goto l632 - } - position++ - goto l631 - l632: - position, tokenIndex = position631, tokenIndex631 - if buffer[position] != rune('S') { - goto l595 - } - position++ - } - l631: - { - position633, tokenIndex633 := position, tokenIndex + position630, tokenIndex630 := position, tokenIndex if buffer[position] != rune('r') { - goto l634 + goto l631 } position++ - goto l633 - l634: - position, tokenIndex = position633, tokenIndex633 + goto l630 + l631: + position, tokenIndex = position630, tokenIndex630 if buffer[position] != rune('R') { - goto l595 + goto l629 } position++ } - l633: + l630: + { + position632, tokenIndex632 := position, tokenIndex + if buffer[position] != rune('o') { + goto l633 + } + position++ + goto l632 + l633: + position, tokenIndex = position632, tokenIndex632 + if buffer[position] != rune('O') { + goto l629 + } + position++ + } + l632: + { + position634, tokenIndex634 := position, tokenIndex + if buffer[position] != rune('r') { + goto l635 + } + position++ + goto l634 + l635: + position, tokenIndex = position634, tokenIndex634 + if buffer[position] != rune('R') { + goto l629 + } + position++ + } + l634: + goto l603 + l629: + position, tokenIndex = position603, tokenIndex603 + { + position636, tokenIndex636 := position, tokenIndex + if buffer[position] != rune('a') { + goto l637 + } + position++ + goto l636 + l637: + position, tokenIndex = position636, tokenIndex636 + if buffer[position] != rune('A') { + goto l602 + } + position++ + } + l636: + { + position638, tokenIndex638 := position, tokenIndex + if buffer[position] != rune('s') { + goto l639 + } + position++ + goto l638 + l639: + position, tokenIndex = position638, tokenIndex638 + if buffer[position] != rune('S') { + goto l602 + } + position++ + } + l638: + { + position640, tokenIndex640 := position, tokenIndex + if buffer[position] != rune('r') { + goto l641 + } + position++ + goto l640 + l641: + position, tokenIndex = position640, tokenIndex640 + if buffer[position] != rune('R') { + goto l602 + } + position++ + } + l640: } - l596: + l603: { - position635, tokenIndex635 := position, tokenIndex + position642, tokenIndex642 := position, tokenIndex if !_rules[ruleWS]() { - goto l635 + goto l642 } if buffer[position] != rune('#') { - goto l635 + goto l642 } position++ if !_rules[ruleOffset]() { - goto l635 + goto l642 } - goto l636 - l635: - position, tokenIndex = position635, tokenIndex635 - } - l636: - goto l594 - l595: - position, tokenIndex = position594, tokenIndex594 - { - position638, tokenIndex638 := position, tokenIndex - if buffer[position] != rune('m') { - goto l639 - } - position++ - goto l638 - l639: - position, tokenIndex = position638, tokenIndex638 - if buffer[position] != rune('M') { - goto l637 - } - position++ - } - l638: - { - position640, tokenIndex640 := position, tokenIndex - if buffer[position] != rune('u') { - goto l641 - } - position++ - goto l640 - l641: - position, tokenIndex = position640, tokenIndex640 - if buffer[position] != rune('U') { - goto l637 - } - position++ - } - l640: - { - position642, tokenIndex642 := position, tokenIndex - if buffer[position] != rune('l') { - goto l643 - } - position++ - goto l642 - l643: + goto l643 + l642: position, tokenIndex = position642, tokenIndex642 - if buffer[position] != rune('L') { - goto l637 + } + l643: + goto l601 + l602: + position, tokenIndex = position601, tokenIndex601 + { + position645, tokenIndex645 := position, tokenIndex + if buffer[position] != rune('m') { + goto l646 + } + position++ + goto l645 + l646: + position, tokenIndex = position645, tokenIndex645 + if buffer[position] != rune('M') { + goto l644 } position++ } - l642: + l645: + { + position647, tokenIndex647 := position, tokenIndex + if buffer[position] != rune('u') { + goto l648 + } + position++ + goto l647 + l648: + position, tokenIndex = position647, tokenIndex647 + if buffer[position] != rune('U') { + goto l644 + } + position++ + } + l647: + { + position649, tokenIndex649 := position, tokenIndex + if buffer[position] != rune('l') { + goto l650 + } + position++ + goto l649 + l650: + position, tokenIndex = position649, tokenIndex649 + if buffer[position] != rune('L') { + goto l644 + } + position++ + } + l649: if buffer[position] != rune(' ') { - goto l637 + goto l644 } position++ { - position644, tokenIndex644 := position, tokenIndex + position651, tokenIndex651 := position, tokenIndex if buffer[position] != rune('v') { - goto l645 + goto l652 } position++ - goto l644 - l645: - position, tokenIndex = position644, tokenIndex644 + goto l651 + l652: + position, tokenIndex = position651, tokenIndex651 if buffer[position] != rune('V') { - goto l637 + goto l644 } position++ } + l651: + { + position653, tokenIndex653 := position, tokenIndex + if buffer[position] != rune('l') { + goto l654 + } + position++ + goto l653 + l654: + position, tokenIndex = position653, tokenIndex653 + if buffer[position] != rune('L') { + goto l644 + } + position++ + } + l653: + goto l601 l644: + position, tokenIndex = position601, tokenIndex601 { - position646, tokenIndex646 := position, tokenIndex - if buffer[position] != rune('l') { - goto l647 - } - position++ - goto l646 - l647: - position, tokenIndex = position646, tokenIndex646 - if buffer[position] != rune('L') { - goto l637 - } - position++ - } - l646: - goto l594 - l637: - position, tokenIndex = position594, tokenIndex594 - { - position648, tokenIndex648 := position, tokenIndex + position655, tokenIndex655 := position, tokenIndex if buffer[position] != rune('m') { - goto l649 + goto l656 } position++ - goto l648 - l649: - position, tokenIndex = position648, tokenIndex648 + goto l655 + l656: + position, tokenIndex = position655, tokenIndex655 if buffer[position] != rune('M') { - goto l592 + goto l599 } position++ } - l648: + l655: { - position650, tokenIndex650 := position, tokenIndex + position657, tokenIndex657 := position, tokenIndex if buffer[position] != rune('u') { - goto l651 + goto l658 } position++ - goto l650 - l651: - position, tokenIndex = position650, tokenIndex650 + goto l657 + l658: + position, tokenIndex = position657, tokenIndex657 if buffer[position] != rune('U') { - goto l592 + goto l599 } position++ } - l650: + l657: { - position652, tokenIndex652 := position, tokenIndex + position659, tokenIndex659 := position, tokenIndex if buffer[position] != rune('l') { - goto l653 + goto l660 } position++ - goto l652 - l653: - position, tokenIndex = position652, tokenIndex652 + goto l659 + l660: + position, tokenIndex = position659, tokenIndex659 if buffer[position] != rune('L') { - goto l592 + goto l599 } position++ } - l652: + l659: if buffer[position] != rune(' ') { - goto l592 + goto l599 } position++ if buffer[position] != rune('#') { - goto l592 + goto l599 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l592 + goto l599 } position++ } - l594: - add(ruleARMConstantTweak, position593) + l601: + add(ruleARMConstantTweak, position600) } return true - l592: - position, tokenIndex = position592, tokenIndex592 + l599: + position, tokenIndex = position599, tokenIndex599 return false }, - /* 45 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's' / 'h' / 'b') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / (('n' / 'N') ('z' / 'Z') ('c' / 'C') ('v' / 'V')) / SVE2PredicateRegister / ARMVectorRegister / SVE2SpecialValue / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */ + /* 46 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's' / 'h' / 'b') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / (('n' / 'N') ('z' / 'Z') ('c' / 'C') ('v' / 'V')) / SVE2PredicateRegister / ARMVectorRegister / SVE2SpecialValue / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */ func() bool { - position654, tokenIndex654 := position, tokenIndex + position661, tokenIndex661 := position, tokenIndex { - position655 := position + position662 := position { - position656, tokenIndex656 := position, tokenIndex + position663, tokenIndex663 := position, tokenIndex { - position658, tokenIndex658 := position, tokenIndex + position665, tokenIndex665 := position, tokenIndex if buffer[position] != rune('s') { - goto l659 - } - position++ - goto l658 - l659: - position, tokenIndex = position658, tokenIndex658 - if buffer[position] != rune('S') { - goto l657 - } - position++ - } - l658: - { - position660, tokenIndex660 := position, tokenIndex - if buffer[position] != rune('p') { - goto l661 - } - position++ - goto l660 - l661: - position, tokenIndex = position660, tokenIndex660 - if buffer[position] != rune('P') { - goto l657 - } - position++ - } - l660: - goto l656 - l657: - position, tokenIndex = position656, tokenIndex656 - { - position663, tokenIndex663 := position, tokenIndex - if buffer[position] != rune('x') { - goto l664 - } - position++ - goto l663 - l664: - position, tokenIndex = position663, tokenIndex663 - if buffer[position] != rune('w') { - goto l665 - } - position++ - goto l663 - l665: - position, tokenIndex = position663, tokenIndex663 - if buffer[position] != rune('d') { goto l666 } position++ - goto l663 + goto l665 l666: - position, tokenIndex = position663, tokenIndex663 - if buffer[position] != rune('q') { - goto l667 + position, tokenIndex = position665, tokenIndex665 + if buffer[position] != rune('S') { + goto l664 } position++ - goto l663 - l667: - position, tokenIndex = position663, tokenIndex663 - if buffer[position] != rune('s') { + } + l665: + { + position667, tokenIndex667 := position, tokenIndex + if buffer[position] != rune('p') { goto l668 } position++ - goto l663 + goto l667 l668: - position, tokenIndex = position663, tokenIndex663 - if buffer[position] != rune('h') { - goto l669 - } - position++ - goto l663 - l669: - position, tokenIndex = position663, tokenIndex663 - if buffer[position] != rune('b') { - goto l662 + position, tokenIndex = position667, tokenIndex667 + if buffer[position] != rune('P') { + goto l664 } position++ } - l663: - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l662 - } - position++ + l667: + goto l663 + l664: + position, tokenIndex = position663, tokenIndex663 { position670, tokenIndex670 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l670 + if buffer[position] != rune('x') { + goto l671 } position++ - goto l671 - l670: + goto l670 + l671: position, tokenIndex = position670, tokenIndex670 - } - l671: - goto l656 - l662: - position, tokenIndex = position656, tokenIndex656 - { - position673, tokenIndex673 := position, tokenIndex - if buffer[position] != rune('x') { + if buffer[position] != rune('w') { + goto l672 + } + position++ + goto l670 + l672: + position, tokenIndex = position670, tokenIndex670 + if buffer[position] != rune('d') { + goto l673 + } + position++ + goto l670 + l673: + position, tokenIndex = position670, tokenIndex670 + if buffer[position] != rune('q') { goto l674 } position++ - goto l673 + goto l670 l674: - position, tokenIndex = position673, tokenIndex673 - if buffer[position] != rune('X') { - goto l672 + position, tokenIndex = position670, tokenIndex670 + if buffer[position] != rune('s') { + goto l675 } position++ - } - l673: - { - position675, tokenIndex675 := position, tokenIndex - if buffer[position] != rune('z') { + goto l670 + l675: + position, tokenIndex = position670, tokenIndex670 + if buffer[position] != rune('h') { goto l676 } position++ - goto l675 + goto l670 l676: - position, tokenIndex = position675, tokenIndex675 - if buffer[position] != rune('Z') { - goto l672 + position, tokenIndex = position670, tokenIndex670 + if buffer[position] != rune('b') { + goto l669 } position++ } - l675: + l670: + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l669 + } + position++ { position677, tokenIndex677 := position, tokenIndex - if buffer[position] != rune('r') { - goto l678 + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l677 } position++ - goto l677 - l678: + goto l678 + l677: position, tokenIndex = position677, tokenIndex677 - if buffer[position] != rune('R') { - goto l672 - } - position++ } - l677: - goto l656 - l672: - position, tokenIndex = position656, tokenIndex656 + l678: + goto l663 + l669: + position, tokenIndex = position663, tokenIndex663 { position680, tokenIndex680 := position, tokenIndex - if buffer[position] != rune('w') { + if buffer[position] != rune('x') { goto l681 } position++ goto l680 l681: position, tokenIndex = position680, tokenIndex680 - if buffer[position] != rune('W') { + if buffer[position] != rune('X') { goto l679 } position++ @@ -5556,19 +5562,19 @@ position++ } l684: - goto l656 + goto l663 l679: - position, tokenIndex = position656, tokenIndex656 + position, tokenIndex = position663, tokenIndex663 { position687, tokenIndex687 := position, tokenIndex - if buffer[position] != rune('n') { + if buffer[position] != rune('w') { goto l688 } position++ goto l687 l688: position, tokenIndex = position687, tokenIndex687 - if buffer[position] != rune('N') { + if buffer[position] != rune('W') { goto l686 } position++ @@ -5591,480 +5597,476 @@ l689: { position691, tokenIndex691 := position, tokenIndex - if buffer[position] != rune('c') { + if buffer[position] != rune('r') { goto l692 } position++ goto l691 l692: position, tokenIndex = position691, tokenIndex691 - if buffer[position] != rune('C') { + if buffer[position] != rune('R') { goto l686 } position++ } l691: - { - position693, tokenIndex693 := position, tokenIndex - if buffer[position] != rune('v') { - goto l694 - } - position++ - goto l693 - l694: - position, tokenIndex = position693, tokenIndex693 - if buffer[position] != rune('V') { - goto l686 - } - position++ - } - l693: - goto l656 + goto l663 l686: - position, tokenIndex = position656, tokenIndex656 - if !_rules[ruleSVE2PredicateRegister]() { - goto l695 + position, tokenIndex = position663, tokenIndex663 + { + position694, tokenIndex694 := position, tokenIndex + if buffer[position] != rune('n') { + goto l695 + } + position++ + goto l694 + l695: + position, tokenIndex = position694, tokenIndex694 + if buffer[position] != rune('N') { + goto l693 + } + position++ } - goto l656 - l695: - position, tokenIndex = position656, tokenIndex656 - if !_rules[ruleARMVectorRegister]() { + l694: + { + position696, tokenIndex696 := position, tokenIndex + if buffer[position] != rune('z') { + goto l697 + } + position++ goto l696 + l697: + position, tokenIndex = position696, tokenIndex696 + if buffer[position] != rune('Z') { + goto l693 + } + position++ } - goto l656 l696: - position, tokenIndex = position656, tokenIndex656 - if !_rules[ruleSVE2SpecialValue]() { - goto l697 + { + position698, tokenIndex698 := position, tokenIndex + if buffer[position] != rune('c') { + goto l699 + } + position++ + goto l698 + l699: + position, tokenIndex = position698, tokenIndex698 + if buffer[position] != rune('C') { + goto l693 + } + position++ } - goto l656 - l697: - position, tokenIndex = position656, tokenIndex656 + l698: + { + position700, tokenIndex700 := position, tokenIndex + if buffer[position] != rune('v') { + goto l701 + } + position++ + goto l700 + l701: + position, tokenIndex = position700, tokenIndex700 + if buffer[position] != rune('V') { + goto l693 + } + position++ + } + l700: + goto l663 + l693: + position, tokenIndex = position663, tokenIndex663 + if !_rules[ruleSVE2PredicateRegister]() { + goto l702 + } + goto l663 + l702: + position, tokenIndex = position663, tokenIndex663 + if !_rules[ruleARMVectorRegister]() { + goto l703 + } + goto l663 + l703: + position, tokenIndex = position663, tokenIndex663 + if !_rules[ruleSVE2SpecialValue]() { + goto l704 + } + goto l663 + l704: + position, tokenIndex = position663, tokenIndex663 if buffer[position] != rune('{') { - goto l654 + goto l661 } position++ { - position698, tokenIndex698 := position, tokenIndex + position705, tokenIndex705 := position, tokenIndex if !_rules[ruleWS]() { - goto l698 + goto l705 } - goto l699 - l698: - position, tokenIndex = position698, tokenIndex698 + goto l706 + l705: + position, tokenIndex = position705, tokenIndex705 } - l699: + l706: if !_rules[ruleARMVectorRegister]() { - goto l654 + goto l661 } - l700: + l707: { - position701, tokenIndex701 := position, tokenIndex + position708, tokenIndex708 := position, tokenIndex if buffer[position] != rune(',') { - goto l701 + goto l708 } position++ { - position702, tokenIndex702 := position, tokenIndex + position709, tokenIndex709 := position, tokenIndex if !_rules[ruleWS]() { - goto l702 + goto l709 } - goto l703 - l702: - position, tokenIndex = position702, tokenIndex702 + goto l710 + l709: + position, tokenIndex = position709, tokenIndex709 } - l703: + l710: if !_rules[ruleARMVectorRegister]() { - goto l701 + goto l708 } - goto l700 - l701: - position, tokenIndex = position701, tokenIndex701 + goto l707 + l708: + position, tokenIndex = position708, tokenIndex708 } { - position704, tokenIndex704 := position, tokenIndex + position711, tokenIndex711 := position, tokenIndex if !_rules[ruleWS]() { - goto l704 + goto l711 } - goto l705 - l704: - position, tokenIndex = position704, tokenIndex704 + goto l712 + l711: + position, tokenIndex = position711, tokenIndex711 } - l705: + l712: if buffer[position] != rune('}') { - goto l654 + goto l661 } position++ { - position706, tokenIndex706 := position, tokenIndex + position713, tokenIndex713 := position, tokenIndex if buffer[position] != rune('[') { - goto l706 + goto l713 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l706 + goto l713 } position++ { - position708, tokenIndex708 := position, tokenIndex + position715, tokenIndex715 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l708 + goto l715 } position++ - goto l709 - l708: - position, tokenIndex = position708, tokenIndex708 + goto l716 + l715: + position, tokenIndex = position715, tokenIndex715 } - l709: + l716: if buffer[position] != rune(']') { - goto l706 + goto l713 } position++ - goto l707 - l706: - position, tokenIndex = position706, tokenIndex706 + goto l714 + l713: + position, tokenIndex = position713, tokenIndex713 } - l707: + l714: } - l656: - add(ruleARMRegister, position655) + l663: + add(ruleARMRegister, position662) } return true - l654: - position, tokenIndex = position654, tokenIndex654 + l661: + position, tokenIndex = position661, tokenIndex661 return false }, - /* 46 ARMVectorRegister <- <(('p' / 'v' / 'z') [0-9] [0-9]? !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_') ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */ + /* 47 ARMVectorRegister <- <(('p' / 'v' / 'z') [0-9] [0-9]? !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_') ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */ func() bool { - position710, tokenIndex710 := position, tokenIndex + position717, tokenIndex717 := position, tokenIndex { - position711 := position + position718 := position { - position712, tokenIndex712 := position, tokenIndex + position719, tokenIndex719 := position, tokenIndex if buffer[position] != rune('p') { - goto l713 + goto l720 } position++ - goto l712 - l713: - position, tokenIndex = position712, tokenIndex712 + goto l719 + l720: + position, tokenIndex = position719, tokenIndex719 if buffer[position] != rune('v') { - goto l714 + goto l721 } position++ - goto l712 - l714: - position, tokenIndex = position712, tokenIndex712 + goto l719 + l721: + position, tokenIndex = position719, tokenIndex719 if buffer[position] != rune('z') { - goto l710 + goto l717 } position++ } - l712: + l719: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l710 + goto l717 } position++ { - position715, tokenIndex715 := position, tokenIndex + position722, tokenIndex722 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l715 + goto l722 } position++ - goto l716 - l715: - position, tokenIndex = position715, tokenIndex715 + goto l723 + l722: + position, tokenIndex = position722, tokenIndex722 } - l716: - { - position717, tokenIndex717 := position, tokenIndex - { - position718, tokenIndex718 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l719 - } - position++ - goto l718 - l719: - position, tokenIndex = position718, tokenIndex718 - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l720 - } - position++ - goto l718 - l720: - position, tokenIndex = position718, tokenIndex718 - { - position722, tokenIndex722 := position, tokenIndex - if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l723 - } - position++ - goto l722 - l723: - position, tokenIndex = position722, tokenIndex722 - if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l721 - } - position++ - } - l722: - goto l718 - l721: - position, tokenIndex = position718, tokenIndex718 - if buffer[position] != rune('_') { - goto l717 - } - position++ - } - l718: - goto l710 - l717: - position, tokenIndex = position717, tokenIndex717 - } + l723: { position724, tokenIndex724 := position, tokenIndex - if buffer[position] != rune('.') { - goto l724 - } - position++ - l726: { - position727, tokenIndex727 := position, tokenIndex + position725, tokenIndex725 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l726 + } + position++ + goto l725 + l726: + position, tokenIndex = position725, tokenIndex725 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l727 } position++ - goto l726 + goto l725 l727: - position, tokenIndex = position727, tokenIndex727 - } - { - position728, tokenIndex728 := position, tokenIndex - if buffer[position] != rune('b') { + position, tokenIndex = position725, tokenIndex725 + { + position729, tokenIndex729 := position, tokenIndex + if c := buffer[position]; c < rune('a') || c > rune('z') { + goto l730 + } + position++ goto l729 + l730: + position, tokenIndex = position729, tokenIndex729 + if c := buffer[position]; c < rune('A') || c > rune('Z') { + goto l728 + } + position++ } - position++ - goto l728 l729: - position, tokenIndex = position728, tokenIndex728 - if buffer[position] != rune('s') { - goto l730 - } - position++ - goto l728 - l730: - position, tokenIndex = position728, tokenIndex728 - if buffer[position] != rune('d') { - goto l731 - } - position++ - goto l728 - l731: - position, tokenIndex = position728, tokenIndex728 - if buffer[position] != rune('h') { - goto l732 - } - position++ - goto l728 - l732: - position, tokenIndex = position728, tokenIndex728 - if buffer[position] != rune('q') { + goto l725 + l728: + position, tokenIndex = position725, tokenIndex725 + if buffer[position] != rune('_') { goto l724 } position++ } - l728: - { - position733, tokenIndex733 := position, tokenIndex - if buffer[position] != rune('[') { - goto l733 - } - position++ - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l733 - } - position++ - { - position735, tokenIndex735 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l735 - } - position++ - goto l736 - l735: - position, tokenIndex = position735, tokenIndex735 - } - l736: - if buffer[position] != rune(']') { - goto l733 - } - position++ - goto l734 - l733: - position, tokenIndex = position733, tokenIndex733 - } - l734: - goto l725 + l725: + goto l717 l724: position, tokenIndex = position724, tokenIndex724 } - l725: - add(ruleARMVectorRegister, position711) - } - return true - l710: - position, tokenIndex = position710, tokenIndex710 - return false - }, - /* 47 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / ('z' / 'Z')))> */ - func() bool { - position737, tokenIndex737 := position, tokenIndex - { - position738 := position { - position739, tokenIndex739 := position, tokenIndex - if buffer[position] != rune('p') { - goto l740 + position731, tokenIndex731 := position, tokenIndex + if buffer[position] != rune('.') { + goto l731 } position++ - goto l739 - l740: - position, tokenIndex = position739, tokenIndex739 - if buffer[position] != rune('P') { - goto l737 - } - position++ - } - l739: - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l737 - } - position++ - { - position741, tokenIndex741 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l741 - } - position++ - goto l742 - l741: - position, tokenIndex = position741, tokenIndex741 - } - l742: - if buffer[position] != rune('/') { - goto l737 - } - position++ - { - position743, tokenIndex743 := position, tokenIndex - if buffer[position] != rune('m') { - goto l744 - } - position++ - goto l743 - l744: - position, tokenIndex = position743, tokenIndex743 - if buffer[position] != rune('M') { - goto l745 - } - position++ - goto l743 - l745: - position, tokenIndex = position743, tokenIndex743 + l733: { - position746, tokenIndex746 := position, tokenIndex - if buffer[position] != rune('z') { - goto l747 + position734, tokenIndex734 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l734 } position++ - goto l746 - l747: - position, tokenIndex = position746, tokenIndex746 - if buffer[position] != rune('Z') { + goto l733 + l734: + position, tokenIndex = position734, tokenIndex734 + } + { + position735, tokenIndex735 := position, tokenIndex + if buffer[position] != rune('b') { + goto l736 + } + position++ + goto l735 + l736: + position, tokenIndex = position735, tokenIndex735 + if buffer[position] != rune('s') { goto l737 } position++ + goto l735 + l737: + position, tokenIndex = position735, tokenIndex735 + if buffer[position] != rune('d') { + goto l738 + } + position++ + goto l735 + l738: + position, tokenIndex = position735, tokenIndex735 + if buffer[position] != rune('h') { + goto l739 + } + position++ + goto l735 + l739: + position, tokenIndex = position735, tokenIndex735 + if buffer[position] != rune('q') { + goto l731 + } + position++ } - l746: + l735: + { + position740, tokenIndex740 := position, tokenIndex + if buffer[position] != rune('[') { + goto l740 + } + position++ + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l740 + } + position++ + { + position742, tokenIndex742 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l742 + } + position++ + goto l743 + l742: + position, tokenIndex = position742, tokenIndex742 + } + l743: + if buffer[position] != rune(']') { + goto l740 + } + position++ + goto l741 + l740: + position, tokenIndex = position740, tokenIndex740 + } + l741: + goto l732 + l731: + position, tokenIndex = position731, tokenIndex731 } - l743: - add(ruleSVE2PredicateRegister, position738) + l732: + add(ruleARMVectorRegister, position718) } return true - l737: - position, tokenIndex = position737, tokenIndex737 + l717: + position, tokenIndex = position717, tokenIndex717 return false }, - /* 48 SVE2SpecialValue <- <(((('p' / 'P') ('o' / 'O') ('w' / 'W') '2') / (('v' / 'V') ('l' / 'L') ('1' / '2' / '3' / '4' / '5' / '6' / '7' / '8') ![0-9]) / (('v' / 'V') ('l' / 'L') '1' '6') / (('v' / 'V') ('l' / 'L') '3' '2') / (('v' / 'V') ('l' / 'L') '6' '4') / (('v' / 'V') ('l' / 'L') '1' '2' '8') / (('v' / 'V') ('l' / 'L') '2' '5' '6') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '3') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '4') / (('a' / 'A') ('l' / 'L') ('l' / 'L'))) !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_'))> */ + /* 48 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / ('z' / 'Z')))> */ func() bool { - position748, tokenIndex748 := position, tokenIndex + position744, tokenIndex744 := position, tokenIndex { - position749 := position + position745 := position + { + position746, tokenIndex746 := position, tokenIndex + if buffer[position] != rune('p') { + goto l747 + } + position++ + goto l746 + l747: + position, tokenIndex = position746, tokenIndex746 + if buffer[position] != rune('P') { + goto l744 + } + position++ + } + l746: + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l744 + } + position++ + { + position748, tokenIndex748 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l748 + } + position++ + goto l749 + l748: + position, tokenIndex = position748, tokenIndex748 + } + l749: + if buffer[position] != rune('/') { + goto l744 + } + position++ { position750, tokenIndex750 := position, tokenIndex - { - position752, tokenIndex752 := position, tokenIndex - if buffer[position] != rune('p') { - goto l753 - } - position++ - goto l752 - l753: - position, tokenIndex = position752, tokenIndex752 - if buffer[position] != rune('P') { - goto l751 - } - position++ - } - l752: - { - position754, tokenIndex754 := position, tokenIndex - if buffer[position] != rune('o') { - goto l755 - } - position++ - goto l754 - l755: - position, tokenIndex = position754, tokenIndex754 - if buffer[position] != rune('O') { - goto l751 - } - position++ - } - l754: - { - position756, tokenIndex756 := position, tokenIndex - if buffer[position] != rune('w') { - goto l757 - } - position++ - goto l756 - l757: - position, tokenIndex = position756, tokenIndex756 - if buffer[position] != rune('W') { - goto l751 - } - position++ - } - l756: - if buffer[position] != rune('2') { + if buffer[position] != rune('m') { goto l751 } position++ goto l750 l751: position, tokenIndex = position750, tokenIndex750 + if buffer[position] != rune('M') { + goto l752 + } + position++ + goto l750 + l752: + position, tokenIndex = position750, tokenIndex750 + { + position753, tokenIndex753 := position, tokenIndex + if buffer[position] != rune('z') { + goto l754 + } + position++ + goto l753 + l754: + position, tokenIndex = position753, tokenIndex753 + if buffer[position] != rune('Z') { + goto l744 + } + position++ + } + l753: + } + l750: + add(ruleSVE2PredicateRegister, position745) + } + return true + l744: + position, tokenIndex = position744, tokenIndex744 + return false + }, + /* 49 SVE2SpecialValue <- <(((('p' / 'P') ('o' / 'O') ('w' / 'W') '2') / (('v' / 'V') ('l' / 'L') ('1' / '2' / '3' / '4' / '5' / '6' / '7' / '8') ![0-9]) / (('v' / 'V') ('l' / 'L') '1' '6') / (('v' / 'V') ('l' / 'L') '3' '2') / (('v' / 'V') ('l' / 'L') '6' '4') / (('v' / 'V') ('l' / 'L') '1' '2' '8') / (('v' / 'V') ('l' / 'L') '2' '5' '6') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '3') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '4') / (('a' / 'A') ('l' / 'L') ('l' / 'L'))) !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_'))> */ + func() bool { + position755, tokenIndex755 := position, tokenIndex + { + position756 := position + { + position757, tokenIndex757 := position, tokenIndex { position759, tokenIndex759 := position, tokenIndex - if buffer[position] != rune('v') { + if buffer[position] != rune('p') { goto l760 } position++ goto l759 l760: position, tokenIndex = position759, tokenIndex759 - if buffer[position] != rune('V') { + if buffer[position] != rune('P') { goto l758 } position++ @@ -6072,14 +6074,14 @@ l759: { position761, tokenIndex761 := position, tokenIndex - if buffer[position] != rune('l') { + if buffer[position] != rune('o') { goto l762 } position++ goto l761 l762: position, tokenIndex = position761, tokenIndex761 - if buffer[position] != rune('L') { + if buffer[position] != rune('O') { goto l758 } position++ @@ -6087,313 +6089,305 @@ l761: { position763, tokenIndex763 := position, tokenIndex - if buffer[position] != rune('1') { + if buffer[position] != rune('w') { goto l764 } position++ goto l763 l764: position, tokenIndex = position763, tokenIndex763 - if buffer[position] != rune('2') { - goto l765 - } - position++ - goto l763 - l765: - position, tokenIndex = position763, tokenIndex763 - if buffer[position] != rune('3') { - goto l766 - } - position++ - goto l763 - l766: - position, tokenIndex = position763, tokenIndex763 - if buffer[position] != rune('4') { - goto l767 - } - position++ - goto l763 - l767: - position, tokenIndex = position763, tokenIndex763 - if buffer[position] != rune('5') { - goto l768 - } - position++ - goto l763 - l768: - position, tokenIndex = position763, tokenIndex763 - if buffer[position] != rune('6') { - goto l769 - } - position++ - goto l763 - l769: - position, tokenIndex = position763, tokenIndex763 - if buffer[position] != rune('7') { - goto l770 - } - position++ - goto l763 - l770: - position, tokenIndex = position763, tokenIndex763 - if buffer[position] != rune('8') { + if buffer[position] != rune('W') { goto l758 } position++ } l763: + if buffer[position] != rune('2') { + goto l758 + } + position++ + goto l757 + l758: + position, tokenIndex = position757, tokenIndex757 { - position771, tokenIndex771 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { + position766, tokenIndex766 := position, tokenIndex + if buffer[position] != rune('v') { + goto l767 + } + position++ + goto l766 + l767: + position, tokenIndex = position766, tokenIndex766 + if buffer[position] != rune('V') { + goto l765 + } + position++ + } + l766: + { + position768, tokenIndex768 := position, tokenIndex + if buffer[position] != rune('l') { + goto l769 + } + position++ + goto l768 + l769: + position, tokenIndex = position768, tokenIndex768 + if buffer[position] != rune('L') { + goto l765 + } + position++ + } + l768: + { + position770, tokenIndex770 := position, tokenIndex + if buffer[position] != rune('1') { goto l771 } position++ - goto l758 + goto l770 l771: - position, tokenIndex = position771, tokenIndex771 - } - goto l750 - l758: - position, tokenIndex = position750, tokenIndex750 - { - position773, tokenIndex773 := position, tokenIndex - if buffer[position] != rune('v') { + position, tokenIndex = position770, tokenIndex770 + if buffer[position] != rune('2') { + goto l772 + } + position++ + goto l770 + l772: + position, tokenIndex = position770, tokenIndex770 + if buffer[position] != rune('3') { + goto l773 + } + position++ + goto l770 + l773: + position, tokenIndex = position770, tokenIndex770 + if buffer[position] != rune('4') { goto l774 } position++ - goto l773 + goto l770 l774: - position, tokenIndex = position773, tokenIndex773 - if buffer[position] != rune('V') { - goto l772 + position, tokenIndex = position770, tokenIndex770 + if buffer[position] != rune('5') { + goto l775 } position++ - } - l773: - { - position775, tokenIndex775 := position, tokenIndex - if buffer[position] != rune('l') { + goto l770 + l775: + position, tokenIndex = position770, tokenIndex770 + if buffer[position] != rune('6') { goto l776 } position++ - goto l775 + goto l770 l776: - position, tokenIndex = position775, tokenIndex775 - if buffer[position] != rune('L') { - goto l772 - } - position++ - } - l775: - if buffer[position] != rune('1') { - goto l772 - } - position++ - if buffer[position] != rune('6') { - goto l772 - } - position++ - goto l750 - l772: - position, tokenIndex = position750, tokenIndex750 - { - position778, tokenIndex778 := position, tokenIndex - if buffer[position] != rune('v') { - goto l779 - } - position++ - goto l778 - l779: - position, tokenIndex = position778, tokenIndex778 - if buffer[position] != rune('V') { + position, tokenIndex = position770, tokenIndex770 + if buffer[position] != rune('7') { goto l777 } position++ + goto l770 + l777: + position, tokenIndex = position770, tokenIndex770 + if buffer[position] != rune('8') { + goto l765 + } + position++ } - l778: + l770: + { + position778, tokenIndex778 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l778 + } + position++ + goto l765 + l778: + position, tokenIndex = position778, tokenIndex778 + } + goto l757 + l765: + position, tokenIndex = position757, tokenIndex757 { position780, tokenIndex780 := position, tokenIndex - if buffer[position] != rune('l') { + if buffer[position] != rune('v') { goto l781 } position++ goto l780 l781: position, tokenIndex = position780, tokenIndex780 - if buffer[position] != rune('L') { - goto l777 + if buffer[position] != rune('V') { + goto l779 } position++ } l780: - if buffer[position] != rune('3') { - goto l777 - } - position++ - if buffer[position] != rune('2') { - goto l777 - } - position++ - goto l750 - l777: - position, tokenIndex = position750, tokenIndex750 { - position783, tokenIndex783 := position, tokenIndex - if buffer[position] != rune('v') { - goto l784 + position782, tokenIndex782 := position, tokenIndex + if buffer[position] != rune('l') { + goto l783 } position++ - goto l783 - l784: - position, tokenIndex = position783, tokenIndex783 - if buffer[position] != rune('V') { - goto l782 + goto l782 + l783: + position, tokenIndex = position782, tokenIndex782 + if buffer[position] != rune('L') { + goto l779 } position++ } - l783: + l782: + if buffer[position] != rune('1') { + goto l779 + } + position++ + if buffer[position] != rune('6') { + goto l779 + } + position++ + goto l757 + l779: + position, tokenIndex = position757, tokenIndex757 { position785, tokenIndex785 := position, tokenIndex - if buffer[position] != rune('l') { + if buffer[position] != rune('v') { goto l786 } position++ goto l785 l786: position, tokenIndex = position785, tokenIndex785 - if buffer[position] != rune('L') { - goto l782 + if buffer[position] != rune('V') { + goto l784 } position++ } l785: - if buffer[position] != rune('6') { - goto l782 - } - position++ - if buffer[position] != rune('4') { - goto l782 - } - position++ - goto l750 - l782: - position, tokenIndex = position750, tokenIndex750 { - position788, tokenIndex788 := position, tokenIndex - if buffer[position] != rune('v') { - goto l789 + position787, tokenIndex787 := position, tokenIndex + if buffer[position] != rune('l') { + goto l788 } position++ - goto l788 - l789: - position, tokenIndex = position788, tokenIndex788 - if buffer[position] != rune('V') { - goto l787 + goto l787 + l788: + position, tokenIndex = position787, tokenIndex787 + if buffer[position] != rune('L') { + goto l784 } position++ } - l788: + l787: + if buffer[position] != rune('3') { + goto l784 + } + position++ + if buffer[position] != rune('2') { + goto l784 + } + position++ + goto l757 + l784: + position, tokenIndex = position757, tokenIndex757 { position790, tokenIndex790 := position, tokenIndex - if buffer[position] != rune('l') { + if buffer[position] != rune('v') { goto l791 } position++ goto l790 l791: position, tokenIndex = position790, tokenIndex790 - if buffer[position] != rune('L') { - goto l787 + if buffer[position] != rune('V') { + goto l789 } position++ } l790: - if buffer[position] != rune('1') { - goto l787 - } - position++ - if buffer[position] != rune('2') { - goto l787 - } - position++ - if buffer[position] != rune('8') { - goto l787 - } - position++ - goto l750 - l787: - position, tokenIndex = position750, tokenIndex750 { - position793, tokenIndex793 := position, tokenIndex - if buffer[position] != rune('v') { - goto l794 + position792, tokenIndex792 := position, tokenIndex + if buffer[position] != rune('l') { + goto l793 } position++ - goto l793 - l794: - position, tokenIndex = position793, tokenIndex793 - if buffer[position] != rune('V') { - goto l792 + goto l792 + l793: + position, tokenIndex = position792, tokenIndex792 + if buffer[position] != rune('L') { + goto l789 } position++ } - l793: + l792: + if buffer[position] != rune('6') { + goto l789 + } + position++ + if buffer[position] != rune('4') { + goto l789 + } + position++ + goto l757 + l789: + position, tokenIndex = position757, tokenIndex757 { position795, tokenIndex795 := position, tokenIndex - if buffer[position] != rune('l') { + if buffer[position] != rune('v') { goto l796 } position++ goto l795 l796: position, tokenIndex = position795, tokenIndex795 - if buffer[position] != rune('L') { - goto l792 + if buffer[position] != rune('V') { + goto l794 } position++ } l795: - if buffer[position] != rune('2') { - goto l792 - } - position++ - if buffer[position] != rune('5') { - goto l792 - } - position++ - if buffer[position] != rune('6') { - goto l792 - } - position++ - goto l750 - l792: - position, tokenIndex = position750, tokenIndex750 { - position798, tokenIndex798 := position, tokenIndex - if buffer[position] != rune('m') { - goto l799 + position797, tokenIndex797 := position, tokenIndex + if buffer[position] != rune('l') { + goto l798 } position++ - goto l798 - l799: - position, tokenIndex = position798, tokenIndex798 - if buffer[position] != rune('M') { - goto l797 + goto l797 + l798: + position, tokenIndex = position797, tokenIndex797 + if buffer[position] != rune('L') { + goto l794 } position++ } - l798: + l797: + if buffer[position] != rune('1') { + goto l794 + } + position++ + if buffer[position] != rune('2') { + goto l794 + } + position++ + if buffer[position] != rune('8') { + goto l794 + } + position++ + goto l757 + l794: + position, tokenIndex = position757, tokenIndex757 { position800, tokenIndex800 := position, tokenIndex - if buffer[position] != rune('u') { + if buffer[position] != rune('v') { goto l801 } position++ goto l800 l801: position, tokenIndex = position800, tokenIndex800 - if buffer[position] != rune('U') { - goto l797 + if buffer[position] != rune('V') { + goto l799 } position++ } @@ -6408,18 +6402,26 @@ l803: position, tokenIndex = position802, tokenIndex802 if buffer[position] != rune('L') { - goto l797 + goto l799 } position++ } l802: - if buffer[position] != rune('3') { - goto l797 + if buffer[position] != rune('2') { + goto l799 } position++ - goto l750 - l797: - position, tokenIndex = position750, tokenIndex750 + if buffer[position] != rune('5') { + goto l799 + } + position++ + if buffer[position] != rune('6') { + goto l799 + } + position++ + goto l757 + l799: + position, tokenIndex = position757, tokenIndex757 { position805, tokenIndex805 := position, tokenIndex if buffer[position] != rune('m') { @@ -6465,1140 +6467,1192 @@ position++ } l809: - if buffer[position] != rune('4') { + if buffer[position] != rune('3') { goto l804 } position++ - goto l750 + goto l757 l804: - position, tokenIndex = position750, tokenIndex750 + position, tokenIndex = position757, tokenIndex757 { - position811, tokenIndex811 := position, tokenIndex - if buffer[position] != rune('a') { - goto l812 + position812, tokenIndex812 := position, tokenIndex + if buffer[position] != rune('m') { + goto l813 } position++ + goto l812 + l813: + position, tokenIndex = position812, tokenIndex812 + if buffer[position] != rune('M') { + goto l811 + } + position++ + } + l812: + { + position814, tokenIndex814 := position, tokenIndex + if buffer[position] != rune('u') { + goto l815 + } + position++ + goto l814 + l815: + position, tokenIndex = position814, tokenIndex814 + if buffer[position] != rune('U') { + goto l811 + } + position++ + } + l814: + { + position816, tokenIndex816 := position, tokenIndex + if buffer[position] != rune('l') { + goto l817 + } + position++ + goto l816 + l817: + position, tokenIndex = position816, tokenIndex816 + if buffer[position] != rune('L') { + goto l811 + } + position++ + } + l816: + if buffer[position] != rune('4') { goto l811 - l812: - position, tokenIndex = position811, tokenIndex811 - if buffer[position] != rune('A') { - goto l748 - } - position++ } + position++ + goto l757 l811: - { - position813, tokenIndex813 := position, tokenIndex - if buffer[position] != rune('l') { - goto l814 - } - position++ - goto l813 - l814: - position, tokenIndex = position813, tokenIndex813 - if buffer[position] != rune('L') { - goto l748 - } - position++ - } - l813: - { - position815, tokenIndex815 := position, tokenIndex - if buffer[position] != rune('l') { - goto l816 - } - position++ - goto l815 - l816: - position, tokenIndex = position815, tokenIndex815 - if buffer[position] != rune('L') { - goto l748 - } - position++ - } - l815: - } - l750: - { - position817, tokenIndex817 := position, tokenIndex + position, tokenIndex = position757, tokenIndex757 { position818, tokenIndex818 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { + if buffer[position] != rune('a') { goto l819 } position++ goto l818 l819: position, tokenIndex = position818, tokenIndex818 - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l820 - } - position++ - goto l818 - l820: - position, tokenIndex = position818, tokenIndex818 - { - position822, tokenIndex822 := position, tokenIndex - if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l823 - } - position++ - goto l822 - l823: - position, tokenIndex = position822, tokenIndex822 - if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l821 - } - position++ - } - l822: - goto l818 - l821: - position, tokenIndex = position818, tokenIndex818 - if buffer[position] != rune('_') { - goto l817 + if buffer[position] != rune('A') { + goto l755 } position++ } l818: - goto l748 - l817: - position, tokenIndex = position817, tokenIndex817 + { + position820, tokenIndex820 := position, tokenIndex + if buffer[position] != rune('l') { + goto l821 + } + position++ + goto l820 + l821: + position, tokenIndex = position820, tokenIndex820 + if buffer[position] != rune('L') { + goto l755 + } + position++ + } + l820: + { + position822, tokenIndex822 := position, tokenIndex + if buffer[position] != rune('l') { + goto l823 + } + position++ + goto l822 + l823: + position, tokenIndex = position822, tokenIndex822 + if buffer[position] != rune('L') { + goto l755 + } + position++ + } + l822: } - add(ruleSVE2SpecialValue, position749) + l757: + { + position824, tokenIndex824 := position, tokenIndex + { + position825, tokenIndex825 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l826 + } + position++ + goto l825 + l826: + position, tokenIndex = position825, tokenIndex825 + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l827 + } + position++ + goto l825 + l827: + position, tokenIndex = position825, tokenIndex825 + { + position829, tokenIndex829 := position, tokenIndex + if c := buffer[position]; c < rune('a') || c > rune('z') { + goto l830 + } + position++ + goto l829 + l830: + position, tokenIndex = position829, tokenIndex829 + if c := buffer[position]; c < rune('A') || c > rune('Z') { + goto l828 + } + position++ + } + l829: + goto l825 + l828: + position, tokenIndex = position825, tokenIndex825 + if buffer[position] != rune('_') { + goto l824 + } + position++ + } + l825: + goto l755 + l824: + position, tokenIndex = position824, tokenIndex824 + } + add(ruleSVE2SpecialValue, position756) } return true - l748: - position, tokenIndex = position748, tokenIndex748 + l755: + position, tokenIndex = position755, tokenIndex755 return false }, - /* 49 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */ + /* 50 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */ func() bool { - position824, tokenIndex824 := position, tokenIndex + position831, tokenIndex831 := position, tokenIndex { - position825 := position + position832 := position { - position826, tokenIndex826 := position, tokenIndex + position833, tokenIndex833 := position, tokenIndex if !_rules[ruleSymbolRef]() { - goto l827 - } - if !_rules[ruleBaseIndexScale]() { - goto l827 - } - goto l826 - l827: - position, tokenIndex = position826, tokenIndex826 - if !_rules[ruleSymbolRef]() { - goto l828 - } - goto l826 - l828: - position, tokenIndex = position826, tokenIndex826 - if !_rules[ruleLow12BitsSymbolRef]() { - goto l829 - } - goto l826 - l829: - position, tokenIndex = position826, tokenIndex826 - l831: - { - position832, tokenIndex832 := position, tokenIndex - if !_rules[ruleOffset]() { - goto l832 - } - goto l831 - l832: - position, tokenIndex = position832, tokenIndex832 - } - if !_rules[ruleBaseIndexScale]() { - goto l830 - } - goto l826 - l830: - position, tokenIndex = position826, tokenIndex826 - if !_rules[ruleSegmentRegister]() { - goto l833 - } - if !_rules[ruleOffset]() { - goto l833 - } - if !_rules[ruleBaseIndexScale]() { - goto l833 - } - goto l826 - l833: - position, tokenIndex = position826, tokenIndex826 - if !_rules[ruleSegmentRegister]() { goto l834 } if !_rules[ruleBaseIndexScale]() { goto l834 } - goto l826 + goto l833 l834: - position, tokenIndex = position826, tokenIndex826 - if !_rules[ruleSegmentRegister]() { + position, tokenIndex = position833, tokenIndex833 + if !_rules[ruleSymbolRef]() { goto l835 } - if !_rules[ruleOffset]() { - goto l835 - } - goto l826 + goto l833 l835: - position, tokenIndex = position826, tokenIndex826 - if !_rules[ruleARMBaseIndexScale]() { + position, tokenIndex = position833, tokenIndex833 + if !_rules[ruleLow12BitsSymbolRef]() { goto l836 } - goto l826 + goto l833 l836: - position, tokenIndex = position826, tokenIndex826 - if !_rules[ruleBaseIndexScale]() { - goto l824 - } - } - l826: - add(ruleMemoryRef, position825) - } - return true - l824: - position, tokenIndex = position824, tokenIndex824 - return false - }, - /* 50 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */ - func() bool { - position837, tokenIndex837 := position, tokenIndex - { - position838 := position - { - position839, tokenIndex839 := position, tokenIndex - l841: + position, tokenIndex = position833, tokenIndex833 + l838: { - position842, tokenIndex842 := position, tokenIndex + position839, tokenIndex839 := position, tokenIndex if !_rules[ruleOffset]() { - goto l842 + goto l839 } - goto l841 - l842: - position, tokenIndex = position842, tokenIndex842 + goto l838 + l839: + position, tokenIndex = position839, tokenIndex839 } - if buffer[position] != rune('+') { - goto l839 - } - position++ - goto l840 - l839: - position, tokenIndex = position839, tokenIndex839 - } - l840: - { - position843, tokenIndex843 := position, tokenIndex - if !_rules[ruleLocalSymbol]() { - goto l844 - } - goto l843 - l844: - position, tokenIndex = position843, tokenIndex843 - if !_rules[ruleSymbolName]() { + if !_rules[ruleBaseIndexScale]() { goto l837 } + goto l833 + l837: + position, tokenIndex = position833, tokenIndex833 + if !_rules[ruleSegmentRegister]() { + goto l840 + } + if !_rules[ruleOffset]() { + goto l840 + } + if !_rules[ruleBaseIndexScale]() { + goto l840 + } + goto l833 + l840: + position, tokenIndex = position833, tokenIndex833 + if !_rules[ruleSegmentRegister]() { + goto l841 + } + if !_rules[ruleBaseIndexScale]() { + goto l841 + } + goto l833 + l841: + position, tokenIndex = position833, tokenIndex833 + if !_rules[ruleSegmentRegister]() { + goto l842 + } + if !_rules[ruleOffset]() { + goto l842 + } + goto l833 + l842: + position, tokenIndex = position833, tokenIndex833 + if !_rules[ruleARMBaseIndexScale]() { + goto l843 + } + goto l833 + l843: + position, tokenIndex = position833, tokenIndex833 + if !_rules[ruleBaseIndexScale]() { + goto l831 + } } - l843: - l845: + l833: + add(ruleMemoryRef, position832) + } + return true + l831: + position, tokenIndex = position831, tokenIndex831 + return false + }, + /* 51 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */ + func() bool { + position844, tokenIndex844 := position, tokenIndex + { + position845 := position { position846, tokenIndex846 := position, tokenIndex - if !_rules[ruleOffset]() { + l848: + { + position849, tokenIndex849 := position, tokenIndex + if !_rules[ruleOffset]() { + goto l849 + } + goto l848 + l849: + position, tokenIndex = position849, tokenIndex849 + } + if buffer[position] != rune('+') { goto l846 } - goto l845 + position++ + goto l847 l846: position, tokenIndex = position846, tokenIndex846 } + l847: { - position847, tokenIndex847 := position, tokenIndex - if buffer[position] != rune('@') { - goto l847 + position850, tokenIndex850 := position, tokenIndex + if !_rules[ruleLocalSymbol]() { + goto l851 } - position++ - if !_rules[ruleSection]() { - goto l847 + goto l850 + l851: + position, tokenIndex = position850, tokenIndex850 + if !_rules[ruleSymbolName]() { + goto l844 } - l849: - { - position850, tokenIndex850 := position, tokenIndex - if !_rules[ruleOffset]() { - goto l850 - } - goto l849 - l850: - position, tokenIndex = position850, tokenIndex850 - } - goto l848 - l847: - position, tokenIndex = position847, tokenIndex847 } - l848: - add(ruleSymbolRef, position838) - } - return true - l837: - position, tokenIndex = position837, tokenIndex837 - return false - }, - /* 51 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */ - func() bool { - position851, tokenIndex851 := position, tokenIndex - { - position852 := position - if buffer[position] != rune(':') { - goto l851 - } - position++ + l850: + l852: { position853, tokenIndex853 := position, tokenIndex - if buffer[position] != rune('l') { + if !_rules[ruleOffset]() { + goto l853 + } + goto l852 + l853: + position, tokenIndex = position853, tokenIndex853 + } + { + position854, tokenIndex854 := position, tokenIndex + if buffer[position] != rune('@') { goto l854 } position++ - goto l853 - l854: - position, tokenIndex = position853, tokenIndex853 - if buffer[position] != rune('L') { - goto l851 + if !_rules[ruleSection]() { + goto l854 } - position++ - } - l853: - { - position855, tokenIndex855 := position, tokenIndex - if buffer[position] != rune('o') { - goto l856 - } - position++ - goto l855 l856: - position, tokenIndex = position855, tokenIndex855 - if buffer[position] != rune('O') { - goto l851 + { + position857, tokenIndex857 := position, tokenIndex + if !_rules[ruleOffset]() { + goto l857 + } + goto l856 + l857: + position, tokenIndex = position857, tokenIndex857 } - position++ + goto l855 + l854: + position, tokenIndex = position854, tokenIndex854 } l855: - if buffer[position] != rune('1') { - goto l851 - } - position++ - if buffer[position] != rune('2') { - goto l851 - } - position++ - if buffer[position] != rune(':') { - goto l851 - } - position++ - { - position857, tokenIndex857 := position, tokenIndex - if !_rules[ruleLocalSymbol]() { - goto l858 - } - goto l857 - l858: - position, tokenIndex = position857, tokenIndex857 - if !_rules[ruleSymbolName]() { - goto l851 - } - } - l857: - { - position859, tokenIndex859 := position, tokenIndex - if !_rules[ruleOffset]() { - goto l859 - } - goto l860 - l859: - position, tokenIndex = position859, tokenIndex859 - } - l860: - add(ruleLow12BitsSymbolRef, position852) + add(ruleSymbolRef, position845) } return true - l851: - position, tokenIndex = position851, tokenIndex851 + l844: + position, tokenIndex = position844, tokenIndex844 return false }, - /* 52 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */ + /* 52 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */ func() bool { - position861, tokenIndex861 := position, tokenIndex + position858, tokenIndex858 := position, tokenIndex { - position862 := position - if buffer[position] != rune('[') { - goto l861 + position859 := position + if buffer[position] != rune(':') { + goto l858 } position++ - if !_rules[ruleARMRegister]() { - goto l861 - } { - position863, tokenIndex863 := position, tokenIndex - if buffer[position] != rune(',') { + position860, tokenIndex860 := position, tokenIndex + if buffer[position] != rune('l') { + goto l861 + } + position++ + goto l860 + l861: + position, tokenIndex = position860, tokenIndex860 + if buffer[position] != rune('L') { + goto l858 + } + position++ + } + l860: + { + position862, tokenIndex862 := position, tokenIndex + if buffer[position] != rune('o') { goto l863 } position++ - { - position865, tokenIndex865 := position, tokenIndex - if !_rules[ruleWS]() { - goto l865 - } - goto l866 - l865: - position, tokenIndex = position865, tokenIndex865 + goto l862 + l863: + position, tokenIndex = position862, tokenIndex862 + if buffer[position] != rune('O') { + goto l858 } + position++ + } + l862: + if buffer[position] != rune('1') { + goto l858 + } + position++ + if buffer[position] != rune('2') { + goto l858 + } + position++ + if buffer[position] != rune(':') { + goto l858 + } + position++ + { + position864, tokenIndex864 := position, tokenIndex + if !_rules[ruleLocalSymbol]() { + goto l865 + } + goto l864 + l865: + position, tokenIndex = position864, tokenIndex864 + if !_rules[ruleSymbolName]() { + goto l858 + } + } + l864: + { + position866, tokenIndex866 := position, tokenIndex + if !_rules[ruleOffset]() { + goto l866 + } + goto l867 l866: + position, tokenIndex = position866, tokenIndex866 + } + l867: + add(ruleLow12BitsSymbolRef, position859) + } + return true + l858: + position, tokenIndex = position858, tokenIndex858 + return false + }, + /* 53 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */ + func() bool { + position868, tokenIndex868 := position, tokenIndex + { + position869 := position + if buffer[position] != rune('[') { + goto l868 + } + position++ + if !_rules[ruleARMRegister]() { + goto l868 + } + { + position870, tokenIndex870 := position, tokenIndex + if buffer[position] != rune(',') { + goto l870 + } + position++ { - position867, tokenIndex867 := position, tokenIndex + position872, tokenIndex872 := position, tokenIndex + if !_rules[ruleWS]() { + goto l872 + } + goto l873 + l872: + position, tokenIndex = position872, tokenIndex872 + } + l873: + { + position874, tokenIndex874 := position, tokenIndex if buffer[position] != rune('#') { - goto l868 + goto l875 } position++ if !_rules[ruleOffset]() { - goto l868 + goto l875 } { - position869, tokenIndex869 := position, tokenIndex + position876, tokenIndex876 := position, tokenIndex { - position871, tokenIndex871 := position, tokenIndex + position878, tokenIndex878 := position, tokenIndex if buffer[position] != rune('*') { - goto l872 + goto l879 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l872 + goto l879 } position++ - l873: - { - position874, tokenIndex874 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l874 - } - position++ - goto l873 - l874: - position, tokenIndex = position874, tokenIndex874 - } - goto l871 - l872: - position, tokenIndex = position871, tokenIndex871 - if buffer[position] != rune('*') { - goto l875 - } - position++ - if buffer[position] != rune('(') { - goto l875 - } - position++ - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l875 - } - position++ - l876: - { - position877, tokenIndex877 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l877 - } - position++ - goto l876 - l877: - position, tokenIndex = position877, tokenIndex877 - } - if !_rules[ruleOperator]() { - goto l875 - } - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l875 - } - position++ - l878: - { - position879, tokenIndex879 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l879 - } - position++ - goto l878 - l879: - position, tokenIndex = position879, tokenIndex879 - } - if buffer[position] != rune(')') { - goto l875 - } - position++ - goto l871 - l875: - position, tokenIndex = position871, tokenIndex871 l880: { position881, tokenIndex881 := position, tokenIndex - if buffer[position] != rune('+') { - goto l881 - } - position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l881 } position++ - l882: - { - position883, tokenIndex883 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l883 - } - position++ - goto l882 - l883: - position, tokenIndex = position883, tokenIndex883 - } goto l880 l881: position, tokenIndex = position881, tokenIndex881 } + goto l878 + l879: + position, tokenIndex = position878, tokenIndex878 + if buffer[position] != rune('*') { + goto l882 + } + position++ + if buffer[position] != rune('(') { + goto l882 + } + position++ + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l882 + } + position++ + l883: + { + position884, tokenIndex884 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l884 + } + position++ + goto l883 + l884: + position, tokenIndex = position884, tokenIndex884 + } + if !_rules[ruleOperator]() { + goto l882 + } + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l882 + } + position++ + l885: + { + position886, tokenIndex886 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l886 + } + position++ + goto l885 + l886: + position, tokenIndex = position886, tokenIndex886 + } + if buffer[position] != rune(')') { + goto l882 + } + position++ + goto l878 + l882: + position, tokenIndex = position878, tokenIndex878 + l887: + { + position888, tokenIndex888 := position, tokenIndex + if buffer[position] != rune('+') { + goto l888 + } + position++ + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l888 + } + position++ + l889: + { + position890, tokenIndex890 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l890 + } + position++ + goto l889 + l890: + position, tokenIndex = position890, tokenIndex890 + } + goto l887 + l888: + position, tokenIndex = position888, tokenIndex888 + } } - l871: - goto l870 + l878: + goto l877 - position, tokenIndex = position869, tokenIndex869 + position, tokenIndex = position876, tokenIndex876 } - l870: - goto l867 - l868: - position, tokenIndex = position867, tokenIndex867 + l877: + goto l874 + l875: + position, tokenIndex = position874, tokenIndex874 if !_rules[ruleARMGOTLow12]() { - goto l884 + goto l891 } - goto l867 - l884: - position, tokenIndex = position867, tokenIndex867 + goto l874 + l891: + position, tokenIndex = position874, tokenIndex874 if !_rules[ruleLow12BitsSymbolRef]() { - goto l885 + goto l892 } - goto l867 - l885: - position, tokenIndex = position867, tokenIndex867 + goto l874 + l892: + position, tokenIndex = position874, tokenIndex874 if !_rules[ruleARMRegister]() { - goto l863 + goto l870 } } - l867: + l874: { - position886, tokenIndex886 := position, tokenIndex + position893, tokenIndex893 := position, tokenIndex if buffer[position] != rune(',') { - goto l886 + goto l893 } position++ { - position888, tokenIndex888 := position, tokenIndex + position895, tokenIndex895 := position, tokenIndex if !_rules[ruleWS]() { - goto l888 + goto l895 } - goto l889 - l888: - position, tokenIndex = position888, tokenIndex888 + goto l896 + l895: + position, tokenIndex = position895, tokenIndex895 } - l889: + l896: if !_rules[ruleARMConstantTweak]() { - goto l886 + goto l893 } - goto l887 - l886: - position, tokenIndex = position886, tokenIndex886 + goto l894 + l893: + position, tokenIndex = position893, tokenIndex893 } - l887: - goto l864 - l863: - position, tokenIndex = position863, tokenIndex863 + l894: + goto l871 + l870: + position, tokenIndex = position870, tokenIndex870 } - l864: + l871: if buffer[position] != rune(']') { - goto l861 + goto l868 } position++ { - position890, tokenIndex890 := position, tokenIndex + position897, tokenIndex897 := position, tokenIndex if !_rules[ruleARMPostincrement]() { - goto l890 - } - goto l891 - l890: - position, tokenIndex = position890, tokenIndex890 - } - l891: - add(ruleARMBaseIndexScale, position862) - } - return true - l861: - position, tokenIndex = position861, tokenIndex861 - return false - }, - /* 53 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */ - func() bool { - position892, tokenIndex892 := position, tokenIndex - { - position893 := position - if buffer[position] != rune(':') { - goto l892 - } - position++ - { - position894, tokenIndex894 := position, tokenIndex - if buffer[position] != rune('g') { - goto l895 - } - position++ - goto l894 - l895: - position, tokenIndex = position894, tokenIndex894 - if buffer[position] != rune('G') { - goto l892 - } - position++ - } - l894: - { - position896, tokenIndex896 := position, tokenIndex - if buffer[position] != rune('o') { goto l897 } - position++ - goto l896 + goto l898 l897: - position, tokenIndex = position896, tokenIndex896 - if buffer[position] != rune('O') { - goto l892 + position, tokenIndex = position897, tokenIndex897 + } + l898: + add(ruleARMBaseIndexScale, position869) + } + return true + l868: + position, tokenIndex = position868, tokenIndex868 + return false + }, + /* 54 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */ + func() bool { + position899, tokenIndex899 := position, tokenIndex + { + position900 := position + if buffer[position] != rune(':') { + goto l899 + } + position++ + { + position901, tokenIndex901 := position, tokenIndex + if buffer[position] != rune('g') { + goto l902 } position++ - } - l896: - { - position898, tokenIndex898 := position, tokenIndex - if buffer[position] != rune('t') { + goto l901 + l902: + position, tokenIndex = position901, tokenIndex901 + if buffer[position] != rune('G') { goto l899 } position++ - goto l898 - l899: - position, tokenIndex = position898, tokenIndex898 - if buffer[position] != rune('T') { - goto l892 + } + l901: + { + position903, tokenIndex903 := position, tokenIndex + if buffer[position] != rune('o') { + goto l904 + } + position++ + goto l903 + l904: + position, tokenIndex = position903, tokenIndex903 + if buffer[position] != rune('O') { + goto l899 } position++ } - l898: + l903: + { + position905, tokenIndex905 := position, tokenIndex + if buffer[position] != rune('t') { + goto l906 + } + position++ + goto l905 + l906: + position, tokenIndex = position905, tokenIndex905 + if buffer[position] != rune('T') { + goto l899 + } + position++ + } + l905: if buffer[position] != rune('_') { - goto l892 + goto l899 } position++ { - position900, tokenIndex900 := position, tokenIndex + position907, tokenIndex907 := position, tokenIndex if buffer[position] != rune('l') { - goto l901 + goto l908 } position++ - goto l900 - l901: - position, tokenIndex = position900, tokenIndex900 + goto l907 + l908: + position, tokenIndex = position907, tokenIndex907 if buffer[position] != rune('L') { - goto l892 + goto l899 } position++ } - l900: + l907: { - position902, tokenIndex902 := position, tokenIndex + position909, tokenIndex909 := position, tokenIndex if buffer[position] != rune('o') { - goto l903 + goto l910 } position++ - goto l902 - l903: - position, tokenIndex = position902, tokenIndex902 + goto l909 + l910: + position, tokenIndex = position909, tokenIndex909 if buffer[position] != rune('O') { - goto l892 + goto l899 } position++ } - l902: + l909: if buffer[position] != rune('1') { - goto l892 + goto l899 } position++ if buffer[position] != rune('2') { - goto l892 + goto l899 } position++ if buffer[position] != rune(':') { - goto l892 + goto l899 } position++ if !_rules[ruleSymbolName]() { - goto l892 + goto l899 } - add(ruleARMGOTLow12, position893) + add(ruleARMGOTLow12, position900) } return true - l892: - position, tokenIndex = position892, tokenIndex892 + l899: + position, tokenIndex = position899, tokenIndex899 return false }, - /* 54 ARMPostincrement <- <'!'> */ + /* 55 ARMPostincrement <- <'!'> */ func() bool { - position904, tokenIndex904 := position, tokenIndex + position911, tokenIndex911 := position, tokenIndex { - position905 := position + position912 := position if buffer[position] != rune('!') { - goto l904 + goto l911 } position++ - add(ruleARMPostincrement, position905) + add(ruleARMPostincrement, position912) } return true - l904: - position, tokenIndex = position904, tokenIndex904 + l911: + position, tokenIndex = position911, tokenIndex911 return false }, - /* 55 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */ + /* 56 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */ func() bool { - position906, tokenIndex906 := position, tokenIndex + position913, tokenIndex913 := position, tokenIndex { - position907 := position + position914 := position if buffer[position] != rune('(') { - goto l906 + goto l913 } position++ { - position908, tokenIndex908 := position, tokenIndex + position915, tokenIndex915 := position, tokenIndex if !_rules[ruleRegisterOrConstant]() { - goto l908 + goto l915 } - goto l909 - l908: - position, tokenIndex = position908, tokenIndex908 + goto l916 + l915: + position, tokenIndex = position915, tokenIndex915 } - l909: + l916: { - position910, tokenIndex910 := position, tokenIndex + position917, tokenIndex917 := position, tokenIndex if !_rules[ruleWS]() { - goto l910 + goto l917 } - goto l911 - l910: - position, tokenIndex = position910, tokenIndex910 + goto l918 + l917: + position, tokenIndex = position917, tokenIndex917 } - l911: + l918: { - position912, tokenIndex912 := position, tokenIndex + position919, tokenIndex919 := position, tokenIndex if buffer[position] != rune(',') { - goto l912 + goto l919 } position++ { - position914, tokenIndex914 := position, tokenIndex + position921, tokenIndex921 := position, tokenIndex if !_rules[ruleWS]() { - goto l914 + goto l921 } - goto l915 - l914: - position, tokenIndex = position914, tokenIndex914 + goto l922 + l921: + position, tokenIndex = position921, tokenIndex921 } - l915: + l922: if !_rules[ruleRegisterOrConstant]() { - goto l912 + goto l919 } { - position916, tokenIndex916 := position, tokenIndex + position923, tokenIndex923 := position, tokenIndex if !_rules[ruleWS]() { - goto l916 + goto l923 } - goto l917 - l916: - position, tokenIndex = position916, tokenIndex916 + goto l924 + l923: + position, tokenIndex = position923, tokenIndex923 } - l917: + l924: { - position918, tokenIndex918 := position, tokenIndex + position925, tokenIndex925 := position, tokenIndex if buffer[position] != rune(',') { - goto l918 + goto l925 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l918 + goto l925 } position++ - l920: + l927: { - position921, tokenIndex921 := position, tokenIndex + position928, tokenIndex928 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l921 + goto l928 } position++ - goto l920 - l921: - position, tokenIndex = position921, tokenIndex921 + goto l927 + l928: + position, tokenIndex = position928, tokenIndex928 } - goto l919 - l918: - position, tokenIndex = position918, tokenIndex918 + goto l926 + l925: + position, tokenIndex = position925, tokenIndex925 } + l926: + goto l920 l919: - goto l913 - l912: - position, tokenIndex = position912, tokenIndex912 + position, tokenIndex = position919, tokenIndex919 } - l913: + l920: if buffer[position] != rune(')') { - goto l906 + goto l913 } position++ - add(ruleBaseIndexScale, position907) + add(ruleBaseIndexScale, position914) } return true - l906: - position, tokenIndex = position906, tokenIndex906 + l913: + position, tokenIndex = position913, tokenIndex913 return false }, - /* 56 Operator <- <('+' / '-')> */ + /* 57 Operator <- <('+' / '-')> */ func() bool { - position922, tokenIndex922 := position, tokenIndex + position929, tokenIndex929 := position, tokenIndex { - position923 := position + position930 := position { - position924, tokenIndex924 := position, tokenIndex + position931, tokenIndex931 := position, tokenIndex if buffer[position] != rune('+') { - goto l925 - } - position++ - goto l924 - l925: - position, tokenIndex = position924, tokenIndex924 - if buffer[position] != rune('-') { - goto l922 - } - position++ - } - l924: - add(ruleOperator, position923) - } - return true - l922: - position, tokenIndex = position922, tokenIndex922 - return false - }, - /* 57 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */ - func() bool { - position926, tokenIndex926 := position, tokenIndex - { - position927 := position - { - position928, tokenIndex928 := position, tokenIndex - if buffer[position] != rune('+') { - goto l928 - } - position++ - goto l929 - l928: - position, tokenIndex = position928, tokenIndex928 - } - l929: - { - position930, tokenIndex930 := position, tokenIndex - if buffer[position] != rune('-') { - goto l930 + goto l932 } position++ goto l931 - l930: - position, tokenIndex = position930, tokenIndex930 + l932: + position, tokenIndex = position931, tokenIndex931 + if buffer[position] != rune('-') { + goto l929 + } + position++ } l931: + add(ruleOperator, position930) + } + return true + l929: + position, tokenIndex = position929, tokenIndex929 + return false + }, + /* 58 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */ + func() bool { + position933, tokenIndex933 := position, tokenIndex + { + position934 := position { - position932, tokenIndex932 := position, tokenIndex + position935, tokenIndex935 := position, tokenIndex + if buffer[position] != rune('+') { + goto l935 + } + position++ + goto l936 + l935: + position, tokenIndex = position935, tokenIndex935 + } + l936: + { + position937, tokenIndex937 := position, tokenIndex + if buffer[position] != rune('-') { + goto l937 + } + position++ + goto l938 + l937: + position, tokenIndex = position937, tokenIndex937 + } + l938: + { + position939, tokenIndex939 := position, tokenIndex if buffer[position] != rune('0') { - goto l933 + goto l940 } position++ { - position934, tokenIndex934 := position, tokenIndex + position941, tokenIndex941 := position, tokenIndex if buffer[position] != rune('b') { - goto l935 - } - position++ - goto l934 - l935: - position, tokenIndex = position934, tokenIndex934 - if buffer[position] != rune('B') { - goto l933 - } - position++ - } - l934: - { - position938, tokenIndex938 := position, tokenIndex - if buffer[position] != rune('0') { - goto l939 - } - position++ - goto l938 - l939: - position, tokenIndex = position938, tokenIndex938 - if buffer[position] != rune('1') { - goto l933 - } - position++ - } - l938: - l936: - { - position937, tokenIndex937 := position, tokenIndex - { - position940, tokenIndex940 := position, tokenIndex - if buffer[position] != rune('0') { - goto l941 - } - position++ - goto l940 - l941: - position, tokenIndex = position940, tokenIndex940 - if buffer[position] != rune('1') { - goto l937 - } - position++ - } - l940: - goto l936 - l937: - position, tokenIndex = position937, tokenIndex937 - } - goto l932 - l933: - position, tokenIndex = position932, tokenIndex932 - if buffer[position] != rune('0') { - goto l942 - } - position++ - { - position943, tokenIndex943 := position, tokenIndex - if buffer[position] != rune('x') { - goto l944 - } - position++ - goto l943 - l944: - position, tokenIndex = position943, tokenIndex943 - if buffer[position] != rune('X') { goto l942 } position++ - } - l943: - { - position947, tokenIndex947 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l948 + goto l941 + l942: + position, tokenIndex = position941, tokenIndex941 + if buffer[position] != rune('B') { + goto l940 } position++ - goto l947 - l948: - position, tokenIndex = position947, tokenIndex947 - if c := buffer[position]; c < rune('0') || c > rune('9') { + } + l941: + { + position945, tokenIndex945 := position, tokenIndex + if buffer[position] != rune('0') { + goto l946 + } + position++ + goto l945 + l946: + position, tokenIndex = position945, tokenIndex945 + if buffer[position] != rune('1') { + goto l940 + } + position++ + } + l945: + l943: + { + position944, tokenIndex944 := position, tokenIndex + { + position947, tokenIndex947 := position, tokenIndex + if buffer[position] != rune('0') { + goto l948 + } + position++ + goto l947 + l948: + position, tokenIndex = position947, tokenIndex947 + if buffer[position] != rune('1') { + goto l944 + } + position++ + } + l947: + goto l943 + l944: + position, tokenIndex = position944, tokenIndex944 + } + goto l939 + l940: + position, tokenIndex = position939, tokenIndex939 + if buffer[position] != rune('0') { + goto l949 + } + position++ + { + position950, tokenIndex950 := position, tokenIndex + if buffer[position] != rune('x') { + goto l951 + } + position++ + goto l950 + l951: + position, tokenIndex = position950, tokenIndex950 + if buffer[position] != rune('X') { goto l949 } position++ - goto l947 - l949: - position, tokenIndex = position947, tokenIndex947 - { - position950, tokenIndex950 := position, tokenIndex - if c := buffer[position]; c < rune('a') || c > rune('f') { - goto l951 - } - position++ - goto l950 - l951: - position, tokenIndex = position950, tokenIndex950 - if c := buffer[position]; c < rune('A') || c > rune('F') { - goto l942 - } - position++ - } - l950: } - l947: - l945: + l950: { - position946, tokenIndex946 := position, tokenIndex - { - position952, tokenIndex952 := position, tokenIndex - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l953 - } - position++ - goto l952 - l953: - position, tokenIndex = position952, tokenIndex952 - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l954 - } - position++ - goto l952 - l954: - position, tokenIndex = position952, tokenIndex952 - { - position955, tokenIndex955 := position, tokenIndex - if c := buffer[position]; c < rune('a') || c > rune('f') { - goto l956 - } - position++ - goto l955 - l956: - position, tokenIndex = position955, tokenIndex955 - if c := buffer[position]; c < rune('A') || c > rune('F') { - goto l946 - } - position++ - } - l955: - } - l952: - goto l945 - l946: - position, tokenIndex = position946, tokenIndex946 - } - goto l932 - l942: - position, tokenIndex = position932, tokenIndex932 - if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l926 - } - position++ - l957: - { - position958, tokenIndex958 := position, tokenIndex + position954, tokenIndex954 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l958 + goto l955 } position++ - goto l957 - l958: - position, tokenIndex = position958, tokenIndex958 + goto l954 + l955: + position, tokenIndex = position954, tokenIndex954 + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l956 + } + position++ + goto l954 + l956: + position, tokenIndex = position954, tokenIndex954 + { + position957, tokenIndex957 := position, tokenIndex + if c := buffer[position]; c < rune('a') || c > rune('f') { + goto l958 + } + position++ + goto l957 + l958: + position, tokenIndex = position957, tokenIndex957 + if c := buffer[position]; c < rune('A') || c > rune('F') { + goto l949 + } + position++ + } + l957: } - } - l932: - add(ruleOffset, position927) - } - return true - l926: - position, tokenIndex = position926, tokenIndex926 - return false - }, - /* 58 Section <- <([a-z] / [A-Z] / '@')+> */ - func() bool { - position959, tokenIndex959 := position, tokenIndex - { - position960 := position - { - position963, tokenIndex963 := position, tokenIndex - if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l964 - } - position++ - goto l963 - l964: - position, tokenIndex = position963, tokenIndex963 - if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l965 - } - position++ - goto l963 - l965: - position, tokenIndex = position963, tokenIndex963 - if buffer[position] != rune('@') { - goto l959 - } - position++ - } - l963: - l961: - { - position962, tokenIndex962 := position, tokenIndex + l954: + l952: { - position966, tokenIndex966 := position, tokenIndex - if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l967 + position953, tokenIndex953 := position, tokenIndex + { + position959, tokenIndex959 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l960 + } + position++ + goto l959 + l960: + position, tokenIndex = position959, tokenIndex959 + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l961 + } + position++ + goto l959 + l961: + position, tokenIndex = position959, tokenIndex959 + { + position962, tokenIndex962 := position, tokenIndex + if c := buffer[position]; c < rune('a') || c > rune('f') { + goto l963 + } + position++ + goto l962 + l963: + position, tokenIndex = position962, tokenIndex962 + if c := buffer[position]; c < rune('A') || c > rune('F') { + goto l953 + } + position++ + } + l962: } - position++ - goto l966 - l967: - position, tokenIndex = position966, tokenIndex966 - if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l968 - } - position++ - goto l966 - l968: - position, tokenIndex = position966, tokenIndex966 - if buffer[position] != rune('@') { - goto l962 - } - position++ + l959: + goto l952 + l953: + position, tokenIndex = position953, tokenIndex953 } - l966: - goto l961 - l962: - position, tokenIndex = position962, tokenIndex962 + goto l939 + l949: + position, tokenIndex = position939, tokenIndex939 + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l933 + } + position++ + l964: + { + position965, tokenIndex965 := position, tokenIndex + if c := buffer[position]; c < rune('0') || c > rune('9') { + goto l965 + } + position++ + goto l964 + l965: + position, tokenIndex = position965, tokenIndex965 + } } - add(ruleSection, position960) + l939: + add(ruleOffset, position934) } return true - l959: - position, tokenIndex = position959, tokenIndex959 + l933: + position, tokenIndex = position933, tokenIndex933 return false }, - /* 59 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */ + /* 59 Section <- <([a-z] / [A-Z] / '@')+> */ func() bool { - position969, tokenIndex969 := position, tokenIndex + position966, tokenIndex966 := position, tokenIndex { - position970 := position - if buffer[position] != rune('%') { - goto l969 - } - position++ + position967 := position { - position971, tokenIndex971 := position, tokenIndex - if c := buffer[position]; c < rune('c') || c > rune('g') { + position970, tokenIndex970 := position, tokenIndex + if c := buffer[position]; c < rune('a') || c > rune('z') { + goto l971 + } + position++ + goto l970 + l971: + position, tokenIndex = position970, tokenIndex970 + if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l972 } position++ - goto l971 + goto l970 l972: - position, tokenIndex = position971, tokenIndex971 - if buffer[position] != rune('s') { - goto l969 + position, tokenIndex = position970, tokenIndex970 + if buffer[position] != rune('@') { + goto l966 } position++ } - l971: + l970: + l968: + { + position969, tokenIndex969 := position, tokenIndex + { + position973, tokenIndex973 := position, tokenIndex + if c := buffer[position]; c < rune('a') || c > rune('z') { + goto l974 + } + position++ + goto l973 + l974: + position, tokenIndex = position973, tokenIndex973 + if c := buffer[position]; c < rune('A') || c > rune('Z') { + goto l975 + } + position++ + goto l973 + l975: + position, tokenIndex = position973, tokenIndex973 + if buffer[position] != rune('@') { + goto l969 + } + position++ + } + l973: + goto l968 + l969: + position, tokenIndex = position969, tokenIndex969 + } + add(ruleSection, position967) + } + return true + l966: + position, tokenIndex = position966, tokenIndex966 + return false + }, + /* 60 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */ + func() bool { + position976, tokenIndex976 := position, tokenIndex + { + position977 := position + if buffer[position] != rune('%') { + goto l976 + } + position++ + { + position978, tokenIndex978 := position, tokenIndex + if c := buffer[position]; c < rune('c') || c > rune('g') { + goto l979 + } + position++ + goto l978 + l979: + position, tokenIndex = position978, tokenIndex978 + if buffer[position] != rune('s') { + goto l976 + } + position++ + } + l978: if buffer[position] != rune('s') { - goto l969 + goto l976 } position++ if buffer[position] != rune(':') { - goto l969 + goto l976 } position++ - add(ruleSegmentRegister, position970) + add(ruleSegmentRegister, position977) } return true - l969: - position, tokenIndex = position969, tokenIndex969 + l976: + position, tokenIndex = position976, tokenIndex976 return false }, }
diff --git a/util/fipstools/delocate/testdata/aarch64-Basic/in.s b/util/fipstools/delocate/testdata/aarch64-Basic/in.s index f93a83f..114ff4f 100644 --- a/util/fipstools/delocate/testdata/aarch64-Basic/in.s +++ b/util/fipstools/delocate/testdata/aarch64-Basic/in.s
@@ -86,12 +86,17 @@ ld1d { z1.d }, p91/z, [x13, x11, lsl #3] ld1b { z11.b }, p15/z, [x10, #1, mul vl] st2d { z6.d, z7.d }, p0, [x12] - // Check that "p22" here isn't parsed as the "p22" register. + // Check that "p22" here isn't parsed as the "p22" register. bl p224_point_add ptrue p0.d, vl1 - // The "#7" here isn't a comment, it's now valid Aarch64 assembly. + // The "#7" here isn't a comment, it's now valid Aarch64 assembly. cnth x8, all, mul #7 + // fcmp can compare against zero, which is expressed with a floating- + // point zero literal in the instruction. Again, this is not a + // comment. + fcmp d0, #0.0 + local_function: // BSS data
diff --git a/util/fipstools/delocate/testdata/aarch64-Basic/out.s b/util/fipstools/delocate/testdata/aarch64-Basic/out.s index 4c3ec6d..d77695d 100644 --- a/util/fipstools/delocate/testdata/aarch64-Basic/out.s +++ b/util/fipstools/delocate/testdata/aarch64-Basic/out.s
@@ -135,13 +135,18 @@ ld1d { z1.d }, p91/z, [x13, x11, lsl #3] ld1b { z11.b }, p15/z, [x10, #1, mul vl] st2d { z6.d, z7.d }, p0, [x12] - // Check that "p22" here isn't parsed as the "p22" register. + // Check that "p22" here isn't parsed as the "p22" register. // WAS bl p224_point_add bl bcm_redirector_p224_point_add ptrue p0.d, vl1 - // The "#7" here isn't a comment, it's now valid Aarch64 assembly. + // The "#7" here isn't a comment, it's now valid Aarch64 assembly. cnth x8, all, mul #7 + // fcmp can compare against zero, which is expressed with a floating- + // point zero literal in the instruction. Again, this is not a + // comment. + fcmp d0, #0.0 + .Llocal_function_local_target: local_function: