aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorAdam Langley <agl@imperialviolet.org>2024-01-25 00:18:00 +0000
committerBoringssl LUCI CQ <boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com>2024-04-04 00:05:33 +0000
commite97787e7f33fe8f0aeb2fc3ee7fbb86e1a074ba5 (patch)
tree6edd48e1541b3b0e105cdce1432a33a16c3d3111 /util
parent68c6fd8943ffba4e5054ff3a9befa8882b6b226a (diff)
downloadboringssl-e97787e7f33fe8f0aeb2fc3ee7fbb86e1a074ba5.zip
boringssl-e97787e7f33fe8f0aeb2fc3ee7fbb86e1a074ba5.tar.gz
boringssl-e97787e7f33fe8f0aeb2fc3ee7fbb86e1a074ba5.tar.bz2
delocate: handle more SVE2 forms.
After getting further with 672efb1f8e it turns out that there are more SVE2 instruction forms that we need to be able to recognise. Change-Id: Ia180c12ecf702e2c5536adbe1c30ac5ebd43fe75 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/65727 Reviewed-by: David Benjamin <davidben@google.com> Commit-Queue: Adam Langley <agl@google.com> Auto-Submit: Adam Langley <agl@google.com>
Diffstat (limited to 'util')
-rw-r--r--util/fipstools/delocate/delocate.peg11
-rw-r--r--util/fipstools/delocate/delocate.peg.go2363
-rw-r--r--util/fipstools/delocate/testdata/aarch64-Basic/in.s12
-rw-r--r--util/fipstools/delocate/testdata/aarch64-Basic/out.s22
4 files changed, 1567 insertions, 841 deletions
diff --git a/util/fipstools/delocate/delocate.peg b/util/fipstools/delocate/delocate.peg
index 3381cae..3ce01ed 100644
--- a/util/fipstools/delocate/delocate.peg
+++ b/util/fipstools/delocate/delocate.peg
@@ -83,13 +83,16 @@ RegisterOrConstant <- (('%'[[A-Z]][[A-Z0-9]]*) /
ARMRegister)
![fb:(+\-]
ARMConstantTweak <- ((([us] "xt" [xwhb]) / "lsl" / "lsr" / "ror" / "asr") (WS '#' Offset)?) /
- "mul vl" # multiply offset by the hardware's vector length
+ "mul vl" / # multiply offset by the hardware's vector length
+ "mul #" [0-9]
ARMRegister <- "sp" /
([xwdqshb] [0-9] [0-9]?) /
- "xzr" / "wzr" / "NZCV" / ARMVectorRegister / SVE2PredicateRegister /
+ "xzr" / "wzr" / "NZCV" / SVE2PredicateRegister / ARMVectorRegister / SVE2SpecialValue /
('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')? )
-ARMVectorRegister <- [vz] [0-9] [0-9]? ('.' [0-9]* [bsdhq] ('[' [0-9] [0-9]? ']')? )?
-SVE2PredicateRegister <- "p" [0-9] [0-9]? "/" [mMzZ]
+ARMVectorRegister <- [pvz] [0-9] [0-9]? ![[0-9a-z_]] ('.' [0-9]* [bsdhq] ('[' [0-9] [0-9]? ']')? )?
+SVE2PredicateRegister <- "p" [0-9] [0-9]? "/" [[mz]]
+# https://developer.arm.com/documentation/ddi0596/2020-12/SVE-Instructions/INCD--INCH--INCW--vector---Increment-vector-by-multiple-of-predicate-constraint-element-count-
+SVE2SpecialValue <- ("pow2" / ("vl" [12345678] ![0-9] ) / "vl16" / "vl32" / "vl64" / "vl128" / "vl256" / "mul3" / "mul4" / "all") ![[0-9a-z_]]
# Compilers only output a very limited number of expression forms. Rather than
# implement a full expression parser, this enumerate those forms plus a few
# that appear in our hand-written assembly.
diff --git a/util/fipstools/delocate/delocate.peg.go b/util/fipstools/delocate/delocate.peg.go
index f0963cc..856518d 100644
--- a/util/fipstools/delocate/delocate.peg.go
+++ b/util/fipstools/delocate/delocate.peg.go
@@ -65,6 +65,7 @@ const (
ruleARMRegister
ruleARMVectorRegister
ruleSVE2PredicateRegister
+ ruleSVE2SpecialValue
ruleMemoryRef
ruleSymbolRef
ruleLow12BitsSymbolRef
@@ -127,6 +128,7 @@ var rul3s = [...]string{
"ARMRegister",
"ARMVectorRegister",
"SVE2PredicateRegister",
+ "SVE2SpecialValue",
"MemoryRef",
"SymbolRef",
"Low12BitsSymbolRef",
@@ -252,7 +254,7 @@ func (t *tokens32) Tokens() []token32 {
type Asm struct {
Buffer string
buffer []rune
- rules [59]func() bool
+ rules [60]func() bool
parse func(rule ...int) error
reset func()
Pretty bool
@@ -4770,7 +4772,7 @@ func (p *Asm) Init(options ...func(*Asm) error) error {
position, tokenIndex = position532, tokenIndex532
return false
},
- /* 43 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')))> */
+ /* 43 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 {
position573, tokenIndex573 := position, tokenIndex
{
@@ -5068,84 +5070,144 @@ func (p *Asm) Init(options ...func(*Asm) error) error {
l576:
position, tokenIndex = position575, tokenIndex575
{
- position618, tokenIndex618 := position, tokenIndex
+ position619, tokenIndex619 := position, tokenIndex
if buffer[position] != rune('m') {
- goto l619
+ goto l620
}
position++
- goto l618
- l619:
- position, tokenIndex = position618, tokenIndex618
+ goto l619
+ l620:
+ position, tokenIndex = position619, tokenIndex619
if buffer[position] != rune('M') {
- goto l573
+ goto l618
}
position++
}
- l618:
+ l619:
{
- position620, tokenIndex620 := position, tokenIndex
+ position621, tokenIndex621 := position, tokenIndex
if buffer[position] != rune('u') {
- goto l621
+ goto l622
}
position++
- goto l620
- l621:
- position, tokenIndex = position620, tokenIndex620
+ goto l621
+ l622:
+ position, tokenIndex = position621, tokenIndex621
if buffer[position] != rune('U') {
- goto l573
+ goto l618
}
position++
}
- l620:
+ l621:
{
- position622, tokenIndex622 := position, tokenIndex
+ position623, tokenIndex623 := position, tokenIndex
if buffer[position] != rune('l') {
- goto l623
+ goto l624
}
position++
- goto l622
- l623:
- position, tokenIndex = position622, tokenIndex622
+ goto l623
+ l624:
+ position, tokenIndex = position623, tokenIndex623
if buffer[position] != rune('L') {
- goto l573
+ goto l618
}
position++
}
- l622:
+ l623:
if buffer[position] != rune(' ') {
- goto l573
+ goto l618
}
position++
{
- position624, tokenIndex624 := position, tokenIndex
+ position625, tokenIndex625 := position, tokenIndex
if buffer[position] != rune('v') {
- goto l625
+ goto l626
}
position++
- goto l624
- l625:
- position, tokenIndex = position624, tokenIndex624
+ goto l625
+ l626:
+ position, tokenIndex = position625, tokenIndex625
if buffer[position] != rune('V') {
+ goto l618
+ }
+ position++
+ }
+ l625:
+ {
+ position627, tokenIndex627 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l628
+ }
+ position++
+ goto l627
+ l628:
+ position, tokenIndex = position627, tokenIndex627
+ if buffer[position] != rune('L') {
+ goto l618
+ }
+ position++
+ }
+ l627:
+ goto l575
+ l618:
+ position, tokenIndex = position575, tokenIndex575
+ {
+ position629, tokenIndex629 := position, tokenIndex
+ if buffer[position] != rune('m') {
+ goto l630
+ }
+ position++
+ goto l629
+ l630:
+ position, tokenIndex = position629, tokenIndex629
+ if buffer[position] != rune('M') {
+ goto l573
+ }
+ position++
+ }
+ l629:
+ {
+ position631, tokenIndex631 := position, tokenIndex
+ if buffer[position] != rune('u') {
+ goto l632
+ }
+ position++
+ goto l631
+ l632:
+ position, tokenIndex = position631, tokenIndex631
+ if buffer[position] != rune('U') {
goto l573
}
position++
}
- l624:
+ l631:
{
- position626, tokenIndex626 := position, tokenIndex
+ position633, tokenIndex633 := position, tokenIndex
if buffer[position] != rune('l') {
- goto l627
+ goto l634
}
position++
- goto l626
- l627:
- position, tokenIndex = position626, tokenIndex626
+ goto l633
+ l634:
+ position, tokenIndex = position633, tokenIndex633
if buffer[position] != rune('L') {
goto l573
}
position++
}
- l626:
+ l633:
+ if buffer[position] != rune(' ') {
+ goto l573
+ }
+ position++
+ if buffer[position] != rune('#') {
+ goto l573
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l573
+ }
+ position++
}
l575:
add(ruleARMConstantTweak, position574)
@@ -5155,172 +5217,124 @@ func (p *Asm) Init(options ...func(*Asm) error) error {
position, tokenIndex = position573, tokenIndex573
return false
},
- /* 44 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')) / ARMVectorRegister / SVE2PredicateRegister / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
+ /* 44 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 {
- position628, tokenIndex628 := position, tokenIndex
+ position635, tokenIndex635 := position, tokenIndex
{
- position629 := position
+ position636 := position
{
- position630, tokenIndex630 := position, tokenIndex
+ position637, tokenIndex637 := position, tokenIndex
{
- position632, tokenIndex632 := position, tokenIndex
+ position639, tokenIndex639 := position, tokenIndex
if buffer[position] != rune('s') {
- goto l633
+ goto l640
}
position++
- goto l632
- l633:
- position, tokenIndex = position632, tokenIndex632
+ goto l639
+ l640:
+ position, tokenIndex = position639, tokenIndex639
if buffer[position] != rune('S') {
- goto l631
+ goto l638
}
position++
}
- l632:
+ l639:
{
- position634, tokenIndex634 := position, tokenIndex
+ position641, tokenIndex641 := position, tokenIndex
if buffer[position] != rune('p') {
- goto l635
+ goto l642
}
position++
- goto l634
- l635:
- position, tokenIndex = position634, tokenIndex634
+ goto l641
+ l642:
+ position, tokenIndex = position641, tokenIndex641
if buffer[position] != rune('P') {
- goto l631
+ goto l638
}
position++
}
- l634:
- goto l630
- l631:
- position, tokenIndex = position630, tokenIndex630
+ l641:
+ goto l637
+ l638:
+ position, tokenIndex = position637, tokenIndex637
{
- position637, tokenIndex637 := position, tokenIndex
+ position644, tokenIndex644 := position, tokenIndex
if buffer[position] != rune('x') {
- goto l638
+ goto l645
}
position++
- goto l637
- l638:
- position, tokenIndex = position637, tokenIndex637
+ goto l644
+ l645:
+ position, tokenIndex = position644, tokenIndex644
if buffer[position] != rune('w') {
- goto l639
+ goto l646
}
position++
- goto l637
- l639:
- position, tokenIndex = position637, tokenIndex637
+ goto l644
+ l646:
+ position, tokenIndex = position644, tokenIndex644
if buffer[position] != rune('d') {
- goto l640
+ goto l647
}
position++
- goto l637
- l640:
- position, tokenIndex = position637, tokenIndex637
+ goto l644
+ l647:
+ position, tokenIndex = position644, tokenIndex644
if buffer[position] != rune('q') {
- goto l641
+ goto l648
}
position++
- goto l637
- l641:
- position, tokenIndex = position637, tokenIndex637
+ goto l644
+ l648:
+ position, tokenIndex = position644, tokenIndex644
if buffer[position] != rune('s') {
- goto l642
+ goto l649
}
position++
- goto l637
- l642:
- position, tokenIndex = position637, tokenIndex637
+ goto l644
+ l649:
+ position, tokenIndex = position644, tokenIndex644
if buffer[position] != rune('h') {
- goto l643
+ goto l650
}
position++
- goto l637
- l643:
- position, tokenIndex = position637, tokenIndex637
+ goto l644
+ l650:
+ position, tokenIndex = position644, tokenIndex644
if buffer[position] != rune('b') {
- goto l636
+ goto l643
}
position++
}
- l637:
+ l644:
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l636
+ goto l643
}
position++
{
- position644, tokenIndex644 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l644
- }
- position++
- goto l645
- l644:
- position, tokenIndex = position644, tokenIndex644
- }
- l645:
- goto l630
- l636:
- position, tokenIndex = position630, tokenIndex630
- {
- position647, tokenIndex647 := position, tokenIndex
- if buffer[position] != rune('x') {
- goto l648
- }
- position++
- goto l647
- l648:
- position, tokenIndex = position647, tokenIndex647
- if buffer[position] != rune('X') {
- goto l646
- }
- position++
- }
- l647:
- {
- position649, tokenIndex649 := position, tokenIndex
- if buffer[position] != rune('z') {
- goto l650
- }
- position++
- goto l649
- l650:
- position, tokenIndex = position649, tokenIndex649
- if buffer[position] != rune('Z') {
- goto l646
- }
- position++
- }
- l649:
- {
position651, tokenIndex651 := position, tokenIndex
- if buffer[position] != rune('r') {
- goto l652
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l651
}
position++
- goto l651
- l652:
+ goto l652
+ l651:
position, tokenIndex = position651, tokenIndex651
- if buffer[position] != rune('R') {
- goto l646
- }
- position++
}
- l651:
- goto l630
- l646:
- position, tokenIndex = position630, tokenIndex630
+ l652:
+ goto l637
+ l643:
+ position, tokenIndex = position637, tokenIndex637
{
position654, tokenIndex654 := position, tokenIndex
- if buffer[position] != rune('w') {
+ if buffer[position] != rune('x') {
goto l655
}
position++
goto l654
l655:
position, tokenIndex = position654, tokenIndex654
- if buffer[position] != rune('W') {
+ if buffer[position] != rune('X') {
goto l653
}
position++
@@ -5356,19 +5370,19 @@ func (p *Asm) Init(options ...func(*Asm) error) error {
position++
}
l658:
- goto l630
+ goto l637
l653:
- position, tokenIndex = position630, tokenIndex630
+ position, tokenIndex = position637, tokenIndex637
{
position661, tokenIndex661 := position, tokenIndex
- if buffer[position] != rune('n') {
+ if buffer[position] != rune('w') {
goto l662
}
position++
goto l661
l662:
position, tokenIndex = position661, tokenIndex661
- if buffer[position] != rune('N') {
+ if buffer[position] != rune('W') {
goto l660
}
position++
@@ -5391,1375 +5405,2062 @@ func (p *Asm) Init(options ...func(*Asm) error) error {
l663:
{
position665, tokenIndex665 := position, tokenIndex
- if buffer[position] != rune('c') {
+ if buffer[position] != rune('r') {
goto l666
}
position++
goto l665
l666:
position, tokenIndex = position665, tokenIndex665
- if buffer[position] != rune('C') {
+ if buffer[position] != rune('R') {
goto l660
}
position++
}
l665:
+ goto l637
+ l660:
+ position, tokenIndex = position637, tokenIndex637
+ {
+ position668, tokenIndex668 := position, tokenIndex
+ if buffer[position] != rune('n') {
+ goto l669
+ }
+ position++
+ goto l668
+ l669:
+ position, tokenIndex = position668, tokenIndex668
+ if buffer[position] != rune('N') {
+ goto l667
+ }
+ position++
+ }
+ l668:
+ {
+ position670, tokenIndex670 := position, tokenIndex
+ if buffer[position] != rune('z') {
+ goto l671
+ }
+ position++
+ goto l670
+ l671:
+ position, tokenIndex = position670, tokenIndex670
+ if buffer[position] != rune('Z') {
+ goto l667
+ }
+ position++
+ }
+ l670:
{
- position667, tokenIndex667 := position, tokenIndex
+ position672, tokenIndex672 := position, tokenIndex
+ if buffer[position] != rune('c') {
+ goto l673
+ }
+ position++
+ goto l672
+ l673:
+ position, tokenIndex = position672, tokenIndex672
+ if buffer[position] != rune('C') {
+ goto l667
+ }
+ position++
+ }
+ l672:
+ {
+ position674, tokenIndex674 := position, tokenIndex
if buffer[position] != rune('v') {
- goto l668
+ goto l675
}
position++
- goto l667
- l668:
- position, tokenIndex = position667, tokenIndex667
+ goto l674
+ l675:
+ position, tokenIndex = position674, tokenIndex674
if buffer[position] != rune('V') {
- goto l660
+ goto l667
}
position++
}
+ l674:
+ goto l637
l667:
- goto l630
- l660:
- position, tokenIndex = position630, tokenIndex630
+ position, tokenIndex = position637, tokenIndex637
+ if !_rules[ruleSVE2PredicateRegister]() {
+ goto l676
+ }
+ goto l637
+ l676:
+ position, tokenIndex = position637, tokenIndex637
if !_rules[ruleARMVectorRegister]() {
- goto l669
+ goto l677
}
- goto l630
- l669:
- position, tokenIndex = position630, tokenIndex630
- if !_rules[ruleSVE2PredicateRegister]() {
- goto l670
+ goto l637
+ l677:
+ position, tokenIndex = position637, tokenIndex637
+ if !_rules[ruleSVE2SpecialValue]() {
+ goto l678
}
- goto l630
- l670:
- position, tokenIndex = position630, tokenIndex630
+ goto l637
+ l678:
+ position, tokenIndex = position637, tokenIndex637
if buffer[position] != rune('{') {
- goto l628
+ goto l635
}
position++
{
- position671, tokenIndex671 := position, tokenIndex
+ position679, tokenIndex679 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l671
+ goto l679
}
- goto l672
- l671:
- position, tokenIndex = position671, tokenIndex671
+ goto l680
+ l679:
+ position, tokenIndex = position679, tokenIndex679
}
- l672:
+ l680:
if !_rules[ruleARMVectorRegister]() {
- goto l628
+ goto l635
}
- l673:
+ l681:
{
- position674, tokenIndex674 := position, tokenIndex
+ position682, tokenIndex682 := position, tokenIndex
if buffer[position] != rune(',') {
- goto l674
+ goto l682
}
position++
{
- position675, tokenIndex675 := position, tokenIndex
+ position683, tokenIndex683 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l675
+ goto l683
}
- goto l676
- l675:
- position, tokenIndex = position675, tokenIndex675
+ goto l684
+ l683:
+ position, tokenIndex = position683, tokenIndex683
}
- l676:
+ l684:
if !_rules[ruleARMVectorRegister]() {
- goto l674
+ goto l682
}
- goto l673
- l674:
- position, tokenIndex = position674, tokenIndex674
+ goto l681
+ l682:
+ position, tokenIndex = position682, tokenIndex682
}
{
- position677, tokenIndex677 := position, tokenIndex
+ position685, tokenIndex685 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l677
+ goto l685
}
- goto l678
- l677:
- position, tokenIndex = position677, tokenIndex677
+ goto l686
+ l685:
+ position, tokenIndex = position685, tokenIndex685
}
- l678:
+ l686:
if buffer[position] != rune('}') {
- goto l628
+ goto l635
}
position++
{
- position679, tokenIndex679 := position, tokenIndex
+ position687, tokenIndex687 := position, tokenIndex
if buffer[position] != rune('[') {
- goto l679
+ goto l687
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l679
+ goto l687
}
position++
{
- position681, tokenIndex681 := position, tokenIndex
+ position689, tokenIndex689 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l681
+ goto l689
}
position++
- goto l682
- l681:
- position, tokenIndex = position681, tokenIndex681
+ goto l690
+ l689:
+ position, tokenIndex = position689, tokenIndex689
}
- l682:
+ l690:
if buffer[position] != rune(']') {
- goto l679
+ goto l687
}
position++
- goto l680
- l679:
- position, tokenIndex = position679, tokenIndex679
+ goto l688
+ l687:
+ position, tokenIndex = position687, tokenIndex687
}
- l680:
+ l688:
}
- l630:
- add(ruleARMRegister, position629)
+ l637:
+ add(ruleARMRegister, position636)
}
return true
- l628:
- position, tokenIndex = position628, tokenIndex628
+ l635:
+ position, tokenIndex = position635, tokenIndex635
return false
},
- /* 45 ARMVectorRegister <- <(('v' / 'z') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */
+ /* 45 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 {
- position683, tokenIndex683 := position, tokenIndex
+ position691, tokenIndex691 := position, tokenIndex
{
- position684 := position
+ position692 := position
{
- position685, tokenIndex685 := position, tokenIndex
+ position693, tokenIndex693 := position, tokenIndex
+ if buffer[position] != rune('p') {
+ goto l694
+ }
+ position++
+ goto l693
+ l694:
+ position, tokenIndex = position693, tokenIndex693
if buffer[position] != rune('v') {
- goto l686
+ goto l695
}
position++
- goto l685
- l686:
- position, tokenIndex = position685, tokenIndex685
+ goto l693
+ l695:
+ position, tokenIndex = position693, tokenIndex693
if buffer[position] != rune('z') {
- goto l683
+ goto l691
}
position++
}
- l685:
+ l693:
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l683
+ goto l691
}
position++
{
- position687, tokenIndex687 := position, tokenIndex
+ position696, tokenIndex696 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l687
+ goto l696
}
position++
- goto l688
- l687:
- position, tokenIndex = position687, tokenIndex687
+ goto l697
+ l696:
+ position, tokenIndex = position696, tokenIndex696
+ }
+ l697:
+ {
+ position698, tokenIndex698 := position, tokenIndex
+ {
+ position699, tokenIndex699 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l700
+ }
+ position++
+ goto l699
+ l700:
+ position, tokenIndex = position699, tokenIndex699
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l701
+ }
+ position++
+ goto l699
+ l701:
+ position, tokenIndex = position699, tokenIndex699
+ {
+ position703, tokenIndex703 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l704
+ }
+ position++
+ goto l703
+ l704:
+ position, tokenIndex = position703, tokenIndex703
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l702
+ }
+ position++
+ }
+ l703:
+ goto l699
+ l702:
+ position, tokenIndex = position699, tokenIndex699
+ if buffer[position] != rune('_') {
+ goto l698
+ }
+ position++
+ }
+ l699:
+ goto l691
+ l698:
+ position, tokenIndex = position698, tokenIndex698
}
- l688:
{
- position689, tokenIndex689 := position, tokenIndex
+ position705, tokenIndex705 := position, tokenIndex
if buffer[position] != rune('.') {
- goto l689
+ goto l705
}
position++
- l691:
+ l707:
{
- position692, tokenIndex692 := position, tokenIndex
+ position708, tokenIndex708 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l692
+ goto l708
}
position++
- goto l691
- l692:
- position, tokenIndex = position692, tokenIndex692
+ goto l707
+ l708:
+ position, tokenIndex = position708, tokenIndex708
}
{
- position693, tokenIndex693 := position, tokenIndex
+ position709, tokenIndex709 := position, tokenIndex
if buffer[position] != rune('b') {
- goto l694
+ goto l710
}
position++
- goto l693
- l694:
- position, tokenIndex = position693, tokenIndex693
+ goto l709
+ l710:
+ position, tokenIndex = position709, tokenIndex709
if buffer[position] != rune('s') {
- goto l695
+ goto l711
}
position++
- goto l693
- l695:
- position, tokenIndex = position693, tokenIndex693
+ goto l709
+ l711:
+ position, tokenIndex = position709, tokenIndex709
if buffer[position] != rune('d') {
- goto l696
+ goto l712
}
position++
- goto l693
- l696:
- position, tokenIndex = position693, tokenIndex693
+ goto l709
+ l712:
+ position, tokenIndex = position709, tokenIndex709
if buffer[position] != rune('h') {
- goto l697
+ goto l713
}
position++
- goto l693
- l697:
- position, tokenIndex = position693, tokenIndex693
+ goto l709
+ l713:
+ position, tokenIndex = position709, tokenIndex709
if buffer[position] != rune('q') {
- goto l689
+ goto l705
}
position++
}
- l693:
+ l709:
{
- position698, tokenIndex698 := position, tokenIndex
+ position714, tokenIndex714 := position, tokenIndex
if buffer[position] != rune('[') {
- goto l698
+ goto l714
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l698
+ goto l714
}
position++
{
- position700, tokenIndex700 := position, tokenIndex
+ position716, tokenIndex716 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l700
+ goto l716
}
position++
- goto l701
- l700:
- position, tokenIndex = position700, tokenIndex700
+ goto l717
+ l716:
+ position, tokenIndex = position716, tokenIndex716
}
- l701:
+ l717:
if buffer[position] != rune(']') {
- goto l698
+ goto l714
}
position++
- goto l699
- l698:
- position, tokenIndex = position698, tokenIndex698
+ goto l715
+ l714:
+ position, tokenIndex = position714, tokenIndex714
}
- l699:
- goto l690
- l689:
- position, tokenIndex = position689, tokenIndex689
+ l715:
+ goto l706
+ l705:
+ position, tokenIndex = position705, tokenIndex705
}
- l690:
- add(ruleARMVectorRegister, position684)
+ l706:
+ add(ruleARMVectorRegister, position692)
}
return true
- l683:
- position, tokenIndex = position683, tokenIndex683
+ l691:
+ position, tokenIndex = position691, tokenIndex691
return false
},
- /* 46 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / 'z' / 'Z'))> */
+ /* 46 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / ('z' / 'Z')))> */
func() bool {
- position702, tokenIndex702 := position, tokenIndex
+ position718, tokenIndex718 := position, tokenIndex
{
- position703 := position
+ position719 := position
{
- position704, tokenIndex704 := position, tokenIndex
+ position720, tokenIndex720 := position, tokenIndex
if buffer[position] != rune('p') {
- goto l705
+ goto l721
}
position++
- goto l704
- l705:
- position, tokenIndex = position704, tokenIndex704
+ goto l720
+ l721:
+ position, tokenIndex = position720, tokenIndex720
if buffer[position] != rune('P') {
- goto l702
+ goto l718
}
position++
}
- l704:
+ l720:
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l702
+ goto l718
}
position++
{
- position706, tokenIndex706 := position, tokenIndex
+ position722, tokenIndex722 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l706
+ goto l722
}
position++
- goto l707
- l706:
- position, tokenIndex = position706, tokenIndex706
+ goto l723
+ l722:
+ position, tokenIndex = position722, tokenIndex722
}
- l707:
+ l723:
if buffer[position] != rune('/') {
- goto l702
+ goto l718
}
position++
{
- position708, tokenIndex708 := position, tokenIndex
+ position724, tokenIndex724 := position, tokenIndex
if buffer[position] != rune('m') {
- goto l709
+ goto l725
}
position++
- goto l708
- l709:
- position, tokenIndex = position708, tokenIndex708
+ goto l724
+ l725:
+ position, tokenIndex = position724, tokenIndex724
if buffer[position] != rune('M') {
- goto l710
+ goto l726
}
position++
- goto l708
- l710:
- position, tokenIndex = position708, tokenIndex708
- if buffer[position] != rune('z') {
- goto l711
+ goto l724
+ l726:
+ position, tokenIndex = position724, tokenIndex724
+ {
+ position727, tokenIndex727 := position, tokenIndex
+ if buffer[position] != rune('z') {
+ goto l728
+ }
+ position++
+ goto l727
+ l728:
+ position, tokenIndex = position727, tokenIndex727
+ if buffer[position] != rune('Z') {
+ goto l718
+ }
+ position++
+ }
+ l727:
+ }
+ l724:
+ add(ruleSVE2PredicateRegister, position719)
+ }
+ return true
+ l718:
+ position, tokenIndex = position718, tokenIndex718
+ return false
+ },
+ /* 47 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 {
+ position729, tokenIndex729 := position, tokenIndex
+ {
+ position730 := position
+ {
+ position731, tokenIndex731 := position, tokenIndex
+ {
+ position733, tokenIndex733 := position, tokenIndex
+ if buffer[position] != rune('p') {
+ goto l734
+ }
+ position++
+ goto l733
+ l734:
+ position, tokenIndex = position733, tokenIndex733
+ if buffer[position] != rune('P') {
+ goto l732
+ }
+ position++
+ }
+ l733:
+ {
+ position735, tokenIndex735 := position, tokenIndex
+ if buffer[position] != rune('o') {
+ goto l736
+ }
+ position++
+ goto l735
+ l736:
+ position, tokenIndex = position735, tokenIndex735
+ if buffer[position] != rune('O') {
+ goto l732
+ }
+ position++
+ }
+ l735:
+ {
+ position737, tokenIndex737 := position, tokenIndex
+ if buffer[position] != rune('w') {
+ goto l738
+ }
+ position++
+ goto l737
+ l738:
+ position, tokenIndex = position737, tokenIndex737
+ if buffer[position] != rune('W') {
+ goto l732
+ }
+ position++
+ }
+ l737:
+ if buffer[position] != rune('2') {
+ goto l732
}
position++
- goto l708
- l711:
- position, tokenIndex = position708, tokenIndex708
- if buffer[position] != rune('Z') {
- goto l702
+ goto l731
+ l732:
+ position, tokenIndex = position731, tokenIndex731
+ {
+ position740, tokenIndex740 := position, tokenIndex
+ if buffer[position] != rune('v') {
+ goto l741
+ }
+ position++
+ goto l740
+ l741:
+ position, tokenIndex = position740, tokenIndex740
+ if buffer[position] != rune('V') {
+ goto l739
+ }
+ position++
+ }
+ l740:
+ {
+ position742, tokenIndex742 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l743
+ }
+ position++
+ goto l742
+ l743:
+ position, tokenIndex = position742, tokenIndex742
+ if buffer[position] != rune('L') {
+ goto l739
+ }
+ position++
+ }
+ l742:
+ {
+ position744, tokenIndex744 := position, tokenIndex
+ if buffer[position] != rune('1') {
+ goto l745
+ }
+ position++
+ goto l744
+ l745:
+ position, tokenIndex = position744, tokenIndex744
+ if buffer[position] != rune('2') {
+ goto l746
+ }
+ position++
+ goto l744
+ l746:
+ position, tokenIndex = position744, tokenIndex744
+ if buffer[position] != rune('3') {
+ goto l747
+ }
+ position++
+ goto l744
+ l747:
+ position, tokenIndex = position744, tokenIndex744
+ if buffer[position] != rune('4') {
+ goto l748
+ }
+ position++
+ goto l744
+ l748:
+ position, tokenIndex = position744, tokenIndex744
+ if buffer[position] != rune('5') {
+ goto l749
+ }
+ position++
+ goto l744
+ l749:
+ position, tokenIndex = position744, tokenIndex744
+ if buffer[position] != rune('6') {
+ goto l750
+ }
+ position++
+ goto l744
+ l750:
+ position, tokenIndex = position744, tokenIndex744
+ if buffer[position] != rune('7') {
+ goto l751
+ }
+ position++
+ goto l744
+ l751:
+ position, tokenIndex = position744, tokenIndex744
+ if buffer[position] != rune('8') {
+ goto l739
+ }
+ position++
+ }
+ l744:
+ {
+ position752, tokenIndex752 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l752
+ }
+ position++
+ goto l739
+ l752:
+ position, tokenIndex = position752, tokenIndex752
+ }
+ goto l731
+ l739:
+ position, tokenIndex = position731, tokenIndex731
+ {
+ position754, tokenIndex754 := position, tokenIndex
+ if buffer[position] != rune('v') {
+ goto l755
+ }
+ position++
+ goto l754
+ l755:
+ position, tokenIndex = position754, tokenIndex754
+ if buffer[position] != rune('V') {
+ goto l753
+ }
+ position++
+ }
+ l754:
+ {
+ position756, tokenIndex756 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l757
+ }
+ position++
+ goto l756
+ l757:
+ position, tokenIndex = position756, tokenIndex756
+ if buffer[position] != rune('L') {
+ goto l753
+ }
+ position++
+ }
+ l756:
+ if buffer[position] != rune('1') {
+ goto l753
+ }
+ position++
+ if buffer[position] != rune('6') {
+ goto l753
+ }
+ position++
+ goto l731
+ l753:
+ position, tokenIndex = position731, tokenIndex731
+ {
+ position759, tokenIndex759 := position, tokenIndex
+ if buffer[position] != rune('v') {
+ goto l760
+ }
+ position++
+ goto l759
+ l760:
+ position, tokenIndex = position759, tokenIndex759
+ if buffer[position] != rune('V') {
+ goto l758
+ }
+ position++
+ }
+ l759:
+ {
+ position761, tokenIndex761 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l762
+ }
+ position++
+ goto l761
+ l762:
+ position, tokenIndex = position761, tokenIndex761
+ if buffer[position] != rune('L') {
+ goto l758
+ }
+ position++
+ }
+ l761:
+ if buffer[position] != rune('3') {
+ goto l758
+ }
+ position++
+ if buffer[position] != rune('2') {
+ goto l758
+ }
+ position++
+ goto l731
+ l758:
+ position, tokenIndex = position731, tokenIndex731
+ {
+ position764, tokenIndex764 := position, tokenIndex
+ if buffer[position] != rune('v') {
+ goto l765
+ }
+ position++
+ goto l764
+ l765:
+ position, tokenIndex = position764, tokenIndex764
+ if buffer[position] != rune('V') {
+ goto l763
+ }
+ position++
+ }
+ l764:
+ {
+ position766, tokenIndex766 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l767
+ }
+ position++
+ goto l766
+ l767:
+ position, tokenIndex = position766, tokenIndex766
+ if buffer[position] != rune('L') {
+ goto l763
+ }
+ position++
+ }
+ l766:
+ if buffer[position] != rune('6') {
+ goto l763
+ }
+ position++
+ if buffer[position] != rune('4') {
+ goto l763
+ }
+ position++
+ goto l731
+ l763:
+ position, tokenIndex = position731, tokenIndex731
+ {
+ position769, tokenIndex769 := position, tokenIndex
+ if buffer[position] != rune('v') {
+ goto l770
+ }
+ position++
+ goto l769
+ l770:
+ position, tokenIndex = position769, tokenIndex769
+ if buffer[position] != rune('V') {
+ goto l768
+ }
+ position++
+ }
+ l769:
+ {
+ position771, tokenIndex771 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l772
+ }
+ position++
+ goto l771
+ l772:
+ position, tokenIndex = position771, tokenIndex771
+ if buffer[position] != rune('L') {
+ goto l768
+ }
+ position++
+ }
+ l771:
+ if buffer[position] != rune('1') {
+ goto l768
+ }
+ position++
+ if buffer[position] != rune('2') {
+ goto l768
+ }
+ position++
+ if buffer[position] != rune('8') {
+ goto l768
+ }
+ position++
+ goto l731
+ l768:
+ position, tokenIndex = position731, tokenIndex731
+ {
+ position774, tokenIndex774 := position, tokenIndex
+ if buffer[position] != rune('v') {
+ goto l775
+ }
+ position++
+ goto l774
+ l775:
+ position, tokenIndex = position774, tokenIndex774
+ if buffer[position] != rune('V') {
+ goto l773
+ }
+ position++
+ }
+ l774:
+ {
+ position776, tokenIndex776 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l777
+ }
+ position++
+ goto l776
+ l777:
+ position, tokenIndex = position776, tokenIndex776
+ if buffer[position] != rune('L') {
+ goto l773
+ }
+ position++
+ }
+ l776:
+ if buffer[position] != rune('2') {
+ goto l773
+ }
+ position++
+ if buffer[position] != rune('5') {
+ goto l773
+ }
+ position++
+ if buffer[position] != rune('6') {
+ goto l773
+ }
+ position++
+ goto l731
+ l773:
+ position, tokenIndex = position731, tokenIndex731
+ {
+ position779, tokenIndex779 := position, tokenIndex
+ if buffer[position] != rune('m') {
+ goto l780
+ }
+ position++
+ goto l779
+ l780:
+ position, tokenIndex = position779, tokenIndex779
+ if buffer[position] != rune('M') {
+ goto l778
+ }
+ position++
+ }
+ l779:
+ {
+ position781, tokenIndex781 := position, tokenIndex
+ if buffer[position] != rune('u') {
+ goto l782
+ }
+ position++
+ goto l781
+ l782:
+ position, tokenIndex = position781, tokenIndex781
+ if buffer[position] != rune('U') {
+ goto l778
+ }
+ position++
+ }
+ l781:
+ {
+ position783, tokenIndex783 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l784
+ }
+ position++
+ goto l783
+ l784:
+ position, tokenIndex = position783, tokenIndex783
+ if buffer[position] != rune('L') {
+ goto l778
+ }
+ position++
+ }
+ l783:
+ if buffer[position] != rune('3') {
+ goto l778
}
position++
+ goto l731
+ l778:
+ position, tokenIndex = position731, tokenIndex731
+ {
+ position786, tokenIndex786 := position, tokenIndex
+ if buffer[position] != rune('m') {
+ goto l787
+ }
+ position++
+ goto l786
+ l787:
+ position, tokenIndex = position786, tokenIndex786
+ if buffer[position] != rune('M') {
+ goto l785
+ }
+ position++
+ }
+ l786:
+ {
+ position788, tokenIndex788 := position, tokenIndex
+ if buffer[position] != rune('u') {
+ goto l789
+ }
+ position++
+ goto l788
+ l789:
+ position, tokenIndex = position788, tokenIndex788
+ if buffer[position] != rune('U') {
+ goto l785
+ }
+ position++
+ }
+ l788:
+ {
+ position790, tokenIndex790 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l791
+ }
+ position++
+ goto l790
+ l791:
+ position, tokenIndex = position790, tokenIndex790
+ if buffer[position] != rune('L') {
+ goto l785
+ }
+ position++
+ }
+ l790:
+ if buffer[position] != rune('4') {
+ goto l785
+ }
+ position++
+ goto l731
+ l785:
+ position, tokenIndex = position731, tokenIndex731
+ {
+ position792, tokenIndex792 := position, tokenIndex
+ if buffer[position] != rune('a') {
+ goto l793
+ }
+ position++
+ goto l792
+ l793:
+ position, tokenIndex = position792, tokenIndex792
+ if buffer[position] != rune('A') {
+ goto l729
+ }
+ position++
+ }
+ l792:
+ {
+ position794, tokenIndex794 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l795
+ }
+ position++
+ goto l794
+ l795:
+ position, tokenIndex = position794, tokenIndex794
+ if buffer[position] != rune('L') {
+ goto l729
+ }
+ position++
+ }
+ l794:
+ {
+ position796, tokenIndex796 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l797
+ }
+ position++
+ goto l796
+ l797:
+ position, tokenIndex = position796, tokenIndex796
+ if buffer[position] != rune('L') {
+ goto l729
+ }
+ position++
+ }
+ l796:
+ }
+ l731:
+ {
+ position798, tokenIndex798 := position, tokenIndex
+ {
+ position799, tokenIndex799 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l800
+ }
+ position++
+ goto l799
+ l800:
+ position, tokenIndex = position799, tokenIndex799
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l801
+ }
+ position++
+ goto l799
+ l801:
+ position, tokenIndex = position799, tokenIndex799
+ {
+ position803, tokenIndex803 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l804
+ }
+ position++
+ goto l803
+ l804:
+ position, tokenIndex = position803, tokenIndex803
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l802
+ }
+ position++
+ }
+ l803:
+ goto l799
+ l802:
+ position, tokenIndex = position799, tokenIndex799
+ if buffer[position] != rune('_') {
+ goto l798
+ }
+ position++
+ }
+ l799:
+ goto l729
+ l798:
+ position, tokenIndex = position798, tokenIndex798
}
- l708:
- add(ruleSVE2PredicateRegister, position703)
+ add(ruleSVE2SpecialValue, position730)
}
return true
- l702:
- position, tokenIndex = position702, tokenIndex702
+ l729:
+ position, tokenIndex = position729, tokenIndex729
return false
},
- /* 47 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
+ /* 48 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
func() bool {
- position712, tokenIndex712 := position, tokenIndex
+ position805, tokenIndex805 := position, tokenIndex
{
- position713 := position
+ position806 := position
{
- position714, tokenIndex714 := position, tokenIndex
+ position807, tokenIndex807 := position, tokenIndex
if !_rules[ruleSymbolRef]() {
- goto l715
+ goto l808
}
if !_rules[ruleBaseIndexScale]() {
- goto l715
+ goto l808
}
- goto l714
- l715:
- position, tokenIndex = position714, tokenIndex714
+ goto l807
+ l808:
+ position, tokenIndex = position807, tokenIndex807
if !_rules[ruleSymbolRef]() {
- goto l716
+ goto l809
}
- goto l714
- l716:
- position, tokenIndex = position714, tokenIndex714
+ goto l807
+ l809:
+ position, tokenIndex = position807, tokenIndex807
if !_rules[ruleLow12BitsSymbolRef]() {
- goto l717
+ goto l810
}
- goto l714
- l717:
- position, tokenIndex = position714, tokenIndex714
- l719:
+ goto l807
+ l810:
+ position, tokenIndex = position807, tokenIndex807
+ l812:
{
- position720, tokenIndex720 := position, tokenIndex
+ position813, tokenIndex813 := position, tokenIndex
if !_rules[ruleOffset]() {
- goto l720
+ goto l813
}
- goto l719
- l720:
- position, tokenIndex = position720, tokenIndex720
+ goto l812
+ l813:
+ position, tokenIndex = position813, tokenIndex813
}
if !_rules[ruleBaseIndexScale]() {
- goto l718
+ goto l811
}
- goto l714
- l718:
- position, tokenIndex = position714, tokenIndex714
+ goto l807
+ l811:
+ position, tokenIndex = position807, tokenIndex807
if !_rules[ruleSegmentRegister]() {
- goto l721
+ goto l814
}
if !_rules[ruleOffset]() {
- goto l721
+ goto l814
}
if !_rules[ruleBaseIndexScale]() {
- goto l721
+ goto l814
}
- goto l714
- l721:
- position, tokenIndex = position714, tokenIndex714
+ goto l807
+ l814:
+ position, tokenIndex = position807, tokenIndex807
if !_rules[ruleSegmentRegister]() {
- goto l722
+ goto l815
}
if !_rules[ruleBaseIndexScale]() {
- goto l722
+ goto l815
}
- goto l714
- l722:
- position, tokenIndex = position714, tokenIndex714
+ goto l807
+ l815:
+ position, tokenIndex = position807, tokenIndex807
if !_rules[ruleSegmentRegister]() {
- goto l723
+ goto l816
}
if !_rules[ruleOffset]() {
- goto l723
+ goto l816
}
- goto l714
- l723:
- position, tokenIndex = position714, tokenIndex714
+ goto l807
+ l816:
+ position, tokenIndex = position807, tokenIndex807
if !_rules[ruleARMBaseIndexScale]() {
- goto l724
+ goto l817
}
- goto l714
- l724:
- position, tokenIndex = position714, tokenIndex714
+ goto l807
+ l817:
+ position, tokenIndex = position807, tokenIndex807
if !_rules[ruleBaseIndexScale]() {
- goto l712
+ goto l805
}
}
- l714:
- add(ruleMemoryRef, position713)
+ l807:
+ add(ruleMemoryRef, position806)
}
return true
- l712:
- position, tokenIndex = position712, tokenIndex712
+ l805:
+ position, tokenIndex = position805, tokenIndex805
return false
},
- /* 48 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
+ /* 49 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
func() bool {
- position725, tokenIndex725 := position, tokenIndex
+ position818, tokenIndex818 := position, tokenIndex
{
- position726 := position
+ position819 := position
{
- position727, tokenIndex727 := position, tokenIndex
- l729:
+ position820, tokenIndex820 := position, tokenIndex
+ l822:
{
- position730, tokenIndex730 := position, tokenIndex
+ position823, tokenIndex823 := position, tokenIndex
if !_rules[ruleOffset]() {
- goto l730
+ goto l823
}
- goto l729
- l730:
- position, tokenIndex = position730, tokenIndex730
+ goto l822
+ l823:
+ position, tokenIndex = position823, tokenIndex823
}
if buffer[position] != rune('+') {
- goto l727
+ goto l820
}
position++
- goto l728
- l727:
- position, tokenIndex = position727, tokenIndex727
+ goto l821
+ l820:
+ position, tokenIndex = position820, tokenIndex820
}
- l728:
+ l821:
{
- position731, tokenIndex731 := position, tokenIndex
+ position824, tokenIndex824 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
- goto l732
+ goto l825
}
- goto l731
- l732:
- position, tokenIndex = position731, tokenIndex731
+ goto l824
+ l825:
+ position, tokenIndex = position824, tokenIndex824
if !_rules[ruleSymbolName]() {
- goto l725
+ goto l818
}
}
- l731:
- l733:
+ l824:
+ l826:
{
- position734, tokenIndex734 := position, tokenIndex
+ position827, tokenIndex827 := position, tokenIndex
if !_rules[ruleOffset]() {
- goto l734
+ goto l827
}
- goto l733
- l734:
- position, tokenIndex = position734, tokenIndex734
+ goto l826
+ l827:
+ position, tokenIndex = position827, tokenIndex827
}
{
- position735, tokenIndex735 := position, tokenIndex
+ position828, tokenIndex828 := position, tokenIndex
if buffer[position] != rune('@') {
- goto l735
+ goto l828
}
position++
if !_rules[ruleSection]() {
- goto l735
+ goto l828
}
- l737:
+ l830:
{
- position738, tokenIndex738 := position, tokenIndex
+ position831, tokenIndex831 := position, tokenIndex
if !_rules[ruleOffset]() {
- goto l738
+ goto l831
}
- goto l737
- l738:
- position, tokenIndex = position738, tokenIndex738
+ goto l830
+ l831:
+ position, tokenIndex = position831, tokenIndex831
}
- goto l736
- l735:
- position, tokenIndex = position735, tokenIndex735
+ goto l829
+ l828:
+ position, tokenIndex = position828, tokenIndex828
}
- l736:
- add(ruleSymbolRef, position726)
+ l829:
+ add(ruleSymbolRef, position819)
}
return true
- l725:
- position, tokenIndex = position725, tokenIndex725
+ l818:
+ position, tokenIndex = position818, tokenIndex818
return false
},
- /* 49 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
+ /* 50 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
func() bool {
- position739, tokenIndex739 := position, tokenIndex
+ position832, tokenIndex832 := position, tokenIndex
{
- position740 := position
+ position833 := position
if buffer[position] != rune(':') {
- goto l739
+ goto l832
}
position++
{
- position741, tokenIndex741 := position, tokenIndex
+ position834, tokenIndex834 := position, tokenIndex
if buffer[position] != rune('l') {
- goto l742
+ goto l835
}
position++
- goto l741
- l742:
- position, tokenIndex = position741, tokenIndex741
+ goto l834
+ l835:
+ position, tokenIndex = position834, tokenIndex834
if buffer[position] != rune('L') {
- goto l739
+ goto l832
}
position++
}
- l741:
+ l834:
{
- position743, tokenIndex743 := position, tokenIndex
+ position836, tokenIndex836 := position, tokenIndex
if buffer[position] != rune('o') {
- goto l744
+ goto l837
}
position++
- goto l743
- l744:
- position, tokenIndex = position743, tokenIndex743
+ goto l836
+ l837:
+ position, tokenIndex = position836, tokenIndex836
if buffer[position] != rune('O') {
- goto l739
+ goto l832
}
position++
}
- l743:
+ l836:
if buffer[position] != rune('1') {
- goto l739
+ goto l832
}
position++
if buffer[position] != rune('2') {
- goto l739
+ goto l832
}
position++
if buffer[position] != rune(':') {
- goto l739
+ goto l832
}
position++
{
- position745, tokenIndex745 := position, tokenIndex
+ position838, tokenIndex838 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
- goto l746
+ goto l839
}
- goto l745
- l746:
- position, tokenIndex = position745, tokenIndex745
+ goto l838
+ l839:
+ position, tokenIndex = position838, tokenIndex838
if !_rules[ruleSymbolName]() {
- goto l739
+ goto l832
}
}
- l745:
+ l838:
{
- position747, tokenIndex747 := position, tokenIndex
+ position840, tokenIndex840 := position, tokenIndex
if !_rules[ruleOffset]() {
- goto l747
+ goto l840
}
- goto l748
- l747:
- position, tokenIndex = position747, tokenIndex747
+ goto l841
+ l840:
+ position, tokenIndex = position840, tokenIndex840
}
- l748:
- add(ruleLow12BitsSymbolRef, position740)
+ l841:
+ add(ruleLow12BitsSymbolRef, position833)
}
return true
- l739:
- position, tokenIndex = position739, tokenIndex739
+ l832:
+ position, tokenIndex = position832, tokenIndex832
return false
},
- /* 50 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
+ /* 51 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
func() bool {
- position749, tokenIndex749 := position, tokenIndex
+ position842, tokenIndex842 := position, tokenIndex
{
- position750 := position
+ position843 := position
if buffer[position] != rune('[') {
- goto l749
+ goto l842
}
position++
if !_rules[ruleARMRegister]() {
- goto l749
+ goto l842
}
{
- position751, tokenIndex751 := position, tokenIndex
+ position844, tokenIndex844 := position, tokenIndex
if buffer[position] != rune(',') {
- goto l751
+ goto l844
}
position++
{
- position753, tokenIndex753 := position, tokenIndex
+ position846, tokenIndex846 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l753
+ goto l846
}
- goto l754
- l753:
- position, tokenIndex = position753, tokenIndex753
+ goto l847
+ l846:
+ position, tokenIndex = position846, tokenIndex846
}
- l754:
+ l847:
{
- position755, tokenIndex755 := position, tokenIndex
+ position848, tokenIndex848 := position, tokenIndex
if buffer[position] != rune('#') {
- goto l756
+ goto l849
}
position++
if !_rules[ruleOffset]() {
- goto l756
+ goto l849
}
{
- position757, tokenIndex757 := position, tokenIndex
+ position850, tokenIndex850 := position, tokenIndex
{
- position759, tokenIndex759 := position, tokenIndex
+ position852, tokenIndex852 := position, tokenIndex
if buffer[position] != rune('*') {
- goto l760
+ goto l853
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l760
+ goto l853
}
position++
- l761:
+ l854:
{
- position762, tokenIndex762 := position, tokenIndex
+ position855, tokenIndex855 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l762
+ goto l855
}
position++
- goto l761
- l762:
- position, tokenIndex = position762, tokenIndex762
+ goto l854
+ l855:
+ position, tokenIndex = position855, tokenIndex855
}
- goto l759
- l760:
- position, tokenIndex = position759, tokenIndex759
+ goto l852
+ l853:
+ position, tokenIndex = position852, tokenIndex852
if buffer[position] != rune('*') {
- goto l763
+ goto l856
}
position++
if buffer[position] != rune('(') {
- goto l763
+ goto l856
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l763
+ goto l856
}
position++
- l764:
+ l857:
{
- position765, tokenIndex765 := position, tokenIndex
+ position858, tokenIndex858 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l765
+ goto l858
}
position++
- goto l764
- l765:
- position, tokenIndex = position765, tokenIndex765
+ goto l857
+ l858:
+ position, tokenIndex = position858, tokenIndex858
}
if !_rules[ruleOperator]() {
- goto l763
+ goto l856
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l763
+ goto l856
}
position++
- l766:
+ l859:
{
- position767, tokenIndex767 := position, tokenIndex
+ position860, tokenIndex860 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l767
+ goto l860
}
position++
- goto l766
- l767:
- position, tokenIndex = position767, tokenIndex767
+ goto l859
+ l860:
+ position, tokenIndex = position860, tokenIndex860
}
if buffer[position] != rune(')') {
- goto l763
+ goto l856
}
position++
- goto l759
- l763:
- position, tokenIndex = position759, tokenIndex759
- l768:
+ goto l852
+ l856:
+ position, tokenIndex = position852, tokenIndex852
+ l861:
{
- position769, tokenIndex769 := position, tokenIndex
+ position862, tokenIndex862 := position, tokenIndex
if buffer[position] != rune('+') {
- goto l769
+ goto l862
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l769
+ goto l862
}
position++
- l770:
+ l863:
{
- position771, tokenIndex771 := position, tokenIndex
+ position864, tokenIndex864 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l771
+ goto l864
}
position++
- goto l770
- l771:
- position, tokenIndex = position771, tokenIndex771
+ goto l863
+ l864:
+ position, tokenIndex = position864, tokenIndex864
}
- goto l768
- l769:
- position, tokenIndex = position769, tokenIndex769
+ goto l861
+ l862:
+ position, tokenIndex = position862, tokenIndex862
}
}
- l759:
- goto l758
+ l852:
+ goto l851
- position, tokenIndex = position757, tokenIndex757
+ position, tokenIndex = position850, tokenIndex850
}
- l758:
- goto l755
- l756:
- position, tokenIndex = position755, tokenIndex755
+ l851:
+ goto l848
+ l849:
+ position, tokenIndex = position848, tokenIndex848
if !_rules[ruleARMGOTLow12]() {
- goto l772
+ goto l865
}
- goto l755
- l772:
- position, tokenIndex = position755, tokenIndex755
+ goto l848
+ l865:
+ position, tokenIndex = position848, tokenIndex848
if !_rules[ruleLow12BitsSymbolRef]() {
- goto l773
+ goto l866
}
- goto l755
- l773:
- position, tokenIndex = position755, tokenIndex755
+ goto l848
+ l866:
+ position, tokenIndex = position848, tokenIndex848
if !_rules[ruleARMRegister]() {
- goto l751
+ goto l844
}
}
- l755:
+ l848:
{
- position774, tokenIndex774 := position, tokenIndex
+ position867, tokenIndex867 := position, tokenIndex
if buffer[position] != rune(',') {
- goto l774
+ goto l867
}
position++
{
- position776, tokenIndex776 := position, tokenIndex
+ position869, tokenIndex869 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l776
+ goto l869
}
- goto l777
- l776:
- position, tokenIndex = position776, tokenIndex776
+ goto l870
+ l869:
+ position, tokenIndex = position869, tokenIndex869
}
- l777:
+ l870:
if !_rules[ruleARMConstantTweak]() {
- goto l774
+ goto l867
}
- goto l775
- l774:
- position, tokenIndex = position774, tokenIndex774
+ goto l868
+ l867:
+ position, tokenIndex = position867, tokenIndex867
}
- l775:
- goto l752
- l751:
- position, tokenIndex = position751, tokenIndex751
+ l868:
+ goto l845
+ l844:
+ position, tokenIndex = position844, tokenIndex844
}
- l752:
+ l845:
if buffer[position] != rune(']') {
- goto l749
+ goto l842
}
position++
{
- position778, tokenIndex778 := position, tokenIndex
+ position871, tokenIndex871 := position, tokenIndex
if !_rules[ruleARMPostincrement]() {
- goto l778
+ goto l871
}
- goto l779
- l778:
- position, tokenIndex = position778, tokenIndex778
+ goto l872
+ l871:
+ position, tokenIndex = position871, tokenIndex871
}
- l779:
- add(ruleARMBaseIndexScale, position750)
+ l872:
+ add(ruleARMBaseIndexScale, position843)
}
return true
- l749:
- position, tokenIndex = position749, tokenIndex749
+ l842:
+ position, tokenIndex = position842, tokenIndex842
return false
},
- /* 51 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
+ /* 52 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
func() bool {
- position780, tokenIndex780 := position, tokenIndex
+ position873, tokenIndex873 := position, tokenIndex
{
- position781 := position
+ position874 := position
if buffer[position] != rune(':') {
- goto l780
+ goto l873
}
position++
{
- position782, tokenIndex782 := position, tokenIndex
+ position875, tokenIndex875 := position, tokenIndex
if buffer[position] != rune('g') {
- goto l783
+ goto l876
}
position++
- goto l782
- l783:
- position, tokenIndex = position782, tokenIndex782
+ goto l875
+ l876:
+ position, tokenIndex = position875, tokenIndex875
if buffer[position] != rune('G') {
- goto l780
+ goto l873
}
position++
}
- l782:
+ l875:
{
- position784, tokenIndex784 := position, tokenIndex
+ position877, tokenIndex877 := position, tokenIndex
if buffer[position] != rune('o') {
- goto l785
+ goto l878
}
position++
- goto l784
- l785:
- position, tokenIndex = position784, tokenIndex784
+ goto l877
+ l878:
+ position, tokenIndex = position877, tokenIndex877
if buffer[position] != rune('O') {
- goto l780
+ goto l873
}
position++
}
- l784:
+ l877:
{
- position786, tokenIndex786 := position, tokenIndex
+ position879, tokenIndex879 := position, tokenIndex
if buffer[position] != rune('t') {
- goto l787
+ goto l880
}
position++
- goto l786
- l787:
- position, tokenIndex = position786, tokenIndex786
+ goto l879
+ l880:
+ position, tokenIndex = position879, tokenIndex879
if buffer[position] != rune('T') {
- goto l780
+ goto l873
}
position++
}
- l786:
+ l879:
if buffer[position] != rune('_') {
- goto l780
+ goto l873
}
position++
{
- position788, tokenIndex788 := position, tokenIndex
+ position881, tokenIndex881 := position, tokenIndex
if buffer[position] != rune('l') {
- goto l789
+ goto l882
}
position++
- goto l788
- l789:
- position, tokenIndex = position788, tokenIndex788
+ goto l881
+ l882:
+ position, tokenIndex = position881, tokenIndex881
if buffer[position] != rune('L') {
- goto l780
+ goto l873
}
position++
}
- l788:
+ l881:
{
- position790, tokenIndex790 := position, tokenIndex
+ position883, tokenIndex883 := position, tokenIndex
if buffer[position] != rune('o') {
- goto l791
+ goto l884
}
position++
- goto l790
- l791:
- position, tokenIndex = position790, tokenIndex790
+ goto l883
+ l884:
+ position, tokenIndex = position883, tokenIndex883
if buffer[position] != rune('O') {
- goto l780
+ goto l873
}
position++
}
- l790:
+ l883:
if buffer[position] != rune('1') {
- goto l780
+ goto l873
}
position++
if buffer[position] != rune('2') {
- goto l780
+ goto l873
}
position++
if buffer[position] != rune(':') {
- goto l780
+ goto l873
}
position++
if !_rules[ruleSymbolName]() {
- goto l780
+ goto l873
}
- add(ruleARMGOTLow12, position781)
+ add(ruleARMGOTLow12, position874)
}
return true
- l780:
- position, tokenIndex = position780, tokenIndex780
+ l873:
+ position, tokenIndex = position873, tokenIndex873
return false
},
- /* 52 ARMPostincrement <- <'!'> */
+ /* 53 ARMPostincrement <- <'!'> */
func() bool {
- position792, tokenIndex792 := position, tokenIndex
+ position885, tokenIndex885 := position, tokenIndex
{
- position793 := position
+ position886 := position
if buffer[position] != rune('!') {
- goto l792
+ goto l885
}
position++
- add(ruleARMPostincrement, position793)
+ add(ruleARMPostincrement, position886)
}
return true
- l792:
- position, tokenIndex = position792, tokenIndex792
+ l885:
+ position, tokenIndex = position885, tokenIndex885
return false
},
- /* 53 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
+ /* 54 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
func() bool {
- position794, tokenIndex794 := position, tokenIndex
+ position887, tokenIndex887 := position, tokenIndex
{
- position795 := position
+ position888 := position
if buffer[position] != rune('(') {
- goto l794
+ goto l887
}
position++
{
- position796, tokenIndex796 := position, tokenIndex
+ position889, tokenIndex889 := position, tokenIndex
if !_rules[ruleRegisterOrConstant]() {
- goto l796
+ goto l889
}
- goto l797
- l796:
- position, tokenIndex = position796, tokenIndex796
+ goto l890
+ l889:
+ position, tokenIndex = position889, tokenIndex889
}
- l797:
+ l890:
{
- position798, tokenIndex798 := position, tokenIndex
+ position891, tokenIndex891 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l798
+ goto l891
}
- goto l799
- l798:
- position, tokenIndex = position798, tokenIndex798
+ goto l892
+ l891:
+ position, tokenIndex = position891, tokenIndex891
}
- l799:
+ l892:
{
- position800, tokenIndex800 := position, tokenIndex
+ position893, tokenIndex893 := position, tokenIndex
if buffer[position] != rune(',') {
- goto l800
+ goto l893
}
position++
{
- position802, tokenIndex802 := position, tokenIndex
+ position895, tokenIndex895 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l802
+ goto l895
}
- goto l803
- l802:
- position, tokenIndex = position802, tokenIndex802
+ goto l896
+ l895:
+ position, tokenIndex = position895, tokenIndex895
}
- l803:
+ l896:
if !_rules[ruleRegisterOrConstant]() {
- goto l800
+ goto l893
}
{
- position804, tokenIndex804 := position, tokenIndex
+ position897, tokenIndex897 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l804
+ goto l897
}
- goto l805
- l804:
- position, tokenIndex = position804, tokenIndex804
+ goto l898
+ l897:
+ position, tokenIndex = position897, tokenIndex897
}
- l805:
+ l898:
{
- position806, tokenIndex806 := position, tokenIndex
+ position899, tokenIndex899 := position, tokenIndex
if buffer[position] != rune(',') {
- goto l806
+ goto l899
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l806
+ goto l899
}
position++
- l808:
+ l901:
{
- position809, tokenIndex809 := position, tokenIndex
+ position902, tokenIndex902 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l809
+ goto l902
}
position++
- goto l808
- l809:
- position, tokenIndex = position809, tokenIndex809
+ goto l901
+ l902:
+ position, tokenIndex = position902, tokenIndex902
}
- goto l807
- l806:
- position, tokenIndex = position806, tokenIndex806
+ goto l900
+ l899:
+ position, tokenIndex = position899, tokenIndex899
}
- l807:
- goto l801
- l800:
- position, tokenIndex = position800, tokenIndex800
+ l900:
+ goto l894
+ l893:
+ position, tokenIndex = position893, tokenIndex893
}
- l801:
+ l894:
if buffer[position] != rune(')') {
- goto l794
+ goto l887
}
position++
- add(ruleBaseIndexScale, position795)
+ add(ruleBaseIndexScale, position888)
}
return true
- l794:
- position, tokenIndex = position794, tokenIndex794
+ l887:
+ position, tokenIndex = position887, tokenIndex887
return false
},
- /* 54 Operator <- <('+' / '-')> */
+ /* 55 Operator <- <('+' / '-')> */
func() bool {
- position810, tokenIndex810 := position, tokenIndex
+ position903, tokenIndex903 := position, tokenIndex
{
- position811 := position
+ position904 := position
{
- position812, tokenIndex812 := position, tokenIndex
+ position905, tokenIndex905 := position, tokenIndex
if buffer[position] != rune('+') {
- goto l813
+ goto l906
}
position++
- goto l812
- l813:
- position, tokenIndex = position812, tokenIndex812
+ goto l905
+ l906:
+ position, tokenIndex = position905, tokenIndex905
if buffer[position] != rune('-') {
- goto l810
+ goto l903
}
position++
}
- l812:
- add(ruleOperator, position811)
+ l905:
+ add(ruleOperator, position904)
}
return true
- l810:
- position, tokenIndex = position810, tokenIndex810
+ l903:
+ position, tokenIndex = position903, tokenIndex903
return false
},
- /* 55 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
+ /* 56 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
func() bool {
- position814, tokenIndex814 := position, tokenIndex
+ position907, tokenIndex907 := position, tokenIndex
{
- position815 := position
+ position908 := position
{
- position816, tokenIndex816 := position, tokenIndex
+ position909, tokenIndex909 := position, tokenIndex
if buffer[position] != rune('+') {
- goto l816
+ goto l909
}
position++
- goto l817
- l816:
- position, tokenIndex = position816, tokenIndex816
+ goto l910
+ l909:
+ position, tokenIndex = position909, tokenIndex909
}
- l817:
+ l910:
{
- position818, tokenIndex818 := position, tokenIndex
+ position911, tokenIndex911 := position, tokenIndex
if buffer[position] != rune('-') {
- goto l818
+ goto l911
}
position++
- goto l819
- l818:
- position, tokenIndex = position818, tokenIndex818
+ goto l912
+ l911:
+ position, tokenIndex = position911, tokenIndex911
}
- l819:
+ l912:
{
- position820, tokenIndex820 := position, tokenIndex
+ position913, tokenIndex913 := position, tokenIndex
if buffer[position] != rune('0') {
- goto l821
+ goto l914
}
position++
{
- position822, tokenIndex822 := position, tokenIndex
+ position915, tokenIndex915 := position, tokenIndex
if buffer[position] != rune('b') {
- goto l823
+ goto l916
}
position++
- goto l822
- l823:
- position, tokenIndex = position822, tokenIndex822
+ goto l915
+ l916:
+ position, tokenIndex = position915, tokenIndex915
if buffer[position] != rune('B') {
- goto l821
+ goto l914
}
position++
}
- l822:
+ l915:
{
- position826, tokenIndex826 := position, tokenIndex
+ position919, tokenIndex919 := position, tokenIndex
if buffer[position] != rune('0') {
- goto l827
+ goto l920
}
position++
- goto l826
- l827:
- position, tokenIndex = position826, tokenIndex826
+ goto l919
+ l920:
+ position, tokenIndex = position919, tokenIndex919
if buffer[position] != rune('1') {
- goto l821
+ goto l914
}
position++
}
- l826:
- l824:
+ l919:
+ l917:
{
- position825, tokenIndex825 := position, tokenIndex
+ position918, tokenIndex918 := position, tokenIndex
{
- position828, tokenIndex828 := position, tokenIndex
+ position921, tokenIndex921 := position, tokenIndex
if buffer[position] != rune('0') {
- goto l829
+ goto l922
}
position++
- goto l828
- l829:
- position, tokenIndex = position828, tokenIndex828
+ goto l921
+ l922:
+ position, tokenIndex = position921, tokenIndex921
if buffer[position] != rune('1') {
- goto l825
+ goto l918
}
position++
}
- l828:
- goto l824
- l825:
- position, tokenIndex = position825, tokenIndex825
+ l921:
+ goto l917
+ l918:
+ position, tokenIndex = position918, tokenIndex918
}
- goto l820
- l821:
- position, tokenIndex = position820, tokenIndex820
+ goto l913
+ l914:
+ position, tokenIndex = position913, tokenIndex913
if buffer[position] != rune('0') {
- goto l830
+ goto l923
}
position++
{
- position831, tokenIndex831 := position, tokenIndex
+ position924, tokenIndex924 := position, tokenIndex
if buffer[position] != rune('x') {
- goto l832
+ goto l925
}
position++
- goto l831
- l832:
- position, tokenIndex = position831, tokenIndex831
+ goto l924
+ l925:
+ position, tokenIndex = position924, tokenIndex924
if buffer[position] != rune('X') {
- goto l830
+ goto l923
}
position++
}
- l831:
+ l924:
{
- position835, tokenIndex835 := position, tokenIndex
+ position928, tokenIndex928 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l836
+ goto l929
}
position++
- goto l835
- l836:
- position, tokenIndex = position835, tokenIndex835
+ goto l928
+ l929:
+ position, tokenIndex = position928, tokenIndex928
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l837
+ goto l930
}
position++
- goto l835
- l837:
- position, tokenIndex = position835, tokenIndex835
+ goto l928
+ l930:
+ position, tokenIndex = position928, tokenIndex928
{
- position838, tokenIndex838 := position, tokenIndex
+ position931, tokenIndex931 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
- goto l839
+ goto l932
}
position++
- goto l838
- l839:
- position, tokenIndex = position838, tokenIndex838
+ goto l931
+ l932:
+ position, tokenIndex = position931, tokenIndex931
if c := buffer[position]; c < rune('A') || c > rune('F') {
- goto l830
+ goto l923
}
position++
}
- l838:
+ l931:
}
- l835:
- l833:
+ l928:
+ l926:
{
- position834, tokenIndex834 := position, tokenIndex
+ position927, tokenIndex927 := position, tokenIndex
{
- position840, tokenIndex840 := position, tokenIndex
+ position933, tokenIndex933 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l841
+ goto l934
}
position++
- goto l840
- l841:
- position, tokenIndex = position840, tokenIndex840
+ goto l933
+ l934:
+ position, tokenIndex = position933, tokenIndex933
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l842
+ goto l935
}
position++
- goto l840
- l842:
- position, tokenIndex = position840, tokenIndex840
+ goto l933
+ l935:
+ position, tokenIndex = position933, tokenIndex933
{
- position843, tokenIndex843 := position, tokenIndex
+ position936, tokenIndex936 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
- goto l844
+ goto l937
}
position++
- goto l843
- l844:
- position, tokenIndex = position843, tokenIndex843
+ goto l936
+ l937:
+ position, tokenIndex = position936, tokenIndex936
if c := buffer[position]; c < rune('A') || c > rune('F') {
- goto l834
+ goto l927
}
position++
}
- l843:
+ l936:
}
- l840:
- goto l833
- l834:
- position, tokenIndex = position834, tokenIndex834
+ l933:
+ goto l926
+ l927:
+ position, tokenIndex = position927, tokenIndex927
}
- goto l820
- l830:
- position, tokenIndex = position820, tokenIndex820
+ goto l913
+ l923:
+ position, tokenIndex = position913, tokenIndex913
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l814
+ goto l907
}
position++
- l845:
+ l938:
{
- position846, tokenIndex846 := position, tokenIndex
+ position939, tokenIndex939 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l846
+ goto l939
}
position++
- goto l845
- l846:
- position, tokenIndex = position846, tokenIndex846
+ goto l938
+ l939:
+ position, tokenIndex = position939, tokenIndex939
}
}
- l820:
- add(ruleOffset, position815)
+ l913:
+ add(ruleOffset, position908)
}
return true
- l814:
- position, tokenIndex = position814, tokenIndex814
+ l907:
+ position, tokenIndex = position907, tokenIndex907
return false
},
- /* 56 Section <- <([a-z] / [A-Z] / '@')+> */
+ /* 57 Section <- <([a-z] / [A-Z] / '@')+> */
func() bool {
- position847, tokenIndex847 := position, tokenIndex
+ position940, tokenIndex940 := position, tokenIndex
{
- position848 := position
+ position941 := position
{
- position851, tokenIndex851 := position, tokenIndex
+ position944, tokenIndex944 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l852
+ goto l945
}
position++
- goto l851
- l852:
- position, tokenIndex = position851, tokenIndex851
+ goto l944
+ l945:
+ position, tokenIndex = position944, tokenIndex944
if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l853
+ goto l946
}
position++
- goto l851
- l853:
- position, tokenIndex = position851, tokenIndex851
+ goto l944
+ l946:
+ position, tokenIndex = position944, tokenIndex944
if buffer[position] != rune('@') {
- goto l847
+ goto l940
}
position++
}
- l851:
- l849:
+ l944:
+ l942:
{
- position850, tokenIndex850 := position, tokenIndex
+ position943, tokenIndex943 := position, tokenIndex
{
- position854, tokenIndex854 := position, tokenIndex
+ position947, tokenIndex947 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l855
+ goto l948
}
position++
- goto l854
- l855:
- position, tokenIndex = position854, tokenIndex854
+ goto l947
+ l948:
+ position, tokenIndex = position947, tokenIndex947
if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l856
+ goto l949
}
position++
- goto l854
- l856:
- position, tokenIndex = position854, tokenIndex854
+ goto l947
+ l949:
+ position, tokenIndex = position947, tokenIndex947
if buffer[position] != rune('@') {
- goto l850
+ goto l943
}
position++
}
- l854:
- goto l849
- l850:
- position, tokenIndex = position850, tokenIndex850
+ l947:
+ goto l942
+ l943:
+ position, tokenIndex = position943, tokenIndex943
}
- add(ruleSection, position848)
+ add(ruleSection, position941)
}
return true
- l847:
- position, tokenIndex = position847, tokenIndex847
+ l940:
+ position, tokenIndex = position940, tokenIndex940
return false
},
- /* 57 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
+ /* 58 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
func() bool {
- position857, tokenIndex857 := position, tokenIndex
+ position950, tokenIndex950 := position, tokenIndex
{
- position858 := position
+ position951 := position
if buffer[position] != rune('%') {
- goto l857
+ goto l950
}
position++
{
- position859, tokenIndex859 := position, tokenIndex
+ position952, tokenIndex952 := position, tokenIndex
if c := buffer[position]; c < rune('c') || c > rune('g') {
- goto l860
+ goto l953
}
position++
- goto l859
- l860:
- position, tokenIndex = position859, tokenIndex859
+ goto l952
+ l953:
+ position, tokenIndex = position952, tokenIndex952
if buffer[position] != rune('s') {
- goto l857
+ goto l950
}
position++
}
- l859:
+ l952:
if buffer[position] != rune('s') {
- goto l857
+ goto l950
}
position++
if buffer[position] != rune(':') {
- goto l857
+ goto l950
}
position++
- add(ruleSegmentRegister, position858)
+ add(ruleSegmentRegister, position951)
}
return true
- l857:
- position, tokenIndex = position857, tokenIndex857
+ l950:
+ position, tokenIndex = position950, tokenIndex950
return false
},
}
diff --git a/util/fipstools/delocate/testdata/aarch64-Basic/in.s b/util/fipstools/delocate/testdata/aarch64-Basic/in.s
index b21ebcb..f151c23 100644
--- a/util/fipstools/delocate/testdata/aarch64-Basic/in.s
+++ b/util/fipstools/delocate/testdata/aarch64-Basic/in.s
@@ -78,9 +78,15 @@ foo:
add w0, w1, b2, sxtw
add w0, w1, b2, sxtx
- // Aarch64 SVE2 added these forms:
- ld1d { z1.d }, p0/z, [x13, x11, lsl #3]
- ld1b { z11.b }, p15/z, [x10, #1, mul vl]
+ // Aarch64 SVE2 added these forms:
+ 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.
+ bl p224_point_add
+ ptrue p0.d, vl1
+ // The "#7" here isn't a comment, it's now valid Aarch64 assembly.
+ cnth x8, all, mul #7
local_function:
diff --git a/util/fipstools/delocate/testdata/aarch64-Basic/out.s b/util/fipstools/delocate/testdata/aarch64-Basic/out.s
index 4c03265..c024610 100644
--- a/util/fipstools/delocate/testdata/aarch64-Basic/out.s
+++ b/util/fipstools/delocate/testdata/aarch64-Basic/out.s
@@ -125,9 +125,16 @@ foo:
add w0, w1, b2, sxtw
add w0, w1, b2, sxtx
- // Aarch64 SVE2 added these forms:
- ld1d { z1.d }, p0/z, [x13, x11, lsl #3]
- ld1b { z11.b }, p15/z, [x10, #1, mul vl]
+ // Aarch64 SVE2 added these forms:
+ 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.
+// 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.
+ cnth x8, all, mul #7
.Llocal_function_local_target:
local_function:
@@ -144,6 +151,15 @@ bss_symbol:
.loc 1 2 0
BORINGSSL_bcm_text_end:
.p2align 2
+.hidden bcm_redirector_p224_point_add
+.type bcm_redirector_p224_point_add, @function
+bcm_redirector_p224_point_add:
+.cfi_startproc
+ hint #34 // bti c
+ b p224_point_add
+.cfi_endproc
+.size bcm_redirector_p224_point_add, .-bcm_redirector_p224_point_add
+.p2align 2
.hidden bcm_redirector_remote_function
.type bcm_redirector_remote_function, @function
bcm_redirector_remote_function: