Support AVX-512 instructions with a writemask in delocate.
AVX-512 adds a new text instruction syntax to x86-64 assembly to specify
the writemask registers and the merge-masking vs zeroing-masking signal.
This change causes these tokens to be passed through.
Patch by Jeff McDonald.
Change-Id: Ib15b15ac684183cc5fba329a176b63b477bc24a3
Reviewed-on: https://boringssl-review.googlesource.com/24945
Commit-Queue: David Benjamin <davidben@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/util/fipstools/delocate.peg b/util/fipstools/delocate.peg
index 85cb72d..abcd953 100644
--- a/util/fipstools/delocate.peg
+++ b/util/fipstools/delocate.peg
@@ -55,7 +55,7 @@
LocalSymbol <- '.L' [[A-Z.0-9$_]]+
LocalLabel <- [0-9][0-9$]*
LocalLabelRef <- [0-9][0-9$]*[bf]
-Instruction <- InstructionName (WS InstructionArg ((WS? ',' WS?) InstructionArg)*)?
+Instruction <- InstructionName (WS InstructionArg ((WS? ',' WS?) InstructionArg)*)? (WS? '{' InstructionArg '}')*
InstructionName <- [[A-Z]][[A-Z0-9]]* [.+\-]?
InstructionArg <- IndirectionIndicator? (RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / MemoryRef)
TOCRefHigh <- '.TOC.-' ('0b' / ('.L' [a-zA-Z_0-9]+)) "@ha"
diff --git a/util/fipstools/delocate.peg.go b/util/fipstools/delocate.peg.go
index 9afd4d3..4cbdcad 100644
--- a/util/fipstools/delocate.peg.go
+++ b/util/fipstools/delocate.peg.go
@@ -2697,7 +2697,7 @@
position, tokenIndex = position322, tokenIndex322
return false
},
- /* 25 Instruction <- <(InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
+ /* 25 Instruction <- <(InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)? (WS? '{' InstructionArg '}')*)> */
func() bool {
position330, tokenIndex330 := position, tokenIndex
{
@@ -2752,6 +2752,34 @@
position, tokenIndex = position332, tokenIndex332
}
l333:
+ l340:
+ {
+ position341, tokenIndex341 := position, tokenIndex
+ {
+ position342, tokenIndex342 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l342
+ }
+ goto l343
+ l342:
+ position, tokenIndex = position342, tokenIndex342
+ }
+ l343:
+ if buffer[position] != rune('{') {
+ goto l341
+ }
+ position++
+ if !_rules[ruleInstructionArg]() {
+ goto l341
+ }
+ if buffer[position] != rune('}') {
+ goto l341
+ }
+ position++
+ goto l340
+ l341:
+ position, tokenIndex = position341, tokenIndex341
+ }
add(ruleInstruction, position331)
}
return true
@@ -2761,1218 +2789,1218 @@
},
/* 26 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
func() bool {
- position340, tokenIndex340 := position, tokenIndex
+ position344, tokenIndex344 := position, tokenIndex
{
- position341 := position
+ position345 := position
{
- position342, tokenIndex342 := position, tokenIndex
+ position346, tokenIndex346 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l343
+ goto l347
}
position++
- goto l342
- l343:
- position, tokenIndex = position342, tokenIndex342
+ goto l346
+ l347:
+ position, tokenIndex = position346, tokenIndex346
if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l340
+ goto l344
}
position++
}
- l342:
- l344:
+ l346:
+ l348:
{
- position345, tokenIndex345 := position, tokenIndex
+ position349, tokenIndex349 := position, tokenIndex
{
- position346, tokenIndex346 := position, tokenIndex
+ position350, tokenIndex350 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l347
- }
- position++
- goto l346
- l347:
- position, tokenIndex = position346, tokenIndex346
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l348
- }
- position++
- goto l346
- l348:
- position, tokenIndex = position346, tokenIndex346
- {
- position349, tokenIndex349 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l350
- }
- position++
- goto l349
- l350:
- position, tokenIndex = position349, tokenIndex349
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l345
- }
- position++
- }
- l349:
- }
- l346:
- goto l344
- l345:
- position, tokenIndex = position345, tokenIndex345
- }
- {
- position351, tokenIndex351 := position, tokenIndex
- {
- position353, tokenIndex353 := position, tokenIndex
- if buffer[position] != rune('.') {
- goto l354
- }
- position++
- goto l353
- l354:
- position, tokenIndex = position353, tokenIndex353
- if buffer[position] != rune('+') {
- goto l355
- }
- position++
- goto l353
- l355:
- position, tokenIndex = position353, tokenIndex353
- if buffer[position] != rune('-') {
goto l351
}
position++
+ goto l350
+ l351:
+ position, tokenIndex = position350, tokenIndex350
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l352
+ }
+ position++
+ goto l350
+ l352:
+ position, tokenIndex = position350, tokenIndex350
+ {
+ position353, tokenIndex353 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l354
+ }
+ position++
+ goto l353
+ l354:
+ position, tokenIndex = position353, tokenIndex353
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l349
+ }
+ position++
+ }
+ l353:
}
- l353:
- goto l352
- l351:
- position, tokenIndex = position351, tokenIndex351
+ l350:
+ goto l348
+ l349:
+ position, tokenIndex = position349, tokenIndex349
}
- l352:
- add(ruleInstructionName, position341)
+ {
+ position355, tokenIndex355 := position, tokenIndex
+ {
+ position357, tokenIndex357 := position, tokenIndex
+ if buffer[position] != rune('.') {
+ goto l358
+ }
+ position++
+ goto l357
+ l358:
+ position, tokenIndex = position357, tokenIndex357
+ if buffer[position] != rune('+') {
+ goto l359
+ }
+ position++
+ goto l357
+ l359:
+ position, tokenIndex = position357, tokenIndex357
+ if buffer[position] != rune('-') {
+ goto l355
+ }
+ position++
+ }
+ l357:
+ goto l356
+ l355:
+ position, tokenIndex = position355, tokenIndex355
+ }
+ l356:
+ add(ruleInstructionName, position345)
}
return true
- l340:
- position, tokenIndex = position340, tokenIndex340
+ l344:
+ position, tokenIndex = position344, tokenIndex344
return false
},
/* 27 InstructionArg <- <(IndirectionIndicator? (RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / MemoryRef))> */
func() bool {
- position356, tokenIndex356 := position, tokenIndex
+ position360, tokenIndex360 := position, tokenIndex
{
- position357 := position
+ position361 := position
{
- position358, tokenIndex358 := position, tokenIndex
+ position362, tokenIndex362 := position, tokenIndex
if !_rules[ruleIndirectionIndicator]() {
- goto l358
- }
- goto l359
- l358:
- position, tokenIndex = position358, tokenIndex358
- }
- l359:
- {
- position360, tokenIndex360 := position, tokenIndex
- if !_rules[ruleRegisterOrConstant]() {
- goto l361
- }
- goto l360
- l361:
- position, tokenIndex = position360, tokenIndex360
- if !_rules[ruleLocalLabelRef]() {
goto l362
}
- goto l360
+ goto l363
l362:
- position, tokenIndex = position360, tokenIndex360
+ position, tokenIndex = position362, tokenIndex362
+ }
+ l363:
+ {
+ position364, tokenIndex364 := position, tokenIndex
+ if !_rules[ruleRegisterOrConstant]() {
+ goto l365
+ }
+ goto l364
+ l365:
+ position, tokenIndex = position364, tokenIndex364
+ if !_rules[ruleLocalLabelRef]() {
+ goto l366
+ }
+ goto l364
+ l366:
+ position, tokenIndex = position364, tokenIndex364
if !_rules[ruleTOCRefHigh]() {
- goto l363
+ goto l367
}
- goto l360
- l363:
- position, tokenIndex = position360, tokenIndex360
+ goto l364
+ l367:
+ position, tokenIndex = position364, tokenIndex364
if !_rules[ruleTOCRefLow]() {
- goto l364
+ goto l368
}
- goto l360
- l364:
- position, tokenIndex = position360, tokenIndex360
+ goto l364
+ l368:
+ position, tokenIndex = position364, tokenIndex364
if !_rules[ruleMemoryRef]() {
- goto l356
+ goto l360
}
}
- l360:
- add(ruleInstructionArg, position357)
+ l364:
+ add(ruleInstructionArg, position361)
}
return true
- l356:
- position, tokenIndex = position356, tokenIndex356
+ l360:
+ position, tokenIndex = position360, tokenIndex360
return false
},
/* 28 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
func() bool {
- position365, tokenIndex365 := position, tokenIndex
+ position369, tokenIndex369 := position, tokenIndex
{
- position366 := position
+ position370 := position
if buffer[position] != rune('.') {
- goto l365
+ goto l369
}
position++
if buffer[position] != rune('T') {
- goto l365
+ goto l369
}
position++
if buffer[position] != rune('O') {
- goto l365
+ goto l369
}
position++
if buffer[position] != rune('C') {
- goto l365
+ goto l369
}
position++
if buffer[position] != rune('.') {
- goto l365
+ goto l369
}
position++
if buffer[position] != rune('-') {
- goto l365
+ goto l369
}
position++
{
- position367, tokenIndex367 := position, tokenIndex
+ position371, tokenIndex371 := position, tokenIndex
if buffer[position] != rune('0') {
- goto l368
+ goto l372
}
position++
if buffer[position] != rune('b') {
- goto l368
+ goto l372
}
position++
- goto l367
- l368:
- position, tokenIndex = position367, tokenIndex367
+ goto l371
+ l372:
+ position, tokenIndex = position371, tokenIndex371
if buffer[position] != rune('.') {
- goto l365
+ goto l369
}
position++
if buffer[position] != rune('L') {
- goto l365
- }
- position++
- {
- position371, tokenIndex371 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l372
- }
- position++
- goto l371
- l372:
- position, tokenIndex = position371, tokenIndex371
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l373
- }
- position++
- goto l371
- l373:
- position, tokenIndex = position371, tokenIndex371
- if buffer[position] != rune('_') {
- goto l374
- }
- position++
- goto l371
- l374:
- position, tokenIndex = position371, tokenIndex371
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l365
- }
- position++
- }
- l371:
- l369:
- {
- position370, tokenIndex370 := position, tokenIndex
- {
- position375, tokenIndex375 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l376
- }
- position++
- goto l375
- l376:
- position, tokenIndex = position375, tokenIndex375
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l377
- }
- position++
- goto l375
- l377:
- position, tokenIndex = position375, tokenIndex375
- if buffer[position] != rune('_') {
- goto l378
- }
- position++
- goto l375
- l378:
- position, tokenIndex = position375, tokenIndex375
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l370
- }
- position++
- }
- l375:
goto l369
- l370:
- position, tokenIndex = position370, tokenIndex370
+ }
+ position++
+ {
+ position375, tokenIndex375 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l376
+ }
+ position++
+ goto l375
+ l376:
+ position, tokenIndex = position375, tokenIndex375
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l377
+ }
+ position++
+ goto l375
+ l377:
+ position, tokenIndex = position375, tokenIndex375
+ if buffer[position] != rune('_') {
+ goto l378
+ }
+ position++
+ goto l375
+ l378:
+ position, tokenIndex = position375, tokenIndex375
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l369
+ }
+ position++
+ }
+ l375:
+ l373:
+ {
+ position374, tokenIndex374 := position, tokenIndex
+ {
+ position379, tokenIndex379 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l380
+ }
+ position++
+ goto l379
+ l380:
+ position, tokenIndex = position379, tokenIndex379
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l381
+ }
+ position++
+ goto l379
+ l381:
+ position, tokenIndex = position379, tokenIndex379
+ if buffer[position] != rune('_') {
+ goto l382
+ }
+ position++
+ goto l379
+ l382:
+ position, tokenIndex = position379, tokenIndex379
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l374
+ }
+ position++
+ }
+ l379:
+ goto l373
+ l374:
+ position, tokenIndex = position374, tokenIndex374
}
}
- l367:
+ l371:
if buffer[position] != rune('@') {
- goto l365
+ goto l369
}
position++
{
- position379, tokenIndex379 := position, tokenIndex
+ position383, tokenIndex383 := position, tokenIndex
if buffer[position] != rune('h') {
- goto l380
+ goto l384
}
position++
- goto l379
- l380:
- position, tokenIndex = position379, tokenIndex379
+ goto l383
+ l384:
+ position, tokenIndex = position383, tokenIndex383
if buffer[position] != rune('H') {
- goto l365
+ goto l369
}
position++
}
- l379:
- {
- position381, tokenIndex381 := position, tokenIndex
- if buffer[position] != rune('a') {
- goto l382
- }
- position++
- goto l381
- l382:
- position, tokenIndex = position381, tokenIndex381
- if buffer[position] != rune('A') {
- goto l365
- }
- position++
- }
- l381:
- add(ruleTOCRefHigh, position366)
- }
- return true
- l365:
- position, tokenIndex = position365, tokenIndex365
- return false
- },
- /* 29 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
- func() bool {
- position383, tokenIndex383 := position, tokenIndex
- {
- position384 := position
- if buffer[position] != rune('.') {
- goto l383
- }
- position++
- if buffer[position] != rune('T') {
- goto l383
- }
- position++
- if buffer[position] != rune('O') {
- goto l383
- }
- position++
- if buffer[position] != rune('C') {
- goto l383
- }
- position++
- if buffer[position] != rune('.') {
- goto l383
- }
- position++
- if buffer[position] != rune('-') {
- goto l383
- }
- position++
+ l383:
{
position385, tokenIndex385 := position, tokenIndex
- if buffer[position] != rune('0') {
- goto l386
- }
- position++
- if buffer[position] != rune('b') {
+ if buffer[position] != rune('a') {
goto l386
}
position++
goto l385
l386:
position, tokenIndex = position385, tokenIndex385
- if buffer[position] != rune('.') {
- goto l383
+ if buffer[position] != rune('A') {
+ goto l369
}
position++
- if buffer[position] != rune('L') {
- goto l383
- }
- position++
- {
- position389, tokenIndex389 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l390
- }
- position++
- goto l389
- l390:
- position, tokenIndex = position389, tokenIndex389
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l391
- }
- position++
- goto l389
- l391:
- position, tokenIndex = position389, tokenIndex389
- if buffer[position] != rune('_') {
- goto l392
- }
- position++
- goto l389
- l392:
- position, tokenIndex = position389, tokenIndex389
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l383
- }
- position++
- }
- l389:
- l387:
- {
- position388, tokenIndex388 := position, tokenIndex
- {
- position393, tokenIndex393 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l394
- }
- position++
- goto l393
- l394:
- position, tokenIndex = position393, tokenIndex393
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l395
- }
- position++
- goto l393
- l395:
- position, tokenIndex = position393, tokenIndex393
- if buffer[position] != rune('_') {
- goto l396
- }
- position++
- goto l393
- l396:
- position, tokenIndex = position393, tokenIndex393
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l388
- }
- position++
- }
- l393:
- goto l387
- l388:
- position, tokenIndex = position388, tokenIndex388
- }
}
l385:
- if buffer[position] != rune('@') {
- goto l383
+ add(ruleTOCRefHigh, position370)
+ }
+ return true
+ l369:
+ position, tokenIndex = position369, tokenIndex369
+ return false
+ },
+ /* 29 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
+ func() bool {
+ position387, tokenIndex387 := position, tokenIndex
+ {
+ position388 := position
+ if buffer[position] != rune('.') {
+ goto l387
+ }
+ position++
+ if buffer[position] != rune('T') {
+ goto l387
+ }
+ position++
+ if buffer[position] != rune('O') {
+ goto l387
+ }
+ position++
+ if buffer[position] != rune('C') {
+ goto l387
+ }
+ position++
+ if buffer[position] != rune('.') {
+ goto l387
+ }
+ position++
+ if buffer[position] != rune('-') {
+ goto l387
}
position++
{
- position397, tokenIndex397 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l398
+ position389, tokenIndex389 := position, tokenIndex
+ if buffer[position] != rune('0') {
+ goto l390
}
position++
- goto l397
- l398:
- position, tokenIndex = position397, tokenIndex397
+ if buffer[position] != rune('b') {
+ goto l390
+ }
+ position++
+ goto l389
+ l390:
+ position, tokenIndex = position389, tokenIndex389
+ if buffer[position] != rune('.') {
+ goto l387
+ }
+ position++
if buffer[position] != rune('L') {
- goto l383
+ goto l387
+ }
+ position++
+ {
+ position393, tokenIndex393 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l394
+ }
+ position++
+ goto l393
+ l394:
+ position, tokenIndex = position393, tokenIndex393
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l395
+ }
+ position++
+ goto l393
+ l395:
+ position, tokenIndex = position393, tokenIndex393
+ if buffer[position] != rune('_') {
+ goto l396
+ }
+ position++
+ goto l393
+ l396:
+ position, tokenIndex = position393, tokenIndex393
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l387
+ }
+ position++
+ }
+ l393:
+ l391:
+ {
+ position392, tokenIndex392 := position, tokenIndex
+ {
+ position397, tokenIndex397 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l398
+ }
+ position++
+ goto l397
+ l398:
+ position, tokenIndex = position397, tokenIndex397
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l399
+ }
+ position++
+ goto l397
+ l399:
+ position, tokenIndex = position397, tokenIndex397
+ if buffer[position] != rune('_') {
+ goto l400
+ }
+ position++
+ goto l397
+ l400:
+ position, tokenIndex = position397, tokenIndex397
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l392
+ }
+ position++
+ }
+ l397:
+ goto l391
+ l392:
+ position, tokenIndex = position392, tokenIndex392
+ }
+ }
+ l389:
+ if buffer[position] != rune('@') {
+ goto l387
+ }
+ position++
+ {
+ position401, tokenIndex401 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l402
+ }
+ position++
+ goto l401
+ l402:
+ position, tokenIndex = position401, tokenIndex401
+ if buffer[position] != rune('L') {
+ goto l387
}
position++
}
- l397:
- add(ruleTOCRefLow, position384)
+ l401:
+ add(ruleTOCRefLow, position388)
}
return true
- l383:
- position, tokenIndex = position383, tokenIndex383
+ l387:
+ position, tokenIndex = position387, tokenIndex387
return false
},
/* 30 IndirectionIndicator <- <'*'> */
func() bool {
- position399, tokenIndex399 := position, tokenIndex
+ position403, tokenIndex403 := position, tokenIndex
{
- position400 := position
+ position404 := position
if buffer[position] != rune('*') {
- goto l399
+ goto l403
}
position++
- add(ruleIndirectionIndicator, position400)
+ add(ruleIndirectionIndicator, position404)
}
return true
- l399:
- position, tokenIndex = position399, tokenIndex399
+ l403:
+ position, tokenIndex = position403, tokenIndex403
return false
},
/* 31 RegisterOrConstant <- <((('%' ([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))*) / ('$'? ((Offset Offset) / Offset))) !('f' / 'b' / ':' / '(' / '+' / '-'))> */
func() bool {
- position401, tokenIndex401 := position, tokenIndex
+ position405, tokenIndex405 := position, tokenIndex
{
- position402 := position
+ position406 := position
{
- position403, tokenIndex403 := position, tokenIndex
+ position407, tokenIndex407 := position, tokenIndex
if buffer[position] != rune('%') {
- goto l404
+ goto l408
}
position++
{
- position405, tokenIndex405 := position, tokenIndex
+ position409, tokenIndex409 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l406
+ goto l410
}
position++
- goto l405
- l406:
- position, tokenIndex = position405, tokenIndex405
+ goto l409
+ l410:
+ position, tokenIndex = position409, tokenIndex409
if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l404
+ goto l408
}
position++
}
- l405:
- l407:
+ l409:
+ l411:
{
- position408, tokenIndex408 := position, tokenIndex
+ position412, tokenIndex412 := position, tokenIndex
{
- position409, tokenIndex409 := position, tokenIndex
+ position413, tokenIndex413 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l410
+ goto l414
}
position++
- goto l409
- l410:
- position, tokenIndex = position409, tokenIndex409
+ goto l413
+ l414:
+ position, tokenIndex = position413, tokenIndex413
if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l411
+ goto l415
}
position++
- goto l409
- l411:
- position, tokenIndex = position409, tokenIndex409
+ goto l413
+ l415:
+ position, tokenIndex = position413, tokenIndex413
{
- position412, tokenIndex412 := position, tokenIndex
+ position416, tokenIndex416 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l413
+ goto l417
}
position++
- goto l412
- l413:
- position, tokenIndex = position412, tokenIndex412
+ goto l416
+ l417:
+ position, tokenIndex = position416, tokenIndex416
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l408
+ goto l412
}
position++
}
- l412:
+ l416:
}
- l409:
- goto l407
- l408:
- position, tokenIndex = position408, tokenIndex408
+ l413:
+ goto l411
+ l412:
+ position, tokenIndex = position412, tokenIndex412
}
- goto l403
- l404:
- position, tokenIndex = position403, tokenIndex403
+ goto l407
+ l408:
+ position, tokenIndex = position407, tokenIndex407
{
- position414, tokenIndex414 := position, tokenIndex
+ position418, tokenIndex418 := position, tokenIndex
if buffer[position] != rune('$') {
- goto l414
- }
- position++
- goto l415
- l414:
- position, tokenIndex = position414, tokenIndex414
- }
- l415:
- {
- position416, tokenIndex416 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l417
- }
- if !_rules[ruleOffset]() {
- goto l417
- }
- goto l416
- l417:
- position, tokenIndex = position416, tokenIndex416
- if !_rules[ruleOffset]() {
- goto l401
- }
- }
- l416:
- }
- l403:
- {
- position418, tokenIndex418 := position, tokenIndex
- {
- position419, tokenIndex419 := position, tokenIndex
- if buffer[position] != rune('f') {
- goto l420
- }
- position++
- goto l419
- l420:
- position, tokenIndex = position419, tokenIndex419
- if buffer[position] != rune('b') {
- goto l421
- }
- position++
- goto l419
- l421:
- position, tokenIndex = position419, tokenIndex419
- if buffer[position] != rune(':') {
- goto l422
- }
- position++
- goto l419
- l422:
- position, tokenIndex = position419, tokenIndex419
- if buffer[position] != rune('(') {
- goto l423
- }
- position++
- goto l419
- l423:
- position, tokenIndex = position419, tokenIndex419
- if buffer[position] != rune('+') {
- goto l424
- }
- position++
- goto l419
- l424:
- position, tokenIndex = position419, tokenIndex419
- if buffer[position] != rune('-') {
goto l418
}
position++
+ goto l419
+ l418:
+ position, tokenIndex = position418, tokenIndex418
}
l419:
- goto l401
- l418:
- position, tokenIndex = position418, tokenIndex418
+ {
+ position420, tokenIndex420 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l421
+ }
+ if !_rules[ruleOffset]() {
+ goto l421
+ }
+ goto l420
+ l421:
+ position, tokenIndex = position420, tokenIndex420
+ if !_rules[ruleOffset]() {
+ goto l405
+ }
+ }
+ l420:
}
- add(ruleRegisterOrConstant, position402)
+ l407:
+ {
+ position422, tokenIndex422 := position, tokenIndex
+ {
+ position423, tokenIndex423 := position, tokenIndex
+ if buffer[position] != rune('f') {
+ goto l424
+ }
+ position++
+ goto l423
+ l424:
+ position, tokenIndex = position423, tokenIndex423
+ if buffer[position] != rune('b') {
+ goto l425
+ }
+ position++
+ goto l423
+ l425:
+ position, tokenIndex = position423, tokenIndex423
+ if buffer[position] != rune(':') {
+ goto l426
+ }
+ position++
+ goto l423
+ l426:
+ position, tokenIndex = position423, tokenIndex423
+ if buffer[position] != rune('(') {
+ goto l427
+ }
+ position++
+ goto l423
+ l427:
+ position, tokenIndex = position423, tokenIndex423
+ if buffer[position] != rune('+') {
+ goto l428
+ }
+ position++
+ goto l423
+ l428:
+ position, tokenIndex = position423, tokenIndex423
+ if buffer[position] != rune('-') {
+ goto l422
+ }
+ position++
+ }
+ l423:
+ goto l405
+ l422:
+ position, tokenIndex = position422, tokenIndex422
+ }
+ add(ruleRegisterOrConstant, position406)
}
return true
- l401:
- position, tokenIndex = position401, tokenIndex401
+ l405:
+ position, tokenIndex = position405, tokenIndex405
return false
},
/* 32 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / BaseIndexScale)> */
func() bool {
- position425, tokenIndex425 := position, tokenIndex
+ position429, tokenIndex429 := position, tokenIndex
{
- position426 := position
+ position430 := position
{
- position427, tokenIndex427 := position, tokenIndex
+ position431, tokenIndex431 := position, tokenIndex
if !_rules[ruleSymbolRef]() {
- goto l428
+ goto l432
}
if !_rules[ruleBaseIndexScale]() {
- goto l428
+ goto l432
}
- goto l427
- l428:
- position, tokenIndex = position427, tokenIndex427
+ goto l431
+ l432:
+ position, tokenIndex = position431, tokenIndex431
if !_rules[ruleSymbolRef]() {
+ goto l433
+ }
+ goto l431
+ l433:
+ position, tokenIndex = position431, tokenIndex431
+ l435:
+ {
+ position436, tokenIndex436 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l436
+ }
+ goto l435
+ l436:
+ position, tokenIndex = position436, tokenIndex436
+ }
+ if !_rules[ruleBaseIndexScale]() {
+ goto l434
+ }
+ goto l431
+ l434:
+ position, tokenIndex = position431, tokenIndex431
+ if !_rules[ruleSegmentRegister]() {
+ goto l437
+ }
+ if !_rules[ruleOffset]() {
+ goto l437
+ }
+ if !_rules[ruleBaseIndexScale]() {
+ goto l437
+ }
+ goto l431
+ l437:
+ position, tokenIndex = position431, tokenIndex431
+ if !_rules[ruleSegmentRegister]() {
+ goto l438
+ }
+ if !_rules[ruleBaseIndexScale]() {
+ goto l438
+ }
+ goto l431
+ l438:
+ position, tokenIndex = position431, tokenIndex431
+ if !_rules[ruleSegmentRegister]() {
+ goto l439
+ }
+ if !_rules[ruleOffset]() {
+ goto l439
+ }
+ goto l431
+ l439:
+ position, tokenIndex = position431, tokenIndex431
+ if !_rules[ruleBaseIndexScale]() {
goto l429
}
- goto l427
- l429:
- position, tokenIndex = position427, tokenIndex427
- l431:
- {
- position432, tokenIndex432 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l432
- }
- goto l431
- l432:
- position, tokenIndex = position432, tokenIndex432
- }
- if !_rules[ruleBaseIndexScale]() {
- goto l430
- }
- goto l427
- l430:
- position, tokenIndex = position427, tokenIndex427
- if !_rules[ruleSegmentRegister]() {
- goto l433
- }
- if !_rules[ruleOffset]() {
- goto l433
- }
- if !_rules[ruleBaseIndexScale]() {
- goto l433
- }
- goto l427
- l433:
- position, tokenIndex = position427, tokenIndex427
- if !_rules[ruleSegmentRegister]() {
- goto l434
- }
- if !_rules[ruleBaseIndexScale]() {
- goto l434
- }
- goto l427
- l434:
- position, tokenIndex = position427, tokenIndex427
- if !_rules[ruleSegmentRegister]() {
- goto l435
- }
- if !_rules[ruleOffset]() {
- goto l435
- }
- goto l427
- l435:
- position, tokenIndex = position427, tokenIndex427
- if !_rules[ruleBaseIndexScale]() {
- goto l425
- }
}
- l427:
- add(ruleMemoryRef, position426)
+ l431:
+ add(ruleMemoryRef, position430)
}
return true
- l425:
- position, tokenIndex = position425, tokenIndex425
+ l429:
+ position, tokenIndex = position429, tokenIndex429
return false
},
/* 33 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
func() bool {
- position436, tokenIndex436 := position, tokenIndex
+ position440, tokenIndex440 := position, tokenIndex
{
- position437 := position
- {
- position438, tokenIndex438 := position, tokenIndex
- l440:
- {
- position441, tokenIndex441 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l441
- }
- goto l440
- l441:
- position, tokenIndex = position441, tokenIndex441
- }
- if buffer[position] != rune('+') {
- goto l438
- }
- position++
- goto l439
- l438:
- position, tokenIndex = position438, tokenIndex438
- }
- l439:
+ position441 := position
{
position442, tokenIndex442 := position, tokenIndex
- if !_rules[ruleLocalSymbol]() {
- goto l443
+ l444:
+ {
+ position445, tokenIndex445 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l445
+ }
+ goto l444
+ l445:
+ position, tokenIndex = position445, tokenIndex445
}
- goto l442
- l443:
+ if buffer[position] != rune('+') {
+ goto l442
+ }
+ position++
+ goto l443
+ l442:
position, tokenIndex = position442, tokenIndex442
- if !_rules[ruleSymbolName]() {
- goto l436
- }
}
- l442:
- l444:
- {
- position445, tokenIndex445 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l445
- }
- goto l444
- l445:
- position, tokenIndex = position445, tokenIndex445
- }
+ l443:
{
position446, tokenIndex446 := position, tokenIndex
+ if !_rules[ruleLocalSymbol]() {
+ goto l447
+ }
+ goto l446
+ l447:
+ position, tokenIndex = position446, tokenIndex446
+ if !_rules[ruleSymbolName]() {
+ goto l440
+ }
+ }
+ l446:
+ l448:
+ {
+ position449, tokenIndex449 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l449
+ }
+ goto l448
+ l449:
+ position, tokenIndex = position449, tokenIndex449
+ }
+ {
+ position450, tokenIndex450 := position, tokenIndex
if buffer[position] != rune('@') {
- goto l446
+ goto l450
}
position++
if !_rules[ruleSection]() {
- goto l446
+ goto l450
}
- l448:
+ l452:
{
- position449, tokenIndex449 := position, tokenIndex
+ position453, tokenIndex453 := position, tokenIndex
if !_rules[ruleOffset]() {
- goto l449
+ goto l453
}
- goto l448
- l449:
- position, tokenIndex = position449, tokenIndex449
+ goto l452
+ l453:
+ position, tokenIndex = position453, tokenIndex453
}
- goto l447
- l446:
- position, tokenIndex = position446, tokenIndex446
+ goto l451
+ l450:
+ position, tokenIndex = position450, tokenIndex450
}
- l447:
- add(ruleSymbolRef, position437)
+ l451:
+ add(ruleSymbolRef, position441)
}
return true
- l436:
- position, tokenIndex = position436, tokenIndex436
+ l440:
+ position, tokenIndex = position440, tokenIndex440
return false
},
/* 34 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
func() bool {
- position450, tokenIndex450 := position, tokenIndex
+ position454, tokenIndex454 := position, tokenIndex
{
- position451 := position
+ position455 := position
if buffer[position] != rune('(') {
- goto l450
+ goto l454
}
position++
{
- position452, tokenIndex452 := position, tokenIndex
- if !_rules[ruleRegisterOrConstant]() {
- goto l452
- }
- goto l453
- l452:
- position, tokenIndex = position452, tokenIndex452
- }
- l453:
- {
- position454, tokenIndex454 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l454
- }
- goto l455
- l454:
- position, tokenIndex = position454, tokenIndex454
- }
- l455:
- {
position456, tokenIndex456 := position, tokenIndex
- if buffer[position] != rune(',') {
+ if !_rules[ruleRegisterOrConstant]() {
goto l456
}
+ goto l457
+ l456:
+ position, tokenIndex = position456, tokenIndex456
+ }
+ l457:
+ {
+ position458, tokenIndex458 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l458
+ }
+ goto l459
+ l458:
+ position, tokenIndex = position458, tokenIndex458
+ }
+ l459:
+ {
+ position460, tokenIndex460 := position, tokenIndex
+ if buffer[position] != rune(',') {
+ goto l460
+ }
position++
{
- position458, tokenIndex458 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l458
- }
- goto l459
- l458:
- position, tokenIndex = position458, tokenIndex458
- }
- l459:
- if !_rules[ruleRegisterOrConstant]() {
- goto l456
- }
- {
- position460, tokenIndex460 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l460
- }
- goto l461
- l460:
- position, tokenIndex = position460, tokenIndex460
- }
- l461:
- {
position462, tokenIndex462 := position, tokenIndex
- if buffer[position] != rune(',') {
+ if !_rules[ruleWS]() {
goto l462
}
- position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l462
- }
- position++
- l464:
- {
- position465, tokenIndex465 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l465
- }
- position++
- goto l464
- l465:
- position, tokenIndex = position465, tokenIndex465
- }
goto l463
l462:
position, tokenIndex = position462, tokenIndex462
}
l463:
- goto l457
- l456:
- position, tokenIndex = position456, tokenIndex456
+ if !_rules[ruleRegisterOrConstant]() {
+ goto l460
+ }
+ {
+ position464, tokenIndex464 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l464
+ }
+ goto l465
+ l464:
+ position, tokenIndex = position464, tokenIndex464
+ }
+ l465:
+ {
+ position466, tokenIndex466 := position, tokenIndex
+ if buffer[position] != rune(',') {
+ goto l466
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l466
+ }
+ position++
+ l468:
+ {
+ position469, tokenIndex469 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l469
+ }
+ position++
+ goto l468
+ l469:
+ position, tokenIndex = position469, tokenIndex469
+ }
+ goto l467
+ l466:
+ position, tokenIndex = position466, tokenIndex466
+ }
+ l467:
+ goto l461
+ l460:
+ position, tokenIndex = position460, tokenIndex460
}
- l457:
+ l461:
if buffer[position] != rune(')') {
- goto l450
+ goto l454
}
position++
- add(ruleBaseIndexScale, position451)
+ add(ruleBaseIndexScale, position455)
}
return true
- l450:
- position, tokenIndex = position450, tokenIndex450
+ l454:
+ position, tokenIndex = position454, tokenIndex454
return false
},
/* 35 Operator <- <('+' / '-')> */
func() bool {
- position466, tokenIndex466 := position, tokenIndex
- {
- position467 := position
- {
- position468, tokenIndex468 := position, tokenIndex
- if buffer[position] != rune('+') {
- goto l469
- }
- position++
- goto l468
- l469:
- position, tokenIndex = position468, tokenIndex468
- if buffer[position] != rune('-') {
- goto l466
- }
- position++
- }
- l468:
- add(ruleOperator, position467)
- }
- return true
- l466:
- position, tokenIndex = position466, tokenIndex466
- return false
- },
- /* 36 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
- func() bool {
position470, tokenIndex470 := position, tokenIndex
{
position471 := position
{
position472, tokenIndex472 := position, tokenIndex
if buffer[position] != rune('+') {
- goto l472
+ goto l473
}
position++
- goto l473
- l472:
+ goto l472
+ l473:
position, tokenIndex = position472, tokenIndex472
- }
- l473:
- {
- position474, tokenIndex474 := position, tokenIndex
if buffer[position] != rune('-') {
- goto l474
- }
- position++
- goto l475
- l474:
- position, tokenIndex = position474, tokenIndex474
- }
- l475:
- {
- position476, tokenIndex476 := position, tokenIndex
- if buffer[position] != rune('0') {
- goto l477
- }
- position++
- {
- position478, tokenIndex478 := position, tokenIndex
- if buffer[position] != rune('b') {
- goto l479
- }
- position++
- goto l478
- l479:
- position, tokenIndex = position478, tokenIndex478
- if buffer[position] != rune('B') {
- goto l477
- }
- position++
- }
- l478:
- {
- position482, tokenIndex482 := position, tokenIndex
- if buffer[position] != rune('0') {
- goto l483
- }
- position++
- goto l482
- l483:
- position, tokenIndex = position482, tokenIndex482
- if buffer[position] != rune('1') {
- goto l477
- }
- position++
- }
- l482:
- l480:
- {
- position481, tokenIndex481 := position, tokenIndex
- {
- position484, tokenIndex484 := position, tokenIndex
- if buffer[position] != rune('0') {
- goto l485
- }
- position++
- goto l484
- l485:
- position, tokenIndex = position484, tokenIndex484
- if buffer[position] != rune('1') {
- goto l481
- }
- position++
- }
- l484:
- goto l480
- l481:
- position, tokenIndex = position481, tokenIndex481
- }
- goto l476
- l477:
- position, tokenIndex = position476, tokenIndex476
- if buffer[position] != rune('0') {
- goto l486
- }
- position++
- {
- position487, tokenIndex487 := position, tokenIndex
- if buffer[position] != rune('x') {
- goto l488
- }
- position++
- goto l487
- l488:
- position, tokenIndex = position487, tokenIndex487
- if buffer[position] != rune('X') {
- goto l486
- }
- position++
- }
- l487:
- {
- position491, tokenIndex491 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l492
- }
- position++
- goto l491
- l492:
- position, tokenIndex = position491, tokenIndex491
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l493
- }
- position++
- goto l491
- l493:
- position, tokenIndex = position491, tokenIndex491
- {
- position494, tokenIndex494 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('f') {
- goto l495
- }
- position++
- goto l494
- l495:
- position, tokenIndex = position494, tokenIndex494
- if c := buffer[position]; c < rune('A') || c > rune('F') {
- goto l486
- }
- position++
- }
- l494:
- }
- l491:
- l489:
- {
- position490, tokenIndex490 := position, tokenIndex
- {
- position496, tokenIndex496 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l497
- }
- position++
- goto l496
- l497:
- position, tokenIndex = position496, tokenIndex496
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l498
- }
- position++
- goto l496
- l498:
- position, tokenIndex = position496, tokenIndex496
- {
- position499, tokenIndex499 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('f') {
- goto l500
- }
- position++
- goto l499
- l500:
- position, tokenIndex = position499, tokenIndex499
- if c := buffer[position]; c < rune('A') || c > rune('F') {
- goto l490
- }
- position++
- }
- l499:
- }
- l496:
- goto l489
- l490:
- position, tokenIndex = position490, tokenIndex490
- }
- goto l476
- l486:
- position, tokenIndex = position476, tokenIndex476
- if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l470
}
position++
- l501:
- {
- position502, tokenIndex502 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l502
- }
- position++
- goto l501
- l502:
- position, tokenIndex = position502, tokenIndex502
- }
}
- l476:
- add(ruleOffset, position471)
+ l472:
+ add(ruleOperator, position471)
}
return true
l470:
position, tokenIndex = position470, tokenIndex470
return false
},
- /* 37 Section <- <([a-z] / [A-Z] / '@')+> */
+ /* 36 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
func() bool {
- position503, tokenIndex503 := position, tokenIndex
+ position474, tokenIndex474 := position, tokenIndex
{
- position504 := position
+ position475 := position
{
- position507, tokenIndex507 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l508
+ position476, tokenIndex476 := position, tokenIndex
+ if buffer[position] != rune('+') {
+ goto l476
}
position++
- goto l507
- l508:
- position, tokenIndex = position507, tokenIndex507
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l509
- }
- position++
- goto l507
- l509:
- position, tokenIndex = position507, tokenIndex507
- if buffer[position] != rune('@') {
- goto l503
- }
- position++
+ goto l477
+ l476:
+ position, tokenIndex = position476, tokenIndex476
}
- l507:
- l505:
+ l477:
{
- position506, tokenIndex506 := position, tokenIndex
+ position478, tokenIndex478 := position, tokenIndex
+ if buffer[position] != rune('-') {
+ goto l478
+ }
+ position++
+ goto l479
+ l478:
+ position, tokenIndex = position478, tokenIndex478
+ }
+ l479:
+ {
+ position480, tokenIndex480 := position, tokenIndex
+ if buffer[position] != rune('0') {
+ goto l481
+ }
+ position++
{
- position510, tokenIndex510 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l511
+ position482, tokenIndex482 := position, tokenIndex
+ if buffer[position] != rune('b') {
+ goto l483
}
position++
- goto l510
- l511:
- position, tokenIndex = position510, tokenIndex510
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l512
+ goto l482
+ l483:
+ position, tokenIndex = position482, tokenIndex482
+ if buffer[position] != rune('B') {
+ goto l481
}
position++
- goto l510
- l512:
- position, tokenIndex = position510, tokenIndex510
- if buffer[position] != rune('@') {
+ }
+ l482:
+ {
+ position486, tokenIndex486 := position, tokenIndex
+ if buffer[position] != rune('0') {
+ goto l487
+ }
+ position++
+ goto l486
+ l487:
+ position, tokenIndex = position486, tokenIndex486
+ if buffer[position] != rune('1') {
+ goto l481
+ }
+ position++
+ }
+ l486:
+ l484:
+ {
+ position485, tokenIndex485 := position, tokenIndex
+ {
+ position488, tokenIndex488 := position, tokenIndex
+ if buffer[position] != rune('0') {
+ goto l489
+ }
+ position++
+ goto l488
+ l489:
+ position, tokenIndex = position488, tokenIndex488
+ if buffer[position] != rune('1') {
+ goto l485
+ }
+ position++
+ }
+ l488:
+ goto l484
+ l485:
+ position, tokenIndex = position485, tokenIndex485
+ }
+ goto l480
+ l481:
+ position, tokenIndex = position480, tokenIndex480
+ if buffer[position] != rune('0') {
+ goto l490
+ }
+ position++
+ {
+ position491, tokenIndex491 := position, tokenIndex
+ if buffer[position] != rune('x') {
+ goto l492
+ }
+ position++
+ goto l491
+ l492:
+ position, tokenIndex = position491, tokenIndex491
+ if buffer[position] != rune('X') {
+ goto l490
+ }
+ position++
+ }
+ l491:
+ {
+ position495, tokenIndex495 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l496
+ }
+ position++
+ goto l495
+ l496:
+ position, tokenIndex = position495, tokenIndex495
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l497
+ }
+ position++
+ goto l495
+ l497:
+ position, tokenIndex = position495, tokenIndex495
+ {
+ position498, tokenIndex498 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('f') {
+ goto l499
+ }
+ position++
+ goto l498
+ l499:
+ position, tokenIndex = position498, tokenIndex498
+ if c := buffer[position]; c < rune('A') || c > rune('F') {
+ goto l490
+ }
+ position++
+ }
+ l498:
+ }
+ l495:
+ l493:
+ {
+ position494, tokenIndex494 := position, tokenIndex
+ {
+ position500, tokenIndex500 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l501
+ }
+ position++
+ goto l500
+ l501:
+ position, tokenIndex = position500, tokenIndex500
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l502
+ }
+ position++
+ goto l500
+ l502:
+ position, tokenIndex = position500, tokenIndex500
+ {
+ position503, tokenIndex503 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('f') {
+ goto l504
+ }
+ position++
+ goto l503
+ l504:
+ position, tokenIndex = position503, tokenIndex503
+ if c := buffer[position]; c < rune('A') || c > rune('F') {
+ goto l494
+ }
+ position++
+ }
+ l503:
+ }
+ l500:
+ goto l493
+ l494:
+ position, tokenIndex = position494, tokenIndex494
+ }
+ goto l480
+ l490:
+ position, tokenIndex = position480, tokenIndex480
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l474
+ }
+ position++
+ l505:
+ {
+ position506, tokenIndex506 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l506
}
position++
+ goto l505
+ l506:
+ position, tokenIndex = position506, tokenIndex506
}
- l510:
- goto l505
- l506:
- position, tokenIndex = position506, tokenIndex506
}
- add(ruleSection, position504)
+ l480:
+ add(ruleOffset, position475)
}
return true
- l503:
- position, tokenIndex = position503, tokenIndex503
+ l474:
+ position, tokenIndex = position474, tokenIndex474
+ return false
+ },
+ /* 37 Section <- <([a-z] / [A-Z] / '@')+> */
+ func() bool {
+ position507, tokenIndex507 := position, tokenIndex
+ {
+ position508 := position
+ {
+ position511, tokenIndex511 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l512
+ }
+ position++
+ goto l511
+ l512:
+ position, tokenIndex = position511, tokenIndex511
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l513
+ }
+ position++
+ goto l511
+ l513:
+ position, tokenIndex = position511, tokenIndex511
+ if buffer[position] != rune('@') {
+ goto l507
+ }
+ position++
+ }
+ l511:
+ l509:
+ {
+ position510, tokenIndex510 := position, tokenIndex
+ {
+ position514, tokenIndex514 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l515
+ }
+ position++
+ goto l514
+ l515:
+ position, tokenIndex = position514, tokenIndex514
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l516
+ }
+ position++
+ goto l514
+ l516:
+ position, tokenIndex = position514, tokenIndex514
+ if buffer[position] != rune('@') {
+ goto l510
+ }
+ position++
+ }
+ l514:
+ goto l509
+ l510:
+ position, tokenIndex = position510, tokenIndex510
+ }
+ add(ruleSection, position508)
+ }
+ return true
+ l507:
+ position, tokenIndex = position507, tokenIndex507
return false
},
/* 38 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
func() bool {
- position513, tokenIndex513 := position, tokenIndex
+ position517, tokenIndex517 := position, tokenIndex
{
- position514 := position
+ position518 := position
if buffer[position] != rune('%') {
- goto l513
+ goto l517
}
position++
{
- position515, tokenIndex515 := position, tokenIndex
+ position519, tokenIndex519 := position, tokenIndex
if c := buffer[position]; c < rune('c') || c > rune('g') {
- goto l516
+ goto l520
}
position++
- goto l515
- l516:
- position, tokenIndex = position515, tokenIndex515
+ goto l519
+ l520:
+ position, tokenIndex = position519, tokenIndex519
if buffer[position] != rune('s') {
- goto l513
+ goto l517
}
position++
}
- l515:
+ l519:
if buffer[position] != rune('s') {
- goto l513
+ goto l517
}
position++
if buffer[position] != rune(':') {
- goto l513
+ goto l517
}
position++
- add(ruleSegmentRegister, position514)
+ add(ruleSegmentRegister, position518)
}
return true
- l513:
- position, tokenIndex = position513, tokenIndex513
+ l517:
+ position, tokenIndex = position517, tokenIndex517
return false
},
}
diff --git a/util/fipstools/testdata/x86_64-Basic/in.s b/util/fipstools/testdata/x86_64-Basic/in.s
index e31c370..3b535ed 100644
--- a/util/fipstools/testdata/x86_64-Basic/in.s
+++ b/util/fipstools/testdata/x86_64-Basic/in.s
@@ -35,6 +35,8 @@
vpclmulqdq $0x00,%xmm6,%xmm3,%xmm3
vpxor %xmm0,%xmm1,%xmm4
vpxor %xmm4,%xmm3,%xmm3
+ vmovdqu8 %ymm1,%ymm6{%k1}{z}
+ vmovdqu8 %ymm2,%ymm4{%k3}
.byte 0xf3,0xc3
movq %rax, %rbx # Comments can be on the same line as an instruction.
.L3: # Or on the same line as a label.
diff --git a/util/fipstools/testdata/x86_64-Basic/out.s b/util/fipstools/testdata/x86_64-Basic/out.s
index 040d8af..211b7ea 100644
--- a/util/fipstools/testdata/x86_64-Basic/out.s
+++ b/util/fipstools/testdata/x86_64-Basic/out.s
@@ -38,6 +38,8 @@
vpclmulqdq $0x00,%xmm6,%xmm3,%xmm3
vpxor %xmm0,%xmm1,%xmm4
vpxor %xmm4,%xmm3,%xmm3
+ vmovdqu8 %ymm1,%ymm6{%k1}{z}
+ vmovdqu8 %ymm2,%ymm4{%k3}
.byte 0xf3,0xc3
movq %rax, %rbx # Comments can be on the same line as an instruction.
.L3: