delocate: accept more directive expressions
For example, openssl/asm_base.h expands to include the line
.long ((1 << 0) | (1 << 1));
when BTI and PAC are enabled.
Change-Id: I07208e0430757721e97b88c706672375f8f58f1f
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/62525
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/util/fipstools/delocate/delocate.go b/util/fipstools/delocate/delocate.go
index b801d6d..8e0e508 100644
--- a/util/fipstools/delocate/delocate.go
+++ b/util/fipstools/delocate/delocate.go
@@ -263,6 +263,47 @@
return statement, nil
}
+func (d *delocation) processSymbolExpr(expr *node32, b *strings.Builder) bool {
+ changed := false
+ assertNodeType(expr, ruleSymbolExpr)
+
+ for expr != nil {
+ atom := expr.up
+ assertNodeType(atom, ruleSymbolAtom)
+
+ for term := atom.up; term != nil; term = skipWS(term.next) {
+ if term.pegRule == ruleSymbolExpr {
+ changed = d.processSymbolExpr(term, b) || changed
+ continue
+ }
+
+ if term.pegRule != ruleLocalSymbol {
+ b.WriteString(d.contents(term))
+ continue
+ }
+
+ oldSymbol := d.contents(term)
+ newSymbol := d.mapLocalSymbol(oldSymbol)
+ if newSymbol != oldSymbol {
+ changed = true
+ }
+
+ b.WriteString(newSymbol)
+ }
+
+ next := skipWS(atom.next)
+ if next == nil {
+ break
+ }
+ assertNodeType(next, ruleSymbolOperator)
+ b.WriteString(d.contents(next))
+ next = skipWS(next.next)
+ assertNodeType(next, ruleSymbolExpr)
+ expr = next
+ }
+ return changed
+}
+
func (d *delocation) processLabelContainingDirective(statement, directive *node32) (*node32, error) {
// The symbols within directives need to be mapped so that local
// symbols in two different .s inputs don't collide.
@@ -280,24 +321,12 @@
for node = skipWS(node.up); node != nil; node = skipWS(node.next) {
assertNodeType(node, ruleSymbolArg)
arg := node.up
- var mapped string
+ assertNodeType(arg, ruleSymbolExpr)
- for term := arg; term != nil; term = term.next {
- if term.pegRule != ruleLocalSymbol {
- mapped += d.contents(term)
- continue
- }
+ var b strings.Builder
+ changed = d.processSymbolExpr(arg, &b) || changed
- oldSymbol := d.contents(term)
- newSymbol := d.mapLocalSymbol(oldSymbol)
- if newSymbol != oldSymbol {
- changed = true
- }
-
- mapped += newSymbol
- }
-
- args = append(args, mapped)
+ args = append(args, b.String())
}
if !changed {
@@ -1260,6 +1289,16 @@
w.WriteString(".type " + funcName + ", @function\n")
w.WriteString(funcName + ":\n")
w.WriteString(".cfi_startproc\n")
+ // We insert a landing pad (`bti c` instruction) unconditionally at the beginning of
+ // every generated function so that they can be called indirectly (with `blr` or
+ // `br x16/x17`). The instruction is encoded in the HINT space as `hint #34` and is
+ // a no-op on machines or program states not supporting BTI (Branch Target Identification).
+ // None of the generated function bodies call other functions (with bl or blr), so we only
+ // insert a landing pad instead of signing and validating $lr with `paciasp` and `autiasp`.
+ // Normally we would also generate a .note.gnu.property section to annotate the assembly
+ // file as BTI-compatible, but if the input assembly files are BTI-compatible, they should
+ // already have those sections so there is no need to add an extra one ourselves.
+ w.WriteString("\thint #34 // bti c\n")
writeContents(w)
w.WriteString(".cfi_endproc\n")
w.WriteString(".size " + funcName + ", .-" + funcName + "\n")
diff --git a/util/fipstools/delocate/delocate.peg b/util/fipstools/delocate/delocate.peg
index 9db3e8c..9ba357a 100644
--- a/util/fipstools/delocate/delocate.peg
+++ b/util/fipstools/delocate/delocate.peg
@@ -47,17 +47,14 @@
LabelContainingDirective <- LabelContainingDirectiveName WS SymbolArgs
LabelContainingDirectiveName <- ".xword" / ".word" / ".long" / ".set" / ".byte" / ".8byte" / ".4byte" / ".quad" / ".tc" / ".localentry" / ".size" / ".type" / ".uleb128" / ".sleb128"
SymbolArgs <- SymbolArg ((WS? ',' WS?) SymbolArg)*
-SymbolShift <- ('<<' / '>>') WS? [0-9]+
-SymbolArg <- (OpenParen WS?)? (
- Offset /
- SymbolType /
- (Offset / LocalSymbol / SymbolName / Dot) (WS? Operator WS? (Offset / LocalSymbol / SymbolName))* /
- LocalSymbol TCMarker? /
- SymbolName Offset /
- SymbolName TCMarker?)
- (WS? CloseParen)? (WS? SymbolShift)?
+
+SymbolArg <- SymbolExpr
+SymbolExpr <- SymbolAtom (WS? SymbolOperator WS? SymbolExpr)?
+SymbolAtom <- Offset / SymbolType / LocalSymbol TCMarker? / SymbolName Offset / SymbolName TCMarker? / Dot / OpenParen WS? SymbolExpr WS? CloseParen
+SymbolOperator <- '+' / '-' / '|' / '<<' / '>>'
OpenParen <- '('
CloseParen <- ')'
+
SymbolType <- [@%] ('function' / 'object')
Dot <- '.'
TCMarker <- '[TC]'
diff --git a/util/fipstools/delocate/delocate.peg.go b/util/fipstools/delocate/delocate.peg.go
index 01a1fc2..c65eb50 100644
--- a/util/fipstools/delocate/delocate.peg.go
+++ b/util/fipstools/delocate/delocate.peg.go
@@ -33,8 +33,10 @@
ruleLabelContainingDirective
ruleLabelContainingDirectiveName
ruleSymbolArgs
- ruleSymbolShift
ruleSymbolArg
+ ruleSymbolExpr
+ ruleSymbolAtom
+ ruleSymbolOperator
ruleOpenParen
ruleCloseParen
ruleSymbolType
@@ -91,8 +93,10 @@
"LabelContainingDirective",
"LabelContainingDirectiveName",
"SymbolArgs",
- "SymbolShift",
"SymbolArg",
+ "SymbolExpr",
+ "SymbolAtom",
+ "SymbolOperator",
"OpenParen",
"CloseParen",
"SymbolType",
@@ -244,7 +248,7 @@
type Asm struct {
Buffer string
buffer []rune
- rules [55]func() bool
+ rules [57]func() bool
parse func(rule ...int) error
reset func()
Pretty bool
@@ -2513,37 +2517,55 @@
position, tokenIndex = position283, tokenIndex283
return false
},
- /* 15 SymbolShift <- <((('<' '<') / ('>' '>')) WS? [0-9]+)> */
+ /* 15 SymbolArg <- <SymbolExpr> */
func() bool {
position291, tokenIndex291 := position, tokenIndex
{
position292 := position
- {
- position293, tokenIndex293 := position, tokenIndex
- if buffer[position] != rune('<') {
- goto l294
- }
- position++
- if buffer[position] != rune('<') {
- goto l294
- }
- position++
- goto l293
- l294:
- position, tokenIndex = position293, tokenIndex293
- if buffer[position] != rune('>') {
- goto l291
- }
- position++
- if buffer[position] != rune('>') {
- goto l291
- }
- position++
+ if !_rules[ruleSymbolExpr]() {
+ goto l291
}
- l293:
+ add(ruleSymbolArg, position292)
+ }
+ return true
+ l291:
+ position, tokenIndex = position291, tokenIndex291
+ return false
+ },
+ /* 16 SymbolExpr <- <(SymbolAtom (WS? SymbolOperator WS? SymbolExpr)?)> */
+ func() bool {
+ position293, tokenIndex293 := position, tokenIndex
+ {
+ position294 := position
+ if !_rules[ruleSymbolAtom]() {
+ goto l293
+ }
{
position295, tokenIndex295 := position, tokenIndex
- if !_rules[ruleWS]() {
+ {
+ position297, tokenIndex297 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l297
+ }
+ goto l298
+ l297:
+ position, tokenIndex = position297, tokenIndex297
+ }
+ l298:
+ if !_rules[ruleSymbolOperator]() {
+ goto l295
+ }
+ {
+ position299, tokenIndex299 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l299
+ }
+ goto l300
+ l299:
+ position, tokenIndex = position299, tokenIndex299
+ }
+ l300:
+ if !_rules[ruleSymbolExpr]() {
goto l295
}
goto l296
@@ -2551,2066 +2573,2085 @@
position, tokenIndex = position295, tokenIndex295
}
l296:
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l291
- }
- position++
- l297:
- {
- position298, tokenIndex298 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l298
- }
- position++
- goto l297
- l298:
- position, tokenIndex = position298, tokenIndex298
- }
- add(ruleSymbolShift, position292)
+ add(ruleSymbolExpr, position294)
}
return true
- l291:
- position, tokenIndex = position291, tokenIndex291
+ l293:
+ position, tokenIndex = position293, tokenIndex293
return false
},
- /* 16 SymbolArg <- <((OpenParen WS?)? (Offset / SymbolType / ((Offset / LocalSymbol / SymbolName / Dot) (WS? Operator WS? (Offset / LocalSymbol / SymbolName))*) / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?)) (WS? CloseParen)? (WS? SymbolShift)?)> */
+ /* 17 SymbolAtom <- <(Offset / SymbolType / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?) / Dot / (OpenParen WS? SymbolExpr WS? CloseParen))> */
func() bool {
- position299, tokenIndex299 := position, tokenIndex
+ position301, tokenIndex301 := position, tokenIndex
{
- position300 := position
+ position302 := position
{
- position301, tokenIndex301 := position, tokenIndex
+ position303, tokenIndex303 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l304
+ }
+ goto l303
+ l304:
+ position, tokenIndex = position303, tokenIndex303
+ if !_rules[ruleSymbolType]() {
+ goto l305
+ }
+ goto l303
+ l305:
+ position, tokenIndex = position303, tokenIndex303
+ if !_rules[ruleLocalSymbol]() {
+ goto l306
+ }
+ {
+ position307, tokenIndex307 := position, tokenIndex
+ if !_rules[ruleTCMarker]() {
+ goto l307
+ }
+ goto l308
+ l307:
+ position, tokenIndex = position307, tokenIndex307
+ }
+ l308:
+ goto l303
+ l306:
+ position, tokenIndex = position303, tokenIndex303
+ if !_rules[ruleSymbolName]() {
+ goto l309
+ }
+ if !_rules[ruleOffset]() {
+ goto l309
+ }
+ goto l303
+ l309:
+ position, tokenIndex = position303, tokenIndex303
+ if !_rules[ruleSymbolName]() {
+ goto l310
+ }
+ {
+ position311, tokenIndex311 := position, tokenIndex
+ if !_rules[ruleTCMarker]() {
+ goto l311
+ }
+ goto l312
+ l311:
+ position, tokenIndex = position311, tokenIndex311
+ }
+ l312:
+ goto l303
+ l310:
+ position, tokenIndex = position303, tokenIndex303
+ if !_rules[ruleDot]() {
+ goto l313
+ }
+ goto l303
+ l313:
+ position, tokenIndex = position303, tokenIndex303
if !_rules[ruleOpenParen]() {
goto l301
}
{
- position303, tokenIndex303 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l303
- }
- goto l304
- l303:
- position, tokenIndex = position303, tokenIndex303
- }
- l304:
- goto l302
- l301:
- position, tokenIndex = position301, tokenIndex301
- }
- l302:
- {
- position305, tokenIndex305 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l306
- }
- goto l305
- l306:
- position, tokenIndex = position305, tokenIndex305
- if !_rules[ruleSymbolType]() {
- goto l307
- }
- goto l305
- l307:
- position, tokenIndex = position305, tokenIndex305
- {
- position309, tokenIndex309 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l310
- }
- goto l309
- l310:
- position, tokenIndex = position309, tokenIndex309
- if !_rules[ruleLocalSymbol]() {
- goto l311
- }
- goto l309
- l311:
- position, tokenIndex = position309, tokenIndex309
- if !_rules[ruleSymbolName]() {
- goto l312
- }
- goto l309
- l312:
- position, tokenIndex = position309, tokenIndex309
- if !_rules[ruleDot]() {
- goto l308
- }
- }
- l309:
- l313:
- {
position314, tokenIndex314 := position, tokenIndex
- {
- position315, tokenIndex315 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l315
- }
- goto l316
- l315:
- position, tokenIndex = position315, tokenIndex315
- }
- l316:
- if !_rules[ruleOperator]() {
+ if !_rules[ruleWS]() {
goto l314
}
- {
- position317, tokenIndex317 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l317
- }
- goto l318
- l317:
- position, tokenIndex = position317, tokenIndex317
- }
- l318:
- {
- position319, tokenIndex319 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l320
- }
- goto l319
- l320:
- position, tokenIndex = position319, tokenIndex319
- if !_rules[ruleLocalSymbol]() {
- goto l321
- }
- goto l319
- l321:
- position, tokenIndex = position319, tokenIndex319
- if !_rules[ruleSymbolName]() {
- goto l314
- }
- }
- l319:
- goto l313
+ goto l315
l314:
position, tokenIndex = position314, tokenIndex314
}
- goto l305
- l308:
- position, tokenIndex = position305, tokenIndex305
- if !_rules[ruleLocalSymbol]() {
+ l315:
+ if !_rules[ruleSymbolExpr]() {
+ goto l301
+ }
+ {
+ position316, tokenIndex316 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l316
+ }
+ goto l317
+ l316:
+ position, tokenIndex = position316, tokenIndex316
+ }
+ l317:
+ if !_rules[ruleCloseParen]() {
+ goto l301
+ }
+ }
+ l303:
+ add(ruleSymbolAtom, position302)
+ }
+ return true
+ l301:
+ position, tokenIndex = position301, tokenIndex301
+ return false
+ },
+ /* 18 SymbolOperator <- <('+' / '-' / '|' / ('<' '<') / ('>' '>'))> */
+ func() bool {
+ position318, tokenIndex318 := position, tokenIndex
+ {
+ position319 := position
+ {
+ position320, tokenIndex320 := position, tokenIndex
+ if buffer[position] != rune('+') {
+ goto l321
+ }
+ position++
+ goto l320
+ l321:
+ position, tokenIndex = position320, tokenIndex320
+ if buffer[position] != rune('-') {
goto l322
}
- {
- position323, tokenIndex323 := position, tokenIndex
- if !_rules[ruleTCMarker]() {
- goto l323
- }
- goto l324
- l323:
- position, tokenIndex = position323, tokenIndex323
- }
- l324:
- goto l305
+ position++
+ goto l320
l322:
- position, tokenIndex = position305, tokenIndex305
- if !_rules[ruleSymbolName]() {
- goto l325
+ position, tokenIndex = position320, tokenIndex320
+ if buffer[position] != rune('|') {
+ goto l323
}
- if !_rules[ruleOffset]() {
- goto l325
+ position++
+ goto l320
+ l323:
+ position, tokenIndex = position320, tokenIndex320
+ if buffer[position] != rune('<') {
+ goto l324
}
- goto l305
- l325:
- position, tokenIndex = position305, tokenIndex305
- if !_rules[ruleSymbolName]() {
- goto l299
+ position++
+ if buffer[position] != rune('<') {
+ goto l324
}
- {
- position326, tokenIndex326 := position, tokenIndex
- if !_rules[ruleTCMarker]() {
- goto l326
- }
- goto l327
- l326:
- position, tokenIndex = position326, tokenIndex326
+ position++
+ goto l320
+ l324:
+ position, tokenIndex = position320, tokenIndex320
+ if buffer[position] != rune('>') {
+ goto l318
}
- l327:
+ position++
+ if buffer[position] != rune('>') {
+ goto l318
+ }
+ position++
}
- l305:
- {
- position328, tokenIndex328 := position, tokenIndex
- {
- position330, tokenIndex330 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l330
- }
- goto l331
- l330:
- position, tokenIndex = position330, tokenIndex330
- }
- l331:
- if !_rules[ruleCloseParen]() {
- goto l328
- }
- goto l329
- l328:
- position, tokenIndex = position328, tokenIndex328
+ l320:
+ add(ruleSymbolOperator, position319)
+ }
+ return true
+ l318:
+ position, tokenIndex = position318, tokenIndex318
+ return false
+ },
+ /* 19 OpenParen <- <'('> */
+ func() bool {
+ position325, tokenIndex325 := position, tokenIndex
+ {
+ position326 := position
+ if buffer[position] != rune('(') {
+ goto l325
}
- l329:
+ position++
+ add(ruleOpenParen, position326)
+ }
+ return true
+ l325:
+ position, tokenIndex = position325, tokenIndex325
+ return false
+ },
+ /* 20 CloseParen <- <')'> */
+ func() bool {
+ position327, tokenIndex327 := position, tokenIndex
+ {
+ position328 := position
+ if buffer[position] != rune(')') {
+ goto l327
+ }
+ position++
+ add(ruleCloseParen, position328)
+ }
+ return true
+ l327:
+ position, tokenIndex = position327, tokenIndex327
+ return false
+ },
+ /* 21 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
+ func() bool {
+ position329, tokenIndex329 := position, tokenIndex
+ {
+ position330 := position
{
- position332, tokenIndex332 := position, tokenIndex
- {
- position334, tokenIndex334 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l334
- }
- goto l335
- l334:
- position, tokenIndex = position334, tokenIndex334
- }
- l335:
- if !_rules[ruleSymbolShift]() {
+ position331, tokenIndex331 := position, tokenIndex
+ if buffer[position] != rune('@') {
goto l332
}
- goto l333
+ position++
+ goto l331
l332:
- position, tokenIndex = position332, tokenIndex332
- }
- l333:
- add(ruleSymbolArg, position300)
- }
- return true
- l299:
- position, tokenIndex = position299, tokenIndex299
- return false
- },
- /* 17 OpenParen <- <'('> */
- func() bool {
- position336, tokenIndex336 := position, tokenIndex
- {
- position337 := position
- if buffer[position] != rune('(') {
- goto l336
- }
- position++
- add(ruleOpenParen, position337)
- }
- return true
- l336:
- position, tokenIndex = position336, tokenIndex336
- return false
- },
- /* 18 CloseParen <- <')'> */
- func() bool {
- position338, tokenIndex338 := position, tokenIndex
- {
- position339 := position
- if buffer[position] != rune(')') {
- goto l338
- }
- position++
- add(ruleCloseParen, position339)
- }
- return true
- l338:
- position, tokenIndex = position338, tokenIndex338
- return false
- },
- /* 19 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
- func() bool {
- position340, tokenIndex340 := position, tokenIndex
- {
- position341 := position
- {
- position342, tokenIndex342 := position, tokenIndex
- if buffer[position] != rune('@') {
- goto l343
- }
- position++
- goto l342
- l343:
- position, tokenIndex = position342, tokenIndex342
+ position, tokenIndex = position331, tokenIndex331
if buffer[position] != rune('%') {
- goto l340
+ goto l329
}
position++
}
- l342:
+ l331:
{
- position344, tokenIndex344 := position, tokenIndex
+ position333, tokenIndex333 := position, tokenIndex
if buffer[position] != rune('f') {
- goto l345
+ goto l334
}
position++
if buffer[position] != rune('u') {
- goto l345
+ goto l334
}
position++
if buffer[position] != rune('n') {
- goto l345
+ goto l334
}
position++
if buffer[position] != rune('c') {
- goto l345
+ goto l334
}
position++
if buffer[position] != rune('t') {
- goto l345
+ goto l334
}
position++
if buffer[position] != rune('i') {
- goto l345
+ goto l334
}
position++
if buffer[position] != rune('o') {
- goto l345
+ goto l334
}
position++
if buffer[position] != rune('n') {
- goto l345
+ goto l334
}
position++
- goto l344
- l345:
- position, tokenIndex = position344, tokenIndex344
+ goto l333
+ l334:
+ position, tokenIndex = position333, tokenIndex333
if buffer[position] != rune('o') {
- goto l340
+ goto l329
}
position++
if buffer[position] != rune('b') {
- goto l340
+ goto l329
}
position++
if buffer[position] != rune('j') {
- goto l340
+ goto l329
}
position++
if buffer[position] != rune('e') {
- goto l340
+ goto l329
}
position++
if buffer[position] != rune('c') {
- goto l340
+ goto l329
}
position++
if buffer[position] != rune('t') {
- goto l340
+ goto l329
}
position++
}
- l344:
- add(ruleSymbolType, position341)
+ l333:
+ add(ruleSymbolType, position330)
}
return true
- l340:
- position, tokenIndex = position340, tokenIndex340
+ l329:
+ position, tokenIndex = position329, tokenIndex329
return false
},
- /* 20 Dot <- <'.'> */
+ /* 22 Dot <- <'.'> */
func() bool {
- position346, tokenIndex346 := position, tokenIndex
+ position335, tokenIndex335 := position, tokenIndex
{
- position347 := position
+ position336 := position
if buffer[position] != rune('.') {
- goto l346
+ goto l335
}
position++
- add(ruleDot, position347)
+ add(ruleDot, position336)
}
return true
- l346:
- position, tokenIndex = position346, tokenIndex346
+ l335:
+ position, tokenIndex = position335, tokenIndex335
return false
},
- /* 21 TCMarker <- <('[' 'T' 'C' ']')> */
+ /* 23 TCMarker <- <('[' 'T' 'C' ']')> */
func() bool {
- position348, tokenIndex348 := position, tokenIndex
+ position337, tokenIndex337 := position, tokenIndex
{
- position349 := position
+ position338 := position
if buffer[position] != rune('[') {
- goto l348
+ goto l337
}
position++
if buffer[position] != rune('T') {
- goto l348
+ goto l337
}
position++
if buffer[position] != rune('C') {
- goto l348
+ goto l337
}
position++
if buffer[position] != rune(']') {
- goto l348
+ goto l337
}
position++
- add(ruleTCMarker, position349)
+ add(ruleTCMarker, position338)
}
return true
- l348:
- position, tokenIndex = position348, tokenIndex348
+ l337:
+ position, tokenIndex = position337, tokenIndex337
return false
},
- /* 22 EscapedChar <- <('\\' .)> */
+ /* 24 EscapedChar <- <('\\' .)> */
func() bool {
- position350, tokenIndex350 := position, tokenIndex
+ position339, tokenIndex339 := position, tokenIndex
{
- position351 := position
+ position340 := position
if buffer[position] != rune('\\') {
- goto l350
+ goto l339
}
position++
if !matchDot() {
- goto l350
+ goto l339
}
- add(ruleEscapedChar, position351)
+ add(ruleEscapedChar, position340)
}
return true
- l350:
- position, tokenIndex = position350, tokenIndex350
+ l339:
+ position, tokenIndex = position339, tokenIndex339
return false
},
- /* 23 WS <- <(' ' / '\t')+> */
+ /* 25 WS <- <(' ' / '\t')+> */
func() bool {
- position352, tokenIndex352 := position, tokenIndex
+ position341, tokenIndex341 := position, tokenIndex
{
- position353 := position
+ position342 := position
{
- position356, tokenIndex356 := position, tokenIndex
+ position345, tokenIndex345 := position, tokenIndex
if buffer[position] != rune(' ') {
- goto l357
+ goto l346
}
position++
- goto l356
- l357:
- position, tokenIndex = position356, tokenIndex356
+ goto l345
+ l346:
+ position, tokenIndex = position345, tokenIndex345
if buffer[position] != rune('\t') {
+ goto l341
+ }
+ position++
+ }
+ l345:
+ l343:
+ {
+ position344, tokenIndex344 := position, tokenIndex
+ {
+ position347, tokenIndex347 := position, tokenIndex
+ if buffer[position] != rune(' ') {
+ goto l348
+ }
+ position++
+ goto l347
+ l348:
+ position, tokenIndex = position347, tokenIndex347
+ if buffer[position] != rune('\t') {
+ goto l344
+ }
+ position++
+ }
+ l347:
+ goto l343
+ l344:
+ position, tokenIndex = position344, tokenIndex344
+ }
+ add(ruleWS, position342)
+ }
+ return true
+ l341:
+ position, tokenIndex = position341, tokenIndex341
+ return false
+ },
+ /* 26 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
+ func() bool {
+ position349, tokenIndex349 := position, tokenIndex
+ {
+ position350 := position
+ {
+ position351, tokenIndex351 := position, tokenIndex
+ if buffer[position] != rune('/') {
goto l352
}
position++
+ if buffer[position] != rune('/') {
+ goto l352
+ }
+ position++
+ goto l351
+ l352:
+ position, tokenIndex = position351, tokenIndex351
+ if buffer[position] != rune('#') {
+ goto l349
+ }
+ position++
}
- l356:
- l354:
+ l351:
+ l353:
{
- position355, tokenIndex355 := position, tokenIndex
+ position354, tokenIndex354 := position, tokenIndex
{
- position358, tokenIndex358 := position, tokenIndex
- if buffer[position] != rune(' ') {
- goto l359
- }
- position++
- goto l358
- l359:
- position, tokenIndex = position358, tokenIndex358
- if buffer[position] != rune('\t') {
+ position355, tokenIndex355 := position, tokenIndex
+ if buffer[position] != rune('\n') {
goto l355
}
position++
- }
- l358:
- goto l354
- l355:
- position, tokenIndex = position355, tokenIndex355
- }
- add(ruleWS, position353)
- }
- return true
- l352:
- position, tokenIndex = position352, tokenIndex352
- return false
- },
- /* 24 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
- func() bool {
- position360, tokenIndex360 := position, tokenIndex
- {
- position361 := position
- {
- position362, tokenIndex362 := position, tokenIndex
- if buffer[position] != rune('/') {
- goto l363
- }
- position++
- if buffer[position] != rune('/') {
- goto l363
- }
- position++
- goto l362
- l363:
- position, tokenIndex = position362, tokenIndex362
- if buffer[position] != rune('#') {
- goto l360
- }
- position++
- }
- l362:
- l364:
- {
- position365, tokenIndex365 := position, tokenIndex
- {
- position366, tokenIndex366 := position, tokenIndex
- if buffer[position] != rune('\n') {
- goto l366
- }
- position++
- goto l365
- l366:
- position, tokenIndex = position366, tokenIndex366
+ goto l354
+ l355:
+ position, tokenIndex = position355, tokenIndex355
}
if !matchDot() {
- goto l365
+ goto l354
}
- goto l364
- l365:
- position, tokenIndex = position365, tokenIndex365
+ goto l353
+ l354:
+ position, tokenIndex = position354, tokenIndex354
}
- add(ruleComment, position361)
+ add(ruleComment, position350)
}
return true
- l360:
- position, tokenIndex = position360, tokenIndex360
+ l349:
+ position, tokenIndex = position349, tokenIndex349
return false
},
- /* 25 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
+ /* 27 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
func() bool {
- position367, tokenIndex367 := position, tokenIndex
+ position356, tokenIndex356 := position, tokenIndex
{
- position368 := position
+ position357 := position
{
- position369, tokenIndex369 := position, tokenIndex
+ position358, tokenIndex358 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
- goto l370
+ goto l359
}
- goto l369
- l370:
- position, tokenIndex = position369, tokenIndex369
+ goto l358
+ l359:
+ position, tokenIndex = position358, tokenIndex358
if !_rules[ruleLocalLabel]() {
- goto l371
+ goto l360
}
- goto l369
- l371:
- position, tokenIndex = position369, tokenIndex369
+ goto l358
+ l360:
+ position, tokenIndex = position358, tokenIndex358
if !_rules[ruleSymbolName]() {
- goto l367
+ goto l356
}
}
- l369:
+ l358:
if buffer[position] != rune(':') {
- goto l367
+ goto l356
}
position++
- add(ruleLabel, position368)
+ add(ruleLabel, position357)
}
return true
- l367:
- position, tokenIndex = position367, tokenIndex367
+ l356:
+ position, tokenIndex = position356, tokenIndex356
return false
},
- /* 26 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
+ /* 28 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
func() bool {
- position372, tokenIndex372 := position, tokenIndex
+ position361, tokenIndex361 := position, tokenIndex
{
- position373 := position
+ position362 := position
{
- position374, tokenIndex374 := position, tokenIndex
+ position363, tokenIndex363 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l375
+ goto l364
}
position++
- goto l374
- l375:
- position, tokenIndex = position374, tokenIndex374
+ goto l363
+ l364:
+ position, tokenIndex = position363, tokenIndex363
if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l376
+ goto l365
}
position++
- goto l374
- l376:
- position, tokenIndex = position374, tokenIndex374
+ goto l363
+ l365:
+ position, tokenIndex = position363, tokenIndex363
if buffer[position] != rune('.') {
+ goto l366
+ }
+ position++
+ goto l363
+ l366:
+ position, tokenIndex = position363, tokenIndex363
+ if buffer[position] != rune('_') {
+ goto l361
+ }
+ position++
+ }
+ l363:
+ l367:
+ {
+ position368, tokenIndex368 := position, tokenIndex
+ {
+ position369, tokenIndex369 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l370
+ }
+ position++
+ goto l369
+ l370:
+ position, tokenIndex = position369, tokenIndex369
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l371
+ }
+ position++
+ goto l369
+ l371:
+ position, tokenIndex = position369, tokenIndex369
+ if buffer[position] != rune('.') {
+ goto l372
+ }
+ position++
+ goto l369
+ l372:
+ position, tokenIndex = position369, tokenIndex369
+ {
+ position374, tokenIndex374 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l375
+ }
+ position++
+ goto l374
+ l375:
+ position, tokenIndex = position374, tokenIndex374
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l373
+ }
+ position++
+ }
+ l374:
+ goto l369
+ l373:
+ position, tokenIndex = position369, tokenIndex369
+ if buffer[position] != rune('$') {
+ goto l376
+ }
+ position++
+ goto l369
+ l376:
+ position, tokenIndex = position369, tokenIndex369
+ if buffer[position] != rune('_') {
+ goto l368
+ }
+ position++
+ }
+ l369:
+ goto l367
+ l368:
+ position, tokenIndex = position368, tokenIndex368
+ }
+ add(ruleSymbolName, position362)
+ }
+ return true
+ l361:
+ position, tokenIndex = position361, tokenIndex361
+ return false
+ },
+ /* 29 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
+ func() bool {
+ position377, tokenIndex377 := position, tokenIndex
+ {
+ position378 := position
+ if buffer[position] != rune('.') {
+ goto l377
+ }
+ position++
+ if buffer[position] != rune('L') {
+ goto l377
+ }
+ position++
+ {
+ position381, tokenIndex381 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l382
+ }
+ position++
+ goto l381
+ l382:
+ position, tokenIndex = position381, tokenIndex381
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l383
+ }
+ position++
+ goto l381
+ l383:
+ position, tokenIndex = position381, tokenIndex381
+ {
+ position385, tokenIndex385 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l386
+ }
+ position++
+ goto l385
+ l386:
+ position, tokenIndex = position385, tokenIndex385
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l384
+ }
+ position++
+ }
+ l385:
+ goto l381
+ l384:
+ position, tokenIndex = position381, tokenIndex381
+ if buffer[position] != rune('.') {
+ goto l387
+ }
+ position++
+ goto l381
+ l387:
+ position, tokenIndex = position381, tokenIndex381
+ {
+ position389, tokenIndex389 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l390
+ }
+ position++
+ goto l389
+ l390:
+ position, tokenIndex = position389, tokenIndex389
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l388
+ }
+ position++
+ }
+ l389:
+ goto l381
+ l388:
+ position, tokenIndex = position381, tokenIndex381
+ if buffer[position] != rune('$') {
+ goto l391
+ }
+ position++
+ goto l381
+ l391:
+ position, tokenIndex = position381, tokenIndex381
+ if buffer[position] != rune('_') {
goto l377
}
position++
- goto l374
- l377:
- position, tokenIndex = position374, tokenIndex374
- if buffer[position] != rune('_') {
- goto l372
- }
- position++
}
- l374:
- l378:
+ l381:
+ l379:
{
- position379, tokenIndex379 := position, tokenIndex
+ position380, tokenIndex380 := position, tokenIndex
{
- position380, tokenIndex380 := position, tokenIndex
+ position392, tokenIndex392 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l381
+ goto l393
}
position++
- goto l380
- l381:
- position, tokenIndex = position380, tokenIndex380
+ goto l392
+ l393:
+ position, tokenIndex = position392, tokenIndex392
if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l382
+ goto l394
}
position++
- goto l380
- l382:
- position, tokenIndex = position380, tokenIndex380
- if buffer[position] != rune('.') {
- goto l383
- }
- position++
- goto l380
- l383:
- position, tokenIndex = position380, tokenIndex380
+ goto l392
+ l394:
+ position, tokenIndex = position392, tokenIndex392
{
- position385, tokenIndex385 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l386
- }
- position++
- goto l385
- l386:
- position, tokenIndex = position385, tokenIndex385
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l384
- }
- position++
- }
- l385:
- goto l380
- l384:
- position, tokenIndex = position380, tokenIndex380
- if buffer[position] != rune('$') {
- goto l387
- }
- position++
- goto l380
- l387:
- position, tokenIndex = position380, tokenIndex380
- if buffer[position] != rune('_') {
- goto l379
- }
- position++
- }
- l380:
- goto l378
- l379:
- position, tokenIndex = position379, tokenIndex379
- }
- add(ruleSymbolName, position373)
- }
- return true
- l372:
- position, tokenIndex = position372, tokenIndex372
- return false
- },
- /* 27 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
- func() bool {
- position388, tokenIndex388 := position, tokenIndex
- {
- position389 := position
- if buffer[position] != rune('.') {
- goto l388
- }
- position++
- if buffer[position] != rune('L') {
- goto l388
- }
- position++
- {
- position392, tokenIndex392 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l393
- }
- position++
- goto l392
- l393:
- position, tokenIndex = position392, tokenIndex392
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l394
- }
- position++
- goto l392
- l394:
- position, tokenIndex = position392, tokenIndex392
- {
- position396, tokenIndex396 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l397
- }
- position++
- goto l396
- l397:
- position, tokenIndex = position396, tokenIndex396
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l395
- }
- position++
- }
- l396:
- goto l392
- l395:
- position, tokenIndex = position392, tokenIndex392
- if buffer[position] != rune('.') {
- goto l398
- }
- position++
- goto l392
- l398:
- position, tokenIndex = position392, tokenIndex392
- {
- position400, tokenIndex400 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l401
- }
- position++
- goto l400
- l401:
- position, tokenIndex = position400, tokenIndex400
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l399
- }
- position++
- }
- l400:
- goto l392
- l399:
- position, tokenIndex = position392, tokenIndex392
- if buffer[position] != rune('$') {
- goto l402
- }
- position++
- goto l392
- l402:
- position, tokenIndex = position392, tokenIndex392
- if buffer[position] != rune('_') {
- goto l388
- }
- position++
- }
- l392:
- l390:
- {
- position391, tokenIndex391 := position, tokenIndex
- {
- position403, tokenIndex403 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l404
- }
- position++
- goto l403
- l404:
- position, tokenIndex = position403, tokenIndex403
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l405
- }
- position++
- goto l403
- l405:
- position, tokenIndex = position403, tokenIndex403
- {
- position407, tokenIndex407 := position, tokenIndex
+ position396, tokenIndex396 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l408
+ goto l397
}
position++
- goto l407
- l408:
- position, tokenIndex = position407, tokenIndex407
+ goto l396
+ l397:
+ position, tokenIndex = position396, tokenIndex396
if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l406
+ goto l395
}
position++
}
- l407:
- goto l403
- l406:
- position, tokenIndex = position403, tokenIndex403
+ l396:
+ goto l392
+ l395:
+ position, tokenIndex = position392, tokenIndex392
if buffer[position] != rune('.') {
- goto l409
+ goto l398
}
position++
- goto l403
- l409:
- position, tokenIndex = position403, tokenIndex403
+ goto l392
+ l398:
+ position, tokenIndex = position392, tokenIndex392
{
- position411, tokenIndex411 := position, tokenIndex
+ position400, tokenIndex400 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l412
+ goto l401
}
position++
- goto l411
- l412:
- position, tokenIndex = position411, tokenIndex411
+ goto l400
+ l401:
+ position, tokenIndex = position400, tokenIndex400
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l410
+ goto l399
}
position++
}
- l411:
- goto l403
- l410:
- position, tokenIndex = position403, tokenIndex403
+ l400:
+ goto l392
+ l399:
+ position, tokenIndex = position392, tokenIndex392
if buffer[position] != rune('$') {
- goto l413
+ goto l402
}
position++
- goto l403
- l413:
- position, tokenIndex = position403, tokenIndex403
+ goto l392
+ l402:
+ position, tokenIndex = position392, tokenIndex392
if buffer[position] != rune('_') {
- goto l391
+ goto l380
}
position++
}
- l403:
- goto l390
- l391:
- position, tokenIndex = position391, tokenIndex391
+ l392:
+ goto l379
+ l380:
+ position, tokenIndex = position380, tokenIndex380
}
- add(ruleLocalSymbol, position389)
+ add(ruleLocalSymbol, position378)
}
return true
- l388:
- position, tokenIndex = position388, tokenIndex388
+ l377:
+ position, tokenIndex = position377, tokenIndex377
return false
},
- /* 28 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
+ /* 30 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
func() bool {
- position414, tokenIndex414 := position, tokenIndex
+ position403, tokenIndex403 := position, tokenIndex
{
- position415 := position
+ position404 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l414
+ goto l403
}
position++
- l416:
+ l405:
{
- position417, tokenIndex417 := position, tokenIndex
+ position406, tokenIndex406 := position, tokenIndex
{
- position418, tokenIndex418 := position, tokenIndex
+ position407, tokenIndex407 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l419
+ goto l408
}
position++
- goto l418
- l419:
- position, tokenIndex = position418, tokenIndex418
+ goto l407
+ l408:
+ position, tokenIndex = position407, tokenIndex407
if buffer[position] != rune('$') {
- goto l417
+ goto l406
}
position++
}
- l418:
- goto l416
- l417:
- position, tokenIndex = position417, tokenIndex417
+ l407:
+ goto l405
+ l406:
+ position, tokenIndex = position406, tokenIndex406
}
- add(ruleLocalLabel, position415)
+ add(ruleLocalLabel, position404)
}
return true
- l414:
- position, tokenIndex = position414, tokenIndex414
+ l403:
+ position, tokenIndex = position403, tokenIndex403
return false
},
- /* 29 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
+ /* 31 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
func() bool {
- position420, tokenIndex420 := position, tokenIndex
+ position409, tokenIndex409 := position, tokenIndex
{
- position421 := position
+ position410 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l420
+ goto l409
}
position++
- l422:
+ l411:
{
- position423, tokenIndex423 := position, tokenIndex
+ position412, tokenIndex412 := position, tokenIndex
{
- position424, tokenIndex424 := position, tokenIndex
+ position413, tokenIndex413 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l425
+ goto l414
}
position++
- goto l424
- l425:
- position, tokenIndex = position424, tokenIndex424
+ goto l413
+ l414:
+ position, tokenIndex = position413, tokenIndex413
if buffer[position] != rune('$') {
- goto l423
+ goto l412
}
position++
}
- l424:
- goto l422
- l423:
- position, tokenIndex = position423, tokenIndex423
+ l413:
+ goto l411
+ l412:
+ position, tokenIndex = position412, tokenIndex412
}
{
- position426, tokenIndex426 := position, tokenIndex
+ position415, tokenIndex415 := position, tokenIndex
if buffer[position] != rune('b') {
+ goto l416
+ }
+ position++
+ goto l415
+ l416:
+ position, tokenIndex = position415, tokenIndex415
+ if buffer[position] != rune('f') {
+ goto l409
+ }
+ position++
+ }
+ l415:
+ add(ruleLocalLabelRef, position410)
+ }
+ return true
+ l409:
+ position, tokenIndex = position409, tokenIndex409
+ return false
+ },
+ /* 32 Instruction <- <(InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
+ func() bool {
+ position417, tokenIndex417 := position, tokenIndex
+ {
+ position418 := position
+ if !_rules[ruleInstructionName]() {
+ goto l417
+ }
+ {
+ position419, tokenIndex419 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l419
+ }
+ if !_rules[ruleInstructionArg]() {
+ goto l419
+ }
+ l421:
+ {
+ position422, tokenIndex422 := position, tokenIndex
+ {
+ position423, tokenIndex423 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l423
+ }
+ goto l424
+ l423:
+ position, tokenIndex = position423, tokenIndex423
+ }
+ l424:
+ if buffer[position] != rune(',') {
+ goto l422
+ }
+ position++
+ {
+ position425, tokenIndex425 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l425
+ }
+ goto l426
+ l425:
+ position, tokenIndex = position425, tokenIndex425
+ }
+ l426:
+ if !_rules[ruleInstructionArg]() {
+ goto l422
+ }
+ goto l421
+ l422:
+ position, tokenIndex = position422, tokenIndex422
+ }
+ goto l420
+ l419:
+ position, tokenIndex = position419, tokenIndex419
+ }
+ l420:
+ add(ruleInstruction, position418)
+ }
+ return true
+ l417:
+ position, tokenIndex = position417, tokenIndex417
+ return false
+ },
+ /* 33 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
+ func() bool {
+ position427, tokenIndex427 := position, tokenIndex
+ {
+ position428 := position
+ {
+ position429, tokenIndex429 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l430
+ }
+ position++
+ goto l429
+ l430:
+ position, tokenIndex = position429, tokenIndex429
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l427
}
position++
- goto l426
- l427:
- position, tokenIndex = position426, tokenIndex426
- if buffer[position] != rune('f') {
- goto l420
- }
- position++
}
- l426:
- add(ruleLocalLabelRef, position421)
- }
- return true
- l420:
- position, tokenIndex = position420, tokenIndex420
- return false
- },
- /* 30 Instruction <- <(InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
- func() bool {
- position428, tokenIndex428 := position, tokenIndex
- {
- position429 := position
- if !_rules[ruleInstructionName]() {
- goto l428
- }
+ l429:
+ l431:
{
- position430, tokenIndex430 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l430
- }
- if !_rules[ruleInstructionArg]() {
- goto l430
- }
- l432:
+ position432, tokenIndex432 := position, tokenIndex
{
position433, tokenIndex433 := position, tokenIndex
- {
- position434, tokenIndex434 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l434
- }
- goto l435
- l434:
- position, tokenIndex = position434, tokenIndex434
- }
- l435:
- if buffer[position] != rune(',') {
- goto l433
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l434
}
position++
+ goto l433
+ l434:
+ position, tokenIndex = position433, tokenIndex433
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l435
+ }
+ position++
+ goto l433
+ l435:
+ position, tokenIndex = position433, tokenIndex433
+ if buffer[position] != rune('.') {
+ goto l436
+ }
+ position++
+ goto l433
+ l436:
+ position, tokenIndex = position433, tokenIndex433
{
- position436, tokenIndex436 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l436
+ position437, tokenIndex437 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l438
}
+ position++
goto l437
- l436:
- position, tokenIndex = position436, tokenIndex436
+ l438:
+ position, tokenIndex = position437, tokenIndex437
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l432
+ }
+ position++
}
l437:
- if !_rules[ruleInstructionArg]() {
- goto l433
- }
- goto l432
- l433:
- position, tokenIndex = position433, tokenIndex433
}
+ l433:
goto l431
- l430:
- position, tokenIndex = position430, tokenIndex430
+ l432:
+ position, tokenIndex = position432, tokenIndex432
}
- l431:
- add(ruleInstruction, position429)
- }
- return true
- l428:
- position, tokenIndex = position428, tokenIndex428
- return false
- },
- /* 31 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
- func() bool {
- position438, tokenIndex438 := position, tokenIndex
- {
- position439 := position
{
- position440, tokenIndex440 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
+ position439, tokenIndex439 := position, tokenIndex
+ {
+ position441, tokenIndex441 := position, tokenIndex
+ if buffer[position] != rune('.') {
+ goto l442
+ }
+ position++
goto l441
+ l442:
+ position, tokenIndex = position441, tokenIndex441
+ if buffer[position] != rune('+') {
+ goto l443
+ }
+ position++
+ goto l441
+ l443:
+ position, tokenIndex = position441, tokenIndex441
+ if buffer[position] != rune('-') {
+ goto l439
+ }
+ position++
}
- position++
- goto l440
l441:
- position, tokenIndex = position440, tokenIndex440
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l438
- }
- position++
+ goto l440
+ l439:
+ position, tokenIndex = position439, tokenIndex439
}
l440:
- l442:
- {
- position443, tokenIndex443 := position, tokenIndex
- {
- position444, tokenIndex444 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l445
- }
- position++
- goto l444
- l445:
- position, tokenIndex = position444, tokenIndex444
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l446
- }
- position++
- goto l444
- l446:
- position, tokenIndex = position444, tokenIndex444
- if buffer[position] != rune('.') {
- goto l447
- }
- position++
- goto l444
- l447:
- position, tokenIndex = position444, tokenIndex444
- {
- position448, tokenIndex448 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l449
- }
- position++
- goto l448
- l449:
- position, tokenIndex = position448, tokenIndex448
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l443
- }
- position++
- }
- l448:
- }
- l444:
- goto l442
- l443:
- position, tokenIndex = position443, tokenIndex443
- }
- {
- position450, tokenIndex450 := position, tokenIndex
- {
- position452, tokenIndex452 := position, tokenIndex
- if buffer[position] != rune('.') {
- goto l453
- }
- position++
- goto l452
- l453:
- position, tokenIndex = position452, tokenIndex452
- if buffer[position] != rune('+') {
- goto l454
- }
- position++
- goto l452
- l454:
- position, tokenIndex = position452, tokenIndex452
- if buffer[position] != rune('-') {
- goto l450
- }
- position++
- }
- l452:
- goto l451
- l450:
- position, tokenIndex = position450, tokenIndex450
- }
- l451:
- add(ruleInstructionName, position439)
+ add(ruleInstructionName, position428)
}
return true
- l438:
- position, tokenIndex = position438, tokenIndex438
+ l427:
+ position, tokenIndex = position427, tokenIndex427
return false
},
- /* 32 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
+ /* 34 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
func() bool {
- position455, tokenIndex455 := position, tokenIndex
+ position444, tokenIndex444 := position, tokenIndex
{
- position456 := position
+ position445 := position
+ {
+ position446, tokenIndex446 := position, tokenIndex
+ if !_rules[ruleIndirectionIndicator]() {
+ goto l446
+ }
+ goto l447
+ l446:
+ position, tokenIndex = position446, tokenIndex446
+ }
+ l447:
+ {
+ position448, tokenIndex448 := position, tokenIndex
+ if !_rules[ruleARMConstantTweak]() {
+ goto l449
+ }
+ goto l448
+ l449:
+ position, tokenIndex = position448, tokenIndex448
+ if !_rules[ruleRegisterOrConstant]() {
+ goto l450
+ }
+ goto l448
+ l450:
+ position, tokenIndex = position448, tokenIndex448
+ if !_rules[ruleLocalLabelRef]() {
+ goto l451
+ }
+ goto l448
+ l451:
+ position, tokenIndex = position448, tokenIndex448
+ if !_rules[ruleTOCRefHigh]() {
+ goto l452
+ }
+ goto l448
+ l452:
+ position, tokenIndex = position448, tokenIndex448
+ if !_rules[ruleTOCRefLow]() {
+ goto l453
+ }
+ goto l448
+ l453:
+ position, tokenIndex = position448, tokenIndex448
+ if !_rules[ruleGOTLocation]() {
+ goto l454
+ }
+ goto l448
+ l454:
+ position, tokenIndex = position448, tokenIndex448
+ if !_rules[ruleGOTSymbolOffset]() {
+ goto l455
+ }
+ goto l448
+ l455:
+ position, tokenIndex = position448, tokenIndex448
+ if !_rules[ruleMemoryRef]() {
+ goto l444
+ }
+ }
+ l448:
+ l456:
{
position457, tokenIndex457 := position, tokenIndex
- if !_rules[ruleIndirectionIndicator]() {
+ if !_rules[ruleAVX512Token]() {
goto l457
}
- goto l458
+ goto l456
l457:
position, tokenIndex = position457, tokenIndex457
}
- l458:
- {
- position459, tokenIndex459 := position, tokenIndex
- if !_rules[ruleARMConstantTweak]() {
- goto l460
- }
- goto l459
- l460:
- position, tokenIndex = position459, tokenIndex459
- if !_rules[ruleRegisterOrConstant]() {
- goto l461
- }
- goto l459
- l461:
- position, tokenIndex = position459, tokenIndex459
- if !_rules[ruleLocalLabelRef]() {
- goto l462
- }
- goto l459
- l462:
- position, tokenIndex = position459, tokenIndex459
- if !_rules[ruleTOCRefHigh]() {
- goto l463
- }
- goto l459
- l463:
- position, tokenIndex = position459, tokenIndex459
- if !_rules[ruleTOCRefLow]() {
- goto l464
- }
- goto l459
- l464:
- position, tokenIndex = position459, tokenIndex459
- if !_rules[ruleGOTLocation]() {
- goto l465
- }
- goto l459
- l465:
- position, tokenIndex = position459, tokenIndex459
- if !_rules[ruleGOTSymbolOffset]() {
- goto l466
- }
- goto l459
- l466:
- position, tokenIndex = position459, tokenIndex459
- if !_rules[ruleMemoryRef]() {
- goto l455
- }
- }
- l459:
- l467:
- {
- position468, tokenIndex468 := position, tokenIndex
- if !_rules[ruleAVX512Token]() {
- goto l468
- }
- goto l467
- l468:
- position, tokenIndex = position468, tokenIndex468
- }
- add(ruleInstructionArg, position456)
+ add(ruleInstructionArg, position445)
}
return true
- l455:
- position, tokenIndex = position455, tokenIndex455
+ l444:
+ position, tokenIndex = position444, tokenIndex444
return false
},
- /* 33 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
+ /* 35 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
func() bool {
- position469, tokenIndex469 := position, tokenIndex
+ position458, tokenIndex458 := position, tokenIndex
{
- position470 := position
+ position459 := position
if buffer[position] != rune('$') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('_') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('G') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('L') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('O') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('B') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('A') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('L') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('_') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('O') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('F') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('F') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('S') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('E') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('T') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('_') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('T') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('A') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('B') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('L') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('E') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('_') {
- goto l469
+ goto l458
}
position++
if buffer[position] != rune('-') {
- goto l469
+ goto l458
}
position++
if !_rules[ruleLocalSymbol]() {
- goto l469
+ goto l458
}
- add(ruleGOTLocation, position470)
+ add(ruleGOTLocation, position459)
}
return true
- l469:
- position, tokenIndex = position469, tokenIndex469
+ l458:
+ position, tokenIndex = position458, tokenIndex458
return false
},
- /* 34 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
+ /* 36 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
func() bool {
- position471, tokenIndex471 := position, tokenIndex
+ position460, tokenIndex460 := position, tokenIndex
{
- position472 := position
+ position461 := position
{
- position473, tokenIndex473 := position, tokenIndex
+ position462, tokenIndex462 := position, tokenIndex
if buffer[position] != rune('$') {
- goto l474
+ goto l463
}
position++
if !_rules[ruleSymbolName]() {
- goto l474
+ goto l463
}
if buffer[position] != rune('@') {
- goto l474
+ goto l463
}
position++
if buffer[position] != rune('G') {
- goto l474
+ goto l463
}
position++
if buffer[position] != rune('O') {
- goto l474
+ goto l463
}
position++
if buffer[position] != rune('T') {
- goto l474
+ goto l463
}
position++
{
- position475, tokenIndex475 := position, tokenIndex
+ position464, tokenIndex464 := position, tokenIndex
if buffer[position] != rune('O') {
- goto l475
+ goto l464
}
position++
if buffer[position] != rune('F') {
- goto l475
+ goto l464
}
position++
if buffer[position] != rune('F') {
- goto l475
+ goto l464
}
position++
- goto l476
- l475:
- position, tokenIndex = position475, tokenIndex475
+ goto l465
+ l464:
+ position, tokenIndex = position464, tokenIndex464
}
- l476:
- goto l473
- l474:
- position, tokenIndex = position473, tokenIndex473
+ l465:
+ goto l462
+ l463:
+ position, tokenIndex = position462, tokenIndex462
if buffer[position] != rune(':') {
- goto l471
+ goto l460
}
position++
{
- position477, tokenIndex477 := position, tokenIndex
+ position466, tokenIndex466 := position, tokenIndex
if buffer[position] != rune('g') {
- goto l478
+ goto l467
}
position++
- goto l477
- l478:
- position, tokenIndex = position477, tokenIndex477
+ goto l466
+ l467:
+ position, tokenIndex = position466, tokenIndex466
if buffer[position] != rune('G') {
- goto l471
+ goto l460
}
position++
}
- l477:
+ l466:
{
- position479, tokenIndex479 := position, tokenIndex
+ position468, tokenIndex468 := position, tokenIndex
if buffer[position] != rune('o') {
- goto l480
+ goto l469
}
position++
- goto l479
- l480:
- position, tokenIndex = position479, tokenIndex479
+ goto l468
+ l469:
+ position, tokenIndex = position468, tokenIndex468
if buffer[position] != rune('O') {
- goto l471
+ goto l460
}
position++
}
- l479:
+ l468:
{
- position481, tokenIndex481 := position, tokenIndex
+ position470, tokenIndex470 := position, tokenIndex
if buffer[position] != rune('t') {
- goto l482
- }
- position++
- goto l481
- l482:
- position, tokenIndex = position481, tokenIndex481
- if buffer[position] != rune('T') {
goto l471
}
position++
+ goto l470
+ l471:
+ position, tokenIndex = position470, tokenIndex470
+ if buffer[position] != rune('T') {
+ goto l460
+ }
+ position++
}
- l481:
+ l470:
if buffer[position] != rune(':') {
- goto l471
+ goto l460
}
position++
if !_rules[ruleSymbolName]() {
- goto l471
+ goto l460
}
}
- l473:
- add(ruleGOTSymbolOffset, position472)
+ l462:
+ add(ruleGOTSymbolOffset, position461)
}
return true
- l471:
- position, tokenIndex = position471, tokenIndex471
+ l460:
+ position, tokenIndex = position460, tokenIndex460
return false
},
- /* 35 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
+ /* 37 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
func() bool {
- position483, tokenIndex483 := position, tokenIndex
+ position472, tokenIndex472 := position, tokenIndex
{
- position484 := position
+ position473 := position
{
- position485, tokenIndex485 := position, tokenIndex
+ position474, tokenIndex474 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l485
+ goto l474
}
- goto l486
- l485:
- position, tokenIndex = position485, tokenIndex485
+ goto l475
+ l474:
+ position, tokenIndex = position474, tokenIndex474
}
- l486:
+ l475:
if buffer[position] != rune('{') {
- goto l483
+ goto l472
}
position++
{
- position487, tokenIndex487 := position, tokenIndex
+ position476, tokenIndex476 := position, tokenIndex
if buffer[position] != rune('%') {
- goto l487
+ goto l476
}
position++
- goto l488
- l487:
- position, tokenIndex = position487, tokenIndex487
+ goto l477
+ l476:
+ position, tokenIndex = position476, tokenIndex476
}
- l488:
- l489:
+ l477:
+ l478:
{
- position490, tokenIndex490 := position, tokenIndex
+ position479, tokenIndex479 := position, tokenIndex
{
- position491, tokenIndex491 := position, tokenIndex
+ position480, tokenIndex480 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l492
+ goto l481
}
position++
- goto l491
- l492:
- position, tokenIndex = position491, tokenIndex491
+ goto l480
+ l481:
+ position, tokenIndex = position480, tokenIndex480
if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l479
+ }
+ position++
+ }
+ l480:
+ goto l478
+ l479:
+ position, tokenIndex = position479, tokenIndex479
+ }
+ if buffer[position] != rune('}') {
+ goto l472
+ }
+ position++
+ add(ruleAVX512Token, position473)
+ }
+ return true
+ l472:
+ position, tokenIndex = position472, tokenIndex472
+ return false
+ },
+ /* 38 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
+ func() bool {
+ position482, tokenIndex482 := position, tokenIndex
+ {
+ position483 := position
+ if buffer[position] != rune('.') {
+ goto l482
+ }
+ position++
+ if buffer[position] != rune('T') {
+ goto l482
+ }
+ position++
+ if buffer[position] != rune('O') {
+ goto l482
+ }
+ position++
+ if buffer[position] != rune('C') {
+ goto l482
+ }
+ position++
+ if buffer[position] != rune('.') {
+ goto l482
+ }
+ position++
+ if buffer[position] != rune('-') {
+ goto l482
+ }
+ position++
+ {
+ position484, tokenIndex484 := position, tokenIndex
+ if buffer[position] != rune('0') {
+ goto l485
+ }
+ position++
+ if buffer[position] != rune('b') {
+ goto l485
+ }
+ position++
+ goto l484
+ l485:
+ position, tokenIndex = position484, tokenIndex484
+ if buffer[position] != rune('.') {
+ goto l482
+ }
+ position++
+ if buffer[position] != rune('L') {
+ goto l482
+ }
+ position++
+ {
+ position488, tokenIndex488 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l489
+ }
+ position++
+ goto l488
+ l489:
+ position, tokenIndex = position488, tokenIndex488
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l490
}
position++
+ goto l488
+ l490:
+ position, tokenIndex = position488, tokenIndex488
+ if buffer[position] != rune('_') {
+ goto l491
+ }
+ position++
+ goto l488
+ l491:
+ position, tokenIndex = position488, tokenIndex488
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l482
+ }
+ position++
}
- l491:
- goto l489
- l490:
- position, tokenIndex = position490, tokenIndex490
+ l488:
+ l486:
+ {
+ position487, tokenIndex487 := position, tokenIndex
+ {
+ position492, tokenIndex492 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l493
+ }
+ position++
+ goto l492
+ l493:
+ position, tokenIndex = position492, tokenIndex492
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l494
+ }
+ position++
+ goto l492
+ l494:
+ position, tokenIndex = position492, tokenIndex492
+ if buffer[position] != rune('_') {
+ goto l495
+ }
+ position++
+ goto l492
+ l495:
+ position, tokenIndex = position492, tokenIndex492
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l487
+ }
+ position++
+ }
+ l492:
+ goto l486
+ l487:
+ position, tokenIndex = position487, tokenIndex487
+ }
}
- if buffer[position] != rune('}') {
- goto l483
- }
- position++
- add(ruleAVX512Token, position484)
- }
- return true
- l483:
- position, tokenIndex = position483, tokenIndex483
- return false
- },
- /* 36 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
- func() bool {
- position493, tokenIndex493 := position, tokenIndex
- {
- position494 := position
- if buffer[position] != rune('.') {
- goto l493
- }
- position++
- if buffer[position] != rune('T') {
- goto l493
- }
- position++
- if buffer[position] != rune('O') {
- goto l493
- }
- position++
- if buffer[position] != rune('C') {
- goto l493
- }
- position++
- if buffer[position] != rune('.') {
- goto l493
- }
- position++
- if buffer[position] != rune('-') {
- goto l493
+ l484:
+ if buffer[position] != rune('@') {
+ goto l482
}
position++
{
- position495, tokenIndex495 := position, tokenIndex
+ position496, tokenIndex496 := position, tokenIndex
+ if buffer[position] != rune('h') {
+ goto l497
+ }
+ position++
+ goto l496
+ l497:
+ position, tokenIndex = position496, tokenIndex496
+ if buffer[position] != rune('H') {
+ goto l482
+ }
+ position++
+ }
+ l496:
+ {
+ position498, tokenIndex498 := position, tokenIndex
+ if buffer[position] != rune('a') {
+ goto l499
+ }
+ position++
+ goto l498
+ l499:
+ position, tokenIndex = position498, tokenIndex498
+ if buffer[position] != rune('A') {
+ goto l482
+ }
+ position++
+ }
+ l498:
+ add(ruleTOCRefHigh, position483)
+ }
+ return true
+ l482:
+ position, tokenIndex = position482, tokenIndex482
+ return false
+ },
+ /* 39 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
+ func() bool {
+ position500, tokenIndex500 := position, tokenIndex
+ {
+ position501 := position
+ if buffer[position] != rune('.') {
+ goto l500
+ }
+ position++
+ if buffer[position] != rune('T') {
+ goto l500
+ }
+ position++
+ if buffer[position] != rune('O') {
+ goto l500
+ }
+ position++
+ if buffer[position] != rune('C') {
+ goto l500
+ }
+ position++
+ if buffer[position] != rune('.') {
+ goto l500
+ }
+ position++
+ if buffer[position] != rune('-') {
+ goto l500
+ }
+ position++
+ {
+ position502, tokenIndex502 := position, tokenIndex
if buffer[position] != rune('0') {
- goto l496
+ goto l503
}
position++
if buffer[position] != rune('b') {
- goto l496
+ goto l503
}
position++
- goto l495
- l496:
- position, tokenIndex = position495, tokenIndex495
+ goto l502
+ l503:
+ position, tokenIndex = position502, tokenIndex502
if buffer[position] != rune('.') {
- goto l493
+ goto l500
}
position++
if buffer[position] != rune('L') {
- goto l493
+ goto l500
}
position++
{
- position499, tokenIndex499 := position, tokenIndex
+ position506, tokenIndex506 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l507
+ }
+ position++
+ goto l506
+ l507:
+ position, tokenIndex = position506, tokenIndex506
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l508
+ }
+ position++
+ goto l506
+ l508:
+ position, tokenIndex = position506, tokenIndex506
+ if buffer[position] != rune('_') {
+ goto l509
+ }
+ position++
+ goto l506
+ l509:
+ position, tokenIndex = position506, tokenIndex506
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l500
}
position++
- goto l499
- l500:
- position, tokenIndex = position499, tokenIndex499
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l501
- }
- position++
- goto l499
- l501:
- position, tokenIndex = position499, tokenIndex499
- if buffer[position] != rune('_') {
- goto l502
- }
- position++
- goto l499
- l502:
- position, tokenIndex = position499, tokenIndex499
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l493
- }
- position++
}
- l499:
- l497:
+ l506:
+ l504:
{
- position498, tokenIndex498 := position, tokenIndex
+ position505, tokenIndex505 := position, tokenIndex
{
- position503, tokenIndex503 := position, tokenIndex
+ position510, tokenIndex510 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l504
+ goto l511
}
position++
- goto l503
- l504:
- position, tokenIndex = position503, tokenIndex503
+ goto l510
+ l511:
+ position, tokenIndex = position510, tokenIndex510
if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l512
+ }
+ position++
+ goto l510
+ l512:
+ position, tokenIndex = position510, tokenIndex510
+ if buffer[position] != rune('_') {
+ goto l513
+ }
+ position++
+ goto l510
+ l513:
+ position, tokenIndex = position510, tokenIndex510
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l505
}
position++
- goto l503
- l505:
- position, tokenIndex = position503, tokenIndex503
- if buffer[position] != rune('_') {
- goto l506
- }
- position++
- goto l503
- l506:
- position, tokenIndex = position503, tokenIndex503
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l498
- }
- position++
}
- l503:
- goto l497
- l498:
- position, tokenIndex = position498, tokenIndex498
+ l510:
+ goto l504
+ l505:
+ position, tokenIndex = position505, tokenIndex505
}
}
- l495:
+ l502:
if buffer[position] != rune('@') {
- goto l493
+ goto l500
}
position++
{
- position507, tokenIndex507 := position, tokenIndex
- if buffer[position] != rune('h') {
- goto l508
- }
- position++
- goto l507
- l508:
- position, tokenIndex = position507, tokenIndex507
- if buffer[position] != rune('H') {
- goto l493
- }
- position++
- }
- l507:
- {
- position509, tokenIndex509 := position, tokenIndex
- if buffer[position] != rune('a') {
- goto l510
- }
- position++
- goto l509
- l510:
- position, tokenIndex = position509, tokenIndex509
- if buffer[position] != rune('A') {
- goto l493
- }
- position++
- }
- l509:
- add(ruleTOCRefHigh, position494)
- }
- return true
- l493:
- position, tokenIndex = position493, tokenIndex493
- return false
- },
- /* 37 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
- func() bool {
- position511, tokenIndex511 := position, tokenIndex
- {
- position512 := position
- if buffer[position] != rune('.') {
- goto l511
- }
- position++
- if buffer[position] != rune('T') {
- goto l511
- }
- position++
- if buffer[position] != rune('O') {
- goto l511
- }
- position++
- if buffer[position] != rune('C') {
- goto l511
- }
- position++
- if buffer[position] != rune('.') {
- goto l511
- }
- position++
- if buffer[position] != rune('-') {
- goto l511
- }
- position++
- {
- position513, tokenIndex513 := position, tokenIndex
- if buffer[position] != rune('0') {
- goto l514
- }
- position++
- if buffer[position] != rune('b') {
- goto l514
- }
- position++
- goto l513
- l514:
- position, tokenIndex = position513, tokenIndex513
- if buffer[position] != rune('.') {
- goto l511
- }
- position++
- if buffer[position] != rune('L') {
- goto l511
- }
- position++
- {
- position517, tokenIndex517 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l518
- }
- position++
- goto l517
- l518:
- position, tokenIndex = position517, tokenIndex517
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l519
- }
- position++
- goto l517
- l519:
- position, tokenIndex = position517, tokenIndex517
- if buffer[position] != rune('_') {
- goto l520
- }
- position++
- goto l517
- l520:
- position, tokenIndex = position517, tokenIndex517
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l511
- }
- position++
- }
- l517:
- l515:
- {
- position516, tokenIndex516 := position, tokenIndex
- {
- position521, tokenIndex521 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l522
- }
- position++
- goto l521
- l522:
- position, tokenIndex = position521, tokenIndex521
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l523
- }
- position++
- goto l521
- l523:
- position, tokenIndex = position521, tokenIndex521
- if buffer[position] != rune('_') {
- goto l524
- }
- position++
- goto l521
- l524:
- position, tokenIndex = position521, tokenIndex521
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l516
- }
- position++
- }
- l521:
- goto l515
- l516:
- position, tokenIndex = position516, tokenIndex516
- }
- }
- l513:
- if buffer[position] != rune('@') {
- goto l511
- }
- position++
- {
- position525, tokenIndex525 := position, tokenIndex
+ position514, tokenIndex514 := position, tokenIndex
if buffer[position] != rune('l') {
- goto l526
+ goto l515
}
position++
- goto l525
- l526:
- position, tokenIndex = position525, tokenIndex525
+ goto l514
+ l515:
+ position, tokenIndex = position514, tokenIndex514
if buffer[position] != rune('L') {
- goto l511
+ goto l500
}
position++
}
- l525:
- add(ruleTOCRefLow, position512)
+ l514:
+ add(ruleTOCRefLow, position501)
}
return true
- l511:
- position, tokenIndex = position511, tokenIndex511
+ l500:
+ position, tokenIndex = position500, tokenIndex500
return false
},
- /* 38 IndirectionIndicator <- <'*'> */
+ /* 40 IndirectionIndicator <- <'*'> */
func() bool {
- position527, tokenIndex527 := position, tokenIndex
+ position516, tokenIndex516 := position, tokenIndex
{
- position528 := position
+ position517 := position
if buffer[position] != rune('*') {
- goto l527
+ goto l516
}
position++
- add(ruleIndirectionIndicator, position528)
+ add(ruleIndirectionIndicator, position517)
}
return true
- l527:
- position, tokenIndex = position527, tokenIndex527
+ l516:
+ position, tokenIndex = position516, tokenIndex516
return false
},
- /* 39 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' / ':' / '(' / '+' / '-'))> */
+ /* 41 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' / ':' / '(' / '+' / '-'))> */
func() bool {
- position529, tokenIndex529 := position, tokenIndex
+ position518, tokenIndex518 := position, tokenIndex
{
- position530 := position
+ position519 := position
{
- position531, tokenIndex531 := position, tokenIndex
+ position520, tokenIndex520 := position, tokenIndex
if buffer[position] != rune('%') {
- goto l532
+ goto l521
}
position++
{
- position533, tokenIndex533 := position, tokenIndex
+ position522, tokenIndex522 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l534
+ goto l523
}
position++
- goto l533
- l534:
- position, tokenIndex = position533, tokenIndex533
+ goto l522
+ l523:
+ position, tokenIndex = position522, tokenIndex522
if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l521
+ }
+ position++
+ }
+ l522:
+ l524:
+ {
+ position525, tokenIndex525 := position, tokenIndex
+ {
+ position526, tokenIndex526 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l527
+ }
+ position++
+ goto l526
+ l527:
+ position, tokenIndex = position526, tokenIndex526
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l528
+ }
+ position++
+ goto l526
+ l528:
+ position, tokenIndex = position526, tokenIndex526
+ {
+ position529, tokenIndex529 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l530
+ }
+ position++
+ goto l529
+ l530:
+ position, tokenIndex = position529, tokenIndex529
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l525
+ }
+ position++
+ }
+ l529:
+ }
+ l526:
+ goto l524
+ l525:
+ position, tokenIndex = position525, tokenIndex525
+ }
+ goto l520
+ l521:
+ position, tokenIndex = position520, tokenIndex520
+ {
+ position532, tokenIndex532 := position, tokenIndex
+ if buffer[position] != rune('$') {
goto l532
}
position++
+ goto l533
+ l532:
+ position, tokenIndex = position532, tokenIndex532
}
l533:
- l535:
{
- position536, tokenIndex536 := position, tokenIndex
- {
- position537, tokenIndex537 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l538
- }
- position++
- goto l537
- l538:
- position, tokenIndex = position537, tokenIndex537
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l539
- }
- position++
- goto l537
- l539:
- position, tokenIndex = position537, tokenIndex537
- {
- position540, tokenIndex540 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l541
- }
- position++
- goto l540
- l541:
- position, tokenIndex = position540, tokenIndex540
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l536
- }
- position++
- }
- l540:
- }
- l537:
- goto l535
- l536:
- position, tokenIndex = position536, tokenIndex536
- }
- goto l531
- l532:
- position, tokenIndex = position531, tokenIndex531
- {
- position543, tokenIndex543 := position, tokenIndex
- if buffer[position] != rune('$') {
- goto l543
- }
- position++
- goto l544
- l543:
- position, tokenIndex = position543, tokenIndex543
- }
- l544:
- {
- position545, tokenIndex545 := position, tokenIndex
+ position534, tokenIndex534 := position, tokenIndex
if !_rules[ruleOffset]() {
- goto l546
+ goto l535
}
if !_rules[ruleOffset]() {
- goto l546
+ goto l535
}
- goto l545
- l546:
- position, tokenIndex = position545, tokenIndex545
+ goto l534
+ l535:
+ position, tokenIndex = position534, tokenIndex534
if !_rules[ruleOffset]() {
- goto l542
+ goto l531
}
}
- l545:
- goto l531
- l542:
- position, tokenIndex = position531, tokenIndex531
+ l534:
+ goto l520
+ l531:
+ position, tokenIndex = position520, tokenIndex520
if buffer[position] != rune('#') {
- goto l547
+ goto l536
}
position++
if !_rules[ruleOffset]() {
- goto l547
+ goto l536
}
{
- position548, tokenIndex548 := position, tokenIndex
+ position537, tokenIndex537 := position, tokenIndex
if buffer[position] != rune('*') {
- goto l548
+ goto l537
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l548
+ goto l537
}
position++
- l550:
+ l539:
{
- position551, tokenIndex551 := position, tokenIndex
+ position540, tokenIndex540 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l551
+ goto l540
}
position++
- goto l550
- l551:
- position, tokenIndex = position551, tokenIndex551
+ goto l539
+ l540:
+ position, tokenIndex = position540, tokenIndex540
}
{
- position552, tokenIndex552 := position, tokenIndex
+ position541, tokenIndex541 := position, tokenIndex
if buffer[position] != rune('-') {
- goto l552
+ goto l541
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l552
+ goto l541
}
position++
- l554:
+ l543:
{
- position555, tokenIndex555 := position, tokenIndex
+ position544, tokenIndex544 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l555
+ goto l544
}
position++
- goto l554
- l555:
- position, tokenIndex = position555, tokenIndex555
+ goto l543
+ l544:
+ position, tokenIndex = position544, tokenIndex544
}
- goto l553
- l552:
- position, tokenIndex = position552, tokenIndex552
+ goto l542
+ l541:
+ position, tokenIndex = position541, tokenIndex541
}
- l553:
+ l542:
+ goto l538
+ l537:
+ position, tokenIndex = position537, tokenIndex537
+ }
+ l538:
+ goto l520
+ l536:
+ position, tokenIndex = position520, tokenIndex520
+ if buffer[position] != rune('#') {
+ goto l545
+ }
+ position++
+ {
+ position546, tokenIndex546 := position, tokenIndex
+ if buffer[position] != rune('~') {
+ goto l546
+ }
+ position++
+ goto l547
+ l546:
+ position, tokenIndex = position546, tokenIndex546
+ }
+ l547:
+ if buffer[position] != rune('(') {
+ goto l545
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l545
+ }
+ position++
+ {
+ position548, tokenIndex548 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l548
+ }
goto l549
l548:
position, tokenIndex = position548, tokenIndex548
}
l549:
- goto l531
- l547:
- position, tokenIndex = position531, tokenIndex531
- if buffer[position] != rune('#') {
- goto l556
- }
- position++
- {
- position557, tokenIndex557 := position, tokenIndex
- if buffer[position] != rune('~') {
- goto l557
- }
- position++
- goto l558
- l557:
- position, tokenIndex = position557, tokenIndex557
- }
- l558:
- if buffer[position] != rune('(') {
- goto l556
- }
- position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l556
- }
- position++
- {
- position559, tokenIndex559 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l559
- }
- goto l560
- l559:
- position, tokenIndex = position559, tokenIndex559
- }
- l560:
if buffer[position] != rune('<') {
- goto l556
+ goto l545
}
position++
if buffer[position] != rune('<') {
- goto l556
+ goto l545
}
position++
{
- position561, tokenIndex561 := position, tokenIndex
+ position550, tokenIndex550 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l561
+ goto l550
}
- goto l562
- l561:
- position, tokenIndex = position561, tokenIndex561
+ goto l551
+ l550:
+ position, tokenIndex = position550, tokenIndex550
}
- l562:
+ l551:
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l556
+ goto l545
}
position++
if buffer[position] != rune(')') {
- goto l556
+ goto l545
}
position++
- goto l531
- l556:
- position, tokenIndex = position531, tokenIndex531
+ goto l520
+ l545:
+ position, tokenIndex = position520, tokenIndex520
if !_rules[ruleARMRegister]() {
- goto l529
+ goto l518
}
}
- l531:
+ l520:
{
- position563, tokenIndex563 := position, tokenIndex
+ position552, tokenIndex552 := position, tokenIndex
{
- position564, tokenIndex564 := position, tokenIndex
+ position553, tokenIndex553 := position, tokenIndex
if buffer[position] != rune('f') {
- goto l565
+ goto l554
}
position++
- goto l564
- l565:
- position, tokenIndex = position564, tokenIndex564
+ goto l553
+ l554:
+ position, tokenIndex = position553, tokenIndex553
if buffer[position] != rune('b') {
+ goto l555
+ }
+ position++
+ goto l553
+ l555:
+ position, tokenIndex = position553, tokenIndex553
+ if buffer[position] != rune(':') {
+ goto l556
+ }
+ position++
+ goto l553
+ l556:
+ position, tokenIndex = position553, tokenIndex553
+ if buffer[position] != rune('(') {
+ goto l557
+ }
+ position++
+ goto l553
+ l557:
+ position, tokenIndex = position553, tokenIndex553
+ if buffer[position] != rune('+') {
+ goto l558
+ }
+ position++
+ goto l553
+ l558:
+ position, tokenIndex = position553, tokenIndex553
+ if buffer[position] != rune('-') {
+ goto l552
+ }
+ position++
+ }
+ l553:
+ goto l518
+ l552:
+ position, tokenIndex = position552, tokenIndex552
+ }
+ add(ruleRegisterOrConstant, position519)
+ }
+ return true
+ l518:
+ position, tokenIndex = position518, tokenIndex518
+ return false
+ },
+ /* 42 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)?)> */
+ func() bool {
+ position559, tokenIndex559 := position, tokenIndex
+ {
+ position560 := position
+ {
+ position561, tokenIndex561 := position, tokenIndex
+ {
+ position563, tokenIndex563 := position, tokenIndex
+ if buffer[position] != rune('u') {
+ goto l564
+ }
+ position++
+ goto l563
+ l564:
+ position, tokenIndex = position563, tokenIndex563
+ if buffer[position] != rune('s') {
+ goto l562
+ }
+ position++
+ }
+ l563:
+ {
+ position565, tokenIndex565 := position, tokenIndex
+ if buffer[position] != rune('x') {
goto l566
}
position++
- goto l564
+ goto l565
l566:
- position, tokenIndex = position564, tokenIndex564
- if buffer[position] != rune(':') {
- goto l567
- }
- position++
- goto l564
- l567:
- position, tokenIndex = position564, tokenIndex564
- if buffer[position] != rune('(') {
- goto l568
- }
- position++
- goto l564
- l568:
- position, tokenIndex = position564, tokenIndex564
- if buffer[position] != rune('+') {
- goto l569
- }
- position++
- goto l564
- l569:
- position, tokenIndex = position564, tokenIndex564
- if buffer[position] != rune('-') {
- goto l563
+ position, tokenIndex = position565, tokenIndex565
+ if buffer[position] != rune('X') {
+ goto l562
}
position++
}
- l564:
- goto l529
- l563:
- position, tokenIndex = position563, tokenIndex563
- }
- add(ruleRegisterOrConstant, position530)
- }
- return true
- l529:
- position, tokenIndex = position529, tokenIndex529
- return false
- },
- /* 40 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)?)> */
- func() bool {
- position570, tokenIndex570 := position, tokenIndex
- {
- position571 := position
- {
- position572, tokenIndex572 := position, tokenIndex
+ l565:
+ {
+ position567, tokenIndex567 := position, tokenIndex
+ if buffer[position] != rune('t') {
+ goto l568
+ }
+ position++
+ goto l567
+ l568:
+ position, tokenIndex = position567, tokenIndex567
+ if buffer[position] != rune('T') {
+ goto l562
+ }
+ position++
+ }
+ l567:
+ {
+ position569, tokenIndex569 := position, tokenIndex
+ if buffer[position] != rune('x') {
+ goto l570
+ }
+ position++
+ goto l569
+ l570:
+ position, tokenIndex = position569, tokenIndex569
+ if buffer[position] != rune('w') {
+ goto l571
+ }
+ position++
+ goto l569
+ l571:
+ position, tokenIndex = position569, tokenIndex569
+ if buffer[position] != rune('h') {
+ goto l572
+ }
+ position++
+ goto l569
+ l572:
+ position, tokenIndex = position569, tokenIndex569
+ if buffer[position] != rune('b') {
+ goto l562
+ }
+ position++
+ }
+ l569:
+ goto l561
+ l562:
+ position, tokenIndex = position561, tokenIndex561
{
position574, tokenIndex574 := position, tokenIndex
- if buffer[position] != rune('u') {
+ if buffer[position] != rune('l') {
goto l575
}
position++
goto l574
l575:
position, tokenIndex = position574, tokenIndex574
- if buffer[position] != rune('s') {
+ if buffer[position] != rune('L') {
goto l573
}
position++
@@ -4618,14 +4659,14 @@
l574:
{
position576, tokenIndex576 := position, tokenIndex
- if buffer[position] != rune('x') {
+ if buffer[position] != rune('s') {
goto l577
}
position++
goto l576
l577:
position, tokenIndex = position576, tokenIndex576
- if buffer[position] != rune('X') {
+ if buffer[position] != rune('S') {
goto l573
}
position++
@@ -4633,1790 +4674,1713 @@
l576:
{
position578, tokenIndex578 := position, tokenIndex
- if buffer[position] != rune('t') {
+ if buffer[position] != rune('l') {
goto l579
}
position++
goto l578
l579:
position, tokenIndex = position578, tokenIndex578
- if buffer[position] != rune('T') {
+ if buffer[position] != rune('L') {
goto l573
}
position++
}
l578:
+ goto l561
+ l573:
+ position, tokenIndex = position561, tokenIndex561
{
- position580, tokenIndex580 := position, tokenIndex
- if buffer[position] != rune('x') {
- goto l581
- }
- position++
- goto l580
- l581:
- position, tokenIndex = position580, tokenIndex580
- if buffer[position] != rune('w') {
+ position581, tokenIndex581 := position, tokenIndex
+ if buffer[position] != rune('l') {
goto l582
}
position++
- goto l580
+ goto l581
l582:
- position, tokenIndex = position580, tokenIndex580
- if buffer[position] != rune('h') {
- goto l583
- }
- position++
- goto l580
- l583:
- position, tokenIndex = position580, tokenIndex580
- if buffer[position] != rune('b') {
- goto l573
+ position, tokenIndex = position581, tokenIndex581
+ if buffer[position] != rune('L') {
+ goto l580
}
position++
}
- l580:
- goto l572
- l573:
- position, tokenIndex = position572, tokenIndex572
+ l581:
+ {
+ position583, tokenIndex583 := position, tokenIndex
+ if buffer[position] != rune('s') {
+ goto l584
+ }
+ position++
+ goto l583
+ l584:
+ position, tokenIndex = position583, tokenIndex583
+ if buffer[position] != rune('S') {
+ goto l580
+ }
+ position++
+ }
+ l583:
{
position585, tokenIndex585 := position, tokenIndex
- if buffer[position] != rune('l') {
+ if buffer[position] != rune('r') {
goto l586
}
position++
goto l585
l586:
position, tokenIndex = position585, tokenIndex585
- if buffer[position] != rune('L') {
- goto l584
+ if buffer[position] != rune('R') {
+ goto l580
}
position++
}
l585:
+ goto l561
+ l580:
+ position, tokenIndex = position561, tokenIndex561
{
- position587, tokenIndex587 := position, tokenIndex
- if buffer[position] != rune('s') {
- goto l588
+ position588, tokenIndex588 := position, tokenIndex
+ if buffer[position] != rune('r') {
+ goto l589
}
position++
- goto l587
- l588:
- position, tokenIndex = position587, tokenIndex587
- if buffer[position] != rune('S') {
- goto l584
+ goto l588
+ l589:
+ position, tokenIndex = position588, tokenIndex588
+ if buffer[position] != rune('R') {
+ goto l587
}
position++
}
- l587:
+ l588:
{
- position589, tokenIndex589 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l590
+ position590, tokenIndex590 := position, tokenIndex
+ if buffer[position] != rune('o') {
+ goto l591
}
position++
- goto l589
- l590:
- position, tokenIndex = position589, tokenIndex589
- if buffer[position] != rune('L') {
- goto l584
+ goto l590
+ l591:
+ position, tokenIndex = position590, tokenIndex590
+ if buffer[position] != rune('O') {
+ goto l587
}
position++
}
- l589:
- goto l572
- l584:
- position, tokenIndex = position572, tokenIndex572
+ l590:
{
position592, tokenIndex592 := position, tokenIndex
- if buffer[position] != rune('l') {
+ if buffer[position] != rune('r') {
goto l593
}
position++
goto l592
l593:
position, tokenIndex = position592, tokenIndex592
- if buffer[position] != rune('L') {
- goto l591
+ if buffer[position] != rune('R') {
+ goto l587
}
position++
}
l592:
+ goto l561
+ l587:
+ position, tokenIndex = position561, tokenIndex561
{
position594, tokenIndex594 := position, tokenIndex
- if buffer[position] != rune('s') {
+ if buffer[position] != rune('a') {
goto l595
}
position++
goto l594
l595:
position, tokenIndex = position594, tokenIndex594
- if buffer[position] != rune('S') {
- goto l591
+ if buffer[position] != rune('A') {
+ goto l559
}
position++
}
l594:
{
position596, tokenIndex596 := position, tokenIndex
- if buffer[position] != rune('r') {
+ if buffer[position] != rune('s') {
goto l597
}
position++
goto l596
l597:
position, tokenIndex = position596, tokenIndex596
- if buffer[position] != rune('R') {
- goto l591
+ if buffer[position] != rune('S') {
+ goto l559
}
position++
}
l596:
- goto l572
- l591:
- position, tokenIndex = position572, tokenIndex572
{
- position599, tokenIndex599 := position, tokenIndex
+ position598, tokenIndex598 := position, tokenIndex
if buffer[position] != rune('r') {
- goto l600
+ goto l599
}
position++
- goto l599
- l600:
- position, tokenIndex = position599, tokenIndex599
+ goto l598
+ l599:
+ position, tokenIndex = position598, tokenIndex598
if buffer[position] != rune('R') {
- goto l598
+ goto l559
}
position++
}
- l599:
- {
- position601, tokenIndex601 := position, tokenIndex
- if buffer[position] != rune('o') {
- goto l602
- }
- position++
- goto l601
- l602:
- position, tokenIndex = position601, tokenIndex601
- if buffer[position] != rune('O') {
- goto l598
- }
- position++
- }
- l601:
- {
- position603, tokenIndex603 := position, tokenIndex
- if buffer[position] != rune('r') {
- goto l604
- }
- position++
- goto l603
- l604:
- position, tokenIndex = position603, tokenIndex603
- if buffer[position] != rune('R') {
- goto l598
- }
- position++
- }
- l603:
- goto l572
l598:
- position, tokenIndex = position572, tokenIndex572
- {
- position605, tokenIndex605 := position, tokenIndex
- if buffer[position] != rune('a') {
- goto l606
- }
- position++
- goto l605
- l606:
- position, tokenIndex = position605, tokenIndex605
- if buffer[position] != rune('A') {
- goto l570
- }
- position++
- }
- l605:
- {
- position607, tokenIndex607 := position, tokenIndex
- if buffer[position] != rune('s') {
- goto l608
- }
- position++
- goto l607
- l608:
- position, tokenIndex = position607, tokenIndex607
- if buffer[position] != rune('S') {
- goto l570
- }
- position++
- }
- l607:
- {
- position609, tokenIndex609 := position, tokenIndex
- if buffer[position] != rune('r') {
- goto l610
- }
- position++
- goto l609
- l610:
- position, tokenIndex = position609, tokenIndex609
- if buffer[position] != rune('R') {
- goto l570
- }
- position++
- }
- l609:
}
- l572:
+ l561:
{
- position611, tokenIndex611 := position, tokenIndex
+ position600, tokenIndex600 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l611
+ goto l600
}
if buffer[position] != rune('#') {
- goto l611
+ goto l600
}
position++
if !_rules[ruleOffset]() {
- goto l611
+ goto l600
}
- goto l612
- l611:
- position, tokenIndex = position611, tokenIndex611
+ goto l601
+ l600:
+ position, tokenIndex = position600, tokenIndex600
}
- l612:
- add(ruleARMConstantTweak, position571)
+ l601:
+ add(ruleARMConstantTweak, position560)
}
return true
- l570:
- position, tokenIndex = position570, tokenIndex570
+ l559:
+ position, tokenIndex = position559, tokenIndex559
return false
},
- /* 41 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 / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
+ /* 43 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 / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
func() bool {
- position613, tokenIndex613 := position, tokenIndex
+ position602, tokenIndex602 := position, tokenIndex
{
- position614 := position
+ position603 := position
{
- position615, tokenIndex615 := position, tokenIndex
+ position604, tokenIndex604 := position, tokenIndex
{
- position617, tokenIndex617 := position, tokenIndex
+ position606, tokenIndex606 := position, tokenIndex
if buffer[position] != rune('s') {
- goto l618
+ goto l607
}
position++
- goto l617
- l618:
- position, tokenIndex = position617, tokenIndex617
+ goto l606
+ l607:
+ position, tokenIndex = position606, tokenIndex606
if buffer[position] != rune('S') {
- goto l616
+ goto l605
}
position++
}
- l617:
+ l606:
{
- position619, tokenIndex619 := position, tokenIndex
+ position608, tokenIndex608 := position, tokenIndex
if buffer[position] != rune('p') {
- goto l620
+ goto l609
}
position++
- goto l619
- l620:
- position, tokenIndex = position619, tokenIndex619
+ goto l608
+ l609:
+ position, tokenIndex = position608, tokenIndex608
if buffer[position] != rune('P') {
+ goto l605
+ }
+ position++
+ }
+ l608:
+ goto l604
+ l605:
+ position, tokenIndex = position604, tokenIndex604
+ {
+ position611, tokenIndex611 := position, tokenIndex
+ if buffer[position] != rune('x') {
+ goto l612
+ }
+ position++
+ goto l611
+ l612:
+ position, tokenIndex = position611, tokenIndex611
+ if buffer[position] != rune('w') {
+ goto l613
+ }
+ position++
+ goto l611
+ l613:
+ position, tokenIndex = position611, tokenIndex611
+ if buffer[position] != rune('d') {
+ goto l614
+ }
+ position++
+ goto l611
+ l614:
+ position, tokenIndex = position611, tokenIndex611
+ if buffer[position] != rune('q') {
+ goto l615
+ }
+ position++
+ goto l611
+ l615:
+ position, tokenIndex = position611, tokenIndex611
+ if buffer[position] != rune('s') {
goto l616
}
position++
- }
- l619:
- goto l615
- l616:
- position, tokenIndex = position615, tokenIndex615
- {
- position622, tokenIndex622 := position, tokenIndex
- if buffer[position] != rune('x') {
- goto l623
- }
- position++
- goto l622
- l623:
- position, tokenIndex = position622, tokenIndex622
- if buffer[position] != rune('w') {
- goto l624
- }
- position++
- goto l622
- l624:
- position, tokenIndex = position622, tokenIndex622
- if buffer[position] != rune('d') {
- goto l625
- }
- position++
- goto l622
- l625:
- position, tokenIndex = position622, tokenIndex622
- if buffer[position] != rune('q') {
- goto l626
- }
- position++
- goto l622
- l626:
- position, tokenIndex = position622, tokenIndex622
- if buffer[position] != rune('s') {
- goto l627
- }
- position++
- goto l622
- l627:
- position, tokenIndex = position622, tokenIndex622
+ goto l611
+ l616:
+ position, tokenIndex = position611, tokenIndex611
if buffer[position] != rune('h') {
- goto l628
+ goto l617
}
position++
- goto l622
- l628:
- position, tokenIndex = position622, tokenIndex622
+ goto l611
+ l617:
+ position, tokenIndex = position611, tokenIndex611
if buffer[position] != rune('b') {
- goto l621
+ goto l610
}
position++
}
- l622:
+ l611:
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l621
+ goto l610
}
position++
{
- position629, tokenIndex629 := position, tokenIndex
+ position618, tokenIndex618 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l618
+ }
+ position++
+ goto l619
+ l618:
+ position, tokenIndex = position618, tokenIndex618
+ }
+ l619:
+ goto l604
+ l610:
+ position, tokenIndex = position604, tokenIndex604
+ {
+ position621, tokenIndex621 := position, tokenIndex
+ if buffer[position] != rune('x') {
+ goto l622
+ }
+ position++
+ goto l621
+ l622:
+ position, tokenIndex = position621, tokenIndex621
+ if buffer[position] != rune('X') {
+ goto l620
+ }
+ position++
+ }
+ l621:
+ {
+ position623, tokenIndex623 := position, tokenIndex
+ if buffer[position] != rune('z') {
+ goto l624
+ }
+ position++
+ goto l623
+ l624:
+ position, tokenIndex = position623, tokenIndex623
+ if buffer[position] != rune('Z') {
+ goto l620
+ }
+ position++
+ }
+ l623:
+ {
+ position625, tokenIndex625 := position, tokenIndex
+ if buffer[position] != rune('r') {
+ goto l626
+ }
+ position++
+ goto l625
+ l626:
+ position, tokenIndex = position625, tokenIndex625
+ if buffer[position] != rune('R') {
+ goto l620
+ }
+ position++
+ }
+ l625:
+ goto l604
+ l620:
+ position, tokenIndex = position604, tokenIndex604
+ {
+ position628, tokenIndex628 := position, tokenIndex
+ if buffer[position] != rune('w') {
goto l629
}
position++
- goto l630
+ goto l628
l629:
- position, tokenIndex = position629, tokenIndex629
+ position, tokenIndex = position628, tokenIndex628
+ if buffer[position] != rune('W') {
+ goto l627
+ }
+ position++
+ }
+ l628:
+ {
+ position630, tokenIndex630 := position, tokenIndex
+ if buffer[position] != rune('z') {
+ goto l631
+ }
+ position++
+ goto l630
+ l631:
+ position, tokenIndex = position630, tokenIndex630
+ if buffer[position] != rune('Z') {
+ goto l627
+ }
+ position++
}
l630:
- goto l615
- l621:
- position, tokenIndex = position615, tokenIndex615
{
position632, tokenIndex632 := position, tokenIndex
- if buffer[position] != rune('x') {
+ if buffer[position] != rune('r') {
goto l633
}
position++
goto l632
l633:
position, tokenIndex = position632, tokenIndex632
- if buffer[position] != rune('X') {
- goto l631
+ if buffer[position] != rune('R') {
+ goto l627
}
position++
}
l632:
+ goto l604
+ l627:
+ position, tokenIndex = position604, tokenIndex604
{
- position634, tokenIndex634 := position, tokenIndex
+ position635, tokenIndex635 := position, tokenIndex
+ if buffer[position] != rune('n') {
+ goto l636
+ }
+ position++
+ goto l635
+ l636:
+ position, tokenIndex = position635, tokenIndex635
+ if buffer[position] != rune('N') {
+ goto l634
+ }
+ position++
+ }
+ l635:
+ {
+ position637, tokenIndex637 := position, tokenIndex
if buffer[position] != rune('z') {
- goto l635
+ goto l638
}
position++
- goto l634
- l635:
- position, tokenIndex = position634, tokenIndex634
+ goto l637
+ l638:
+ position, tokenIndex = position637, tokenIndex637
if buffer[position] != rune('Z') {
- goto l631
+ goto l634
}
position++
}
- l634:
- {
- position636, tokenIndex636 := position, tokenIndex
- if buffer[position] != rune('r') {
- goto l637
- }
- position++
- goto l636
- l637:
- position, tokenIndex = position636, tokenIndex636
- if buffer[position] != rune('R') {
- goto l631
- }
- position++
- }
- l636:
- goto l615
- l631:
- position, tokenIndex = position615, tokenIndex615
+ l637:
{
position639, tokenIndex639 := position, tokenIndex
- if buffer[position] != rune('w') {
+ if buffer[position] != rune('c') {
goto l640
}
position++
goto l639
l640:
position, tokenIndex = position639, tokenIndex639
- if buffer[position] != rune('W') {
- goto l638
+ if buffer[position] != rune('C') {
+ goto l634
}
position++
}
l639:
{
position641, tokenIndex641 := position, tokenIndex
- if buffer[position] != rune('z') {
+ if buffer[position] != rune('v') {
goto l642
}
position++
goto l641
l642:
position, tokenIndex = position641, tokenIndex641
- if buffer[position] != rune('Z') {
- goto l638
+ if buffer[position] != rune('V') {
+ goto l634
}
position++
}
l641:
+ goto l604
+ l634:
+ position, tokenIndex = position604, tokenIndex604
+ if !_rules[ruleARMVectorRegister]() {
+ goto l643
+ }
+ goto l604
+ l643:
+ position, tokenIndex = position604, tokenIndex604
+ if buffer[position] != rune('{') {
+ goto l602
+ }
+ position++
{
- position643, tokenIndex643 := position, tokenIndex
- if buffer[position] != rune('r') {
+ position644, tokenIndex644 := position, tokenIndex
+ if !_rules[ruleWS]() {
goto l644
}
- position++
- goto l643
+ goto l645
l644:
- position, tokenIndex = position643, tokenIndex643
- if buffer[position] != rune('R') {
- goto l638
- }
- position++
+ position, tokenIndex = position644, tokenIndex644
}
- l643:
- goto l615
- l638:
- position, tokenIndex = position615, tokenIndex615
- {
- position646, tokenIndex646 := position, tokenIndex
- if buffer[position] != rune('n') {
- goto l647
- }
- position++
- goto l646
- l647:
- position, tokenIndex = position646, tokenIndex646
- if buffer[position] != rune('N') {
- goto l645
- }
- position++
+ l645:
+ if !_rules[ruleARMVectorRegister]() {
+ goto l602
}
l646:
{
- position648, tokenIndex648 := position, tokenIndex
- if buffer[position] != rune('z') {
- goto l649
- }
- position++
- goto l648
- l649:
- position, tokenIndex = position648, tokenIndex648
- if buffer[position] != rune('Z') {
- goto l645
- }
- position++
- }
- l648:
- {
- position650, tokenIndex650 := position, tokenIndex
- if buffer[position] != rune('c') {
- goto l651
- }
- position++
- goto l650
- l651:
- position, tokenIndex = position650, tokenIndex650
- if buffer[position] != rune('C') {
- goto l645
- }
- position++
- }
- l650:
- {
- position652, tokenIndex652 := position, tokenIndex
- if buffer[position] != rune('v') {
- goto l653
- }
- position++
- goto l652
- l653:
- position, tokenIndex = position652, tokenIndex652
- if buffer[position] != rune('V') {
- goto l645
- }
- position++
- }
- l652:
- goto l615
- l645:
- position, tokenIndex = position615, tokenIndex615
- if !_rules[ruleARMVectorRegister]() {
- goto l654
- }
- goto l615
- l654:
- position, tokenIndex = position615, tokenIndex615
- if buffer[position] != rune('{') {
- goto l613
- }
- position++
- {
- position655, tokenIndex655 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l655
- }
- goto l656
- l655:
- position, tokenIndex = position655, tokenIndex655
- }
- l656:
- if !_rules[ruleARMVectorRegister]() {
- goto l613
- }
- l657:
- {
- position658, tokenIndex658 := position, tokenIndex
+ position647, tokenIndex647 := position, tokenIndex
if buffer[position] != rune(',') {
- goto l658
+ goto l647
}
position++
{
- position659, tokenIndex659 := position, tokenIndex
+ position648, tokenIndex648 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l659
+ goto l648
}
- goto l660
- l659:
- position, tokenIndex = position659, tokenIndex659
+ goto l649
+ l648:
+ position, tokenIndex = position648, tokenIndex648
}
- l660:
+ l649:
if !_rules[ruleARMVectorRegister]() {
- goto l658
+ goto l647
}
- goto l657
- l658:
- position, tokenIndex = position658, tokenIndex658
+ goto l646
+ l647:
+ position, tokenIndex = position647, tokenIndex647
}
{
- position661, tokenIndex661 := position, tokenIndex
+ position650, tokenIndex650 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l661
+ goto l650
}
- goto l662
- l661:
- position, tokenIndex = position661, tokenIndex661
+ goto l651
+ l650:
+ position, tokenIndex = position650, tokenIndex650
}
- l662:
+ l651:
if buffer[position] != rune('}') {
- goto l613
+ goto l602
}
position++
{
- position663, tokenIndex663 := position, tokenIndex
+ position652, tokenIndex652 := position, tokenIndex
if buffer[position] != rune('[') {
- goto l663
+ goto l652
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l663
+ goto l652
}
position++
{
- position665, tokenIndex665 := position, tokenIndex
+ position654, tokenIndex654 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l665
+ goto l654
}
position++
- goto l666
- l665:
- position, tokenIndex = position665, tokenIndex665
+ goto l655
+ l654:
+ position, tokenIndex = position654, tokenIndex654
}
- l666:
+ l655:
if buffer[position] != rune(']') {
- goto l663
+ goto l652
+ }
+ position++
+ goto l653
+ l652:
+ position, tokenIndex = position652, tokenIndex652
+ }
+ l653:
+ }
+ l604:
+ add(ruleARMRegister, position603)
+ }
+ return true
+ l602:
+ position, tokenIndex = position602, tokenIndex602
+ return false
+ },
+ /* 44 ARMVectorRegister <- <(('v' / 'V') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */
+ func() bool {
+ position656, tokenIndex656 := position, tokenIndex
+ {
+ position657 := position
+ {
+ position658, tokenIndex658 := position, tokenIndex
+ if buffer[position] != rune('v') {
+ goto l659
+ }
+ position++
+ goto l658
+ l659:
+ position, tokenIndex = position658, tokenIndex658
+ if buffer[position] != rune('V') {
+ goto l656
+ }
+ position++
+ }
+ l658:
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l656
+ }
+ position++
+ {
+ position660, tokenIndex660 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l660
+ }
+ position++
+ goto l661
+ l660:
+ position, tokenIndex = position660, tokenIndex660
+ }
+ l661:
+ {
+ position662, tokenIndex662 := position, tokenIndex
+ if buffer[position] != rune('.') {
+ goto l662
+ }
+ position++
+ l664:
+ {
+ position665, tokenIndex665 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l665
}
position++
goto l664
- l663:
- position, tokenIndex = position663, tokenIndex663
- }
- l664:
- }
- l615:
- add(ruleARMRegister, position614)
- }
- return true
- l613:
- position, tokenIndex = position613, tokenIndex613
- return false
- },
- /* 42 ARMVectorRegister <- <(('v' / 'V') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */
- func() bool {
- position667, tokenIndex667 := position, tokenIndex
- {
- position668 := position
- {
- position669, tokenIndex669 := position, tokenIndex
- if buffer[position] != rune('v') {
- goto l670
- }
- position++
- goto l669
- l670:
- position, tokenIndex = position669, tokenIndex669
- if buffer[position] != rune('V') {
- goto l667
- }
- position++
- }
- l669:
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l667
- }
- position++
- {
- position671, tokenIndex671 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l671
- }
- position++
- goto l672
- l671:
- position, tokenIndex = position671, tokenIndex671
- }
- l672:
- {
- position673, tokenIndex673 := position, tokenIndex
- if buffer[position] != rune('.') {
- goto l673
- }
- position++
- l675:
- {
- position676, tokenIndex676 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l676
- }
- position++
- goto l675
- l676:
- position, tokenIndex = position676, tokenIndex676
+ l665:
+ position, tokenIndex = position665, tokenIndex665
}
{
- position677, tokenIndex677 := position, tokenIndex
+ position666, tokenIndex666 := position, tokenIndex
if buffer[position] != rune('b') {
- goto l678
+ goto l667
}
position++
- goto l677
- l678:
- position, tokenIndex = position677, tokenIndex677
+ goto l666
+ l667:
+ position, tokenIndex = position666, tokenIndex666
if buffer[position] != rune('s') {
- goto l679
+ goto l668
}
position++
- goto l677
- l679:
- position, tokenIndex = position677, tokenIndex677
+ goto l666
+ l668:
+ position, tokenIndex = position666, tokenIndex666
if buffer[position] != rune('d') {
- goto l680
+ goto l669
}
position++
- goto l677
- l680:
- position, tokenIndex = position677, tokenIndex677
+ goto l666
+ l669:
+ position, tokenIndex = position666, tokenIndex666
if buffer[position] != rune('h') {
- goto l681
+ goto l670
}
position++
- goto l677
- l681:
- position, tokenIndex = position677, tokenIndex677
+ goto l666
+ l670:
+ position, tokenIndex = position666, tokenIndex666
if buffer[position] != rune('q') {
- goto l673
+ goto l662
}
position++
}
- l677:
+ l666:
{
- position682, tokenIndex682 := position, tokenIndex
+ position671, tokenIndex671 := position, tokenIndex
if buffer[position] != rune('[') {
- goto l682
+ goto l671
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l682
+ goto l671
}
position++
{
- position684, tokenIndex684 := position, tokenIndex
+ position673, tokenIndex673 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l684
+ goto l673
}
position++
- goto l685
- l684:
- position, tokenIndex = position684, tokenIndex684
+ goto l674
+ l673:
+ position, tokenIndex = position673, tokenIndex673
}
- l685:
+ l674:
if buffer[position] != rune(']') {
- goto l682
+ goto l671
}
position++
- goto l683
- l682:
- position, tokenIndex = position682, tokenIndex682
+ goto l672
+ l671:
+ position, tokenIndex = position671, tokenIndex671
}
- l683:
- goto l674
- l673:
- position, tokenIndex = position673, tokenIndex673
+ l672:
+ goto l663
+ l662:
+ position, tokenIndex = position662, tokenIndex662
}
- l674:
- add(ruleARMVectorRegister, position668)
+ l663:
+ add(ruleARMVectorRegister, position657)
}
return true
- l667:
- position, tokenIndex = position667, tokenIndex667
+ l656:
+ position, tokenIndex = position656, tokenIndex656
return false
},
- /* 43 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
+ /* 45 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
func() bool {
- position686, tokenIndex686 := position, tokenIndex
+ position675, tokenIndex675 := position, tokenIndex
{
- position687 := position
+ position676 := position
{
- position688, tokenIndex688 := position, tokenIndex
+ position677, tokenIndex677 := position, tokenIndex
if !_rules[ruleSymbolRef]() {
- goto l689
+ goto l678
}
if !_rules[ruleBaseIndexScale]() {
- goto l689
+ goto l678
}
- goto l688
- l689:
- position, tokenIndex = position688, tokenIndex688
+ goto l677
+ l678:
+ position, tokenIndex = position677, tokenIndex677
if !_rules[ruleSymbolRef]() {
- goto l690
+ goto l679
}
- goto l688
- l690:
- position, tokenIndex = position688, tokenIndex688
+ goto l677
+ l679:
+ position, tokenIndex = position677, tokenIndex677
if !_rules[ruleLow12BitsSymbolRef]() {
- goto l691
+ goto l680
}
- goto l688
- l691:
- position, tokenIndex = position688, tokenIndex688
- l693:
+ goto l677
+ l680:
+ position, tokenIndex = position677, tokenIndex677
+ l682:
{
- position694, tokenIndex694 := position, tokenIndex
+ position683, tokenIndex683 := position, tokenIndex
if !_rules[ruleOffset]() {
- goto l694
+ goto l683
}
- goto l693
- l694:
- position, tokenIndex = position694, tokenIndex694
+ goto l682
+ l683:
+ position, tokenIndex = position683, tokenIndex683
}
if !_rules[ruleBaseIndexScale]() {
- goto l692
+ goto l681
}
- goto l688
- l692:
- position, tokenIndex = position688, tokenIndex688
+ goto l677
+ l681:
+ position, tokenIndex = position677, tokenIndex677
if !_rules[ruleSegmentRegister]() {
- goto l695
+ goto l684
}
if !_rules[ruleOffset]() {
- goto l695
+ goto l684
}
if !_rules[ruleBaseIndexScale]() {
- goto l695
+ goto l684
}
- goto l688
- l695:
- position, tokenIndex = position688, tokenIndex688
+ goto l677
+ l684:
+ position, tokenIndex = position677, tokenIndex677
if !_rules[ruleSegmentRegister]() {
- goto l696
+ goto l685
}
if !_rules[ruleBaseIndexScale]() {
- goto l696
+ goto l685
}
- goto l688
- l696:
- position, tokenIndex = position688, tokenIndex688
+ goto l677
+ l685:
+ position, tokenIndex = position677, tokenIndex677
if !_rules[ruleSegmentRegister]() {
- goto l697
- }
- if !_rules[ruleOffset]() {
- goto l697
- }
- goto l688
- l697:
- position, tokenIndex = position688, tokenIndex688
- if !_rules[ruleARMBaseIndexScale]() {
- goto l698
- }
- goto l688
- l698:
- position, tokenIndex = position688, tokenIndex688
- if !_rules[ruleBaseIndexScale]() {
goto l686
}
+ if !_rules[ruleOffset]() {
+ goto l686
+ }
+ goto l677
+ l686:
+ position, tokenIndex = position677, tokenIndex677
+ if !_rules[ruleARMBaseIndexScale]() {
+ goto l687
+ }
+ goto l677
+ l687:
+ position, tokenIndex = position677, tokenIndex677
+ if !_rules[ruleBaseIndexScale]() {
+ goto l675
+ }
}
- l688:
- add(ruleMemoryRef, position687)
+ l677:
+ add(ruleMemoryRef, position676)
}
return true
- l686:
- position, tokenIndex = position686, tokenIndex686
+ l675:
+ position, tokenIndex = position675, tokenIndex675
return false
},
- /* 44 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
+ /* 46 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
func() bool {
- position699, tokenIndex699 := position, tokenIndex
+ position688, tokenIndex688 := position, tokenIndex
{
- position700 := position
+ position689 := position
{
- position701, tokenIndex701 := position, tokenIndex
- l703:
+ position690, tokenIndex690 := position, tokenIndex
+ l692:
{
- position704, tokenIndex704 := position, tokenIndex
+ position693, tokenIndex693 := position, tokenIndex
if !_rules[ruleOffset]() {
- goto l704
+ goto l693
}
- goto l703
- l704:
- position, tokenIndex = position704, tokenIndex704
+ goto l692
+ l693:
+ position, tokenIndex = position693, tokenIndex693
}
if buffer[position] != rune('+') {
- goto l701
+ goto l690
}
position++
- goto l702
- l701:
- position, tokenIndex = position701, tokenIndex701
+ goto l691
+ l690:
+ position, tokenIndex = position690, tokenIndex690
}
- l702:
+ l691:
{
- position705, tokenIndex705 := position, tokenIndex
+ position694, tokenIndex694 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
- goto l706
+ goto l695
}
- goto l705
- l706:
- position, tokenIndex = position705, tokenIndex705
+ goto l694
+ l695:
+ position, tokenIndex = position694, tokenIndex694
if !_rules[ruleSymbolName]() {
- goto l699
+ goto l688
}
}
- l705:
- l707:
+ l694:
+ l696:
{
- position708, tokenIndex708 := position, tokenIndex
+ position697, tokenIndex697 := position, tokenIndex
if !_rules[ruleOffset]() {
- goto l708
+ goto l697
}
- goto l707
- l708:
- position, tokenIndex = position708, tokenIndex708
+ goto l696
+ l697:
+ position, tokenIndex = position697, tokenIndex697
}
{
- position709, tokenIndex709 := position, tokenIndex
+ position698, tokenIndex698 := position, tokenIndex
if buffer[position] != rune('@') {
- goto l709
+ goto l698
}
position++
if !_rules[ruleSection]() {
- goto l709
+ goto l698
}
- l711:
+ l700:
{
- position712, tokenIndex712 := position, tokenIndex
+ position701, tokenIndex701 := position, tokenIndex
if !_rules[ruleOffset]() {
- goto l712
+ goto l701
}
- goto l711
- l712:
- position, tokenIndex = position712, tokenIndex712
+ goto l700
+ l701:
+ position, tokenIndex = position701, tokenIndex701
}
- goto l710
- l709:
- position, tokenIndex = position709, tokenIndex709
+ goto l699
+ l698:
+ position, tokenIndex = position698, tokenIndex698
}
- l710:
- add(ruleSymbolRef, position700)
+ l699:
+ add(ruleSymbolRef, position689)
}
return true
- l699:
- position, tokenIndex = position699, tokenIndex699
+ l688:
+ position, tokenIndex = position688, tokenIndex688
return false
},
- /* 45 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
+ /* 47 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
func() bool {
- position713, tokenIndex713 := position, tokenIndex
+ position702, tokenIndex702 := position, tokenIndex
{
- position714 := position
+ position703 := position
if buffer[position] != rune(':') {
- goto l713
+ goto l702
}
position++
{
- position715, tokenIndex715 := position, tokenIndex
+ position704, tokenIndex704 := position, tokenIndex
if buffer[position] != rune('l') {
- goto l716
+ goto l705
}
position++
- goto l715
- l716:
- position, tokenIndex = position715, tokenIndex715
+ goto l704
+ l705:
+ position, tokenIndex = position704, tokenIndex704
if buffer[position] != rune('L') {
- goto l713
+ goto l702
}
position++
}
- l715:
+ l704:
{
- position717, tokenIndex717 := position, tokenIndex
+ position706, tokenIndex706 := position, tokenIndex
if buffer[position] != rune('o') {
- goto l718
+ goto l707
}
position++
- goto l717
- l718:
- position, tokenIndex = position717, tokenIndex717
+ goto l706
+ l707:
+ position, tokenIndex = position706, tokenIndex706
if buffer[position] != rune('O') {
- goto l713
+ goto l702
}
position++
}
- l717:
+ l706:
if buffer[position] != rune('1') {
- goto l713
+ goto l702
}
position++
if buffer[position] != rune('2') {
- goto l713
+ goto l702
}
position++
if buffer[position] != rune(':') {
- goto l713
+ goto l702
}
position++
{
- position719, tokenIndex719 := position, tokenIndex
+ position708, tokenIndex708 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
- goto l720
+ goto l709
}
- goto l719
- l720:
- position, tokenIndex = position719, tokenIndex719
+ goto l708
+ l709:
+ position, tokenIndex = position708, tokenIndex708
if !_rules[ruleSymbolName]() {
- goto l713
+ goto l702
}
}
- l719:
+ l708:
{
- position721, tokenIndex721 := position, tokenIndex
+ position710, tokenIndex710 := position, tokenIndex
if !_rules[ruleOffset]() {
- goto l721
+ goto l710
}
- goto l722
- l721:
- position, tokenIndex = position721, tokenIndex721
+ goto l711
+ l710:
+ position, tokenIndex = position710, tokenIndex710
}
- l722:
- add(ruleLow12BitsSymbolRef, position714)
+ l711:
+ add(ruleLow12BitsSymbolRef, position703)
}
return true
- l713:
- position, tokenIndex = position713, tokenIndex713
+ l702:
+ position, tokenIndex = position702, tokenIndex702
return false
},
- /* 46 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
+ /* 48 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
func() bool {
- position723, tokenIndex723 := position, tokenIndex
+ position712, tokenIndex712 := position, tokenIndex
{
- position724 := position
+ position713 := position
if buffer[position] != rune('[') {
- goto l723
+ goto l712
}
position++
if !_rules[ruleARMRegister]() {
- goto l723
+ goto l712
}
{
- position725, tokenIndex725 := position, tokenIndex
+ position714, tokenIndex714 := position, tokenIndex
if buffer[position] != rune(',') {
- goto l725
+ goto l714
}
position++
{
- position727, tokenIndex727 := position, tokenIndex
+ position716, tokenIndex716 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l727
+ goto l716
}
- goto l728
- l727:
- position, tokenIndex = position727, tokenIndex727
+ goto l717
+ l716:
+ position, tokenIndex = position716, tokenIndex716
}
- l728:
+ l717:
{
- position729, tokenIndex729 := position, tokenIndex
+ position718, tokenIndex718 := position, tokenIndex
if buffer[position] != rune('#') {
- goto l730
+ goto l719
}
position++
if !_rules[ruleOffset]() {
- goto l730
+ goto l719
}
{
- position731, tokenIndex731 := position, tokenIndex
+ position720, tokenIndex720 := position, tokenIndex
{
- position733, tokenIndex733 := position, tokenIndex
+ position722, tokenIndex722 := position, tokenIndex
if buffer[position] != rune('*') {
- goto l734
+ goto l723
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l734
+ goto l723
}
position++
- l735:
+ l724:
{
- position736, tokenIndex736 := position, tokenIndex
+ position725, tokenIndex725 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l736
+ goto l725
}
position++
- goto l735
- l736:
- position, tokenIndex = position736, tokenIndex736
+ goto l724
+ l725:
+ position, tokenIndex = position725, tokenIndex725
}
- goto l733
- l734:
- position, tokenIndex = position733, tokenIndex733
+ goto l722
+ l723:
+ position, tokenIndex = position722, tokenIndex722
if buffer[position] != rune('*') {
- goto l737
+ goto l726
}
position++
if buffer[position] != rune('(') {
- goto l737
+ goto l726
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l737
+ goto l726
}
position++
- l738:
+ l727:
{
- position739, tokenIndex739 := position, tokenIndex
+ position728, tokenIndex728 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l739
+ goto l728
}
position++
- goto l738
- l739:
- position, tokenIndex = position739, tokenIndex739
+ goto l727
+ l728:
+ position, tokenIndex = position728, tokenIndex728
}
if !_rules[ruleOperator]() {
- goto l737
+ goto l726
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l737
+ goto l726
}
position++
- l740:
+ l729:
{
- position741, tokenIndex741 := position, tokenIndex
+ position730, tokenIndex730 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l741
+ goto l730
}
position++
- goto l740
- l741:
- position, tokenIndex = position741, tokenIndex741
+ goto l729
+ l730:
+ position, tokenIndex = position730, tokenIndex730
}
if buffer[position] != rune(')') {
- goto l737
+ goto l726
}
position++
- goto l733
- l737:
- position, tokenIndex = position733, tokenIndex733
- l742:
+ goto l722
+ l726:
+ position, tokenIndex = position722, tokenIndex722
+ l731:
{
- position743, tokenIndex743 := position, tokenIndex
+ position732, tokenIndex732 := position, tokenIndex
if buffer[position] != rune('+') {
- goto l743
+ goto l732
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l743
+ goto l732
}
position++
- l744:
+ l733:
{
- position745, tokenIndex745 := position, tokenIndex
+ position734, tokenIndex734 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l745
+ goto l734
}
position++
- goto l744
- l745:
- position, tokenIndex = position745, tokenIndex745
+ goto l733
+ l734:
+ position, tokenIndex = position734, tokenIndex734
}
- goto l742
- l743:
- position, tokenIndex = position743, tokenIndex743
+ goto l731
+ l732:
+ position, tokenIndex = position732, tokenIndex732
}
}
- l733:
- goto l732
+ l722:
+ goto l721
- position, tokenIndex = position731, tokenIndex731
+ position, tokenIndex = position720, tokenIndex720
}
- l732:
- goto l729
- l730:
- position, tokenIndex = position729, tokenIndex729
+ l721:
+ goto l718
+ l719:
+ position, tokenIndex = position718, tokenIndex718
if !_rules[ruleARMGOTLow12]() {
- goto l746
+ goto l735
}
- goto l729
- l746:
- position, tokenIndex = position729, tokenIndex729
+ goto l718
+ l735:
+ position, tokenIndex = position718, tokenIndex718
if !_rules[ruleLow12BitsSymbolRef]() {
- goto l747
+ goto l736
}
- goto l729
- l747:
- position, tokenIndex = position729, tokenIndex729
+ goto l718
+ l736:
+ position, tokenIndex = position718, tokenIndex718
if !_rules[ruleARMRegister]() {
- goto l725
+ goto l714
}
}
- l729:
+ l718:
{
- position748, tokenIndex748 := position, tokenIndex
+ position737, tokenIndex737 := position, tokenIndex
if buffer[position] != rune(',') {
- goto l748
+ goto l737
}
position++
{
- position750, tokenIndex750 := position, tokenIndex
+ position739, tokenIndex739 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l750
+ goto l739
}
- goto l751
- l750:
- position, tokenIndex = position750, tokenIndex750
+ goto l740
+ l739:
+ position, tokenIndex = position739, tokenIndex739
}
- l751:
+ l740:
if !_rules[ruleARMConstantTweak]() {
- goto l748
+ goto l737
}
- goto l749
- l748:
- position, tokenIndex = position748, tokenIndex748
+ goto l738
+ l737:
+ position, tokenIndex = position737, tokenIndex737
}
- l749:
- goto l726
- l725:
- position, tokenIndex = position725, tokenIndex725
+ l738:
+ goto l715
+ l714:
+ position, tokenIndex = position714, tokenIndex714
}
- l726:
+ l715:
if buffer[position] != rune(']') {
- goto l723
+ goto l712
}
position++
{
- position752, tokenIndex752 := position, tokenIndex
+ position741, tokenIndex741 := position, tokenIndex
if !_rules[ruleARMPostincrement]() {
- goto l752
+ goto l741
}
- goto l753
- l752:
- position, tokenIndex = position752, tokenIndex752
+ goto l742
+ l741:
+ position, tokenIndex = position741, tokenIndex741
}
- l753:
- add(ruleARMBaseIndexScale, position724)
+ l742:
+ add(ruleARMBaseIndexScale, position713)
}
return true
- l723:
- position, tokenIndex = position723, tokenIndex723
+ l712:
+ position, tokenIndex = position712, tokenIndex712
return false
},
- /* 47 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
+ /* 49 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
func() bool {
- position754, tokenIndex754 := position, tokenIndex
+ position743, tokenIndex743 := position, tokenIndex
{
- position755 := position
+ position744 := position
if buffer[position] != rune(':') {
- goto l754
+ goto l743
}
position++
{
- position756, tokenIndex756 := position, tokenIndex
+ position745, tokenIndex745 := position, tokenIndex
if buffer[position] != rune('g') {
- goto l757
+ goto l746
}
position++
- goto l756
- l757:
- position, tokenIndex = position756, tokenIndex756
+ goto l745
+ l746:
+ position, tokenIndex = position745, tokenIndex745
if buffer[position] != rune('G') {
- goto l754
+ goto l743
}
position++
}
- l756:
+ l745:
{
- position758, tokenIndex758 := position, tokenIndex
+ position747, tokenIndex747 := position, tokenIndex
if buffer[position] != rune('o') {
- goto l759
+ goto l748
}
position++
- goto l758
- l759:
- position, tokenIndex = position758, tokenIndex758
+ goto l747
+ l748:
+ position, tokenIndex = position747, tokenIndex747
if buffer[position] != rune('O') {
- goto l754
+ goto l743
}
position++
}
- l758:
+ l747:
{
- position760, tokenIndex760 := position, tokenIndex
+ position749, tokenIndex749 := position, tokenIndex
if buffer[position] != rune('t') {
- goto l761
+ goto l750
}
position++
- goto l760
- l761:
- position, tokenIndex = position760, tokenIndex760
+ goto l749
+ l750:
+ position, tokenIndex = position749, tokenIndex749
if buffer[position] != rune('T') {
- goto l754
+ goto l743
}
position++
}
- l760:
+ l749:
if buffer[position] != rune('_') {
- goto l754
+ goto l743
}
position++
{
- position762, tokenIndex762 := position, tokenIndex
+ position751, tokenIndex751 := position, tokenIndex
if buffer[position] != rune('l') {
- goto l763
+ goto l752
}
position++
- goto l762
- l763:
- position, tokenIndex = position762, tokenIndex762
+ goto l751
+ l752:
+ position, tokenIndex = position751, tokenIndex751
if buffer[position] != rune('L') {
- goto l754
+ goto l743
}
position++
}
- l762:
+ l751:
{
- position764, tokenIndex764 := position, tokenIndex
+ position753, tokenIndex753 := position, tokenIndex
if buffer[position] != rune('o') {
- goto l765
- }
- position++
- goto l764
- l765:
- position, tokenIndex = position764, tokenIndex764
- if buffer[position] != rune('O') {
goto l754
}
position++
+ goto l753
+ l754:
+ position, tokenIndex = position753, tokenIndex753
+ if buffer[position] != rune('O') {
+ goto l743
+ }
+ position++
}
- l764:
+ l753:
if buffer[position] != rune('1') {
- goto l754
+ goto l743
}
position++
if buffer[position] != rune('2') {
- goto l754
+ goto l743
}
position++
if buffer[position] != rune(':') {
- goto l754
+ goto l743
}
position++
if !_rules[ruleSymbolName]() {
- goto l754
+ goto l743
}
- add(ruleARMGOTLow12, position755)
+ add(ruleARMGOTLow12, position744)
}
return true
- l754:
- position, tokenIndex = position754, tokenIndex754
+ l743:
+ position, tokenIndex = position743, tokenIndex743
return false
},
- /* 48 ARMPostincrement <- <'!'> */
+ /* 50 ARMPostincrement <- <'!'> */
func() bool {
- position766, tokenIndex766 := position, tokenIndex
+ position755, tokenIndex755 := position, tokenIndex
{
- position767 := position
+ position756 := position
if buffer[position] != rune('!') {
- goto l766
+ goto l755
}
position++
- add(ruleARMPostincrement, position767)
+ add(ruleARMPostincrement, position756)
}
return true
- l766:
- position, tokenIndex = position766, tokenIndex766
+ l755:
+ position, tokenIndex = position755, tokenIndex755
return false
},
- /* 49 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
+ /* 51 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
func() bool {
- position768, tokenIndex768 := position, tokenIndex
+ position757, tokenIndex757 := position, tokenIndex
{
- position769 := position
+ position758 := position
if buffer[position] != rune('(') {
- goto l768
+ goto l757
}
position++
{
- position770, tokenIndex770 := position, tokenIndex
+ position759, tokenIndex759 := position, tokenIndex
if !_rules[ruleRegisterOrConstant]() {
- goto l770
+ goto l759
}
- goto l771
- l770:
- position, tokenIndex = position770, tokenIndex770
+ goto l760
+ l759:
+ position, tokenIndex = position759, tokenIndex759
}
- l771:
+ l760:
{
- position772, tokenIndex772 := position, tokenIndex
+ position761, tokenIndex761 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l772
+ goto l761
}
- goto l773
- l772:
- position, tokenIndex = position772, tokenIndex772
+ goto l762
+ l761:
+ position, tokenIndex = position761, tokenIndex761
}
- l773:
+ l762:
{
- position774, tokenIndex774 := position, tokenIndex
+ position763, tokenIndex763 := position, tokenIndex
if buffer[position] != rune(',') {
- goto l774
+ goto l763
}
position++
{
- position776, tokenIndex776 := position, tokenIndex
+ position765, tokenIndex765 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l776
+ goto l765
}
- goto l777
- l776:
- position, tokenIndex = position776, tokenIndex776
+ goto l766
+ l765:
+ position, tokenIndex = position765, tokenIndex765
}
- l777:
+ l766:
if !_rules[ruleRegisterOrConstant]() {
- goto l774
+ goto l763
}
{
- position778, tokenIndex778 := position, tokenIndex
+ position767, tokenIndex767 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l778
+ goto l767
}
- goto l779
- l778:
- position, tokenIndex = position778, tokenIndex778
+ goto l768
+ l767:
+ position, tokenIndex = position767, tokenIndex767
}
- l779:
+ l768:
{
- position780, tokenIndex780 := position, tokenIndex
+ position769, tokenIndex769 := position, tokenIndex
if buffer[position] != rune(',') {
- goto l780
+ goto l769
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l780
+ goto l769
}
position++
- l782:
+ l771:
{
- position783, tokenIndex783 := position, tokenIndex
+ position772, tokenIndex772 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l783
+ goto l772
}
position++
- goto l782
- l783:
- position, tokenIndex = position783, tokenIndex783
+ goto l771
+ l772:
+ position, tokenIndex = position772, tokenIndex772
}
- goto l781
- l780:
- position, tokenIndex = position780, tokenIndex780
+ goto l770
+ l769:
+ position, tokenIndex = position769, tokenIndex769
}
- l781:
- goto l775
- l774:
- position, tokenIndex = position774, tokenIndex774
+ l770:
+ goto l764
+ l763:
+ position, tokenIndex = position763, tokenIndex763
}
- l775:
+ l764:
if buffer[position] != rune(')') {
- goto l768
+ goto l757
}
position++
- add(ruleBaseIndexScale, position769)
+ add(ruleBaseIndexScale, position758)
}
return true
- l768:
- position, tokenIndex = position768, tokenIndex768
+ l757:
+ position, tokenIndex = position757, tokenIndex757
return false
},
- /* 50 Operator <- <('+' / '-')> */
+ /* 52 Operator <- <('+' / '-')> */
func() bool {
- position784, tokenIndex784 := position, tokenIndex
+ position773, tokenIndex773 := position, tokenIndex
{
- position785 := position
+ position774 := position
{
- position786, tokenIndex786 := position, tokenIndex
+ position775, tokenIndex775 := position, tokenIndex
if buffer[position] != rune('+') {
- goto l787
+ goto l776
}
position++
- goto l786
- l787:
- position, tokenIndex = position786, tokenIndex786
+ goto l775
+ l776:
+ position, tokenIndex = position775, tokenIndex775
if buffer[position] != rune('-') {
+ goto l773
+ }
+ position++
+ }
+ l775:
+ add(ruleOperator, position774)
+ }
+ return true
+ l773:
+ position, tokenIndex = position773, tokenIndex773
+ return false
+ },
+ /* 53 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
+ func() bool {
+ position777, tokenIndex777 := position, tokenIndex
+ {
+ position778 := position
+ {
+ position779, tokenIndex779 := position, tokenIndex
+ if buffer[position] != rune('+') {
+ goto l779
+ }
+ position++
+ goto l780
+ l779:
+ position, tokenIndex = position779, tokenIndex779
+ }
+ l780:
+ {
+ position781, tokenIndex781 := position, tokenIndex
+ if buffer[position] != rune('-') {
+ goto l781
+ }
+ position++
+ goto l782
+ l781:
+ position, tokenIndex = position781, tokenIndex781
+ }
+ l782:
+ {
+ position783, tokenIndex783 := position, tokenIndex
+ if buffer[position] != rune('0') {
goto l784
}
position++
- }
- l786:
- add(ruleOperator, position785)
- }
- return true
- l784:
- position, tokenIndex = position784, tokenIndex784
- return false
- },
- /* 51 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
- func() bool {
- position788, tokenIndex788 := position, tokenIndex
- {
- position789 := position
- {
- position790, tokenIndex790 := position, tokenIndex
- if buffer[position] != rune('+') {
- goto l790
- }
- position++
- goto l791
- l790:
- position, tokenIndex = position790, tokenIndex790
- }
- l791:
- {
- position792, tokenIndex792 := position, tokenIndex
- if buffer[position] != rune('-') {
- goto l792
- }
- position++
- goto l793
- l792:
- position, tokenIndex = position792, tokenIndex792
- }
- l793:
- {
- position794, tokenIndex794 := position, tokenIndex
- if buffer[position] != rune('0') {
- goto l795
- }
- position++
{
- position796, tokenIndex796 := position, tokenIndex
+ position785, tokenIndex785 := position, tokenIndex
if buffer[position] != rune('b') {
- goto l797
+ goto l786
}
position++
- goto l796
- l797:
- position, tokenIndex = position796, tokenIndex796
+ goto l785
+ l786:
+ position, tokenIndex = position785, tokenIndex785
if buffer[position] != rune('B') {
- goto l795
+ goto l784
}
position++
}
- l796:
+ l785:
{
- position800, tokenIndex800 := position, tokenIndex
+ position789, tokenIndex789 := position, tokenIndex
if buffer[position] != rune('0') {
- goto l801
+ goto l790
}
position++
- goto l800
- l801:
- position, tokenIndex = position800, tokenIndex800
+ goto l789
+ l790:
+ position, tokenIndex = position789, tokenIndex789
if buffer[position] != rune('1') {
- goto l795
+ goto l784
}
position++
}
- l800:
- l798:
+ l789:
+ l787:
{
- position799, tokenIndex799 := position, tokenIndex
+ position788, tokenIndex788 := position, tokenIndex
{
- position802, tokenIndex802 := position, tokenIndex
+ position791, tokenIndex791 := position, tokenIndex
if buffer[position] != rune('0') {
- goto l803
+ goto l792
}
position++
- goto l802
- l803:
- position, tokenIndex = position802, tokenIndex802
+ goto l791
+ l792:
+ position, tokenIndex = position791, tokenIndex791
if buffer[position] != rune('1') {
- goto l799
+ goto l788
}
position++
}
- l802:
+ l791:
+ goto l787
+ l788:
+ position, tokenIndex = position788, tokenIndex788
+ }
+ goto l783
+ l784:
+ position, tokenIndex = position783, tokenIndex783
+ if buffer[position] != rune('0') {
+ goto l793
+ }
+ position++
+ {
+ position794, tokenIndex794 := position, tokenIndex
+ if buffer[position] != rune('x') {
+ goto l795
+ }
+ position++
+ goto l794
+ l795:
+ position, tokenIndex = position794, tokenIndex794
+ if buffer[position] != rune('X') {
+ goto l793
+ }
+ position++
+ }
+ l794:
+ {
+ position798, tokenIndex798 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l799
+ }
+ position++
goto l798
l799:
- position, tokenIndex = position799, tokenIndex799
- }
- goto l794
- l795:
- position, tokenIndex = position794, tokenIndex794
- if buffer[position] != rune('0') {
- goto l804
- }
- position++
- {
- position805, tokenIndex805 := position, tokenIndex
- if buffer[position] != rune('x') {
- goto l806
- }
- position++
- goto l805
- l806:
- position, tokenIndex = position805, tokenIndex805
- if buffer[position] != rune('X') {
- goto l804
- }
- position++
- }
- l805:
- {
- position809, tokenIndex809 := position, tokenIndex
+ position, tokenIndex = position798, tokenIndex798
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l810
+ goto l800
}
position++
- goto l809
- l810:
- position, tokenIndex = position809, tokenIndex809
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l811
- }
- position++
- goto l809
- l811:
- position, tokenIndex = position809, tokenIndex809
+ goto l798
+ l800:
+ position, tokenIndex = position798, tokenIndex798
{
- position812, tokenIndex812 := position, tokenIndex
+ position801, tokenIndex801 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
- goto l813
+ goto l802
}
position++
- goto l812
- l813:
- position, tokenIndex = position812, tokenIndex812
+ goto l801
+ l802:
+ position, tokenIndex = position801, tokenIndex801
if c := buffer[position]; c < rune('A') || c > rune('F') {
+ goto l793
+ }
+ position++
+ }
+ l801:
+ }
+ l798:
+ l796:
+ {
+ position797, tokenIndex797 := position, tokenIndex
+ {
+ position803, tokenIndex803 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l804
}
position++
- }
- l812:
- }
- l809:
- l807:
- {
- position808, tokenIndex808 := position, tokenIndex
- {
- position814, tokenIndex814 := position, tokenIndex
+ goto l803
+ l804:
+ position, tokenIndex = position803, tokenIndex803
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l815
+ goto l805
}
position++
- goto l814
- l815:
- position, tokenIndex = position814, tokenIndex814
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l816
- }
- position++
- goto l814
- l816:
- position, tokenIndex = position814, tokenIndex814
+ goto l803
+ l805:
+ position, tokenIndex = position803, tokenIndex803
{
- position817, tokenIndex817 := position, tokenIndex
+ position806, tokenIndex806 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
- goto l818
+ goto l807
}
position++
- goto l817
- l818:
- position, tokenIndex = position817, tokenIndex817
+ goto l806
+ l807:
+ position, tokenIndex = position806, tokenIndex806
if c := buffer[position]; c < rune('A') || c > rune('F') {
- goto l808
+ goto l797
}
position++
}
- l817:
+ l806:
}
- l814:
- goto l807
- l808:
- position, tokenIndex = position808, tokenIndex808
+ l803:
+ goto l796
+ l797:
+ position, tokenIndex = position797, tokenIndex797
}
- goto l794
- l804:
- position, tokenIndex = position794, tokenIndex794
+ goto l783
+ l793:
+ position, tokenIndex = position783, tokenIndex783
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l788
+ goto l777
}
position++
- l819:
+ l808:
{
- position820, tokenIndex820 := position, tokenIndex
+ position809, tokenIndex809 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l820
+ goto l809
}
position++
- goto l819
- l820:
- position, tokenIndex = position820, tokenIndex820
+ goto l808
+ l809:
+ position, tokenIndex = position809, tokenIndex809
}
}
- l794:
- add(ruleOffset, position789)
+ l783:
+ add(ruleOffset, position778)
}
return true
- l788:
- position, tokenIndex = position788, tokenIndex788
+ l777:
+ position, tokenIndex = position777, tokenIndex777
return false
},
- /* 52 Section <- <([a-z] / [A-Z] / '@')+> */
+ /* 54 Section <- <([a-z] / [A-Z] / '@')+> */
func() bool {
- position821, tokenIndex821 := position, tokenIndex
+ position810, tokenIndex810 := position, tokenIndex
{
- position822 := position
+ position811 := position
{
- position825, tokenIndex825 := position, tokenIndex
+ position814, tokenIndex814 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l826
+ goto l815
}
position++
- goto l825
- l826:
- position, tokenIndex = position825, tokenIndex825
+ goto l814
+ l815:
+ position, tokenIndex = position814, tokenIndex814
if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l827
+ goto l816
}
position++
- goto l825
- l827:
- position, tokenIndex = position825, tokenIndex825
+ goto l814
+ l816:
+ position, tokenIndex = position814, tokenIndex814
if buffer[position] != rune('@') {
- goto l821
+ goto l810
}
position++
}
- l825:
- l823:
+ l814:
+ l812:
{
- position824, tokenIndex824 := position, tokenIndex
+ position813, tokenIndex813 := position, tokenIndex
{
- position828, tokenIndex828 := position, tokenIndex
+ position817, tokenIndex817 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l829
+ goto l818
}
position++
- goto l828
- l829:
- position, tokenIndex = position828, tokenIndex828
+ goto l817
+ l818:
+ position, tokenIndex = position817, tokenIndex817
if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l830
+ goto l819
}
position++
- goto l828
- l830:
- position, tokenIndex = position828, tokenIndex828
+ goto l817
+ l819:
+ position, tokenIndex = position817, tokenIndex817
if buffer[position] != rune('@') {
- goto l824
+ goto l813
}
position++
}
- l828:
- goto l823
- l824:
- position, tokenIndex = position824, tokenIndex824
+ l817:
+ goto l812
+ l813:
+ position, tokenIndex = position813, tokenIndex813
}
- add(ruleSection, position822)
+ add(ruleSection, position811)
}
return true
- l821:
- position, tokenIndex = position821, tokenIndex821
+ l810:
+ position, tokenIndex = position810, tokenIndex810
return false
},
- /* 53 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
+ /* 55 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
func() bool {
- position831, tokenIndex831 := position, tokenIndex
+ position820, tokenIndex820 := position, tokenIndex
{
- position832 := position
+ position821 := position
if buffer[position] != rune('%') {
- goto l831
+ goto l820
}
position++
{
- position833, tokenIndex833 := position, tokenIndex
+ position822, tokenIndex822 := position, tokenIndex
if c := buffer[position]; c < rune('c') || c > rune('g') {
- goto l834
+ goto l823
}
position++
- goto l833
- l834:
- position, tokenIndex = position833, tokenIndex833
+ goto l822
+ l823:
+ position, tokenIndex = position822, tokenIndex822
if buffer[position] != rune('s') {
- goto l831
+ goto l820
}
position++
}
- l833:
+ l822:
if buffer[position] != rune('s') {
- goto l831
+ goto l820
}
position++
if buffer[position] != rune(':') {
- goto l831
+ goto l820
}
position++
- add(ruleSegmentRegister, position832)
+ add(ruleSegmentRegister, position821)
}
return true
- l831:
- position, tokenIndex = position831, tokenIndex831
+ l820:
+ position, tokenIndex = position820, tokenIndex820
return false
},
}
diff --git a/util/fipstools/delocate/testdata/aarch64-Basic/out.s b/util/fipstools/delocate/testdata/aarch64-Basic/out.s
index 0b9828f..852312b 100644
--- a/util/fipstools/delocate/testdata/aarch64-Basic/out.s
+++ b/util/fipstools/delocate/testdata/aarch64-Basic/out.s
@@ -145,6 +145,7 @@
.type bcm_redirector_remote_function, @function
bcm_redirector_remote_function:
.cfi_startproc
+ hint #34 // bti c
b remote_function
.cfi_endproc
.size bcm_redirector_remote_function, .-bcm_redirector_remote_function
@@ -153,6 +154,7 @@
.type bcm_redirector_y0, @function
bcm_redirector_y0:
.cfi_startproc
+ hint #34 // bti c
b y0
.cfi_endproc
.size bcm_redirector_y0, .-bcm_redirector_y0
@@ -161,6 +163,7 @@
.type bcm_redirector_y12, @function
bcm_redirector_y12:
.cfi_startproc
+ hint #34 // bti c
b y12
.cfi_endproc
.size bcm_redirector_y12, .-bcm_redirector_y12
@@ -169,6 +172,7 @@
.type bss_symbol_bss_get, @function
bss_symbol_bss_get:
.cfi_startproc
+ hint #34 // bti c
adrp x0, .Lbss_symbol_local_target
add x0, x0, :lo12:.Lbss_symbol_local_target
ret
@@ -179,6 +183,7 @@
.type .Lboringssl_loadgot_stderr, @function
.Lboringssl_loadgot_stderr:
.cfi_startproc
+ hint #34 // bti c
adrp x0, :got:stderr
ldr x0, [x0, :got_lo12:stderr]
ret
@@ -189,6 +194,7 @@
.type .LOPENSSL_armcap_P_addr, @function
.LOPENSSL_armcap_P_addr:
.cfi_startproc
+ hint #34 // bti c
adrp x0, OPENSSL_armcap_P
add x0, x0, :lo12:OPENSSL_armcap_P
ret
diff --git a/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s b/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s
index 6549db7..03580d1 100644
--- a/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s
+++ b/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s
@@ -93,7 +93,7 @@
# assumption that it's too small to hold a pointer. But Clang
# will store offsets in it.
# WAS .byte (.LBB231_40-.LBB231_19)>>2, 4, .Lfoo, (.Lfoo), .Lfoo<<400, ( .Lfoo ) << 66
- .byte (.LBB231_40_BCM_1-.LBB231_19_BCM_1)>>2, 4, .Lfoo_BCM_1, (.Lfoo_BCM_1), .Lfoo_BCM_1<<400, ( .Lfoo_BCM_1 ) << 66
+ .byte (.LBB231_40_BCM_1-.LBB231_19_BCM_1)>>2, 4, .Lfoo_BCM_1, (.Lfoo_BCM_1), .Lfoo_BCM_1<<400, (.Lfoo_BCM_1)<<66
.byte 421
.text
.loc 1 2 0