Handle notrack instructions in delocate output
GCC on newer Ubuntu seems to enable this by default now, which is
breaking our CI. I haven't yet tested if delocate's output passes CET,
but at least we shouldn't mangle the output.
Change-Id: Idf035193dba24294b4c59b991e375d74a4f3ab87
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/69148
Reviewed-by: Bob Beck <bbe@google.com>
diff --git a/util/fipstools/delocate/delocate.go b/util/fipstools/delocate/delocate.go
index 063d6ac..884344d 100644
--- a/util/fipstools/delocate/delocate.go
+++ b/util/fipstools/delocate/delocate.go
@@ -923,6 +923,12 @@
}
func (d *delocation) processIntelInstruction(statement, instruction *node32) (*node32, error) {
+ var prefix string
+ if instruction.pegRule == ruleInstructionPrefix {
+ prefix = d.contents(instruction)
+ instruction = skipWS(instruction.next)
+ }
+
assertNodeType(instruction, ruleInstructionName)
instructionName := d.contents(instruction)
@@ -1240,6 +1246,9 @@
if changed {
d.writeCommentedNode(statement)
replacement := "\t" + instructionName + "\t" + strings.Join(args, ", ") + "\n"
+ if len(prefix) != 0 {
+ replacement = "\t" + prefix + replacement
+ }
wrappers.do(func() {
d.output.WriteString(replacement)
})
diff --git a/util/fipstools/delocate/delocate.peg b/util/fipstools/delocate/delocate.peg
index 3ce01ed..ff23a80 100644
--- a/util/fipstools/delocate/delocate.peg
+++ b/util/fipstools/delocate/delocate.peg
@@ -66,7 +66,8 @@
LocalSymbol <- '.L' [[A-Za-z.0-9$_]]+
LocalLabel <- [0-9][0-9$]*
LocalLabelRef <- [0-9][0-9$]*[bf]
-Instruction <- InstructionName (WS InstructionArg ((WS? ',' WS?) InstructionArg)*)?
+InstructionPrefix <- "notrack"
+Instruction <- (InstructionPrefix WS)? InstructionName (WS InstructionArg ((WS? ',' WS?) InstructionArg)*)?
InstructionName <- [[A-Z]][[A-Z.0-9]]* [.+\-]?
InstructionArg <- IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTAddress / GOTSymbolOffset / MemoryRef) AVX512Token*
GOTLocation <- '$_GLOBAL_OFFSET_TABLE_-' LocalSymbol
diff --git a/util/fipstools/delocate/delocate.peg.go b/util/fipstools/delocate/delocate.peg.go
index 856518d..aa93136 100644
--- a/util/fipstools/delocate/delocate.peg.go
+++ b/util/fipstools/delocate/delocate.peg.go
@@ -1,6 +1,6 @@
package main
-// Code generated by ./peg/peg delocate.peg DO NOT EDIT.
+// Code generated by peg delocate.peg DO NOT EDIT.
import (
"fmt"
@@ -50,6 +50,7 @@
ruleLocalSymbol
ruleLocalLabel
ruleLocalLabelRef
+ ruleInstructionPrefix
ruleInstruction
ruleInstructionName
ruleInstructionArg
@@ -113,6 +114,7 @@
"LocalSymbol",
"LocalLabel",
"LocalLabelRef",
+ "InstructionPrefix",
"Instruction",
"InstructionName",
"InstructionArg",
@@ -254,7 +256,7 @@
type Asm struct {
Buffer string
buffer []rune
- rules [60]func() bool
+ rules [61]func() bool
parse func(rule ...int) error
reset func()
Pretty bool
@@ -3512,824 +3514,796 @@
position, tokenIndex = position420, tokenIndex420
return false
},
- /* 32 Instruction <- <(InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
+ /* 32 InstructionPrefix <- <(('n' / 'N') ('o' / 'O') ('t' / 'T') ('r' / 'R') ('a' / 'A') ('c' / 'C') ('k' / 'K'))> */
func() bool {
position428, tokenIndex428 := position, tokenIndex
{
position429 := position
- if !_rules[ruleInstructionName]() {
- goto l428
- }
{
position430, tokenIndex430 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l430
+ if buffer[position] != rune('n') {
+ goto l431
}
- if !_rules[ruleInstructionArg]() {
- goto l430
- }
- l432:
- {
- 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
- }
- position++
- {
- position436, tokenIndex436 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l436
- }
- goto l437
- l436:
- position, tokenIndex = position436, tokenIndex436
- }
- l437:
- if !_rules[ruleInstructionArg]() {
- goto l433
- }
- goto l432
- l433:
- position, tokenIndex = position433, tokenIndex433
- }
- goto l431
- l430:
+ position++
+ goto l430
+ l431:
position, tokenIndex = position430, tokenIndex430
+ if buffer[position] != rune('N') {
+ goto l428
+ }
+ position++
}
- l431:
- add(ruleInstruction, position429)
- }
- return true
- l428:
- position, tokenIndex = position428, tokenIndex428
- return false
- },
- /* 33 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
- func() bool {
- position438, tokenIndex438 := position, tokenIndex
- {
- position439 := position
+ l430:
+ {
+ position432, tokenIndex432 := position, tokenIndex
+ if buffer[position] != rune('o') {
+ goto l433
+ }
+ position++
+ goto l432
+ l433:
+ position, tokenIndex = position432, tokenIndex432
+ if buffer[position] != rune('O') {
+ goto l428
+ }
+ position++
+ }
+ l432:
+ {
+ position434, tokenIndex434 := position, tokenIndex
+ if buffer[position] != rune('t') {
+ goto l435
+ }
+ position++
+ goto l434
+ l435:
+ position, tokenIndex = position434, tokenIndex434
+ if buffer[position] != rune('T') {
+ goto l428
+ }
+ position++
+ }
+ l434:
+ {
+ position436, tokenIndex436 := position, tokenIndex
+ if buffer[position] != rune('r') {
+ goto l437
+ }
+ position++
+ goto l436
+ l437:
+ position, tokenIndex = position436, tokenIndex436
+ if buffer[position] != rune('R') {
+ goto l428
+ }
+ position++
+ }
+ l436:
+ {
+ position438, tokenIndex438 := position, tokenIndex
+ if buffer[position] != rune('a') {
+ goto l439
+ }
+ position++
+ goto l438
+ l439:
+ position, tokenIndex = position438, tokenIndex438
+ if buffer[position] != rune('A') {
+ goto l428
+ }
+ position++
+ }
+ l438:
{
position440, tokenIndex440 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
+ if buffer[position] != rune('c') {
goto l441
}
position++
goto l440
l441:
position, tokenIndex = position440, tokenIndex440
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l438
+ if buffer[position] != rune('C') {
+ goto l428
}
position++
}
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:
+ position442, tokenIndex442 := position, tokenIndex
+ if buffer[position] != rune('k') {
+ goto l443
}
- l444:
+ position++
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++
+ position, tokenIndex = position442, tokenIndex442
+ if buffer[position] != rune('K') {
+ goto l428
}
- l452:
- goto l451
- l450:
- position, tokenIndex = position450, tokenIndex450
+ position++
}
- l451:
- add(ruleInstructionName, position439)
+ l442:
+ add(ruleInstructionPrefix, position429)
}
return true
- l438:
- position, tokenIndex = position438, tokenIndex438
+ l428:
+ position, tokenIndex = position428, tokenIndex428
return false
},
- /* 34 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTAddress / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
+ /* 33 Instruction <- <((InstructionPrefix WS)? InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
func() bool {
- position455, tokenIndex455 := position, tokenIndex
+ position444, tokenIndex444 := position, tokenIndex
{
- position456 := position
+ position445 := position
{
- position457, tokenIndex457 := position, tokenIndex
- if !_rules[ruleIndirectionIndicator]() {
- goto l457
+ position446, tokenIndex446 := position, tokenIndex
+ if !_rules[ruleInstructionPrefix]() {
+ goto l446
}
+ if !_rules[ruleWS]() {
+ goto l446
+ }
+ goto l447
+ l446:
+ position, tokenIndex = position446, tokenIndex446
+ }
+ l447:
+ if !_rules[ruleInstructionName]() {
+ goto l444
+ }
+ {
+ position448, tokenIndex448 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l448
+ }
+ if !_rules[ruleInstructionArg]() {
+ goto l448
+ }
+ l450:
+ {
+ position451, tokenIndex451 := position, tokenIndex
+ {
+ position452, tokenIndex452 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l452
+ }
+ goto l453
+ l452:
+ position, tokenIndex = position452, tokenIndex452
+ }
+ l453:
+ if buffer[position] != rune(',') {
+ goto l451
+ }
+ position++
+ {
+ position454, tokenIndex454 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l454
+ }
+ goto l455
+ l454:
+ position, tokenIndex = position454, tokenIndex454
+ }
+ l455:
+ if !_rules[ruleInstructionArg]() {
+ goto l451
+ }
+ goto l450
+ l451:
+ position, tokenIndex = position451, tokenIndex451
+ }
+ goto l449
+ l448:
+ position, tokenIndex = position448, tokenIndex448
+ }
+ l449:
+ add(ruleInstruction, position445)
+ }
+ return true
+ l444:
+ position, tokenIndex = position444, tokenIndex444
+ return false
+ },
+ /* 34 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
+ func() bool {
+ position456, tokenIndex456 := position, tokenIndex
+ {
+ position457 := position
+ {
+ position458, tokenIndex458 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l459
+ }
+ position++
goto l458
- l457:
- position, tokenIndex = position457, tokenIndex457
+ l459:
+ position, tokenIndex = position458, tokenIndex458
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l456
+ }
+ position++
}
l458:
+ l460:
{
- 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]() {
+ position461, tokenIndex461 := position, tokenIndex
+ {
+ position462, tokenIndex462 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l463
+ }
+ position++
goto l462
+ l463:
+ position, tokenIndex = position462, tokenIndex462
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l464
+ }
+ position++
+ goto l462
+ l464:
+ position, tokenIndex = position462, tokenIndex462
+ if buffer[position] != rune('.') {
+ goto l465
+ }
+ position++
+ goto l462
+ l465:
+ position, tokenIndex = position462, tokenIndex462
+ {
+ position466, tokenIndex466 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l467
+ }
+ position++
+ goto l466
+ l467:
+ position, tokenIndex = position466, tokenIndex466
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l461
+ }
+ position++
+ }
+ l466:
}
- 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[ruleGOTAddress]() {
- goto l466
- }
- goto l459
- l466:
- position, tokenIndex = position459, tokenIndex459
- if !_rules[ruleGOTSymbolOffset]() {
- goto l467
- }
- goto l459
- l467:
- position, tokenIndex = position459, tokenIndex459
- if !_rules[ruleMemoryRef]() {
- goto l455
- }
+ goto l460
+ l461:
+ position, tokenIndex = position461, tokenIndex461
}
- l459:
- l468:
{
- position469, tokenIndex469 := position, tokenIndex
- if !_rules[ruleAVX512Token]() {
- goto l469
+ position468, tokenIndex468 := position, tokenIndex
+ {
+ position470, tokenIndex470 := position, tokenIndex
+ if buffer[position] != rune('.') {
+ goto l471
+ }
+ position++
+ goto l470
+ l471:
+ position, tokenIndex = position470, tokenIndex470
+ if buffer[position] != rune('+') {
+ goto l472
+ }
+ position++
+ goto l470
+ l472:
+ position, tokenIndex = position470, tokenIndex470
+ if buffer[position] != rune('-') {
+ goto l468
+ }
+ position++
}
- goto l468
- l469:
- position, tokenIndex = position469, tokenIndex469
+ l470:
+ goto l469
+ l468:
+ position, tokenIndex = position468, tokenIndex468
}
- add(ruleInstructionArg, position456)
+ l469:
+ add(ruleInstructionName, position457)
}
return true
- l455:
- position, tokenIndex = position455, tokenIndex455
+ l456:
+ position, tokenIndex = position456, tokenIndex456
return false
},
- /* 35 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
+ /* 35 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTAddress / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
func() bool {
- position470, tokenIndex470 := position, tokenIndex
+ position473, tokenIndex473 := position, tokenIndex
{
- position471 := position
+ position474 := position
+ {
+ position475, tokenIndex475 := position, tokenIndex
+ if !_rules[ruleIndirectionIndicator]() {
+ goto l475
+ }
+ goto l476
+ l475:
+ position, tokenIndex = position475, tokenIndex475
+ }
+ l476:
+ {
+ position477, tokenIndex477 := position, tokenIndex
+ if !_rules[ruleARMConstantTweak]() {
+ goto l478
+ }
+ goto l477
+ l478:
+ position, tokenIndex = position477, tokenIndex477
+ if !_rules[ruleRegisterOrConstant]() {
+ goto l479
+ }
+ goto l477
+ l479:
+ position, tokenIndex = position477, tokenIndex477
+ if !_rules[ruleLocalLabelRef]() {
+ goto l480
+ }
+ goto l477
+ l480:
+ position, tokenIndex = position477, tokenIndex477
+ if !_rules[ruleTOCRefHigh]() {
+ goto l481
+ }
+ goto l477
+ l481:
+ position, tokenIndex = position477, tokenIndex477
+ if !_rules[ruleTOCRefLow]() {
+ goto l482
+ }
+ goto l477
+ l482:
+ position, tokenIndex = position477, tokenIndex477
+ if !_rules[ruleGOTLocation]() {
+ goto l483
+ }
+ goto l477
+ l483:
+ position, tokenIndex = position477, tokenIndex477
+ if !_rules[ruleGOTAddress]() {
+ goto l484
+ }
+ goto l477
+ l484:
+ position, tokenIndex = position477, tokenIndex477
+ if !_rules[ruleGOTSymbolOffset]() {
+ goto l485
+ }
+ goto l477
+ l485:
+ position, tokenIndex = position477, tokenIndex477
+ if !_rules[ruleMemoryRef]() {
+ goto l473
+ }
+ }
+ l477:
+ l486:
+ {
+ position487, tokenIndex487 := position, tokenIndex
+ if !_rules[ruleAVX512Token]() {
+ goto l487
+ }
+ goto l486
+ l487:
+ position, tokenIndex = position487, tokenIndex487
+ }
+ add(ruleInstructionArg, position474)
+ }
+ return true
+ l473:
+ position, tokenIndex = position473, tokenIndex473
+ return false
+ },
+ /* 36 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
+ func() bool {
+ position488, tokenIndex488 := position, tokenIndex
+ {
+ position489 := position
if buffer[position] != rune('$') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('_') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('G') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('L') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('O') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('B') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('A') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('L') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('_') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('O') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('F') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('F') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('S') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('E') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('T') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('_') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('T') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('A') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('B') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('L') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('E') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('_') {
- goto l470
+ goto l488
}
position++
if buffer[position] != rune('-') {
- goto l470
+ goto l488
}
position++
if !_rules[ruleLocalSymbol]() {
- goto l470
+ goto l488
}
- add(ruleGOTLocation, position471)
+ add(ruleGOTLocation, position489)
}
return true
- l470:
- position, tokenIndex = position470, tokenIndex470
+ l488:
+ position, tokenIndex = position488, tokenIndex488
return false
},
- /* 36 GOTAddress <- <('_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '(' '%' 'r' 'i' 'p' ')')> */
+ /* 37 GOTAddress <- <('_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '(' '%' 'r' 'i' 'p' ')')> */
func() bool {
- position472, tokenIndex472 := position, tokenIndex
+ position490, tokenIndex490 := position, tokenIndex
{
- position473 := position
+ position491 := position
if buffer[position] != rune('_') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('G') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('L') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('O') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('B') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('A') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('L') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('_') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('O') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('F') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('F') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('S') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('E') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('T') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('_') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('T') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('A') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('B') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('L') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('E') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('_') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('(') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('%') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('r') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('i') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune('p') {
- goto l472
+ goto l490
}
position++
if buffer[position] != rune(')') {
- goto l472
+ goto l490
}
position++
- add(ruleGOTAddress, position473)
+ add(ruleGOTAddress, position491)
}
return true
- l472:
- position, tokenIndex = position472, tokenIndex472
+ l490:
+ position, tokenIndex = position490, tokenIndex490
return false
},
- /* 37 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
+ /* 38 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
func() bool {
- position474, tokenIndex474 := position, tokenIndex
+ position492, tokenIndex492 := position, tokenIndex
{
- position475 := position
+ position493 := position
{
- position476, tokenIndex476 := position, tokenIndex
+ position494, tokenIndex494 := position, tokenIndex
if buffer[position] != rune('$') {
- goto l477
+ goto l495
}
position++
if !_rules[ruleSymbolName]() {
- goto l477
+ goto l495
}
if buffer[position] != rune('@') {
- goto l477
+ goto l495
}
position++
if buffer[position] != rune('G') {
- goto l477
+ goto l495
}
position++
if buffer[position] != rune('O') {
- goto l477
+ goto l495
}
position++
if buffer[position] != rune('T') {
- goto l477
+ goto l495
}
position++
{
- position478, tokenIndex478 := position, tokenIndex
+ position496, tokenIndex496 := position, tokenIndex
if buffer[position] != rune('O') {
- goto l478
+ goto l496
}
position++
if buffer[position] != rune('F') {
- goto l478
+ goto l496
}
position++
if buffer[position] != rune('F') {
- goto l478
+ goto l496
}
position++
- goto l479
- l478:
- position, tokenIndex = position478, tokenIndex478
+ goto l497
+ l496:
+ position, tokenIndex = position496, tokenIndex496
}
- l479:
- goto l476
- l477:
- position, tokenIndex = position476, tokenIndex476
+ l497:
+ goto l494
+ l495:
+ position, tokenIndex = position494, tokenIndex494
if buffer[position] != rune(':') {
- goto l474
+ goto l492
}
position++
{
- position480, tokenIndex480 := position, tokenIndex
+ position498, tokenIndex498 := position, tokenIndex
if buffer[position] != rune('g') {
- goto l481
+ goto l499
}
position++
- goto l480
- l481:
- position, tokenIndex = position480, tokenIndex480
+ goto l498
+ l499:
+ position, tokenIndex = position498, tokenIndex498
if buffer[position] != rune('G') {
- goto l474
+ goto l492
}
position++
}
- l480:
+ l498:
{
- position482, tokenIndex482 := position, tokenIndex
+ position500, tokenIndex500 := position, tokenIndex
if buffer[position] != rune('o') {
- goto l483
+ goto l501
}
position++
- goto l482
- l483:
- position, tokenIndex = position482, tokenIndex482
+ goto l500
+ l501:
+ position, tokenIndex = position500, tokenIndex500
if buffer[position] != rune('O') {
- goto l474
+ goto l492
}
position++
}
- l482:
- {
- position484, tokenIndex484 := position, tokenIndex
- if buffer[position] != rune('t') {
- goto l485
- }
- position++
- goto l484
- l485:
- position, tokenIndex = position484, tokenIndex484
- if buffer[position] != rune('T') {
- goto l474
- }
- position++
- }
- l484:
- if buffer[position] != rune(':') {
- goto l474
- }
- position++
- if !_rules[ruleSymbolName]() {
- goto l474
- }
- }
- l476:
- add(ruleGOTSymbolOffset, position475)
- }
- return true
- l474:
- position, tokenIndex = position474, tokenIndex474
- return false
- },
- /* 38 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
- func() bool {
- position486, tokenIndex486 := position, tokenIndex
- {
- position487 := position
- {
- position488, tokenIndex488 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l488
- }
- goto l489
- l488:
- position, tokenIndex = position488, tokenIndex488
- }
- l489:
- if buffer[position] != rune('{') {
- goto l486
- }
- position++
- {
- position490, tokenIndex490 := position, tokenIndex
- if buffer[position] != rune('%') {
- goto l490
- }
- position++
- goto l491
- l490:
- position, tokenIndex = position490, tokenIndex490
- }
- l491:
- l492:
- {
- position493, tokenIndex493 := position, tokenIndex
- {
- position494, tokenIndex494 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l495
- }
- position++
- goto l494
- l495:
- position, tokenIndex = position494, tokenIndex494
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l493
- }
- position++
- }
- l494:
- goto l492
- l493:
- position, tokenIndex = position493, tokenIndex493
- }
- if buffer[position] != rune('}') {
- goto l486
- }
- position++
- add(ruleAVX512Token, position487)
- }
- return true
- l486:
- position, tokenIndex = position486, tokenIndex486
- return false
- },
- /* 39 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
- func() bool {
- position496, tokenIndex496 := position, tokenIndex
- {
- position497 := position
- if buffer[position] != rune('.') {
- goto l496
- }
- position++
- if buffer[position] != rune('T') {
- goto l496
- }
- position++
- if buffer[position] != rune('O') {
- goto l496
- }
- position++
- if buffer[position] != rune('C') {
- goto l496
- }
- position++
- if buffer[position] != rune('.') {
- goto l496
- }
- position++
- if buffer[position] != rune('-') {
- goto l496
- }
- position++
- {
- position498, tokenIndex498 := position, tokenIndex
- if buffer[position] != rune('0') {
- goto l499
- }
- position++
- if buffer[position] != rune('b') {
- goto l499
- }
- position++
- goto l498
- l499:
- position, tokenIndex = position498, tokenIndex498
- if buffer[position] != rune('.') {
- goto l496
- }
- position++
- if buffer[position] != rune('L') {
- goto l496
- }
- position++
+ l500:
{
position502, tokenIndex502 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
+ if buffer[position] != rune('t') {
goto l503
}
position++
goto l502
l503:
position, tokenIndex = position502, tokenIndex502
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l504
- }
- position++
- goto l502
- l504:
- position, tokenIndex = position502, tokenIndex502
- if buffer[position] != rune('_') {
- goto l505
- }
- position++
- goto l502
- l505:
- position, tokenIndex = position502, tokenIndex502
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l496
+ if buffer[position] != rune('T') {
+ goto l492
}
position++
}
l502:
- l500:
- {
- position501, tokenIndex501 := 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 l501
- }
- position++
- }
- l506:
- goto l500
- l501:
- position, tokenIndex = position501, tokenIndex501
+ if buffer[position] != rune(':') {
+ goto l492
+ }
+ position++
+ if !_rules[ruleSymbolName]() {
+ goto l492
}
}
- l498:
- if buffer[position] != rune('@') {
- goto l496
+ l494:
+ add(ruleGOTSymbolOffset, position493)
+ }
+ return true
+ l492:
+ position, tokenIndex = position492, tokenIndex492
+ return false
+ },
+ /* 39 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
+ func() bool {
+ position504, tokenIndex504 := position, tokenIndex
+ {
+ position505 := position
+ {
+ position506, tokenIndex506 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l506
+ }
+ goto l507
+ l506:
+ position, tokenIndex = position506, tokenIndex506
+ }
+ l507:
+ if buffer[position] != rune('{') {
+ goto l504
}
position++
{
- position510, tokenIndex510 := position, tokenIndex
- if buffer[position] != rune('h') {
- goto l511
+ position508, tokenIndex508 := position, tokenIndex
+ if buffer[position] != rune('%') {
+ goto l508
}
position++
- goto l510
- l511:
- position, tokenIndex = position510, tokenIndex510
- if buffer[position] != rune('H') {
- goto l496
- }
- position++
+ goto l509
+ l508:
+ position, tokenIndex = position508, tokenIndex508
}
+ l509:
l510:
{
- position512, tokenIndex512 := position, tokenIndex
- if buffer[position] != rune('a') {
- goto l513
+ position511, tokenIndex511 := position, tokenIndex
+ {
+ position512, tokenIndex512 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l513
+ }
+ position++
+ goto l512
+ l513:
+ position, tokenIndex = position512, tokenIndex512
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l511
+ }
+ position++
}
- position++
- goto l512
- l513:
- position, tokenIndex = position512, tokenIndex512
- if buffer[position] != rune('A') {
- goto l496
- }
- position++
+ l512:
+ goto l510
+ l511:
+ position, tokenIndex = position511, tokenIndex511
}
- l512:
- add(ruleTOCRefHigh, position497)
+ if buffer[position] != rune('}') {
+ goto l504
+ }
+ position++
+ add(ruleAVX512Token, position505)
}
return true
- l496:
- position, tokenIndex = position496, tokenIndex496
+ l504:
+ position, tokenIndex = position504, tokenIndex504
return false
},
- /* 40 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
+ /* 40 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
func() bool {
position514, tokenIndex514 := position, tokenIndex
{
@@ -4452,470 +4426,503 @@
position++
{
position528, tokenIndex528 := position, tokenIndex
- if buffer[position] != rune('l') {
+ if buffer[position] != rune('h') {
goto l529
}
position++
goto l528
l529:
position, tokenIndex = position528, tokenIndex528
- if buffer[position] != rune('L') {
+ if buffer[position] != rune('H') {
goto l514
}
position++
}
l528:
- add(ruleTOCRefLow, position515)
+ {
+ position530, tokenIndex530 := position, tokenIndex
+ if buffer[position] != rune('a') {
+ goto l531
+ }
+ position++
+ goto l530
+ l531:
+ position, tokenIndex = position530, tokenIndex530
+ if buffer[position] != rune('A') {
+ goto l514
+ }
+ position++
+ }
+ l530:
+ add(ruleTOCRefHigh, position515)
}
return true
l514:
position, tokenIndex = position514, tokenIndex514
return false
},
- /* 41 IndirectionIndicator <- <'*'> */
- func() bool {
- position530, tokenIndex530 := position, tokenIndex
- {
- position531 := position
- if buffer[position] != rune('*') {
- goto l530
- }
- position++
- add(ruleIndirectionIndicator, position531)
- }
- return true
- l530:
- position, tokenIndex = position530, tokenIndex530
- return false
- },
- /* 42 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 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
func() bool {
position532, tokenIndex532 := position, tokenIndex
{
position533 := position
+ if buffer[position] != rune('.') {
+ goto l532
+ }
+ position++
+ if buffer[position] != rune('T') {
+ goto l532
+ }
+ position++
+ if buffer[position] != rune('O') {
+ goto l532
+ }
+ position++
+ if buffer[position] != rune('C') {
+ goto l532
+ }
+ position++
+ if buffer[position] != rune('.') {
+ goto l532
+ }
+ position++
+ if buffer[position] != rune('-') {
+ goto l532
+ }
+ position++
{
position534, tokenIndex534 := position, tokenIndex
- if buffer[position] != rune('%') {
+ if buffer[position] != rune('0') {
goto l535
}
position++
- {
- position536, tokenIndex536 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l537
- }
- position++
- goto l536
- l537:
- position, tokenIndex = position536, tokenIndex536
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l535
- }
- position++
+ if buffer[position] != rune('b') {
+ goto l535
}
- l536:
- l538:
- {
- position539, tokenIndex539 := position, tokenIndex
- {
- position540, tokenIndex540 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l541
- }
- position++
- goto l540
- l541:
- position, tokenIndex = position540, tokenIndex540
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l542
- }
- position++
- goto l540
- l542:
- position, tokenIndex = position540, tokenIndex540
- {
- position543, tokenIndex543 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l544
- }
- position++
- goto l543
- l544:
- position, tokenIndex = position543, tokenIndex543
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l539
- }
- position++
- }
- l543:
- }
- l540:
- goto l538
- l539:
- position, tokenIndex = position539, tokenIndex539
- }
+ position++
goto l534
l535:
position, tokenIndex = position534, tokenIndex534
- {
- position546, tokenIndex546 := position, tokenIndex
- if buffer[position] != rune('$') {
- goto l546
- }
- position++
- goto l547
- l546:
- position, tokenIndex = position546, tokenIndex546
- }
- l547:
- {
- position548, tokenIndex548 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l549
- }
- if !_rules[ruleOffset]() {
- goto l549
- }
- goto l548
- l549:
- position, tokenIndex = position548, tokenIndex548
- if !_rules[ruleOffset]() {
- goto l545
- }
- }
- l548:
- goto l534
- l545:
- position, tokenIndex = position534, tokenIndex534
- if buffer[position] != rune('#') {
- goto l550
- }
- position++
- if !_rules[ruleOffset]() {
- goto l550
- }
- {
- position551, tokenIndex551 := position, tokenIndex
- if buffer[position] != rune('*') {
- goto l551
- }
- position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l551
- }
- position++
- l553:
- {
- position554, tokenIndex554 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l554
- }
- position++
- goto l553
- l554:
- position, tokenIndex = position554, tokenIndex554
- }
- {
- position555, tokenIndex555 := position, tokenIndex
- if buffer[position] != rune('-') {
- goto l555
- }
- position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l555
- }
- position++
- l557:
- {
- position558, tokenIndex558 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l558
- }
- position++
- goto l557
- l558:
- position, tokenIndex = position558, tokenIndex558
- }
- goto l556
- l555:
- position, tokenIndex = position555, tokenIndex555
- }
- l556:
- goto l552
- l551:
- position, tokenIndex = position551, tokenIndex551
- }
- l552:
- goto l534
- l550:
- position, tokenIndex = position534, tokenIndex534
- if buffer[position] != rune('#') {
- goto l559
- }
- position++
- {
- position560, tokenIndex560 := position, tokenIndex
- if buffer[position] != rune('~') {
- goto l560
- }
- position++
- goto l561
- l560:
- position, tokenIndex = position560, tokenIndex560
- }
- l561:
- if buffer[position] != rune('(') {
- goto l559
- }
- position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l559
- }
- position++
- {
- position562, tokenIndex562 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l562
- }
- goto l563
- l562:
- position, tokenIndex = position562, tokenIndex562
- }
- l563:
- if buffer[position] != rune('<') {
- goto l559
- }
- position++
- if buffer[position] != rune('<') {
- goto l559
- }
- position++
- {
- position564, tokenIndex564 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l564
- }
- goto l565
- l564:
- position, tokenIndex = position564, tokenIndex564
- }
- l565:
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l559
- }
- position++
- if buffer[position] != rune(')') {
- goto l559
- }
- position++
- goto l534
- l559:
- position, tokenIndex = position534, tokenIndex534
- if !_rules[ruleARMRegister]() {
+ if buffer[position] != rune('.') {
goto l532
}
+ position++
+ if buffer[position] != rune('L') {
+ goto l532
+ }
+ position++
+ {
+ position538, tokenIndex538 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l539
+ }
+ position++
+ goto l538
+ l539:
+ position, tokenIndex = position538, tokenIndex538
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l540
+ }
+ position++
+ goto l538
+ l540:
+ position, tokenIndex = position538, tokenIndex538
+ if buffer[position] != rune('_') {
+ goto l541
+ }
+ position++
+ goto l538
+ l541:
+ position, tokenIndex = position538, tokenIndex538
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l532
+ }
+ position++
+ }
+ l538:
+ l536:
+ {
+ position537, tokenIndex537 := position, tokenIndex
+ {
+ position542, tokenIndex542 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l543
+ }
+ position++
+ goto l542
+ l543:
+ position, tokenIndex = position542, tokenIndex542
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l544
+ }
+ position++
+ goto l542
+ l544:
+ position, tokenIndex = position542, tokenIndex542
+ if buffer[position] != rune('_') {
+ goto l545
+ }
+ position++
+ goto l542
+ l545:
+ position, tokenIndex = position542, tokenIndex542
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l537
+ }
+ position++
+ }
+ l542:
+ goto l536
+ l537:
+ position, tokenIndex = position537, tokenIndex537
+ }
}
l534:
- {
- position566, tokenIndex566 := position, tokenIndex
- {
- position567, tokenIndex567 := position, tokenIndex
- if buffer[position] != rune('f') {
- goto l568
- }
- position++
- goto l567
- l568:
- position, tokenIndex = position567, tokenIndex567
- if buffer[position] != rune('b') {
- goto l569
- }
- position++
- goto l567
- l569:
- position, tokenIndex = position567, tokenIndex567
- if buffer[position] != rune(':') {
- goto l570
- }
- position++
- goto l567
- l570:
- position, tokenIndex = position567, tokenIndex567
- if buffer[position] != rune('(') {
- goto l571
- }
- position++
- goto l567
- l571:
- position, tokenIndex = position567, tokenIndex567
- if buffer[position] != rune('+') {
- goto l572
- }
- position++
- goto l567
- l572:
- position, tokenIndex = position567, tokenIndex567
- if buffer[position] != rune('-') {
- goto l566
- }
- position++
- }
- l567:
+ if buffer[position] != rune('@') {
goto l532
- l566:
- position, tokenIndex = position566, tokenIndex566
}
- add(ruleRegisterOrConstant, position533)
+ position++
+ {
+ position546, tokenIndex546 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l547
+ }
+ position++
+ goto l546
+ l547:
+ position, tokenIndex = position546, tokenIndex546
+ if buffer[position] != rune('L') {
+ goto l532
+ }
+ position++
+ }
+ l546:
+ add(ruleTOCRefLow, position533)
}
return true
l532:
position, tokenIndex = position532, tokenIndex532
return false
},
- /* 43 ARMConstantTweak <- <((((('u' / 's') (('x' / 'X') ('t' / 'T')) ('x' / 'w' / 'h' / 'b')) / (('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R'))) (WS '#' Offset)?) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' ('v' / 'V') ('l' / 'L')) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' '#' [0-9]))> */
+ /* 42 IndirectionIndicator <- <'*'> */
func() bool {
- position573, tokenIndex573 := position, tokenIndex
+ position548, tokenIndex548 := position, tokenIndex
{
- position574 := position
+ position549 := position
+ if buffer[position] != rune('*') {
+ goto l548
+ }
+ position++
+ add(ruleIndirectionIndicator, position549)
+ }
+ return true
+ l548:
+ position, tokenIndex = position548, tokenIndex548
+ return false
+ },
+ /* 43 RegisterOrConstant <- <((('%' ([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))*) / ('$'? ((Offset Offset) / Offset)) / ('#' Offset ('*' [0-9]+ ('-' [0-9] [0-9]*)?)?) / ('#' '~'? '(' [0-9] WS? ('<' '<') WS? [0-9] ')') / ARMRegister) !('f' / 'b' / ':' / '(' / '+' / '-'))> */
+ func() bool {
+ position550, tokenIndex550 := position, tokenIndex
+ {
+ position551 := position
{
- position575, tokenIndex575 := position, tokenIndex
+ position552, tokenIndex552 := position, tokenIndex
+ if buffer[position] != rune('%') {
+ goto l553
+ }
+ position++
{
- position577, tokenIndex577 := position, tokenIndex
- {
- position579, tokenIndex579 := position, tokenIndex
- if buffer[position] != rune('u') {
- goto l580
- }
- position++
- goto l579
- l580:
- position, tokenIndex = position579, tokenIndex579
- if buffer[position] != rune('s') {
- goto l578
- }
- position++
+ position554, tokenIndex554 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l555
}
- l579:
- {
- position581, tokenIndex581 := position, tokenIndex
- if buffer[position] != rune('x') {
- goto l582
- }
- position++
- goto l581
- l582:
- position, tokenIndex = position581, tokenIndex581
- if buffer[position] != rune('X') {
- goto l578
- }
- position++
+ position++
+ goto l554
+ l555:
+ position, tokenIndex = position554, tokenIndex554
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l553
}
- l581:
+ position++
+ }
+ l554:
+ l556:
+ {
+ position557, tokenIndex557 := position, tokenIndex
{
- position583, tokenIndex583 := position, tokenIndex
- if buffer[position] != rune('t') {
- goto l584
+ position558, tokenIndex558 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l559
}
position++
- goto l583
- l584:
- position, tokenIndex = position583, tokenIndex583
- if buffer[position] != rune('T') {
- goto l578
+ goto l558
+ l559:
+ position, tokenIndex = position558, tokenIndex558
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l560
}
position++
+ goto l558
+ l560:
+ position, tokenIndex = position558, tokenIndex558
+ {
+ position561, tokenIndex561 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l562
+ }
+ position++
+ goto l561
+ l562:
+ position, tokenIndex = position561, tokenIndex561
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l557
+ }
+ position++
+ }
+ l561:
}
- l583:
+ l558:
+ goto l556
+ l557:
+ position, tokenIndex = position557, tokenIndex557
+ }
+ goto l552
+ l553:
+ position, tokenIndex = position552, tokenIndex552
+ {
+ position564, tokenIndex564 := position, tokenIndex
+ if buffer[position] != rune('$') {
+ goto l564
+ }
+ position++
+ goto l565
+ l564:
+ position, tokenIndex = position564, tokenIndex564
+ }
+ l565:
+ {
+ position566, tokenIndex566 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l567
+ }
+ if !_rules[ruleOffset]() {
+ goto l567
+ }
+ goto l566
+ l567:
+ position, tokenIndex = position566, tokenIndex566
+ if !_rules[ruleOffset]() {
+ goto l563
+ }
+ }
+ l566:
+ goto l552
+ l563:
+ position, tokenIndex = position552, tokenIndex552
+ if buffer[position] != rune('#') {
+ goto l568
+ }
+ position++
+ if !_rules[ruleOffset]() {
+ goto l568
+ }
+ {
+ position569, tokenIndex569 := position, tokenIndex
+ if buffer[position] != rune('*') {
+ goto l569
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l569
+ }
+ position++
+ l571:
{
- position585, tokenIndex585 := position, tokenIndex
- if buffer[position] != rune('x') {
- goto l586
+ position572, tokenIndex572 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l572
}
position++
- goto l585
- l586:
- position, tokenIndex = position585, tokenIndex585
- if buffer[position] != rune('w') {
- goto l587
- }
- position++
- goto l585
- l587:
- position, tokenIndex = position585, tokenIndex585
- if buffer[position] != rune('h') {
- goto l588
- }
- position++
- goto l585
- l588:
- position, tokenIndex = position585, tokenIndex585
- if buffer[position] != rune('b') {
- goto l578
- }
- position++
+ goto l571
+ l572:
+ position, tokenIndex = position572, tokenIndex572
}
- l585:
+ {
+ position573, tokenIndex573 := position, tokenIndex
+ if buffer[position] != rune('-') {
+ goto l573
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l573
+ }
+ position++
+ l575:
+ {
+ position576, tokenIndex576 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l576
+ }
+ position++
+ goto l575
+ l576:
+ position, tokenIndex = position576, tokenIndex576
+ }
+ goto l574
+ l573:
+ position, tokenIndex = position573, tokenIndex573
+ }
+ l574:
+ goto l570
+ l569:
+ position, tokenIndex = position569, tokenIndex569
+ }
+ l570:
+ goto l552
+ l568:
+ position, tokenIndex = position552, tokenIndex552
+ if buffer[position] != rune('#') {
goto l577
+ }
+ position++
+ {
+ position578, tokenIndex578 := position, tokenIndex
+ if buffer[position] != rune('~') {
+ goto l578
+ }
+ position++
+ goto l579
l578:
- position, tokenIndex = position577, tokenIndex577
- {
- position590, tokenIndex590 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l591
- }
- position++
- goto l590
- l591:
- position, tokenIndex = position590, tokenIndex590
- if buffer[position] != rune('L') {
- goto l589
- }
- position++
- }
- l590:
- {
- position592, tokenIndex592 := position, tokenIndex
- if buffer[position] != rune('s') {
- goto l593
- }
- position++
- goto l592
- l593:
- position, tokenIndex = position592, tokenIndex592
- if buffer[position] != rune('S') {
- goto l589
- }
- position++
- }
- l592:
- {
- position594, tokenIndex594 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l595
- }
- position++
- goto l594
- l595:
- position, tokenIndex = position594, tokenIndex594
- if buffer[position] != rune('L') {
- goto l589
- }
- position++
- }
- l594:
+ position, tokenIndex = position578, tokenIndex578
+ }
+ l579:
+ if buffer[position] != rune('(') {
goto l577
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l577
+ }
+ position++
+ {
+ position580, tokenIndex580 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l580
+ }
+ goto l581
+ l580:
+ position, tokenIndex = position580, tokenIndex580
+ }
+ l581:
+ if buffer[position] != rune('<') {
+ goto l577
+ }
+ position++
+ if buffer[position] != rune('<') {
+ goto l577
+ }
+ position++
+ {
+ position582, tokenIndex582 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l582
+ }
+ goto l583
+ l582:
+ position, tokenIndex = position582, tokenIndex582
+ }
+ l583:
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l577
+ }
+ position++
+ if buffer[position] != rune(')') {
+ goto l577
+ }
+ position++
+ goto l552
+ l577:
+ position, tokenIndex = position552, tokenIndex552
+ if !_rules[ruleARMRegister]() {
+ goto l550
+ }
+ }
+ l552:
+ {
+ position584, tokenIndex584 := position, tokenIndex
+ {
+ position585, tokenIndex585 := position, tokenIndex
+ if buffer[position] != rune('f') {
+ goto l586
+ }
+ position++
+ goto l585
+ l586:
+ position, tokenIndex = position585, tokenIndex585
+ if buffer[position] != rune('b') {
+ goto l587
+ }
+ position++
+ goto l585
+ l587:
+ position, tokenIndex = position585, tokenIndex585
+ if buffer[position] != rune(':') {
+ goto l588
+ }
+ position++
+ goto l585
+ l588:
+ position, tokenIndex = position585, tokenIndex585
+ if buffer[position] != rune('(') {
+ goto l589
+ }
+ position++
+ goto l585
l589:
- position, tokenIndex = position577, tokenIndex577
+ position, tokenIndex = position585, tokenIndex585
+ if buffer[position] != rune('+') {
+ goto l590
+ }
+ position++
+ goto l585
+ l590:
+ position, tokenIndex = position585, tokenIndex585
+ if buffer[position] != rune('-') {
+ goto l584
+ }
+ position++
+ }
+ l585:
+ goto l550
+ l584:
+ position, tokenIndex = position584, tokenIndex584
+ }
+ add(ruleRegisterOrConstant, position551)
+ }
+ return true
+ l550:
+ position, tokenIndex = position550, tokenIndex550
+ return false
+ },
+ /* 44 ARMConstantTweak <- <((((('u' / 's') (('x' / 'X') ('t' / 'T')) ('x' / 'w' / 'h' / 'b')) / (('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R'))) (WS '#' Offset)?) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' ('v' / 'V') ('l' / 'L')) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' '#' [0-9]))> */
+ func() bool {
+ position591, tokenIndex591 := position, tokenIndex
+ {
+ position592 := position
+ {
+ position593, tokenIndex593 := position, tokenIndex
+ {
+ position595, tokenIndex595 := position, tokenIndex
{
position597, tokenIndex597 := position, tokenIndex
- if buffer[position] != rune('l') {
+ if buffer[position] != rune('u') {
goto l598
}
position++
goto l597
l598:
position, tokenIndex = position597, tokenIndex597
- if buffer[position] != rune('L') {
+ if buffer[position] != rune('s') {
goto l596
}
position++
@@ -4923,14 +4930,14 @@
l597:
{
position599, tokenIndex599 := position, tokenIndex
- if buffer[position] != rune('s') {
+ if buffer[position] != rune('x') {
goto l600
}
position++
goto l599
l600:
position, tokenIndex = position599, tokenIndex599
- if buffer[position] != rune('S') {
+ if buffer[position] != rune('X') {
goto l596
}
position++
@@ -4938,1413 +4945,1389 @@
l599:
{
position601, tokenIndex601 := position, tokenIndex
- if buffer[position] != rune('r') {
+ if buffer[position] != rune('t') {
goto l602
}
position++
goto l601
l602:
position, tokenIndex = position601, tokenIndex601
- if buffer[position] != rune('R') {
+ if buffer[position] != rune('T') {
goto l596
}
position++
}
l601:
- goto l577
- l596:
- position, tokenIndex = position577, tokenIndex577
{
- position604, tokenIndex604 := position, tokenIndex
- if buffer[position] != rune('r') {
+ position603, tokenIndex603 := position, tokenIndex
+ if buffer[position] != rune('x') {
+ goto l604
+ }
+ position++
+ goto l603
+ l604:
+ position, tokenIndex = position603, tokenIndex603
+ if buffer[position] != rune('w') {
goto l605
}
position++
- goto l604
+ goto l603
l605:
- position, tokenIndex = position604, tokenIndex604
- if buffer[position] != rune('R') {
- goto l603
+ position, tokenIndex = position603, tokenIndex603
+ if buffer[position] != rune('h') {
+ goto l606
+ }
+ position++
+ goto l603
+ l606:
+ position, tokenIndex = position603, tokenIndex603
+ if buffer[position] != rune('b') {
+ goto l596
}
position++
}
- l604:
- {
- position606, tokenIndex606 := position, tokenIndex
- if buffer[position] != rune('o') {
- goto l607
- }
- position++
- goto l606
- l607:
- position, tokenIndex = position606, tokenIndex606
- if buffer[position] != rune('O') {
- goto l603
- }
- position++
- }
- l606:
+ l603:
+ goto l595
+ l596:
+ position, tokenIndex = position595, tokenIndex595
{
position608, tokenIndex608 := position, tokenIndex
- if buffer[position] != rune('r') {
+ if buffer[position] != rune('l') {
goto l609
}
position++
goto l608
l609:
position, tokenIndex = position608, tokenIndex608
- if buffer[position] != rune('R') {
- goto l603
+ if buffer[position] != rune('L') {
+ goto l607
}
position++
}
l608:
- goto l577
- l603:
- position, tokenIndex = position577, tokenIndex577
{
position610, tokenIndex610 := position, tokenIndex
- if buffer[position] != rune('a') {
+ if buffer[position] != rune('s') {
goto l611
}
position++
goto l610
l611:
position, tokenIndex = position610, tokenIndex610
- if buffer[position] != rune('A') {
- goto l576
+ if buffer[position] != rune('S') {
+ goto l607
}
position++
}
l610:
{
position612, tokenIndex612 := position, tokenIndex
- if buffer[position] != rune('s') {
+ if buffer[position] != rune('l') {
goto l613
}
position++
goto l612
l613:
position, tokenIndex = position612, tokenIndex612
- if buffer[position] != rune('S') {
- goto l576
+ if buffer[position] != rune('L') {
+ goto l607
}
position++
}
l612:
+ goto l595
+ l607:
+ position, tokenIndex = position595, tokenIndex595
{
- position614, tokenIndex614 := position, tokenIndex
- if buffer[position] != rune('r') {
- goto l615
+ position615, tokenIndex615 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l616
}
position++
- goto l614
- l615:
- position, tokenIndex = position614, tokenIndex614
- if buffer[position] != rune('R') {
- goto l576
+ goto l615
+ l616:
+ position, tokenIndex = position615, tokenIndex615
+ if buffer[position] != rune('L') {
+ goto l614
}
position++
}
+ l615:
+ {
+ position617, tokenIndex617 := position, tokenIndex
+ if buffer[position] != rune('s') {
+ goto l618
+ }
+ position++
+ goto l617
+ l618:
+ position, tokenIndex = position617, tokenIndex617
+ if buffer[position] != rune('S') {
+ goto l614
+ }
+ position++
+ }
+ l617:
+ {
+ position619, tokenIndex619 := position, tokenIndex
+ if buffer[position] != rune('r') {
+ goto l620
+ }
+ position++
+ goto l619
+ l620:
+ position, tokenIndex = position619, tokenIndex619
+ if buffer[position] != rune('R') {
+ goto l614
+ }
+ position++
+ }
+ l619:
+ goto l595
l614:
+ position, tokenIndex = position595, tokenIndex595
+ {
+ position622, tokenIndex622 := position, tokenIndex
+ if buffer[position] != rune('r') {
+ goto l623
+ }
+ position++
+ goto l622
+ l623:
+ position, tokenIndex = position622, tokenIndex622
+ if buffer[position] != rune('R') {
+ goto l621
+ }
+ position++
+ }
+ l622:
+ {
+ position624, tokenIndex624 := position, tokenIndex
+ if buffer[position] != rune('o') {
+ goto l625
+ }
+ position++
+ goto l624
+ l625:
+ position, tokenIndex = position624, tokenIndex624
+ if buffer[position] != rune('O') {
+ goto l621
+ }
+ position++
+ }
+ l624:
+ {
+ position626, tokenIndex626 := position, tokenIndex
+ if buffer[position] != rune('r') {
+ goto l627
+ }
+ position++
+ goto l626
+ l627:
+ position, tokenIndex = position626, tokenIndex626
+ if buffer[position] != rune('R') {
+ goto l621
+ }
+ position++
+ }
+ l626:
+ goto l595
+ l621:
+ position, tokenIndex = position595, tokenIndex595
+ {
+ position628, tokenIndex628 := position, tokenIndex
+ if buffer[position] != rune('a') {
+ goto l629
+ }
+ position++
+ goto l628
+ l629:
+ position, tokenIndex = position628, tokenIndex628
+ if buffer[position] != rune('A') {
+ goto l594
+ }
+ position++
+ }
+ l628:
+ {
+ position630, tokenIndex630 := position, tokenIndex
+ if buffer[position] != rune('s') {
+ goto l631
+ }
+ position++
+ goto l630
+ l631:
+ position, tokenIndex = position630, tokenIndex630
+ if buffer[position] != rune('S') {
+ goto l594
+ }
+ position++
+ }
+ l630:
+ {
+ position632, tokenIndex632 := position, tokenIndex
+ if buffer[position] != rune('r') {
+ goto l633
+ }
+ position++
+ goto l632
+ l633:
+ position, tokenIndex = position632, tokenIndex632
+ if buffer[position] != rune('R') {
+ goto l594
+ }
+ position++
+ }
+ l632:
}
- l577:
+ l595:
{
- position616, tokenIndex616 := position, tokenIndex
+ position634, tokenIndex634 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l616
+ goto l634
}
if buffer[position] != rune('#') {
- goto l616
- }
- position++
- if !_rules[ruleOffset]() {
- goto l616
- }
- goto l617
- l616:
- position, tokenIndex = position616, tokenIndex616
- }
- l617:
- goto l575
- l576:
- position, tokenIndex = position575, tokenIndex575
- {
- position619, tokenIndex619 := position, tokenIndex
- if buffer[position] != rune('m') {
- goto l620
- }
- position++
- goto l619
- l620:
- position, tokenIndex = position619, tokenIndex619
- if buffer[position] != rune('M') {
- goto l618
- }
- position++
- }
- l619:
- {
- position621, tokenIndex621 := position, tokenIndex
- if buffer[position] != rune('u') {
- goto l622
- }
- position++
- goto l621
- l622:
- position, tokenIndex = position621, tokenIndex621
- if buffer[position] != rune('U') {
- goto l618
- }
- position++
- }
- l621:
- {
- position623, tokenIndex623 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l624
- }
- position++
- goto l623
- l624:
- position, tokenIndex = position623, tokenIndex623
- if buffer[position] != rune('L') {
- goto l618
- }
- position++
- }
- l623:
- if buffer[position] != rune(' ') {
- goto l618
- }
- position++
- {
- position625, tokenIndex625 := position, tokenIndex
- if buffer[position] != rune('v') {
- goto l626
- }
- position++
- goto l625
- l626:
- position, tokenIndex = position625, tokenIndex625
- if buffer[position] != rune('V') {
- goto l618
- }
- position++
- }
- l625:
- {
- position627, tokenIndex627 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l628
- }
- position++
- goto l627
- l628:
- position, tokenIndex = position627, tokenIndex627
- if buffer[position] != rune('L') {
- goto l618
- }
- position++
- }
- l627:
- goto l575
- l618:
- position, tokenIndex = position575, tokenIndex575
- {
- position629, tokenIndex629 := position, tokenIndex
- if buffer[position] != rune('m') {
- goto l630
- }
- position++
- goto l629
- l630:
- position, tokenIndex = position629, tokenIndex629
- if buffer[position] != rune('M') {
- goto l573
- }
- position++
- }
- l629:
- {
- position631, tokenIndex631 := position, tokenIndex
- if buffer[position] != rune('u') {
- goto l632
- }
- position++
- goto l631
- l632:
- position, tokenIndex = position631, tokenIndex631
- if buffer[position] != rune('U') {
- goto l573
- }
- position++
- }
- l631:
- {
- position633, tokenIndex633 := position, tokenIndex
- if buffer[position] != rune('l') {
goto l634
}
position++
- goto l633
+ if !_rules[ruleOffset]() {
+ goto l634
+ }
+ goto l635
l634:
- position, tokenIndex = position633, tokenIndex633
- if buffer[position] != rune('L') {
- goto l573
+ position, tokenIndex = position634, tokenIndex634
+ }
+ l635:
+ goto l593
+ l594:
+ position, tokenIndex = position593, tokenIndex593
+ {
+ position637, tokenIndex637 := position, tokenIndex
+ if buffer[position] != rune('m') {
+ goto l638
+ }
+ position++
+ goto l637
+ l638:
+ position, tokenIndex = position637, tokenIndex637
+ if buffer[position] != rune('M') {
+ goto l636
}
position++
}
- l633:
- if buffer[position] != rune(' ') {
- goto l573
- }
- position++
- if buffer[position] != rune('#') {
- goto l573
- }
- position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l573
- }
- position++
- }
- l575:
- add(ruleARMConstantTweak, position574)
- }
- return true
- l573:
- position, tokenIndex = position573, tokenIndex573
- return false
- },
- /* 44 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's' / 'h' / 'b') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / (('n' / 'N') ('z' / 'Z') ('c' / 'C') ('v' / 'V')) / SVE2PredicateRegister / ARMVectorRegister / SVE2SpecialValue / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
- func() bool {
- position635, tokenIndex635 := position, tokenIndex
- {
- position636 := position
- {
- position637, tokenIndex637 := position, tokenIndex
+ l637:
{
position639, tokenIndex639 := position, tokenIndex
- if buffer[position] != rune('s') {
+ if buffer[position] != rune('u') {
goto l640
}
position++
goto l639
l640:
position, tokenIndex = position639, tokenIndex639
- if buffer[position] != rune('S') {
- goto l638
+ if buffer[position] != rune('U') {
+ goto l636
}
position++
}
l639:
{
position641, tokenIndex641 := position, tokenIndex
- if buffer[position] != rune('p') {
+ if buffer[position] != rune('l') {
goto l642
}
position++
goto l641
l642:
position, tokenIndex = position641, tokenIndex641
- if buffer[position] != rune('P') {
- goto l638
+ if buffer[position] != rune('L') {
+ goto l636
}
position++
}
l641:
- goto l637
- l638:
- position, tokenIndex = position637, tokenIndex637
- {
- position644, tokenIndex644 := position, tokenIndex
- if buffer[position] != rune('x') {
- goto l645
- }
- position++
- goto l644
- l645:
- position, tokenIndex = position644, tokenIndex644
- if buffer[position] != rune('w') {
- goto l646
- }
- position++
- goto l644
- l646:
- position, tokenIndex = position644, tokenIndex644
- if buffer[position] != rune('d') {
- goto l647
- }
- position++
- goto l644
- l647:
- position, tokenIndex = position644, tokenIndex644
- if buffer[position] != rune('q') {
- goto l648
- }
- position++
- goto l644
- l648:
- position, tokenIndex = position644, tokenIndex644
- if buffer[position] != rune('s') {
- goto l649
- }
- position++
- goto l644
- l649:
- position, tokenIndex = position644, tokenIndex644
- if buffer[position] != rune('h') {
- goto l650
- }
- position++
- goto l644
- l650:
- position, tokenIndex = position644, tokenIndex644
- if buffer[position] != rune('b') {
- goto l643
- }
- position++
- }
- l644:
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l643
+ if buffer[position] != rune(' ') {
+ goto l636
}
position++
{
- position651, tokenIndex651 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l651
+ position643, tokenIndex643 := position, tokenIndex
+ if buffer[position] != rune('v') {
+ goto l644
}
position++
- goto l652
- l651:
- position, tokenIndex = position651, tokenIndex651
+ goto l643
+ l644:
+ position, tokenIndex = position643, tokenIndex643
+ if buffer[position] != rune('V') {
+ goto l636
+ }
+ position++
}
- l652:
- goto l637
l643:
- position, tokenIndex = position637, tokenIndex637
{
- position654, tokenIndex654 := position, tokenIndex
- if buffer[position] != rune('x') {
- goto l655
+ position645, tokenIndex645 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l646
}
position++
- goto l654
- l655:
- position, tokenIndex = position654, tokenIndex654
- if buffer[position] != rune('X') {
- goto l653
+ goto l645
+ l646:
+ position, tokenIndex = position645, tokenIndex645
+ if buffer[position] != rune('L') {
+ goto l636
}
position++
}
- l654:
+ l645:
+ goto l593
+ l636:
+ position, tokenIndex = position593, tokenIndex593
{
- position656, tokenIndex656 := position, tokenIndex
- if buffer[position] != rune('z') {
- goto l657
+ position647, tokenIndex647 := position, tokenIndex
+ if buffer[position] != rune('m') {
+ goto l648
}
position++
- goto l656
- l657:
- position, tokenIndex = position656, tokenIndex656
- if buffer[position] != rune('Z') {
- goto l653
+ goto l647
+ l648:
+ position, tokenIndex = position647, tokenIndex647
+ if buffer[position] != rune('M') {
+ goto l591
}
position++
}
- l656:
+ l647:
{
- position658, tokenIndex658 := position, tokenIndex
- if buffer[position] != rune('r') {
- goto l659
+ position649, tokenIndex649 := position, tokenIndex
+ if buffer[position] != rune('u') {
+ goto l650
}
position++
- goto l658
- l659:
- position, tokenIndex = position658, tokenIndex658
- if buffer[position] != rune('R') {
- goto l653
+ goto l649
+ l650:
+ position, tokenIndex = position649, tokenIndex649
+ if buffer[position] != rune('U') {
+ goto l591
}
position++
}
- l658:
- goto l637
- l653:
- position, tokenIndex = position637, tokenIndex637
+ l649:
{
- position661, tokenIndex661 := position, tokenIndex
- if buffer[position] != rune('w') {
- goto l662
+ position651, tokenIndex651 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l652
}
position++
- goto l661
- l662:
- position, tokenIndex = position661, tokenIndex661
- if buffer[position] != rune('W') {
+ goto l651
+ l652:
+ position, tokenIndex = position651, tokenIndex651
+ if buffer[position] != rune('L') {
+ goto l591
+ }
+ position++
+ }
+ l651:
+ if buffer[position] != rune(' ') {
+ goto l591
+ }
+ position++
+ if buffer[position] != rune('#') {
+ goto l591
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l591
+ }
+ position++
+ }
+ l593:
+ add(ruleARMConstantTweak, position592)
+ }
+ return true
+ l591:
+ position, tokenIndex = position591, tokenIndex591
+ return false
+ },
+ /* 45 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's' / 'h' / 'b') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / (('n' / 'N') ('z' / 'Z') ('c' / 'C') ('v' / 'V')) / SVE2PredicateRegister / ARMVectorRegister / SVE2SpecialValue / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
+ func() bool {
+ position653, tokenIndex653 := position, tokenIndex
+ {
+ position654 := position
+ {
+ position655, tokenIndex655 := position, tokenIndex
+ {
+ position657, tokenIndex657 := position, tokenIndex
+ if buffer[position] != rune('s') {
+ goto l658
+ }
+ position++
+ goto l657
+ l658:
+ position, tokenIndex = position657, tokenIndex657
+ if buffer[position] != rune('S') {
+ goto l656
+ }
+ position++
+ }
+ l657:
+ {
+ position659, tokenIndex659 := position, tokenIndex
+ if buffer[position] != rune('p') {
goto l660
}
position++
+ goto l659
+ l660:
+ position, tokenIndex = position659, tokenIndex659
+ if buffer[position] != rune('P') {
+ goto l656
+ }
+ position++
}
- l661:
+ l659:
+ goto l655
+ l656:
+ position, tokenIndex = position655, tokenIndex655
{
- position663, tokenIndex663 := position, tokenIndex
- if buffer[position] != rune('z') {
+ position662, tokenIndex662 := position, tokenIndex
+ if buffer[position] != rune('x') {
+ goto l663
+ }
+ position++
+ goto l662
+ l663:
+ position, tokenIndex = position662, tokenIndex662
+ if buffer[position] != rune('w') {
goto l664
}
position++
- goto l663
+ goto l662
l664:
- position, tokenIndex = position663, tokenIndex663
- if buffer[position] != rune('Z') {
- goto l660
+ position, tokenIndex = position662, tokenIndex662
+ if buffer[position] != rune('d') {
+ goto l665
}
position++
- }
- l663:
- {
- position665, tokenIndex665 := position, tokenIndex
- if buffer[position] != rune('r') {
+ goto l662
+ l665:
+ position, tokenIndex = position662, tokenIndex662
+ if buffer[position] != rune('q') {
goto l666
}
position++
- goto l665
+ goto l662
l666:
- position, tokenIndex = position665, tokenIndex665
- if buffer[position] != rune('R') {
- goto l660
+ position, tokenIndex = position662, tokenIndex662
+ if buffer[position] != rune('s') {
+ goto l667
+ }
+ position++
+ goto l662
+ l667:
+ position, tokenIndex = position662, tokenIndex662
+ if buffer[position] != rune('h') {
+ goto l668
+ }
+ position++
+ goto l662
+ l668:
+ position, tokenIndex = position662, tokenIndex662
+ if buffer[position] != rune('b') {
+ goto l661
}
position++
}
- l665:
- goto l637
- l660:
- position, tokenIndex = position637, tokenIndex637
+ l662:
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l661
+ }
+ position++
{
- position668, tokenIndex668 := position, tokenIndex
- if buffer[position] != rune('n') {
+ position669, tokenIndex669 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l669
}
position++
- goto l668
- l669:
- position, tokenIndex = position668, tokenIndex668
- if buffer[position] != rune('N') {
- goto l667
- }
- position++
- }
- l668:
- {
- position670, tokenIndex670 := position, tokenIndex
- if buffer[position] != rune('z') {
- goto l671
- }
- position++
goto l670
- l671:
- position, tokenIndex = position670, tokenIndex670
- if buffer[position] != rune('Z') {
- goto l667
- }
- position++
+ l669:
+ position, tokenIndex = position669, tokenIndex669
}
l670:
+ goto l655
+ l661:
+ position, tokenIndex = position655, tokenIndex655
{
position672, tokenIndex672 := position, tokenIndex
- if buffer[position] != rune('c') {
+ if buffer[position] != rune('x') {
goto l673
}
position++
goto l672
l673:
position, tokenIndex = position672, tokenIndex672
- if buffer[position] != rune('C') {
- goto l667
+ if buffer[position] != rune('X') {
+ goto l671
}
position++
}
l672:
{
position674, tokenIndex674 := position, tokenIndex
- if buffer[position] != rune('v') {
+ if buffer[position] != rune('z') {
goto l675
}
position++
goto l674
l675:
position, tokenIndex = position674, tokenIndex674
- if buffer[position] != rune('V') {
- goto l667
+ if buffer[position] != rune('Z') {
+ goto l671
}
position++
}
l674:
- goto l637
- l667:
- position, tokenIndex = position637, tokenIndex637
- if !_rules[ruleSVE2PredicateRegister]() {
+ {
+ position676, tokenIndex676 := position, tokenIndex
+ if buffer[position] != rune('r') {
+ goto l677
+ }
+ position++
goto l676
+ l677:
+ position, tokenIndex = position676, tokenIndex676
+ if buffer[position] != rune('R') {
+ goto l671
+ }
+ position++
}
- goto l637
l676:
- position, tokenIndex = position637, tokenIndex637
- if !_rules[ruleARMVectorRegister]() {
- goto l677
- }
- goto l637
- l677:
- position, tokenIndex = position637, tokenIndex637
- if !_rules[ruleSVE2SpecialValue]() {
- goto l678
- }
- goto l637
- l678:
- position, tokenIndex = position637, tokenIndex637
- if buffer[position] != rune('{') {
- goto l635
- }
- position++
+ goto l655
+ l671:
+ position, tokenIndex = position655, tokenIndex655
{
position679, tokenIndex679 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l679
+ if buffer[position] != rune('w') {
+ goto l680
}
- goto l680
- l679:
+ position++
+ goto l679
+ l680:
position, tokenIndex = position679, tokenIndex679
+ if buffer[position] != rune('W') {
+ goto l678
+ }
+ position++
}
- l680:
- if !_rules[ruleARMVectorRegister]() {
- goto l635
+ l679:
+ {
+ position681, tokenIndex681 := position, tokenIndex
+ if buffer[position] != rune('z') {
+ goto l682
+ }
+ position++
+ goto l681
+ l682:
+ position, tokenIndex = position681, tokenIndex681
+ if buffer[position] != rune('Z') {
+ goto l678
+ }
+ position++
}
l681:
{
- position682, tokenIndex682 := position, tokenIndex
- if buffer[position] != rune(',') {
- goto l682
+ position683, tokenIndex683 := position, tokenIndex
+ if buffer[position] != rune('r') {
+ goto l684
}
position++
- {
- position683, tokenIndex683 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l683
- }
- goto l684
- l683:
- position, tokenIndex = position683, tokenIndex683
- }
+ goto l683
l684:
- if !_rules[ruleARMVectorRegister]() {
- goto l682
+ position, tokenIndex = position683, tokenIndex683
+ if buffer[position] != rune('R') {
+ goto l678
}
- goto l681
- l682:
- position, tokenIndex = position682, tokenIndex682
+ position++
}
+ l683:
+ goto l655
+ l678:
+ position, tokenIndex = position655, tokenIndex655
{
- position685, tokenIndex685 := position, tokenIndex
- if !_rules[ruleWS]() {
+ position686, tokenIndex686 := position, tokenIndex
+ if buffer[position] != rune('n') {
+ goto l687
+ }
+ position++
+ goto l686
+ l687:
+ position, tokenIndex = position686, tokenIndex686
+ if buffer[position] != rune('N') {
goto l685
}
- goto l686
- l685:
- position, tokenIndex = position685, tokenIndex685
+ position++
}
l686:
- if buffer[position] != rune('}') {
- goto l635
- }
- position++
{
- position687, tokenIndex687 := position, tokenIndex
- if buffer[position] != rune('[') {
- goto l687
- }
- position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l687
- }
- position++
- {
- position689, tokenIndex689 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l689
- }
- position++
- goto l690
- l689:
- position, tokenIndex = position689, tokenIndex689
- }
- l690:
- if buffer[position] != rune(']') {
- goto l687
+ position688, tokenIndex688 := position, tokenIndex
+ if buffer[position] != rune('z') {
+ goto l689
}
position++
goto l688
- l687:
- position, tokenIndex = position687, tokenIndex687
+ l689:
+ position, tokenIndex = position688, tokenIndex688
+ if buffer[position] != rune('Z') {
+ goto l685
+ }
+ position++
}
l688:
- }
- l637:
- add(ruleARMRegister, position636)
- }
- return true
- l635:
- position, tokenIndex = position635, tokenIndex635
- return false
- },
- /* 45 ARMVectorRegister <- <(('p' / 'v' / 'z') [0-9] [0-9]? !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_') ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */
- func() bool {
- position691, tokenIndex691 := position, tokenIndex
- {
- position692 := position
- {
- position693, tokenIndex693 := position, tokenIndex
- if buffer[position] != rune('p') {
+ {
+ position690, tokenIndex690 := position, tokenIndex
+ if buffer[position] != rune('c') {
+ goto l691
+ }
+ position++
+ goto l690
+ l691:
+ position, tokenIndex = position690, tokenIndex690
+ if buffer[position] != rune('C') {
+ goto l685
+ }
+ position++
+ }
+ l690:
+ {
+ position692, tokenIndex692 := position, tokenIndex
+ if buffer[position] != rune('v') {
+ goto l693
+ }
+ position++
+ goto l692
+ l693:
+ position, tokenIndex = position692, tokenIndex692
+ if buffer[position] != rune('V') {
+ goto l685
+ }
+ position++
+ }
+ l692:
+ goto l655
+ l685:
+ position, tokenIndex = position655, tokenIndex655
+ if !_rules[ruleSVE2PredicateRegister]() {
goto l694
}
- position++
- goto l693
+ goto l655
l694:
- position, tokenIndex = position693, tokenIndex693
- if buffer[position] != rune('v') {
+ position, tokenIndex = position655, tokenIndex655
+ if !_rules[ruleARMVectorRegister]() {
goto l695
}
- position++
- goto l693
+ goto l655
l695:
- position, tokenIndex = position693, tokenIndex693
- if buffer[position] != rune('z') {
- goto l691
- }
- position++
- }
- l693:
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l691
- }
- position++
- {
- position696, tokenIndex696 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
+ position, tokenIndex = position655, tokenIndex655
+ if !_rules[ruleSVE2SpecialValue]() {
goto l696
}
- position++
- goto l697
+ goto l655
l696:
- position, tokenIndex = position696, tokenIndex696
- }
- l697:
- {
- position698, tokenIndex698 := position, tokenIndex
+ position, tokenIndex = position655, tokenIndex655
+ if buffer[position] != rune('{') {
+ goto l653
+ }
+ position++
{
- position699, tokenIndex699 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
+ position697, tokenIndex697 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l697
+ }
+ goto l698
+ l697:
+ position, tokenIndex = position697, tokenIndex697
+ }
+ l698:
+ if !_rules[ruleARMVectorRegister]() {
+ goto l653
+ }
+ l699:
+ {
+ position700, tokenIndex700 := position, tokenIndex
+ if buffer[position] != rune(',') {
goto l700
}
position++
+ {
+ position701, tokenIndex701 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l701
+ }
+ goto l702
+ l701:
+ position, tokenIndex = position701, tokenIndex701
+ }
+ l702:
+ if !_rules[ruleARMVectorRegister]() {
+ goto l700
+ }
goto l699
l700:
- position, tokenIndex = position699, tokenIndex699
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l701
- }
- position++
- goto l699
- l701:
- position, tokenIndex = position699, tokenIndex699
- {
- position703, tokenIndex703 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l704
- }
- position++
- goto l703
- l704:
- position, tokenIndex = position703, tokenIndex703
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l702
- }
- position++
- }
- l703:
- goto l699
- l702:
- position, tokenIndex = position699, tokenIndex699
- if buffer[position] != rune('_') {
- goto l698
- }
- position++
+ position, tokenIndex = position700, tokenIndex700
}
- l699:
- goto l691
- l698:
- position, tokenIndex = position698, tokenIndex698
- }
- {
- position705, tokenIndex705 := position, tokenIndex
- if buffer[position] != rune('.') {
- goto l705
+ {
+ position703, tokenIndex703 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l703
+ }
+ goto l704
+ l703:
+ position, tokenIndex = position703, tokenIndex703
+ }
+ l704:
+ if buffer[position] != rune('}') {
+ goto l653
}
position++
- l707:
{
- position708, tokenIndex708 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l708
- }
- position++
- goto l707
- l708:
- position, tokenIndex = position708, tokenIndex708
- }
- {
- position709, tokenIndex709 := position, tokenIndex
- if buffer[position] != rune('b') {
- goto l710
- }
- position++
- goto l709
- l710:
- position, tokenIndex = position709, tokenIndex709
- if buffer[position] != rune('s') {
- goto l711
- }
- position++
- goto l709
- l711:
- position, tokenIndex = position709, tokenIndex709
- if buffer[position] != rune('d') {
- goto l712
- }
- position++
- goto l709
- l712:
- position, tokenIndex = position709, tokenIndex709
- if buffer[position] != rune('h') {
- goto l713
- }
- position++
- goto l709
- l713:
- position, tokenIndex = position709, tokenIndex709
- if buffer[position] != rune('q') {
+ position705, tokenIndex705 := position, tokenIndex
+ if buffer[position] != rune('[') {
goto l705
}
position++
- }
- l709:
- {
- position714, tokenIndex714 := position, tokenIndex
- if buffer[position] != rune('[') {
- goto l714
- }
- position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l714
+ goto l705
}
position++
{
- position716, tokenIndex716 := position, tokenIndex
+ position707, tokenIndex707 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l716
+ goto l707
}
position++
- goto l717
- l716:
- position, tokenIndex = position716, tokenIndex716
+ goto l708
+ l707:
+ position, tokenIndex = position707, tokenIndex707
}
- l717:
+ l708:
if buffer[position] != rune(']') {
- goto l714
+ goto l705
}
position++
- goto l715
- l714:
- position, tokenIndex = position714, tokenIndex714
+ goto l706
+ l705:
+ position, tokenIndex = position705, tokenIndex705
}
- l715:
- goto l706
- l705:
- position, tokenIndex = position705, tokenIndex705
+ l706:
}
- l706:
- add(ruleARMVectorRegister, position692)
+ l655:
+ add(ruleARMRegister, position654)
}
return true
- l691:
- position, tokenIndex = position691, tokenIndex691
+ l653:
+ position, tokenIndex = position653, tokenIndex653
return false
},
- /* 46 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / ('z' / 'Z')))> */
+ /* 46 ARMVectorRegister <- <(('p' / 'v' / 'z') [0-9] [0-9]? !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_') ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */
func() bool {
- position718, tokenIndex718 := position, tokenIndex
+ position709, tokenIndex709 := position, tokenIndex
{
- position719 := position
+ position710 := position
{
- position720, tokenIndex720 := position, tokenIndex
+ position711, tokenIndex711 := position, tokenIndex
if buffer[position] != rune('p') {
- goto l721
+ goto l712
}
position++
- goto l720
- l721:
- position, tokenIndex = position720, tokenIndex720
- if buffer[position] != rune('P') {
- goto l718
+ goto l711
+ l712:
+ position, tokenIndex = position711, tokenIndex711
+ if buffer[position] != rune('v') {
+ goto l713
+ }
+ position++
+ goto l711
+ l713:
+ position, tokenIndex = position711, tokenIndex711
+ if buffer[position] != rune('z') {
+ goto l709
}
position++
}
- l720:
+ l711:
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l718
+ goto l709
}
position++
{
- position722, tokenIndex722 := position, tokenIndex
+ position714, tokenIndex714 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l722
+ goto l714
}
position++
- goto l723
- l722:
- position, tokenIndex = position722, tokenIndex722
+ goto l715
+ l714:
+ position, tokenIndex = position714, tokenIndex714
}
- l723:
- if buffer[position] != rune('/') {
- goto l718
- }
- position++
+ l715:
{
- position724, tokenIndex724 := position, tokenIndex
- if buffer[position] != rune('m') {
- goto l725
+ position716, tokenIndex716 := position, tokenIndex
+ {
+ position717, tokenIndex717 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l718
+ }
+ position++
+ goto l717
+ l718:
+ position, tokenIndex = position717, tokenIndex717
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l719
+ }
+ position++
+ goto l717
+ l719:
+ position, tokenIndex = position717, tokenIndex717
+ {
+ position721, tokenIndex721 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l722
+ }
+ position++
+ goto l721
+ l722:
+ position, tokenIndex = position721, tokenIndex721
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l720
+ }
+ position++
+ }
+ l721:
+ goto l717
+ l720:
+ position, tokenIndex = position717, tokenIndex717
+ if buffer[position] != rune('_') {
+ goto l716
+ }
+ position++
+ }
+ l717:
+ goto l709
+ l716:
+ position, tokenIndex = position716, tokenIndex716
+ }
+ {
+ position723, tokenIndex723 := position, tokenIndex
+ if buffer[position] != rune('.') {
+ goto l723
}
position++
- goto l724
l725:
- position, tokenIndex = position724, tokenIndex724
- if buffer[position] != rune('M') {
- goto l726
+ {
+ position726, tokenIndex726 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l726
+ }
+ position++
+ goto l725
+ l726:
+ position, tokenIndex = position726, tokenIndex726
}
- position++
- goto l724
- l726:
- position, tokenIndex = position724, tokenIndex724
{
position727, tokenIndex727 := position, tokenIndex
- if buffer[position] != rune('z') {
+ if buffer[position] != rune('b') {
goto l728
}
position++
goto l727
l728:
position, tokenIndex = position727, tokenIndex727
- if buffer[position] != rune('Z') {
- goto l718
+ if buffer[position] != rune('s') {
+ goto l729
+ }
+ position++
+ goto l727
+ l729:
+ position, tokenIndex = position727, tokenIndex727
+ if buffer[position] != rune('d') {
+ goto l730
+ }
+ position++
+ goto l727
+ l730:
+ position, tokenIndex = position727, tokenIndex727
+ if buffer[position] != rune('h') {
+ goto l731
+ }
+ position++
+ goto l727
+ l731:
+ position, tokenIndex = position727, tokenIndex727
+ if buffer[position] != rune('q') {
+ goto l723
}
position++
}
l727:
- }
- l724:
- add(ruleSVE2PredicateRegister, position719)
- }
- return true
- l718:
- position, tokenIndex = position718, tokenIndex718
- return false
- },
- /* 47 SVE2SpecialValue <- <(((('p' / 'P') ('o' / 'O') ('w' / 'W') '2') / (('v' / 'V') ('l' / 'L') ('1' / '2' / '3' / '4' / '5' / '6' / '7' / '8') ![0-9]) / (('v' / 'V') ('l' / 'L') '1' '6') / (('v' / 'V') ('l' / 'L') '3' '2') / (('v' / 'V') ('l' / 'L') '6' '4') / (('v' / 'V') ('l' / 'L') '1' '2' '8') / (('v' / 'V') ('l' / 'L') '2' '5' '6') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '3') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '4') / (('a' / 'A') ('l' / 'L') ('l' / 'L'))) !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_'))> */
- func() bool {
- position729, tokenIndex729 := position, tokenIndex
- {
- position730 := position
- {
- position731, tokenIndex731 := position, tokenIndex
{
- position733, tokenIndex733 := position, tokenIndex
- if buffer[position] != rune('p') {
- goto l734
+ position732, tokenIndex732 := position, tokenIndex
+ if buffer[position] != rune('[') {
+ goto l732
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l732
+ }
+ position++
+ {
+ position734, tokenIndex734 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l734
+ }
+ position++
+ goto l735
+ l734:
+ position, tokenIndex = position734, tokenIndex734
+ }
+ l735:
+ if buffer[position] != rune(']') {
+ goto l732
}
position++
goto l733
- l734:
- position, tokenIndex = position733, tokenIndex733
- if buffer[position] != rune('P') {
- goto l732
- }
- position++
+ l732:
+ position, tokenIndex = position732, tokenIndex732
}
l733:
- {
- position735, tokenIndex735 := position, tokenIndex
- if buffer[position] != rune('o') {
- goto l736
- }
- position++
- goto l735
- l736:
- position, tokenIndex = position735, tokenIndex735
- if buffer[position] != rune('O') {
- goto l732
- }
- position++
- }
- l735:
- {
- position737, tokenIndex737 := position, tokenIndex
- if buffer[position] != rune('w') {
- goto l738
- }
- position++
- goto l737
- l738:
- position, tokenIndex = position737, tokenIndex737
- if buffer[position] != rune('W') {
- goto l732
- }
- position++
- }
- l737:
- if buffer[position] != rune('2') {
- goto l732
+ goto l724
+ l723:
+ position, tokenIndex = position723, tokenIndex723
+ }
+ l724:
+ add(ruleARMVectorRegister, position710)
+ }
+ return true
+ l709:
+ position, tokenIndex = position709, tokenIndex709
+ return false
+ },
+ /* 47 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / ('z' / 'Z')))> */
+ func() bool {
+ position736, tokenIndex736 := position, tokenIndex
+ {
+ position737 := position
+ {
+ position738, tokenIndex738 := position, tokenIndex
+ if buffer[position] != rune('p') {
+ goto l739
}
position++
- goto l731
- l732:
- position, tokenIndex = position731, tokenIndex731
- {
- position740, tokenIndex740 := position, tokenIndex
- if buffer[position] != rune('v') {
- goto l741
- }
- position++
+ goto l738
+ l739:
+ position, tokenIndex = position738, tokenIndex738
+ if buffer[position] != rune('P') {
+ goto l736
+ }
+ position++
+ }
+ l738:
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l736
+ }
+ position++
+ {
+ position740, tokenIndex740 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l740
- l741:
- position, tokenIndex = position740, tokenIndex740
- if buffer[position] != rune('V') {
- goto l739
- }
- position++
}
+ position++
+ goto l741
l740:
- {
- position742, tokenIndex742 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l743
- }
- position++
- goto l742
- l743:
- position, tokenIndex = position742, tokenIndex742
- if buffer[position] != rune('L') {
- goto l739
- }
- position++
+ position, tokenIndex = position740, tokenIndex740
+ }
+ l741:
+ if buffer[position] != rune('/') {
+ goto l736
+ }
+ position++
+ {
+ position742, tokenIndex742 := position, tokenIndex
+ if buffer[position] != rune('m') {
+ goto l743
}
- l742:
- {
- position744, tokenIndex744 := position, tokenIndex
- if buffer[position] != rune('1') {
- goto l745
- }
- position++
+ position++
+ goto l742
+ l743:
+ position, tokenIndex = position742, tokenIndex742
+ if buffer[position] != rune('M') {
goto l744
- l745:
- position, tokenIndex = position744, tokenIndex744
- if buffer[position] != rune('2') {
+ }
+ position++
+ goto l742
+ l744:
+ position, tokenIndex = position742, tokenIndex742
+ {
+ position745, tokenIndex745 := position, tokenIndex
+ if buffer[position] != rune('z') {
goto l746
}
position++
- goto l744
+ goto l745
l746:
- position, tokenIndex = position744, tokenIndex744
- if buffer[position] != rune('3') {
- goto l747
- }
- position++
- goto l744
- l747:
- position, tokenIndex = position744, tokenIndex744
- if buffer[position] != rune('4') {
- goto l748
- }
- position++
- goto l744
- l748:
- position, tokenIndex = position744, tokenIndex744
- if buffer[position] != rune('5') {
- goto l749
- }
- position++
- goto l744
- l749:
- position, tokenIndex = position744, tokenIndex744
- if buffer[position] != rune('6') {
- goto l750
- }
- position++
- goto l744
- l750:
- position, tokenIndex = position744, tokenIndex744
- if buffer[position] != rune('7') {
- goto l751
- }
- position++
- goto l744
- l751:
- position, tokenIndex = position744, tokenIndex744
- if buffer[position] != rune('8') {
- goto l739
+ position, tokenIndex = position745, tokenIndex745
+ if buffer[position] != rune('Z') {
+ goto l736
}
position++
}
- l744:
+ l745:
+ }
+ l742:
+ add(ruleSVE2PredicateRegister, position737)
+ }
+ return true
+ l736:
+ position, tokenIndex = position736, tokenIndex736
+ return false
+ },
+ /* 48 SVE2SpecialValue <- <(((('p' / 'P') ('o' / 'O') ('w' / 'W') '2') / (('v' / 'V') ('l' / 'L') ('1' / '2' / '3' / '4' / '5' / '6' / '7' / '8') ![0-9]) / (('v' / 'V') ('l' / 'L') '1' '6') / (('v' / 'V') ('l' / 'L') '3' '2') / (('v' / 'V') ('l' / 'L') '6' '4') / (('v' / 'V') ('l' / 'L') '1' '2' '8') / (('v' / 'V') ('l' / 'L') '2' '5' '6') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '3') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '4') / (('a' / 'A') ('l' / 'L') ('l' / 'L'))) !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_'))> */
+ func() bool {
+ position747, tokenIndex747 := position, tokenIndex
+ {
+ position748 := position
+ {
+ position749, tokenIndex749 := position, tokenIndex
{
- position752, tokenIndex752 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
+ position751, tokenIndex751 := position, tokenIndex
+ if buffer[position] != rune('p') {
goto l752
}
position++
- goto l739
+ goto l751
l752:
- position, tokenIndex = position752, tokenIndex752
+ position, tokenIndex = position751, tokenIndex751
+ if buffer[position] != rune('P') {
+ goto l750
+ }
+ position++
}
- goto l731
- l739:
- position, tokenIndex = position731, tokenIndex731
+ l751:
{
- position754, tokenIndex754 := position, tokenIndex
+ position753, tokenIndex753 := position, tokenIndex
+ if buffer[position] != rune('o') {
+ goto l754
+ }
+ position++
+ goto l753
+ l754:
+ position, tokenIndex = position753, tokenIndex753
+ if buffer[position] != rune('O') {
+ goto l750
+ }
+ position++
+ }
+ l753:
+ {
+ position755, tokenIndex755 := position, tokenIndex
+ if buffer[position] != rune('w') {
+ goto l756
+ }
+ position++
+ goto l755
+ l756:
+ position, tokenIndex = position755, tokenIndex755
+ if buffer[position] != rune('W') {
+ goto l750
+ }
+ position++
+ }
+ l755:
+ if buffer[position] != rune('2') {
+ goto l750
+ }
+ position++
+ goto l749
+ l750:
+ position, tokenIndex = position749, tokenIndex749
+ {
+ position758, tokenIndex758 := position, tokenIndex
if buffer[position] != rune('v') {
- goto l755
+ goto l759
}
position++
- goto l754
- l755:
- position, tokenIndex = position754, tokenIndex754
+ goto l758
+ l759:
+ position, tokenIndex = position758, tokenIndex758
if buffer[position] != rune('V') {
- goto l753
- }
- position++
- }
- l754:
- {
- position756, tokenIndex756 := position, tokenIndex
- if buffer[position] != rune('l') {
goto l757
}
position++
- goto l756
- l757:
- position, tokenIndex = position756, tokenIndex756
- if buffer[position] != rune('L') {
- goto l753
- }
- position++
}
- l756:
- if buffer[position] != rune('1') {
- goto l753
- }
- position++
- if buffer[position] != rune('6') {
- goto l753
- }
- position++
- goto l731
- l753:
- position, tokenIndex = position731, tokenIndex731
- {
- position759, tokenIndex759 := position, tokenIndex
- if buffer[position] != rune('v') {
- goto l760
- }
- position++
- goto l759
- l760:
- position, tokenIndex = position759, tokenIndex759
- if buffer[position] != rune('V') {
- goto l758
- }
- position++
- }
- l759:
- {
- position761, tokenIndex761 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l762
- }
- position++
- goto l761
- l762:
- position, tokenIndex = position761, tokenIndex761
- if buffer[position] != rune('L') {
- goto l758
- }
- position++
- }
- l761:
- if buffer[position] != rune('3') {
- goto l758
- }
- position++
- if buffer[position] != rune('2') {
- goto l758
- }
- position++
- goto l731
l758:
- position, tokenIndex = position731, tokenIndex731
{
- position764, tokenIndex764 := position, tokenIndex
- if buffer[position] != rune('v') {
+ position760, tokenIndex760 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l761
+ }
+ position++
+ goto l760
+ l761:
+ position, tokenIndex = position760, tokenIndex760
+ if buffer[position] != rune('L') {
+ goto l757
+ }
+ position++
+ }
+ l760:
+ {
+ position762, tokenIndex762 := position, tokenIndex
+ if buffer[position] != rune('1') {
+ goto l763
+ }
+ position++
+ goto l762
+ l763:
+ position, tokenIndex = position762, tokenIndex762
+ if buffer[position] != rune('2') {
+ goto l764
+ }
+ position++
+ goto l762
+ l764:
+ position, tokenIndex = position762, tokenIndex762
+ if buffer[position] != rune('3') {
goto l765
}
position++
- goto l764
+ goto l762
l765:
- position, tokenIndex = position764, tokenIndex764
- if buffer[position] != rune('V') {
- goto l763
+ position, tokenIndex = position762, tokenIndex762
+ if buffer[position] != rune('4') {
+ goto l766
}
position++
- }
- l764:
- {
- position766, tokenIndex766 := position, tokenIndex
- if buffer[position] != rune('l') {
+ goto l762
+ l766:
+ position, tokenIndex = position762, tokenIndex762
+ if buffer[position] != rune('5') {
goto l767
}
position++
- goto l766
+ goto l762
l767:
- position, tokenIndex = position766, tokenIndex766
- if buffer[position] != rune('L') {
- goto l763
+ position, tokenIndex = position762, tokenIndex762
+ if buffer[position] != rune('6') {
+ goto l768
+ }
+ position++
+ goto l762
+ l768:
+ position, tokenIndex = position762, tokenIndex762
+ if buffer[position] != rune('7') {
+ goto l769
+ }
+ position++
+ goto l762
+ l769:
+ position, tokenIndex = position762, tokenIndex762
+ if buffer[position] != rune('8') {
+ goto l757
}
position++
}
- l766:
- if buffer[position] != rune('6') {
- goto l763
- }
- position++
- if buffer[position] != rune('4') {
- goto l763
- }
- position++
- goto l731
- l763:
- position, tokenIndex = position731, tokenIndex731
+ l762:
{
- position769, tokenIndex769 := position, tokenIndex
- if buffer[position] != rune('v') {
+ position770, tokenIndex770 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l770
}
position++
- goto l769
+ goto l757
l770:
- position, tokenIndex = position769, tokenIndex769
- if buffer[position] != rune('V') {
- goto l768
- }
- position++
+ position, tokenIndex = position770, tokenIndex770
}
- l769:
+ goto l749
+ l757:
+ position, tokenIndex = position749, tokenIndex749
{
- position771, tokenIndex771 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l772
+ position772, tokenIndex772 := position, tokenIndex
+ if buffer[position] != rune('v') {
+ goto l773
}
position++
- goto l771
- l772:
- position, tokenIndex = position771, tokenIndex771
- if buffer[position] != rune('L') {
- goto l768
+ goto l772
+ l773:
+ position, tokenIndex = position772, tokenIndex772
+ if buffer[position] != rune('V') {
+ goto l771
}
position++
}
- l771:
- if buffer[position] != rune('1') {
- goto l768
- }
- position++
- if buffer[position] != rune('2') {
- goto l768
- }
- position++
- if buffer[position] != rune('8') {
- goto l768
- }
- position++
- goto l731
- l768:
- position, tokenIndex = position731, tokenIndex731
+ l772:
{
position774, tokenIndex774 := position, tokenIndex
- if buffer[position] != rune('v') {
+ if buffer[position] != rune('l') {
goto l775
}
position++
goto l774
l775:
position, tokenIndex = position774, tokenIndex774
- if buffer[position] != rune('V') {
- goto l773
+ if buffer[position] != rune('L') {
+ goto l771
}
position++
}
l774:
- {
- position776, tokenIndex776 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l777
- }
- position++
- goto l776
- l777:
- position, tokenIndex = position776, tokenIndex776
- if buffer[position] != rune('L') {
- goto l773
- }
- position++
- }
- l776:
- if buffer[position] != rune('2') {
- goto l773
- }
- position++
- if buffer[position] != rune('5') {
- goto l773
+ if buffer[position] != rune('1') {
+ goto l771
}
position++
if buffer[position] != rune('6') {
- goto l773
+ goto l771
}
position++
- goto l731
- l773:
- position, tokenIndex = position731, tokenIndex731
+ goto l749
+ l771:
+ position, tokenIndex = position749, tokenIndex749
+ {
+ position777, tokenIndex777 := position, tokenIndex
+ if buffer[position] != rune('v') {
+ goto l778
+ }
+ position++
+ goto l777
+ l778:
+ position, tokenIndex = position777, tokenIndex777
+ if buffer[position] != rune('V') {
+ goto l776
+ }
+ position++
+ }
+ l777:
{
position779, tokenIndex779 := position, tokenIndex
- if buffer[position] != rune('m') {
+ if buffer[position] != rune('l') {
goto l780
}
position++
goto l779
l780:
position, tokenIndex = position779, tokenIndex779
- if buffer[position] != rune('M') {
- goto l778
+ if buffer[position] != rune('L') {
+ goto l776
}
position++
}
l779:
- {
- position781, tokenIndex781 := position, tokenIndex
- if buffer[position] != rune('u') {
- goto l782
- }
- position++
- goto l781
- l782:
- position, tokenIndex = position781, tokenIndex781
- if buffer[position] != rune('U') {
- goto l778
- }
- position++
- }
- l781:
- {
- position783, tokenIndex783 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l784
- }
- position++
- goto l783
- l784:
- position, tokenIndex = position783, tokenIndex783
- if buffer[position] != rune('L') {
- goto l778
- }
- position++
- }
- l783:
if buffer[position] != rune('3') {
- goto l778
+ goto l776
}
position++
- goto l731
- l778:
- position, tokenIndex = position731, tokenIndex731
+ if buffer[position] != rune('2') {
+ goto l776
+ }
+ position++
+ goto l749
+ l776:
+ position, tokenIndex = position749, tokenIndex749
{
- position786, tokenIndex786 := position, tokenIndex
- if buffer[position] != rune('m') {
- goto l787
+ position782, tokenIndex782 := position, tokenIndex
+ if buffer[position] != rune('v') {
+ goto l783
}
position++
- goto l786
- l787:
- position, tokenIndex = position786, tokenIndex786
- if buffer[position] != rune('M') {
- goto l785
+ goto l782
+ l783:
+ position, tokenIndex = position782, tokenIndex782
+ if buffer[position] != rune('V') {
+ goto l781
}
position++
}
- l786:
+ l782:
{
- position788, tokenIndex788 := position, tokenIndex
- if buffer[position] != rune('u') {
- goto l789
- }
- position++
- goto l788
- l789:
- position, tokenIndex = position788, tokenIndex788
- if buffer[position] != rune('U') {
- goto l785
- }
- position++
- }
- l788:
- {
- position790, tokenIndex790 := position, tokenIndex
+ position784, tokenIndex784 := position, tokenIndex
if buffer[position] != rune('l') {
- goto l791
- }
- position++
- goto l790
- l791:
- position, tokenIndex = position790, tokenIndex790
- if buffer[position] != rune('L') {
goto l785
}
position++
+ goto l784
+ l785:
+ position, tokenIndex = position784, tokenIndex784
+ if buffer[position] != rune('L') {
+ goto l781
+ }
+ position++
}
- l790:
- if buffer[position] != rune('4') {
- goto l785
+ l784:
+ if buffer[position] != rune('6') {
+ goto l781
}
position++
- goto l731
- l785:
- position, tokenIndex = position731, tokenIndex731
+ if buffer[position] != rune('4') {
+ goto l781
+ }
+ position++
+ goto l749
+ l781:
+ position, tokenIndex = position749, tokenIndex749
+ {
+ position787, tokenIndex787 := position, tokenIndex
+ if buffer[position] != rune('v') {
+ goto l788
+ }
+ position++
+ goto l787
+ l788:
+ position, tokenIndex = position787, tokenIndex787
+ if buffer[position] != rune('V') {
+ goto l786
+ }
+ position++
+ }
+ l787:
+ {
+ position789, tokenIndex789 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l790
+ }
+ position++
+ goto l789
+ l790:
+ position, tokenIndex = position789, tokenIndex789
+ if buffer[position] != rune('L') {
+ goto l786
+ }
+ position++
+ }
+ l789:
+ if buffer[position] != rune('1') {
+ goto l786
+ }
+ position++
+ if buffer[position] != rune('2') {
+ goto l786
+ }
+ position++
+ if buffer[position] != rune('8') {
+ goto l786
+ }
+ position++
+ goto l749
+ l786:
+ position, tokenIndex = position749, tokenIndex749
{
position792, tokenIndex792 := position, tokenIndex
- if buffer[position] != rune('a') {
+ if buffer[position] != rune('v') {
goto l793
}
position++
goto l792
l793:
position, tokenIndex = position792, tokenIndex792
- if buffer[position] != rune('A') {
- goto l729
+ if buffer[position] != rune('V') {
+ goto l791
}
position++
}
@@ -6359,231 +6342,258 @@
l795:
position, tokenIndex = position794, tokenIndex794
if buffer[position] != rune('L') {
- goto l729
+ goto l791
}
position++
}
l794:
+ if buffer[position] != rune('2') {
+ goto l791
+ }
+ position++
+ if buffer[position] != rune('5') {
+ goto l791
+ }
+ position++
+ if buffer[position] != rune('6') {
+ goto l791
+ }
+ position++
+ goto l749
+ l791:
+ position, tokenIndex = position749, tokenIndex749
{
- position796, tokenIndex796 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l797
+ position797, tokenIndex797 := position, tokenIndex
+ if buffer[position] != rune('m') {
+ goto l798
}
position++
- goto l796
- l797:
- position, tokenIndex = position796, tokenIndex796
- if buffer[position] != rune('L') {
- goto l729
+ goto l797
+ l798:
+ position, tokenIndex = position797, tokenIndex797
+ if buffer[position] != rune('M') {
+ goto l796
}
position++
}
- l796:
- }
- l731:
- {
- position798, tokenIndex798 := position, tokenIndex
+ l797:
{
position799, tokenIndex799 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
+ if buffer[position] != rune('u') {
goto l800
}
position++
goto l799
l800:
position, tokenIndex = position799, tokenIndex799
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l801
- }
- position++
- goto l799
- l801:
- position, tokenIndex = position799, tokenIndex799
- {
- position803, tokenIndex803 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l804
- }
- position++
- goto l803
- l804:
- position, tokenIndex = position803, tokenIndex803
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l802
- }
- position++
- }
- l803:
- goto l799
- l802:
- position, tokenIndex = position799, tokenIndex799
- if buffer[position] != rune('_') {
- goto l798
+ if buffer[position] != rune('U') {
+ goto l796
}
position++
}
l799:
- goto l729
- l798:
- position, tokenIndex = position798, tokenIndex798
- }
- add(ruleSVE2SpecialValue, position730)
- }
- return true
- l729:
- position, tokenIndex = position729, tokenIndex729
- return false
- },
- /* 48 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
- func() bool {
- position805, tokenIndex805 := position, tokenIndex
- {
- position806 := position
- {
- position807, tokenIndex807 := position, tokenIndex
- if !_rules[ruleSymbolRef]() {
- goto l808
- }
- if !_rules[ruleBaseIndexScale]() {
- goto l808
- }
- goto l807
- l808:
- position, tokenIndex = position807, tokenIndex807
- if !_rules[ruleSymbolRef]() {
- goto l809
- }
- goto l807
- l809:
- position, tokenIndex = position807, tokenIndex807
- if !_rules[ruleLow12BitsSymbolRef]() {
- goto l810
- }
- goto l807
- l810:
- position, tokenIndex = position807, tokenIndex807
- l812:
{
- position813, tokenIndex813 := position, tokenIndex
- if !_rules[ruleOffset]() {
+ position801, tokenIndex801 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l802
+ }
+ position++
+ goto l801
+ l802:
+ position, tokenIndex = position801, tokenIndex801
+ if buffer[position] != rune('L') {
+ goto l796
+ }
+ position++
+ }
+ l801:
+ if buffer[position] != rune('3') {
+ goto l796
+ }
+ position++
+ goto l749
+ l796:
+ position, tokenIndex = position749, tokenIndex749
+ {
+ position804, tokenIndex804 := position, tokenIndex
+ if buffer[position] != rune('m') {
+ goto l805
+ }
+ position++
+ goto l804
+ l805:
+ position, tokenIndex = position804, tokenIndex804
+ if buffer[position] != rune('M') {
+ goto l803
+ }
+ position++
+ }
+ l804:
+ {
+ position806, tokenIndex806 := position, tokenIndex
+ if buffer[position] != rune('u') {
+ goto l807
+ }
+ position++
+ goto l806
+ l807:
+ position, tokenIndex = position806, tokenIndex806
+ if buffer[position] != rune('U') {
+ goto l803
+ }
+ position++
+ }
+ l806:
+ {
+ position808, tokenIndex808 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l809
+ }
+ position++
+ goto l808
+ l809:
+ position, tokenIndex = position808, tokenIndex808
+ if buffer[position] != rune('L') {
+ goto l803
+ }
+ position++
+ }
+ l808:
+ if buffer[position] != rune('4') {
+ goto l803
+ }
+ position++
+ goto l749
+ l803:
+ position, tokenIndex = position749, tokenIndex749
+ {
+ position810, tokenIndex810 := position, tokenIndex
+ if buffer[position] != rune('a') {
+ goto l811
+ }
+ position++
+ goto l810
+ l811:
+ position, tokenIndex = position810, tokenIndex810
+ if buffer[position] != rune('A') {
+ goto l747
+ }
+ position++
+ }
+ l810:
+ {
+ position812, tokenIndex812 := position, tokenIndex
+ if buffer[position] != rune('l') {
goto l813
}
+ position++
goto l812
l813:
- position, tokenIndex = position813, tokenIndex813
+ position, tokenIndex = position812, tokenIndex812
+ if buffer[position] != rune('L') {
+ goto l747
+ }
+ position++
}
- if !_rules[ruleBaseIndexScale]() {
- goto l811
- }
- goto l807
- l811:
- position, tokenIndex = position807, tokenIndex807
- if !_rules[ruleSegmentRegister]() {
+ l812:
+ {
+ position814, tokenIndex814 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l815
+ }
+ position++
goto l814
+ l815:
+ position, tokenIndex = position814, tokenIndex814
+ if buffer[position] != rune('L') {
+ goto l747
+ }
+ position++
}
- if !_rules[ruleOffset]() {
- goto l814
- }
- if !_rules[ruleBaseIndexScale]() {
- goto l814
- }
- goto l807
l814:
- position, tokenIndex = position807, tokenIndex807
- if !_rules[ruleSegmentRegister]() {
- goto l815
- }
- if !_rules[ruleBaseIndexScale]() {
- goto l815
- }
- goto l807
- l815:
- position, tokenIndex = position807, tokenIndex807
- if !_rules[ruleSegmentRegister]() {
- goto l816
- }
- if !_rules[ruleOffset]() {
- goto l816
- }
- goto l807
- l816:
- position, tokenIndex = position807, tokenIndex807
- if !_rules[ruleARMBaseIndexScale]() {
- goto l817
- }
- goto l807
- l817:
- position, tokenIndex = position807, tokenIndex807
- if !_rules[ruleBaseIndexScale]() {
- goto l805
- }
}
- l807:
- add(ruleMemoryRef, position806)
+ l749:
+ {
+ position816, tokenIndex816 := position, tokenIndex
+ {
+ position817, tokenIndex817 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l818
+ }
+ position++
+ goto l817
+ l818:
+ position, tokenIndex = position817, tokenIndex817
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l819
+ }
+ position++
+ goto l817
+ l819:
+ position, tokenIndex = position817, tokenIndex817
+ {
+ position821, tokenIndex821 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l822
+ }
+ position++
+ goto l821
+ l822:
+ position, tokenIndex = position821, tokenIndex821
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l820
+ }
+ position++
+ }
+ l821:
+ goto l817
+ l820:
+ position, tokenIndex = position817, tokenIndex817
+ if buffer[position] != rune('_') {
+ goto l816
+ }
+ position++
+ }
+ l817:
+ goto l747
+ l816:
+ position, tokenIndex = position816, tokenIndex816
+ }
+ add(ruleSVE2SpecialValue, position748)
}
return true
- l805:
- position, tokenIndex = position805, tokenIndex805
+ l747:
+ position, tokenIndex = position747, tokenIndex747
return false
},
- /* 49 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
+ /* 49 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
func() bool {
- position818, tokenIndex818 := position, tokenIndex
+ position823, tokenIndex823 := position, tokenIndex
{
- position819 := position
+ position824 := position
{
- position820, tokenIndex820 := position, tokenIndex
- l822:
- {
- position823, tokenIndex823 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l823
- }
- goto l822
- l823:
- position, tokenIndex = position823, tokenIndex823
+ position825, tokenIndex825 := position, tokenIndex
+ if !_rules[ruleSymbolRef]() {
+ goto l826
}
- if buffer[position] != rune('+') {
- goto l820
+ if !_rules[ruleBaseIndexScale]() {
+ goto l826
}
- position++
- goto l821
- l820:
- position, tokenIndex = position820, tokenIndex820
- }
- l821:
- {
- position824, tokenIndex824 := position, tokenIndex
- if !_rules[ruleLocalSymbol]() {
- goto l825
- }
- goto l824
- l825:
- position, tokenIndex = position824, tokenIndex824
- if !_rules[ruleSymbolName]() {
- goto l818
- }
- }
- l824:
- l826:
- {
- position827, tokenIndex827 := position, tokenIndex
- if !_rules[ruleOffset]() {
+ goto l825
+ l826:
+ position, tokenIndex = position825, tokenIndex825
+ if !_rules[ruleSymbolRef]() {
goto l827
}
- goto l826
+ goto l825
l827:
- position, tokenIndex = position827, tokenIndex827
- }
- {
- position828, tokenIndex828 := position, tokenIndex
- if buffer[position] != rune('@') {
+ position, tokenIndex = position825, tokenIndex825
+ if !_rules[ruleLow12BitsSymbolRef]() {
goto l828
}
- position++
- if !_rules[ruleSection]() {
- goto l828
- }
+ goto l825
+ l828:
+ position, tokenIndex = position825, tokenIndex825
l830:
{
position831, tokenIndex831 := position, tokenIndex
@@ -6594,451 +6604,421 @@
l831:
position, tokenIndex = position831, tokenIndex831
}
- goto l829
- l828:
- position, tokenIndex = position828, tokenIndex828
- }
- l829:
- add(ruleSymbolRef, position819)
- }
- return true
- l818:
- position, tokenIndex = position818, tokenIndex818
- return false
- },
- /* 50 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
- func() bool {
- position832, tokenIndex832 := position, tokenIndex
- {
- position833 := position
- if buffer[position] != rune(':') {
- goto l832
- }
- position++
- {
- position834, tokenIndex834 := position, tokenIndex
- if buffer[position] != rune('l') {
+ if !_rules[ruleBaseIndexScale]() {
+ goto l829
+ }
+ goto l825
+ l829:
+ position, tokenIndex = position825, tokenIndex825
+ if !_rules[ruleSegmentRegister]() {
+ goto l832
+ }
+ if !_rules[ruleOffset]() {
+ goto l832
+ }
+ if !_rules[ruleBaseIndexScale]() {
+ goto l832
+ }
+ goto l825
+ l832:
+ position, tokenIndex = position825, tokenIndex825
+ if !_rules[ruleSegmentRegister]() {
+ goto l833
+ }
+ if !_rules[ruleBaseIndexScale]() {
+ goto l833
+ }
+ goto l825
+ l833:
+ position, tokenIndex = position825, tokenIndex825
+ if !_rules[ruleSegmentRegister]() {
+ goto l834
+ }
+ if !_rules[ruleOffset]() {
+ goto l834
+ }
+ goto l825
+ l834:
+ position, tokenIndex = position825, tokenIndex825
+ if !_rules[ruleARMBaseIndexScale]() {
goto l835
}
- position++
- goto l834
+ goto l825
l835:
- position, tokenIndex = position834, tokenIndex834
- if buffer[position] != rune('L') {
- goto l832
- }
- position++
- }
- l834:
- {
- position836, tokenIndex836 := position, tokenIndex
- if buffer[position] != rune('o') {
- goto l837
- }
- position++
- goto l836
- l837:
- position, tokenIndex = position836, tokenIndex836
- if buffer[position] != rune('O') {
- goto l832
- }
- position++
- }
- l836:
- if buffer[position] != rune('1') {
- goto l832
- }
- position++
- if buffer[position] != rune('2') {
- goto l832
- }
- position++
- if buffer[position] != rune(':') {
- goto l832
- }
- position++
- {
- position838, tokenIndex838 := position, tokenIndex
- if !_rules[ruleLocalSymbol]() {
- goto l839
- }
- goto l838
- l839:
- position, tokenIndex = position838, tokenIndex838
- if !_rules[ruleSymbolName]() {
- goto l832
+ position, tokenIndex = position825, tokenIndex825
+ if !_rules[ruleBaseIndexScale]() {
+ goto l823
}
}
- l838:
- {
- position840, tokenIndex840 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l840
- }
- goto l841
- l840:
- position, tokenIndex = position840, tokenIndex840
- }
- l841:
- add(ruleLow12BitsSymbolRef, position833)
+ l825:
+ add(ruleMemoryRef, position824)
}
return true
- l832:
- position, tokenIndex = position832, tokenIndex832
+ l823:
+ position, tokenIndex = position823, tokenIndex823
return false
},
- /* 51 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
+ /* 50 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
func() bool {
- position842, tokenIndex842 := position, tokenIndex
+ position836, tokenIndex836 := position, tokenIndex
{
- position843 := position
- if buffer[position] != rune('[') {
- goto l842
- }
- position++
- if !_rules[ruleARMRegister]() {
- goto l842
- }
+ position837 := position
{
- position844, tokenIndex844 := position, tokenIndex
- if buffer[position] != rune(',') {
- goto l844
+ position838, tokenIndex838 := position, tokenIndex
+ l840:
+ {
+ position841, tokenIndex841 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l841
+ }
+ goto l840
+ l841:
+ position, tokenIndex = position841, tokenIndex841
+ }
+ if buffer[position] != rune('+') {
+ goto l838
}
position++
- {
- position846, tokenIndex846 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l846
- }
- goto l847
- l846:
- position, tokenIndex = position846, tokenIndex846
+ goto l839
+ l838:
+ position, tokenIndex = position838, tokenIndex838
+ }
+ l839:
+ {
+ position842, tokenIndex842 := position, tokenIndex
+ if !_rules[ruleLocalSymbol]() {
+ goto l843
}
- l847:
- {
- position848, tokenIndex848 := position, tokenIndex
- if buffer[position] != rune('#') {
- goto l849
- }
- position++
- if !_rules[ruleOffset]() {
- goto l849
- }
- {
- position850, tokenIndex850 := position, tokenIndex
- {
- position852, tokenIndex852 := position, tokenIndex
- if buffer[position] != rune('*') {
- goto l853
- }
- position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l853
- }
- position++
- l854:
- {
- position855, tokenIndex855 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l855
- }
- position++
- goto l854
- l855:
- position, tokenIndex = position855, tokenIndex855
- }
- goto l852
- l853:
- position, tokenIndex = position852, tokenIndex852
- if buffer[position] != rune('*') {
- goto l856
- }
- position++
- if buffer[position] != rune('(') {
- goto l856
- }
- position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l856
- }
- position++
- l857:
- {
- position858, tokenIndex858 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l858
- }
- position++
- goto l857
- l858:
- position, tokenIndex = position858, tokenIndex858
- }
- if !_rules[ruleOperator]() {
- goto l856
- }
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l856
- }
- position++
- l859:
- {
- position860, tokenIndex860 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l860
- }
- position++
- goto l859
- l860:
- position, tokenIndex = position860, tokenIndex860
- }
- if buffer[position] != rune(')') {
- goto l856
- }
- position++
- goto l852
- l856:
- position, tokenIndex = position852, tokenIndex852
- l861:
- {
- position862, tokenIndex862 := position, tokenIndex
- if buffer[position] != rune('+') {
- goto l862
- }
- position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l862
- }
- position++
- l863:
- {
- position864, tokenIndex864 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l864
- }
- position++
- goto l863
- l864:
- position, tokenIndex = position864, tokenIndex864
- }
- goto l861
- l862:
- position, tokenIndex = position862, tokenIndex862
- }
- }
- l852:
- goto l851
-
- position, tokenIndex = position850, tokenIndex850
- }
- l851:
- goto l848
- l849:
- position, tokenIndex = position848, tokenIndex848
- if !_rules[ruleARMGOTLow12]() {
- goto l865
- }
- goto l848
- l865:
- position, tokenIndex = position848, tokenIndex848
- if !_rules[ruleLow12BitsSymbolRef]() {
- goto l866
- }
- goto l848
- l866:
- position, tokenIndex = position848, tokenIndex848
- if !_rules[ruleARMRegister]() {
- goto l844
- }
+ goto l842
+ l843:
+ position, tokenIndex = position842, tokenIndex842
+ if !_rules[ruleSymbolName]() {
+ goto l836
+ }
+ }
+ l842:
+ l844:
+ {
+ position845, tokenIndex845 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l845
+ }
+ goto l844
+ l845:
+ position, tokenIndex = position845, tokenIndex845
+ }
+ {
+ position846, tokenIndex846 := position, tokenIndex
+ if buffer[position] != rune('@') {
+ goto l846
+ }
+ position++
+ if !_rules[ruleSection]() {
+ goto l846
}
l848:
{
- position867, tokenIndex867 := position, tokenIndex
- if buffer[position] != rune(',') {
- goto l867
+ position849, tokenIndex849 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l849
}
- position++
- {
- position869, tokenIndex869 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l869
- }
- goto l870
- l869:
- position, tokenIndex = position869, tokenIndex869
- }
- l870:
- if !_rules[ruleARMConstantTweak]() {
- goto l867
- }
- goto l868
- l867:
- position, tokenIndex = position867, tokenIndex867
+ goto l848
+ l849:
+ position, tokenIndex = position849, tokenIndex849
}
- l868:
- goto l845
- l844:
- position, tokenIndex = position844, tokenIndex844
+ goto l847
+ l846:
+ position, tokenIndex = position846, tokenIndex846
}
- l845:
- if buffer[position] != rune(']') {
- goto l842
- }
- position++
- {
- position871, tokenIndex871 := position, tokenIndex
- if !_rules[ruleARMPostincrement]() {
- goto l871
- }
- goto l872
- l871:
- position, tokenIndex = position871, tokenIndex871
- }
- l872:
- add(ruleARMBaseIndexScale, position843)
+ l847:
+ add(ruleSymbolRef, position837)
}
return true
- l842:
- position, tokenIndex = position842, tokenIndex842
+ l836:
+ position, tokenIndex = position836, tokenIndex836
return false
},
- /* 52 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
+ /* 51 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
func() bool {
- position873, tokenIndex873 := position, tokenIndex
+ position850, tokenIndex850 := position, tokenIndex
{
- position874 := position
+ position851 := position
if buffer[position] != rune(':') {
- goto l873
+ goto l850
}
position++
{
- position875, tokenIndex875 := position, tokenIndex
- if buffer[position] != rune('g') {
- goto l876
- }
- position++
- goto l875
- l876:
- position, tokenIndex = position875, tokenIndex875
- if buffer[position] != rune('G') {
- goto l873
- }
- position++
- }
- l875:
- {
- position877, tokenIndex877 := position, tokenIndex
- if buffer[position] != rune('o') {
- goto l878
- }
- position++
- goto l877
- l878:
- position, tokenIndex = position877, tokenIndex877
- if buffer[position] != rune('O') {
- goto l873
- }
- position++
- }
- l877:
- {
- position879, tokenIndex879 := position, tokenIndex
- if buffer[position] != rune('t') {
- goto l880
- }
- position++
- goto l879
- l880:
- position, tokenIndex = position879, tokenIndex879
- if buffer[position] != rune('T') {
- goto l873
- }
- position++
- }
- l879:
- if buffer[position] != rune('_') {
- goto l873
- }
- position++
- {
- position881, tokenIndex881 := position, tokenIndex
+ position852, tokenIndex852 := position, tokenIndex
if buffer[position] != rune('l') {
- goto l882
+ goto l853
}
position++
- goto l881
- l882:
- position, tokenIndex = position881, tokenIndex881
+ goto l852
+ l853:
+ position, tokenIndex = position852, tokenIndex852
if buffer[position] != rune('L') {
- goto l873
+ goto l850
}
position++
}
- l881:
+ l852:
{
- position883, tokenIndex883 := position, tokenIndex
+ position854, tokenIndex854 := position, tokenIndex
if buffer[position] != rune('o') {
- goto l884
+ goto l855
}
position++
- goto l883
- l884:
- position, tokenIndex = position883, tokenIndex883
+ goto l854
+ l855:
+ position, tokenIndex = position854, tokenIndex854
if buffer[position] != rune('O') {
- goto l873
+ goto l850
}
position++
}
- l883:
+ l854:
if buffer[position] != rune('1') {
- goto l873
+ goto l850
}
position++
if buffer[position] != rune('2') {
- goto l873
+ goto l850
}
position++
if buffer[position] != rune(':') {
- goto l873
+ goto l850
}
position++
- if !_rules[ruleSymbolName]() {
- goto l873
+ {
+ position856, tokenIndex856 := position, tokenIndex
+ if !_rules[ruleLocalSymbol]() {
+ goto l857
+ }
+ goto l856
+ l857:
+ position, tokenIndex = position856, tokenIndex856
+ if !_rules[ruleSymbolName]() {
+ goto l850
+ }
}
- add(ruleARMGOTLow12, position874)
+ l856:
+ {
+ position858, tokenIndex858 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l858
+ }
+ goto l859
+ l858:
+ position, tokenIndex = position858, tokenIndex858
+ }
+ l859:
+ add(ruleLow12BitsSymbolRef, position851)
}
return true
- l873:
- position, tokenIndex = position873, tokenIndex873
+ l850:
+ position, tokenIndex = position850, tokenIndex850
return false
},
- /* 53 ARMPostincrement <- <'!'> */
+ /* 52 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
func() bool {
- position885, tokenIndex885 := position, tokenIndex
+ position860, tokenIndex860 := position, tokenIndex
{
- position886 := position
- if buffer[position] != rune('!') {
- goto l885
+ position861 := position
+ if buffer[position] != rune('[') {
+ goto l860
}
position++
- add(ruleARMPostincrement, position886)
- }
- return true
- l885:
- position, tokenIndex = position885, tokenIndex885
- return false
- },
- /* 54 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
- func() bool {
- position887, tokenIndex887 := position, tokenIndex
- {
- position888 := position
- if buffer[position] != rune('(') {
- goto l887
+ if !_rules[ruleARMRegister]() {
+ goto l860
+ }
+ {
+ position862, tokenIndex862 := position, tokenIndex
+ if buffer[position] != rune(',') {
+ goto l862
+ }
+ position++
+ {
+ position864, tokenIndex864 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l864
+ }
+ goto l865
+ l864:
+ position, tokenIndex = position864, tokenIndex864
+ }
+ l865:
+ {
+ position866, tokenIndex866 := position, tokenIndex
+ if buffer[position] != rune('#') {
+ goto l867
+ }
+ position++
+ if !_rules[ruleOffset]() {
+ goto l867
+ }
+ {
+ position868, tokenIndex868 := position, tokenIndex
+ {
+ position870, tokenIndex870 := position, tokenIndex
+ if buffer[position] != rune('*') {
+ goto l871
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l871
+ }
+ position++
+ l872:
+ {
+ position873, tokenIndex873 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l873
+ }
+ position++
+ goto l872
+ l873:
+ position, tokenIndex = position873, tokenIndex873
+ }
+ goto l870
+ l871:
+ position, tokenIndex = position870, tokenIndex870
+ if buffer[position] != rune('*') {
+ goto l874
+ }
+ position++
+ if buffer[position] != rune('(') {
+ goto l874
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l874
+ }
+ position++
+ l875:
+ {
+ position876, tokenIndex876 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l876
+ }
+ position++
+ goto l875
+ l876:
+ position, tokenIndex = position876, tokenIndex876
+ }
+ if !_rules[ruleOperator]() {
+ goto l874
+ }
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l874
+ }
+ position++
+ l877:
+ {
+ position878, tokenIndex878 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l878
+ }
+ position++
+ goto l877
+ l878:
+ position, tokenIndex = position878, tokenIndex878
+ }
+ if buffer[position] != rune(')') {
+ goto l874
+ }
+ position++
+ goto l870
+ l874:
+ position, tokenIndex = position870, tokenIndex870
+ l879:
+ {
+ position880, tokenIndex880 := position, tokenIndex
+ if buffer[position] != rune('+') {
+ goto l880
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l880
+ }
+ position++
+ l881:
+ {
+ position882, tokenIndex882 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l882
+ }
+ position++
+ goto l881
+ l882:
+ position, tokenIndex = position882, tokenIndex882
+ }
+ goto l879
+ l880:
+ position, tokenIndex = position880, tokenIndex880
+ }
+ }
+ l870:
+ goto l869
+
+ position, tokenIndex = position868, tokenIndex868
+ }
+ l869:
+ goto l866
+ l867:
+ position, tokenIndex = position866, tokenIndex866
+ if !_rules[ruleARMGOTLow12]() {
+ goto l883
+ }
+ goto l866
+ l883:
+ position, tokenIndex = position866, tokenIndex866
+ if !_rules[ruleLow12BitsSymbolRef]() {
+ goto l884
+ }
+ goto l866
+ l884:
+ position, tokenIndex = position866, tokenIndex866
+ if !_rules[ruleARMRegister]() {
+ goto l862
+ }
+ }
+ l866:
+ {
+ position885, tokenIndex885 := position, tokenIndex
+ if buffer[position] != rune(',') {
+ goto l885
+ }
+ position++
+ {
+ position887, tokenIndex887 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l887
+ }
+ goto l888
+ l887:
+ position, tokenIndex = position887, tokenIndex887
+ }
+ l888:
+ if !_rules[ruleARMConstantTweak]() {
+ goto l885
+ }
+ goto l886
+ l885:
+ position, tokenIndex = position885, tokenIndex885
+ }
+ l886:
+ goto l863
+ l862:
+ position, tokenIndex = position862, tokenIndex862
+ }
+ l863:
+ if buffer[position] != rune(']') {
+ goto l860
}
position++
{
position889, tokenIndex889 := position, tokenIndex
- if !_rules[ruleRegisterOrConstant]() {
+ if !_rules[ruleARMPostincrement]() {
goto l889
}
goto l890
@@ -7046,125 +7026,163 @@
position, tokenIndex = position889, tokenIndex889
}
l890:
- {
- position891, tokenIndex891 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l891
- }
- goto l892
- l891:
- position, tokenIndex = position891, tokenIndex891
- }
- l892:
- {
- position893, tokenIndex893 := position, tokenIndex
- if buffer[position] != rune(',') {
- goto l893
- }
- position++
- {
- position895, tokenIndex895 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l895
- }
- goto l896
- l895:
- position, tokenIndex = position895, tokenIndex895
- }
- l896:
- if !_rules[ruleRegisterOrConstant]() {
- goto l893
- }
- {
- position897, tokenIndex897 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l897
- }
- goto l898
- l897:
- position, tokenIndex = position897, tokenIndex897
- }
- l898:
- {
- position899, tokenIndex899 := position, tokenIndex
- if buffer[position] != rune(',') {
- goto l899
- }
- position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l899
- }
- position++
- l901:
- {
- position902, tokenIndex902 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l902
- }
- position++
- goto l901
- l902:
- position, tokenIndex = position902, tokenIndex902
- }
- goto l900
- l899:
- position, tokenIndex = position899, tokenIndex899
- }
- l900:
- goto l894
- l893:
- position, tokenIndex = position893, tokenIndex893
- }
- l894:
- if buffer[position] != rune(')') {
- goto l887
- }
- position++
- add(ruleBaseIndexScale, position888)
+ add(ruleARMBaseIndexScale, position861)
}
return true
- l887:
- position, tokenIndex = position887, tokenIndex887
+ l860:
+ position, tokenIndex = position860, tokenIndex860
return false
},
- /* 55 Operator <- <('+' / '-')> */
+ /* 53 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
+ func() bool {
+ position891, tokenIndex891 := position, tokenIndex
+ {
+ position892 := position
+ if buffer[position] != rune(':') {
+ goto l891
+ }
+ position++
+ {
+ position893, tokenIndex893 := position, tokenIndex
+ if buffer[position] != rune('g') {
+ goto l894
+ }
+ position++
+ goto l893
+ l894:
+ position, tokenIndex = position893, tokenIndex893
+ if buffer[position] != rune('G') {
+ goto l891
+ }
+ position++
+ }
+ l893:
+ {
+ position895, tokenIndex895 := position, tokenIndex
+ if buffer[position] != rune('o') {
+ goto l896
+ }
+ position++
+ goto l895
+ l896:
+ position, tokenIndex = position895, tokenIndex895
+ if buffer[position] != rune('O') {
+ goto l891
+ }
+ position++
+ }
+ l895:
+ {
+ position897, tokenIndex897 := position, tokenIndex
+ if buffer[position] != rune('t') {
+ goto l898
+ }
+ position++
+ goto l897
+ l898:
+ position, tokenIndex = position897, tokenIndex897
+ if buffer[position] != rune('T') {
+ goto l891
+ }
+ position++
+ }
+ l897:
+ if buffer[position] != rune('_') {
+ goto l891
+ }
+ position++
+ {
+ position899, tokenIndex899 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l900
+ }
+ position++
+ goto l899
+ l900:
+ position, tokenIndex = position899, tokenIndex899
+ if buffer[position] != rune('L') {
+ goto l891
+ }
+ position++
+ }
+ l899:
+ {
+ position901, tokenIndex901 := position, tokenIndex
+ if buffer[position] != rune('o') {
+ goto l902
+ }
+ position++
+ goto l901
+ l902:
+ position, tokenIndex = position901, tokenIndex901
+ if buffer[position] != rune('O') {
+ goto l891
+ }
+ position++
+ }
+ l901:
+ if buffer[position] != rune('1') {
+ goto l891
+ }
+ position++
+ if buffer[position] != rune('2') {
+ goto l891
+ }
+ position++
+ if buffer[position] != rune(':') {
+ goto l891
+ }
+ position++
+ if !_rules[ruleSymbolName]() {
+ goto l891
+ }
+ add(ruleARMGOTLow12, position892)
+ }
+ return true
+ l891:
+ position, tokenIndex = position891, tokenIndex891
+ return false
+ },
+ /* 54 ARMPostincrement <- <'!'> */
func() bool {
position903, tokenIndex903 := position, tokenIndex
{
position904 := position
- {
- position905, tokenIndex905 := position, tokenIndex
- if buffer[position] != rune('+') {
- goto l906
- }
- position++
- goto l905
- l906:
- position, tokenIndex = position905, tokenIndex905
- if buffer[position] != rune('-') {
- goto l903
- }
- position++
+ if buffer[position] != rune('!') {
+ goto l903
}
- l905:
- add(ruleOperator, position904)
+ position++
+ add(ruleARMPostincrement, position904)
}
return true
l903:
position, tokenIndex = position903, tokenIndex903
return false
},
- /* 56 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
+ /* 55 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
func() bool {
- position907, tokenIndex907 := position, tokenIndex
+ position905, tokenIndex905 := position, tokenIndex
{
- position908 := position
+ position906 := position
+ if buffer[position] != rune('(') {
+ goto l905
+ }
+ position++
+ {
+ position907, tokenIndex907 := position, tokenIndex
+ if !_rules[ruleRegisterOrConstant]() {
+ goto l907
+ }
+ goto l908
+ l907:
+ position, tokenIndex = position907, tokenIndex907
+ }
+ l908:
{
position909, tokenIndex909 := position, tokenIndex
- if buffer[position] != rune('+') {
+ if !_rules[ruleWS]() {
goto l909
}
- position++
goto l910
l909:
position, tokenIndex = position909, tokenIndex909
@@ -7172,295 +7190,409 @@
l910:
{
position911, tokenIndex911 := position, tokenIndex
- if buffer[position] != rune('-') {
+ if buffer[position] != rune(',') {
goto l911
}
position++
+ {
+ position913, tokenIndex913 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l913
+ }
+ goto l914
+ l913:
+ position, tokenIndex = position913, tokenIndex913
+ }
+ l914:
+ if !_rules[ruleRegisterOrConstant]() {
+ goto l911
+ }
+ {
+ position915, tokenIndex915 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l915
+ }
+ goto l916
+ l915:
+ position, tokenIndex = position915, tokenIndex915
+ }
+ l916:
+ {
+ position917, tokenIndex917 := position, tokenIndex
+ if buffer[position] != rune(',') {
+ goto l917
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l917
+ }
+ position++
+ l919:
+ {
+ position920, tokenIndex920 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l920
+ }
+ position++
+ goto l919
+ l920:
+ position, tokenIndex = position920, tokenIndex920
+ }
+ goto l918
+ l917:
+ position, tokenIndex = position917, tokenIndex917
+ }
+ l918:
goto l912
l911:
position, tokenIndex = position911, tokenIndex911
}
l912:
- {
- position913, tokenIndex913 := position, tokenIndex
- if buffer[position] != rune('0') {
- goto l914
- }
- position++
- {
- position915, tokenIndex915 := position, tokenIndex
- if buffer[position] != rune('b') {
- goto l916
- }
- position++
- goto l915
- l916:
- position, tokenIndex = position915, tokenIndex915
- if buffer[position] != rune('B') {
- goto l914
- }
- position++
- }
- l915:
- {
- position919, tokenIndex919 := position, tokenIndex
- if buffer[position] != rune('0') {
- goto l920
- }
- position++
- goto l919
- l920:
- position, tokenIndex = position919, tokenIndex919
- if buffer[position] != rune('1') {
- goto l914
- }
- position++
- }
- l919:
- l917:
- {
- position918, tokenIndex918 := position, tokenIndex
- {
- position921, tokenIndex921 := position, tokenIndex
- if buffer[position] != rune('0') {
- goto l922
- }
- position++
- goto l921
- l922:
- position, tokenIndex = position921, tokenIndex921
- if buffer[position] != rune('1') {
- goto l918
- }
- position++
- }
- l921:
- goto l917
- l918:
- position, tokenIndex = position918, tokenIndex918
- }
- goto l913
- l914:
- position, tokenIndex = position913, tokenIndex913
- if buffer[position] != rune('0') {
- goto l923
- }
- position++
- {
- position924, tokenIndex924 := position, tokenIndex
- if buffer[position] != rune('x') {
- goto l925
- }
- position++
- goto l924
- l925:
- position, tokenIndex = position924, tokenIndex924
- if buffer[position] != rune('X') {
- goto l923
- }
- position++
- }
- l924:
- {
- position928, tokenIndex928 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l929
- }
- position++
- goto l928
- l929:
- position, tokenIndex = position928, tokenIndex928
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l930
- }
- position++
- goto l928
- l930:
- position, tokenIndex = position928, tokenIndex928
- {
- position931, tokenIndex931 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('f') {
- goto l932
- }
- position++
- goto l931
- l932:
- position, tokenIndex = position931, tokenIndex931
- if c := buffer[position]; c < rune('A') || c > rune('F') {
- goto l923
- }
- position++
- }
- l931:
- }
- l928:
- l926:
- {
- position927, tokenIndex927 := position, tokenIndex
- {
- position933, tokenIndex933 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l934
- }
- position++
- goto l933
- l934:
- position, tokenIndex = position933, tokenIndex933
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l935
- }
- position++
- goto l933
- l935:
- position, tokenIndex = position933, tokenIndex933
- {
- position936, tokenIndex936 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('f') {
- goto l937
- }
- position++
- goto l936
- l937:
- position, tokenIndex = position936, tokenIndex936
- if c := buffer[position]; c < rune('A') || c > rune('F') {
- goto l927
- }
- position++
- }
- l936:
- }
- l933:
- goto l926
- l927:
- position, tokenIndex = position927, tokenIndex927
- }
- goto l913
- l923:
- position, tokenIndex = position913, tokenIndex913
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l907
- }
- position++
- l938:
- {
- position939, tokenIndex939 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l939
- }
- position++
- goto l938
- l939:
- position, tokenIndex = position939, tokenIndex939
- }
+ if buffer[position] != rune(')') {
+ goto l905
}
- l913:
- add(ruleOffset, position908)
+ position++
+ add(ruleBaseIndexScale, position906)
}
return true
- l907:
- position, tokenIndex = position907, tokenIndex907
+ l905:
+ position, tokenIndex = position905, tokenIndex905
return false
},
- /* 57 Section <- <([a-z] / [A-Z] / '@')+> */
+ /* 56 Operator <- <('+' / '-')> */
func() bool {
- position940, tokenIndex940 := position, tokenIndex
+ position921, tokenIndex921 := position, tokenIndex
{
- position941 := position
+ position922 := position
{
- position944, tokenIndex944 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l945
+ position923, tokenIndex923 := position, tokenIndex
+ if buffer[position] != rune('+') {
+ goto l924
}
position++
- goto l944
- l945:
- position, tokenIndex = position944, tokenIndex944
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l946
- }
- position++
- goto l944
- l946:
- position, tokenIndex = position944, tokenIndex944
- if buffer[position] != rune('@') {
- goto l940
+ goto l923
+ l924:
+ position, tokenIndex = position923, tokenIndex923
+ if buffer[position] != rune('-') {
+ goto l921
}
position++
}
- l944:
- l942:
+ l923:
+ add(ruleOperator, position922)
+ }
+ return true
+ l921:
+ position, tokenIndex = position921, tokenIndex921
+ return false
+ },
+ /* 57 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
+ func() bool {
+ position925, tokenIndex925 := position, tokenIndex
+ {
+ position926 := position
{
- position943, tokenIndex943 := position, tokenIndex
+ position927, tokenIndex927 := position, tokenIndex
+ if buffer[position] != rune('+') {
+ goto l927
+ }
+ position++
+ goto l928
+ l927:
+ position, tokenIndex = position927, tokenIndex927
+ }
+ l928:
+ {
+ position929, tokenIndex929 := position, tokenIndex
+ if buffer[position] != rune('-') {
+ goto l929
+ }
+ position++
+ goto l930
+ l929:
+ position, tokenIndex = position929, tokenIndex929
+ }
+ l930:
+ {
+ position931, tokenIndex931 := position, tokenIndex
+ if buffer[position] != rune('0') {
+ goto l932
+ }
+ position++
{
- position947, tokenIndex947 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l948
+ position933, tokenIndex933 := position, tokenIndex
+ if buffer[position] != rune('b') {
+ goto l934
}
position++
- goto l947
- l948:
- position, tokenIndex = position947, tokenIndex947
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l949
+ goto l933
+ l934:
+ position, tokenIndex = position933, tokenIndex933
+ if buffer[position] != rune('B') {
+ goto l932
}
position++
- goto l947
- l949:
- position, tokenIndex = position947, tokenIndex947
- if buffer[position] != rune('@') {
+ }
+ l933:
+ {
+ position937, tokenIndex937 := position, tokenIndex
+ if buffer[position] != rune('0') {
+ goto l938
+ }
+ position++
+ goto l937
+ l938:
+ position, tokenIndex = position937, tokenIndex937
+ if buffer[position] != rune('1') {
+ goto l932
+ }
+ position++
+ }
+ l937:
+ l935:
+ {
+ position936, tokenIndex936 := position, tokenIndex
+ {
+ position939, tokenIndex939 := position, tokenIndex
+ if buffer[position] != rune('0') {
+ goto l940
+ }
+ position++
+ goto l939
+ l940:
+ position, tokenIndex = position939, tokenIndex939
+ if buffer[position] != rune('1') {
+ goto l936
+ }
+ position++
+ }
+ l939:
+ goto l935
+ l936:
+ position, tokenIndex = position936, tokenIndex936
+ }
+ goto l931
+ l932:
+ position, tokenIndex = position931, tokenIndex931
+ if buffer[position] != rune('0') {
+ goto l941
+ }
+ position++
+ {
+ position942, tokenIndex942 := position, tokenIndex
+ if buffer[position] != rune('x') {
goto l943
}
position++
+ goto l942
+ l943:
+ position, tokenIndex = position942, tokenIndex942
+ if buffer[position] != rune('X') {
+ goto l941
+ }
+ position++
}
- l947:
- goto l942
- l943:
- position, tokenIndex = position943, tokenIndex943
+ l942:
+ {
+ position946, tokenIndex946 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l947
+ }
+ position++
+ goto l946
+ l947:
+ position, tokenIndex = position946, tokenIndex946
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l948
+ }
+ position++
+ goto l946
+ l948:
+ position, tokenIndex = position946, tokenIndex946
+ {
+ position949, tokenIndex949 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('f') {
+ goto l950
+ }
+ position++
+ goto l949
+ l950:
+ position, tokenIndex = position949, tokenIndex949
+ if c := buffer[position]; c < rune('A') || c > rune('F') {
+ goto l941
+ }
+ position++
+ }
+ l949:
+ }
+ l946:
+ l944:
+ {
+ position945, tokenIndex945 := position, tokenIndex
+ {
+ position951, tokenIndex951 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l952
+ }
+ position++
+ goto l951
+ l952:
+ position, tokenIndex = position951, tokenIndex951
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l953
+ }
+ position++
+ goto l951
+ l953:
+ position, tokenIndex = position951, tokenIndex951
+ {
+ position954, tokenIndex954 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('f') {
+ goto l955
+ }
+ position++
+ goto l954
+ l955:
+ position, tokenIndex = position954, tokenIndex954
+ if c := buffer[position]; c < rune('A') || c > rune('F') {
+ goto l945
+ }
+ position++
+ }
+ l954:
+ }
+ l951:
+ goto l944
+ l945:
+ position, tokenIndex = position945, tokenIndex945
+ }
+ goto l931
+ l941:
+ position, tokenIndex = position931, tokenIndex931
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l925
+ }
+ position++
+ l956:
+ {
+ position957, tokenIndex957 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l957
+ }
+ position++
+ goto l956
+ l957:
+ position, tokenIndex = position957, tokenIndex957
+ }
}
- add(ruleSection, position941)
+ l931:
+ add(ruleOffset, position926)
}
return true
- l940:
- position, tokenIndex = position940, tokenIndex940
+ l925:
+ position, tokenIndex = position925, tokenIndex925
return false
},
- /* 58 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
+ /* 58 Section <- <([a-z] / [A-Z] / '@')+> */
func() bool {
- position950, tokenIndex950 := position, tokenIndex
+ position958, tokenIndex958 := position, tokenIndex
{
- position951 := position
+ position959 := position
+ {
+ position962, tokenIndex962 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l963
+ }
+ position++
+ goto l962
+ l963:
+ position, tokenIndex = position962, tokenIndex962
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l964
+ }
+ position++
+ goto l962
+ l964:
+ position, tokenIndex = position962, tokenIndex962
+ if buffer[position] != rune('@') {
+ goto l958
+ }
+ position++
+ }
+ l962:
+ l960:
+ {
+ position961, tokenIndex961 := position, tokenIndex
+ {
+ position965, tokenIndex965 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l966
+ }
+ position++
+ goto l965
+ l966:
+ position, tokenIndex = position965, tokenIndex965
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l967
+ }
+ position++
+ goto l965
+ l967:
+ position, tokenIndex = position965, tokenIndex965
+ if buffer[position] != rune('@') {
+ goto l961
+ }
+ position++
+ }
+ l965:
+ goto l960
+ l961:
+ position, tokenIndex = position961, tokenIndex961
+ }
+ add(ruleSection, position959)
+ }
+ return true
+ l958:
+ position, tokenIndex = position958, tokenIndex958
+ return false
+ },
+ /* 59 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
+ func() bool {
+ position968, tokenIndex968 := position, tokenIndex
+ {
+ position969 := position
if buffer[position] != rune('%') {
- goto l950
+ goto l968
}
position++
{
- position952, tokenIndex952 := position, tokenIndex
+ position970, tokenIndex970 := position, tokenIndex
if c := buffer[position]; c < rune('c') || c > rune('g') {
- goto l953
+ goto l971
}
position++
- goto l952
- l953:
- position, tokenIndex = position952, tokenIndex952
+ goto l970
+ l971:
+ position, tokenIndex = position970, tokenIndex970
if buffer[position] != rune('s') {
- goto l950
+ goto l968
}
position++
}
- l952:
+ l970:
if buffer[position] != rune('s') {
- goto l950
+ goto l968
}
position++
if buffer[position] != rune(':') {
- goto l950
+ goto l968
}
position++
- add(ruleSegmentRegister, position951)
+ add(ruleSegmentRegister, position969)
}
return true
- l950:
- position, tokenIndex = position950, tokenIndex950
+ l968:
+ position, tokenIndex = position968, tokenIndex968
return false
},
}
diff --git a/util/fipstools/delocate/testdata/x86_64-Basic/in.s b/util/fipstools/delocate/testdata/x86_64-Basic/in.s
index 7e48e27..eb86c70 100644
--- a/util/fipstools/delocate/testdata/x86_64-Basic/in.s
+++ b/util/fipstools/delocate/testdata/x86_64-Basic/in.s
@@ -20,6 +20,7 @@
.loc 1 168 0 is_stmt 0 discriminator 1
cmpq -8(%rbp), %rax
jmpq *%rax
+ notrack jmp *%rax
movdqa %xmm3,%xmm10
psrlq $1,%xmm3
pxor %xmm6,%xmm5
diff --git a/util/fipstools/delocate/testdata/x86_64-Basic/out.s b/util/fipstools/delocate/testdata/x86_64-Basic/out.s
index 657d090..f9c9fce 100644
--- a/util/fipstools/delocate/testdata/x86_64-Basic/out.s
+++ b/util/fipstools/delocate/testdata/x86_64-Basic/out.s
@@ -25,6 +25,7 @@
.loc 1 168 0 is_stmt 0 discriminator 1
cmpq -8(%rbp), %rax
jmpq *%rax
+ notrack jmp *%rax
movdqa %xmm3,%xmm10
psrlq $1,%xmm3
pxor %xmm6,%xmm5
diff --git a/util/fipstools/delocate/testdata/x86_64-LabelRewrite/in1.s b/util/fipstools/delocate/testdata/x86_64-LabelRewrite/in1.s
index 8ee70896..54f3526 100644
--- a/util/fipstools/delocate/testdata/x86_64-LabelRewrite/in1.s
+++ b/util/fipstools/delocate/testdata/x86_64-LabelRewrite/in1.s
@@ -8,17 +8,20 @@
# References to globals must be rewritten to their local targets.
call foo
jmp foo
+ notrack jmp foo
jbe foo
jne foo
# Jumps to PLT symbols are rewritten through redirectors.
call memcpy@PLT
jmp memcpy@PLT
+ notrack jmp memcpy@PLT
jbe memcpy@PLT
# Jumps to local PLT symbols use their local targets.
call foo@PLT
jmp foo@PLT
+ notrack jmp foo@PLT
jbe foo@PLT
# Synthesized symbols are treated as local ones.
diff --git a/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s b/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s
index 03580d1..70d0338 100644
--- a/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s
+++ b/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s
@@ -16,6 +16,8 @@
call .Lfoo_local_target
# WAS jmp foo
jmp .Lfoo_local_target
+# WAS notrack jmp foo
+ notrack jmp .Lfoo_local_target
# WAS jbe foo
jbe .Lfoo_local_target
# WAS jne foo
@@ -26,6 +28,8 @@
call bcm_redirector_memcpy
# WAS jmp memcpy@PLT
jmp bcm_redirector_memcpy
+# WAS notrack jmp memcpy@PLT
+ notrack jmp bcm_redirector_memcpy
# WAS jbe memcpy@PLT
jbe bcm_redirector_memcpy
@@ -34,6 +38,8 @@
call .Lfoo_local_target
# WAS jmp foo@PLT
jmp .Lfoo_local_target
+# WAS notrack jmp foo@PLT
+ notrack jmp .Lfoo_local_target
# WAS jbe foo@PLT
jbe .Lfoo_local_target