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