A couple of Aarch64 FIPS delocate fixes.
Clang 12 in opt mode produces a couple of assembly patterns that were
not handled by delocate.
Firstly, two-digit vector indexes were just a simple omission. Fixed.
Secondly, Clang puts symbol deltas in .byte directives, and bit-shifts
them. The .byte directive was not considered to be a symbol-containing
directive because it's too small, but it could store deltas.
Additionally, bit-shifting of symbol expressions was not supported.
Fixed.
Change-Id: I796299821f5ac7d3639fa6243c5d9bd5342bbddf
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/47064
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/util/fipstools/delocate/delocate.peg b/util/fipstools/delocate/delocate.peg
index 991cd01..4458e12 100644
--- a/util/fipstools/delocate/delocate.peg
+++ b/util/fipstools/delocate/delocate.peg
@@ -38,14 +38,19 @@
QuotedArg <- '"' QuotedText '"'
QuotedText <- (EscapedChar / [^"])*
LabelContainingDirective <- LabelContainingDirectiveName WS SymbolArgs
-LabelContainingDirectiveName <- ".xword" / ".word" / ".long" / ".set" / ".8byte" / ".4byte" / ".quad" / ".tc" / ".localentry" / ".size" / ".type" / ".uleb128" / ".sleb128"
+LabelContainingDirectiveName <- ".xword" / ".word" / ".long" / ".set" / ".byte" / ".8byte" / ".4byte" / ".quad" / ".tc" / ".localentry" / ".size" / ".type" / ".uleb128" / ".sleb128"
SymbolArgs <- SymbolArg ((WS? ',' WS?) SymbolArg)*
-SymbolArg <- Offset /
- SymbolType /
- (Offset / LocalSymbol / SymbolName / Dot) WS? Operator WS? (Offset / LocalSymbol / SymbolName) /
- LocalSymbol TCMarker? /
- SymbolName Offset /
- SymbolName TCMarker?
+SymbolShift <- ('<<' / '>>') WS? [0-9]+
+SymbolArg <- (OpenParen WS?)? (
+ Offset /
+ SymbolType /
+ (Offset / LocalSymbol / SymbolName / Dot) WS? Operator WS? (Offset / LocalSymbol / SymbolName) /
+ LocalSymbol TCMarker? /
+ SymbolName Offset /
+ SymbolName TCMarker?)
+ (WS? CloseParen)? (WS? SymbolShift)?
+OpenParen <- '('
+CloseParen <- ')'
SymbolType <- [@%] ('function' / 'object')
Dot <- '.'
TCMarker <- '[TC]'
@@ -73,7 +78,7 @@
ARMRegister)
![fb:(+\-]
ARMConstantTweak <- ("lsl" / "sxtw" / "uxtw" / "uxtb" / "lsr" / "ror" / "asr") (WS '#' Offset)?
-ARMRegister <- "sp" / ([xwdqs] [0-9] [0-9]?) / "xzr" / "wzr" / ARMVectorRegister / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] ']')? )
+ARMRegister <- "sp" / ([xwdqs] [0-9] [0-9]?) / "xzr" / "wzr" / ARMVectorRegister / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')? )
ARMVectorRegister <- "v" [0-9] [0-9]? ('.' [0-9]* [bsdhq] ('[' [0-9] [0-9]? ']')? )?
# Compilers only output a very limited number of expression forms. Rather than
# implement a full expression parser, this enumerate those forms plus a few
diff --git a/util/fipstools/delocate/delocate.peg.go b/util/fipstools/delocate/delocate.peg.go
index 6e21346..759b924 100644
--- a/util/fipstools/delocate/delocate.peg.go
+++ b/util/fipstools/delocate/delocate.peg.go
@@ -29,7 +29,10 @@
ruleLabelContainingDirective
ruleLabelContainingDirectiveName
ruleSymbolArgs
+ ruleSymbolShift
ruleSymbolArg
+ ruleOpenParen
+ ruleCloseParen
ruleSymbolType
ruleDot
ruleTCMarker
@@ -84,7 +87,10 @@
"LabelContainingDirective",
"LabelContainingDirectiveName",
"SymbolArgs",
+ "SymbolShift",
"SymbolArg",
+ "OpenParen",
+ "CloseParen",
"SymbolType",
"Dot",
"TCMarker",
@@ -234,7 +240,7 @@
type Asm struct {
Buffer string
buffer []rune
- rules [52]func() bool
+ rules [55]func() bool
parse func(rule ...int) error
reset func()
Pretty bool
@@ -1382,7 +1388,7 @@
position, tokenIndex = position145, tokenIndex145
return false
},
- /* 13 LabelContainingDirectiveName <- <(('.' ('x' / 'X') ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('l' / 'L') ('o' / 'O') ('n' / 'N') ('g' / 'G')) / ('.' ('s' / 'S') ('e' / 'E') ('t' / 'T')) / ('.' '8' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '4' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' ('q' / 'Q') ('u' / 'U') ('a' / 'A') ('d' / 'D')) / ('.' ('t' / 'T') ('c' / 'C')) / ('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') ('a' / 'A') ('l' / 'L') ('e' / 'E') ('n' / 'N') ('t' / 'T') ('r' / 'R') ('y' / 'Y')) / ('.' ('s' / 'S') ('i' / 'I') ('z' / 'Z') ('e' / 'E')) / ('.' ('t' / 'T') ('y' / 'Y') ('p' / 'P') ('e' / 'E')) / ('.' ('u' / 'U') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8') / ('.' ('s' / 'S') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8'))> */
+ /* 13 LabelContainingDirectiveName <- <(('.' ('x' / 'X') ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('l' / 'L') ('o' / 'O') ('n' / 'N') ('g' / 'G')) / ('.' ('s' / 'S') ('e' / 'E') ('t' / 'T')) / ('.' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '8' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '4' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' ('q' / 'Q') ('u' / 'U') ('a' / 'A') ('d' / 'D')) / ('.' ('t' / 'T') ('c' / 'C')) / ('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') ('a' / 'A') ('l' / 'L') ('e' / 'E') ('n' / 'N') ('t' / 'T') ('r' / 'R') ('y' / 'Y')) / ('.' ('s' / 'S') ('i' / 'I') ('z' / 'Z') ('e' / 'E')) / ('.' ('t' / 'T') ('y' / 'Y') ('p' / 'P') ('e' / 'E')) / ('.' ('u' / 'U') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8') / ('.' ('s' / 'S') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8'))> */
func() bool {
position147, tokenIndex147 := position, tokenIndex
{
@@ -1661,10 +1667,6 @@
goto l186
}
position++
- if buffer[position] != rune('8') {
- goto l186
- }
- position++
{
position187, tokenIndex187 := position, tokenIndex
if buffer[position] != rune('b') {
@@ -1732,7 +1734,7 @@
goto l195
}
position++
- if buffer[position] != rune('4') {
+ if buffer[position] != rune('8') {
goto l195
}
position++
@@ -1803,16 +1805,20 @@
goto l204
}
position++
+ if buffer[position] != rune('4') {
+ goto l204
+ }
+ position++
{
position205, tokenIndex205 := position, tokenIndex
- if buffer[position] != rune('q') {
+ if buffer[position] != rune('b') {
goto l206
}
position++
goto l205
l206:
position, tokenIndex = position205, tokenIndex205
- if buffer[position] != rune('Q') {
+ if buffer[position] != rune('B') {
goto l204
}
position++
@@ -1820,14 +1826,14 @@
l205:
{
position207, tokenIndex207 := position, tokenIndex
- if buffer[position] != rune('u') {
+ if buffer[position] != rune('y') {
goto l208
}
position++
goto l207
l208:
position, tokenIndex = position207, tokenIndex207
- if buffer[position] != rune('U') {
+ if buffer[position] != rune('Y') {
goto l204
}
position++
@@ -1835,14 +1841,14 @@
l207:
{
position209, tokenIndex209 := position, tokenIndex
- if buffer[position] != rune('a') {
+ if buffer[position] != rune('t') {
goto l210
}
position++
goto l209
l210:
position, tokenIndex = position209, tokenIndex209
- if buffer[position] != rune('A') {
+ if buffer[position] != rune('T') {
goto l204
}
position++
@@ -1850,14 +1856,14 @@
l209:
{
position211, tokenIndex211 := position, tokenIndex
- if buffer[position] != rune('d') {
+ if buffer[position] != rune('e') {
goto l212
}
position++
goto l211
l212:
position, tokenIndex = position211, tokenIndex211
- if buffer[position] != rune('D') {
+ if buffer[position] != rune('E') {
goto l204
}
position++
@@ -1872,14 +1878,14 @@
position++
{
position214, tokenIndex214 := position, tokenIndex
- if buffer[position] != rune('t') {
+ if buffer[position] != rune('q') {
goto l215
}
position++
goto l214
l215:
position, tokenIndex = position214, tokenIndex214
- if buffer[position] != rune('T') {
+ if buffer[position] != rune('Q') {
goto l213
}
position++
@@ -1887,245 +1893,245 @@
l214:
{
position216, tokenIndex216 := position, tokenIndex
- if buffer[position] != rune('c') {
+ if buffer[position] != rune('u') {
goto l217
}
position++
goto l216
l217:
position, tokenIndex = position216, tokenIndex216
- if buffer[position] != rune('C') {
+ if buffer[position] != rune('U') {
goto l213
}
position++
}
l216:
+ {
+ position218, tokenIndex218 := position, tokenIndex
+ if buffer[position] != rune('a') {
+ goto l219
+ }
+ position++
+ goto l218
+ l219:
+ position, tokenIndex = position218, tokenIndex218
+ if buffer[position] != rune('A') {
+ goto l213
+ }
+ position++
+ }
+ l218:
+ {
+ position220, tokenIndex220 := position, tokenIndex
+ if buffer[position] != rune('d') {
+ goto l221
+ }
+ position++
+ goto l220
+ l221:
+ position, tokenIndex = position220, tokenIndex220
+ if buffer[position] != rune('D') {
+ goto l213
+ }
+ position++
+ }
+ l220:
goto l149
l213:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
- goto l218
+ goto l222
}
position++
{
- position219, tokenIndex219 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l220
- }
- position++
- goto l219
- l220:
- position, tokenIndex = position219, tokenIndex219
- if buffer[position] != rune('L') {
- goto l218
- }
- position++
- }
- l219:
- {
- position221, tokenIndex221 := position, tokenIndex
- if buffer[position] != rune('o') {
- goto l222
- }
- position++
- goto l221
- l222:
- position, tokenIndex = position221, tokenIndex221
- if buffer[position] != rune('O') {
- goto l218
- }
- position++
- }
- l221:
- {
position223, tokenIndex223 := position, tokenIndex
- if buffer[position] != rune('c') {
+ if buffer[position] != rune('t') {
goto l224
}
position++
goto l223
l224:
position, tokenIndex = position223, tokenIndex223
- if buffer[position] != rune('C') {
- goto l218
+ if buffer[position] != rune('T') {
+ goto l222
}
position++
}
l223:
{
position225, tokenIndex225 := position, tokenIndex
- if buffer[position] != rune('a') {
+ if buffer[position] != rune('c') {
goto l226
}
position++
goto l225
l226:
position, tokenIndex = position225, tokenIndex225
- if buffer[position] != rune('A') {
- goto l218
+ if buffer[position] != rune('C') {
+ goto l222
}
position++
}
l225:
- {
- position227, tokenIndex227 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l228
- }
- position++
- goto l227
- l228:
- position, tokenIndex = position227, tokenIndex227
- if buffer[position] != rune('L') {
- goto l218
- }
- position++
- }
- l227:
- {
- position229, tokenIndex229 := position, tokenIndex
- if buffer[position] != rune('e') {
- goto l230
- }
- position++
- goto l229
- l230:
- position, tokenIndex = position229, tokenIndex229
- if buffer[position] != rune('E') {
- goto l218
- }
- position++
- }
- l229:
- {
- position231, tokenIndex231 := position, tokenIndex
- if buffer[position] != rune('n') {
- goto l232
- }
- position++
- goto l231
- l232:
- position, tokenIndex = position231, tokenIndex231
- if buffer[position] != rune('N') {
- goto l218
- }
- position++
- }
- l231:
- {
- position233, tokenIndex233 := position, tokenIndex
- if buffer[position] != rune('t') {
- goto l234
- }
- position++
- goto l233
- l234:
- position, tokenIndex = position233, tokenIndex233
- if buffer[position] != rune('T') {
- goto l218
- }
- position++
- }
- l233:
- {
- position235, tokenIndex235 := position, tokenIndex
- if buffer[position] != rune('r') {
- goto l236
- }
- position++
- goto l235
- l236:
- position, tokenIndex = position235, tokenIndex235
- if buffer[position] != rune('R') {
- goto l218
- }
- position++
- }
- l235:
- {
- position237, tokenIndex237 := position, tokenIndex
- if buffer[position] != rune('y') {
- goto l238
- }
- position++
- goto l237
- l238:
- position, tokenIndex = position237, tokenIndex237
- if buffer[position] != rune('Y') {
- goto l218
- }
- position++
- }
- l237:
goto l149
- l218:
+ l222:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
- goto l239
+ goto l227
}
position++
{
+ position228, tokenIndex228 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l229
+ }
+ position++
+ goto l228
+ l229:
+ position, tokenIndex = position228, tokenIndex228
+ if buffer[position] != rune('L') {
+ goto l227
+ }
+ position++
+ }
+ l228:
+ {
+ position230, tokenIndex230 := position, tokenIndex
+ if buffer[position] != rune('o') {
+ goto l231
+ }
+ position++
+ goto l230
+ l231:
+ position, tokenIndex = position230, tokenIndex230
+ if buffer[position] != rune('O') {
+ goto l227
+ }
+ position++
+ }
+ l230:
+ {
+ position232, tokenIndex232 := position, tokenIndex
+ if buffer[position] != rune('c') {
+ goto l233
+ }
+ position++
+ goto l232
+ l233:
+ position, tokenIndex = position232, tokenIndex232
+ if buffer[position] != rune('C') {
+ goto l227
+ }
+ position++
+ }
+ l232:
+ {
+ position234, tokenIndex234 := position, tokenIndex
+ if buffer[position] != rune('a') {
+ goto l235
+ }
+ position++
+ goto l234
+ l235:
+ position, tokenIndex = position234, tokenIndex234
+ if buffer[position] != rune('A') {
+ goto l227
+ }
+ position++
+ }
+ l234:
+ {
+ position236, tokenIndex236 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l237
+ }
+ position++
+ goto l236
+ l237:
+ position, tokenIndex = position236, tokenIndex236
+ if buffer[position] != rune('L') {
+ goto l227
+ }
+ position++
+ }
+ l236:
+ {
+ position238, tokenIndex238 := position, tokenIndex
+ if buffer[position] != rune('e') {
+ goto l239
+ }
+ position++
+ goto l238
+ l239:
+ position, tokenIndex = position238, tokenIndex238
+ if buffer[position] != rune('E') {
+ goto l227
+ }
+ position++
+ }
+ l238:
+ {
position240, tokenIndex240 := position, tokenIndex
- if buffer[position] != rune('s') {
+ if buffer[position] != rune('n') {
goto l241
}
position++
goto l240
l241:
position, tokenIndex = position240, tokenIndex240
- if buffer[position] != rune('S') {
- goto l239
+ if buffer[position] != rune('N') {
+ goto l227
}
position++
}
l240:
{
position242, tokenIndex242 := position, tokenIndex
- if buffer[position] != rune('i') {
+ if buffer[position] != rune('t') {
goto l243
}
position++
goto l242
l243:
position, tokenIndex = position242, tokenIndex242
- if buffer[position] != rune('I') {
- goto l239
+ if buffer[position] != rune('T') {
+ goto l227
}
position++
}
l242:
{
position244, tokenIndex244 := position, tokenIndex
- if buffer[position] != rune('z') {
+ if buffer[position] != rune('r') {
goto l245
}
position++
goto l244
l245:
position, tokenIndex = position244, tokenIndex244
- if buffer[position] != rune('Z') {
- goto l239
+ if buffer[position] != rune('R') {
+ goto l227
}
position++
}
l244:
{
position246, tokenIndex246 := position, tokenIndex
- if buffer[position] != rune('e') {
+ if buffer[position] != rune('y') {
goto l247
}
position++
goto l246
l247:
position, tokenIndex = position246, tokenIndex246
- if buffer[position] != rune('E') {
- goto l239
+ if buffer[position] != rune('Y') {
+ goto l227
}
position++
}
l246:
goto l149
- l239:
+ l227:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l248
@@ -2133,14 +2139,14 @@
position++
{
position249, tokenIndex249 := position, tokenIndex
- if buffer[position] != rune('t') {
+ if buffer[position] != rune('s') {
goto l250
}
position++
goto l249
l250:
position, tokenIndex = position249, tokenIndex249
- if buffer[position] != rune('T') {
+ if buffer[position] != rune('S') {
goto l248
}
position++
@@ -2148,14 +2154,14 @@
l249:
{
position251, tokenIndex251 := position, tokenIndex
- if buffer[position] != rune('y') {
+ if buffer[position] != rune('i') {
goto l252
}
position++
goto l251
l252:
position, tokenIndex = position251, tokenIndex251
- if buffer[position] != rune('Y') {
+ if buffer[position] != rune('I') {
goto l248
}
position++
@@ -2163,14 +2169,14 @@
l251:
{
position253, tokenIndex253 := position, tokenIndex
- if buffer[position] != rune('p') {
+ if buffer[position] != rune('z') {
goto l254
}
position++
goto l253
l254:
position, tokenIndex = position253, tokenIndex253
- if buffer[position] != rune('P') {
+ if buffer[position] != rune('Z') {
goto l248
}
position++
@@ -2200,14 +2206,14 @@
position++
{
position258, tokenIndex258 := position, tokenIndex
- if buffer[position] != rune('u') {
+ if buffer[position] != rune('t') {
goto l259
}
position++
goto l258
l259:
position, tokenIndex = position258, tokenIndex258
- if buffer[position] != rune('U') {
+ if buffer[position] != rune('T') {
goto l257
}
position++
@@ -2215,14 +2221,14 @@
l258:
{
position260, tokenIndex260 := position, tokenIndex
- if buffer[position] != rune('l') {
+ if buffer[position] != rune('y') {
goto l261
}
position++
goto l260
l261:
position, tokenIndex = position260, tokenIndex260
- if buffer[position] != rune('L') {
+ if buffer[position] != rune('Y') {
goto l257
}
position++
@@ -2230,14 +2236,14 @@
l260:
{
position262, tokenIndex262 := position, tokenIndex
- if buffer[position] != rune('e') {
+ if buffer[position] != rune('p') {
goto l263
}
position++
goto l262
l263:
position, tokenIndex = position262, tokenIndex262
- if buffer[position] != rune('E') {
+ if buffer[position] != rune('P') {
goto l257
}
position++
@@ -2245,98 +2251,165 @@
l262:
{
position264, tokenIndex264 := position, tokenIndex
- if buffer[position] != rune('b') {
+ if buffer[position] != rune('e') {
goto l265
}
position++
goto l264
l265:
position, tokenIndex = position264, tokenIndex264
- if buffer[position] != rune('B') {
+ if buffer[position] != rune('E') {
goto l257
}
position++
}
l264:
+ goto l149
+ l257:
+ position, tokenIndex = position149, tokenIndex149
+ if buffer[position] != rune('.') {
+ goto l266
+ }
+ position++
+ {
+ position267, tokenIndex267 := position, tokenIndex
+ if buffer[position] != rune('u') {
+ goto l268
+ }
+ position++
+ goto l267
+ l268:
+ position, tokenIndex = position267, tokenIndex267
+ if buffer[position] != rune('U') {
+ goto l266
+ }
+ position++
+ }
+ l267:
+ {
+ position269, tokenIndex269 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l270
+ }
+ position++
+ goto l269
+ l270:
+ position, tokenIndex = position269, tokenIndex269
+ if buffer[position] != rune('L') {
+ goto l266
+ }
+ position++
+ }
+ l269:
+ {
+ position271, tokenIndex271 := position, tokenIndex
+ if buffer[position] != rune('e') {
+ goto l272
+ }
+ position++
+ goto l271
+ l272:
+ position, tokenIndex = position271, tokenIndex271
+ if buffer[position] != rune('E') {
+ goto l266
+ }
+ position++
+ }
+ l271:
+ {
+ position273, tokenIndex273 := position, tokenIndex
+ if buffer[position] != rune('b') {
+ goto l274
+ }
+ position++
+ goto l273
+ l274:
+ position, tokenIndex = position273, tokenIndex273
+ if buffer[position] != rune('B') {
+ goto l266
+ }
+ position++
+ }
+ l273:
if buffer[position] != rune('1') {
- goto l257
+ goto l266
}
position++
if buffer[position] != rune('2') {
- goto l257
+ goto l266
}
position++
if buffer[position] != rune('8') {
- goto l257
+ goto l266
}
position++
goto l149
- l257:
+ l266:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l147
}
position++
{
- position266, tokenIndex266 := position, tokenIndex
+ position275, tokenIndex275 := position, tokenIndex
if buffer[position] != rune('s') {
- goto l267
+ goto l276
}
position++
- goto l266
- l267:
- position, tokenIndex = position266, tokenIndex266
+ goto l275
+ l276:
+ position, tokenIndex = position275, tokenIndex275
if buffer[position] != rune('S') {
goto l147
}
position++
}
- l266:
+ l275:
{
- position268, tokenIndex268 := position, tokenIndex
+ position277, tokenIndex277 := position, tokenIndex
if buffer[position] != rune('l') {
- goto l269
+ goto l278
}
position++
- goto l268
- l269:
- position, tokenIndex = position268, tokenIndex268
+ goto l277
+ l278:
+ position, tokenIndex = position277, tokenIndex277
if buffer[position] != rune('L') {
goto l147
}
position++
}
- l268:
+ l277:
{
- position270, tokenIndex270 := position, tokenIndex
+ position279, tokenIndex279 := position, tokenIndex
if buffer[position] != rune('e') {
- goto l271
+ goto l280
}
position++
- goto l270
- l271:
- position, tokenIndex = position270, tokenIndex270
+ goto l279
+ l280:
+ position, tokenIndex = position279, tokenIndex279
if buffer[position] != rune('E') {
goto l147
}
position++
}
- l270:
+ l279:
{
- position272, tokenIndex272 := position, tokenIndex
+ position281, tokenIndex281 := position, tokenIndex
if buffer[position] != rune('b') {
- goto l273
+ goto l282
}
position++
- goto l272
- l273:
- position, tokenIndex = position272, tokenIndex272
+ goto l281
+ l282:
+ position, tokenIndex = position281, tokenIndex281
if buffer[position] != rune('B') {
goto l147
}
position++
}
- l272:
+ l281:
if buffer[position] != rune('1') {
goto l147
}
@@ -2360,173 +2433,126 @@
},
/* 14 SymbolArgs <- <(SymbolArg (WS? ',' WS? SymbolArg)*)> */
func() bool {
- position274, tokenIndex274 := position, tokenIndex
+ position283, tokenIndex283 := position, tokenIndex
{
- position275 := position
+ position284 := position
if !_rules[ruleSymbolArg]() {
- goto l274
+ goto l283
}
- l276:
+ l285:
{
- position277, tokenIndex277 := position, tokenIndex
+ position286, tokenIndex286 := position, tokenIndex
{
- position278, tokenIndex278 := position, tokenIndex
+ position287, tokenIndex287 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l278
+ goto l287
}
- goto l279
- l278:
- position, tokenIndex = position278, tokenIndex278
+ goto l288
+ l287:
+ position, tokenIndex = position287, tokenIndex287
}
- l279:
+ l288:
if buffer[position] != rune(',') {
- goto l277
+ goto l286
}
position++
{
- position280, tokenIndex280 := position, tokenIndex
+ position289, tokenIndex289 := position, tokenIndex
if !_rules[ruleWS]() {
- goto l280
- }
- goto l281
- l280:
- position, tokenIndex = position280, tokenIndex280
- }
- l281:
- if !_rules[ruleSymbolArg]() {
- goto l277
- }
- goto l276
- l277:
- position, tokenIndex = position277, tokenIndex277
- }
- add(ruleSymbolArgs, position275)
- }
- return true
- l274:
- position, tokenIndex = position274, tokenIndex274
- return false
- },
- /* 15 SymbolArg <- <(Offset / SymbolType / ((Offset / LocalSymbol / SymbolName / Dot) WS? Operator WS? (Offset / LocalSymbol / SymbolName)) / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?))> */
- func() bool {
- position282, tokenIndex282 := position, tokenIndex
- {
- position283 := position
- {
- position284, tokenIndex284 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l285
- }
- goto l284
- l285:
- position, tokenIndex = position284, tokenIndex284
- if !_rules[ruleSymbolType]() {
- goto l286
- }
- goto l284
- l286:
- position, tokenIndex = position284, tokenIndex284
- {
- position288, tokenIndex288 := position, tokenIndex
- if !_rules[ruleOffset]() {
goto l289
}
- goto l288
+ goto l290
l289:
- position, tokenIndex = position288, tokenIndex288
- if !_rules[ruleLocalSymbol]() {
- goto l290
- }
- goto l288
- l290:
- position, tokenIndex = position288, tokenIndex288
- if !_rules[ruleSymbolName]() {
- goto l291
- }
- goto l288
- l291:
- position, tokenIndex = position288, tokenIndex288
- if !_rules[ruleDot]() {
- goto l287
- }
+ position, tokenIndex = position289, tokenIndex289
}
- l288:
- {
- position292, tokenIndex292 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l292
- }
- goto l293
- l292:
- position, tokenIndex = position292, tokenIndex292
+ l290:
+ if !_rules[ruleSymbolArg]() {
+ goto l286
}
- l293:
- if !_rules[ruleOperator]() {
- goto l287
+ goto l285
+ l286:
+ position, tokenIndex = position286, tokenIndex286
+ }
+ add(ruleSymbolArgs, position284)
+ }
+ return true
+ l283:
+ position, tokenIndex = position283, tokenIndex283
+ return false
+ },
+ /* 15 SymbolShift <- <((('<' '<') / ('>' '>')) WS? [0-9]+)> */
+ func() bool {
+ position291, tokenIndex291 := position, tokenIndex
+ {
+ position292 := position
+ {
+ position293, tokenIndex293 := position, tokenIndex
+ if buffer[position] != rune('<') {
+ goto l294
}
- {
- position294, tokenIndex294 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l294
- }
+ position++
+ if buffer[position] != rune('<') {
+ goto l294
+ }
+ position++
+ goto l293
+ l294:
+ position, tokenIndex = position293, tokenIndex293
+ if buffer[position] != rune('>') {
+ goto l291
+ }
+ position++
+ if buffer[position] != rune('>') {
+ goto l291
+ }
+ position++
+ }
+ l293:
+ {
+ position295, tokenIndex295 := position, tokenIndex
+ if !_rules[ruleWS]() {
goto l295
- l294:
- position, tokenIndex = position294, tokenIndex294
}
+ goto l296
l295:
- {
- position296, tokenIndex296 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l297
- }
- goto l296
- l297:
- position, tokenIndex = position296, tokenIndex296
- if !_rules[ruleLocalSymbol]() {
- goto l298
- }
- goto l296
- l298:
- position, tokenIndex = position296, tokenIndex296
- if !_rules[ruleSymbolName]() {
- goto l287
- }
+ position, tokenIndex = position295, tokenIndex295
+ }
+ l296:
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l291
+ }
+ position++
+ l297:
+ {
+ position298, tokenIndex298 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l298
}
- l296:
- goto l284
- l287:
- position, tokenIndex = position284, tokenIndex284
- if !_rules[ruleLocalSymbol]() {
- goto l299
- }
- {
- position300, tokenIndex300 := position, tokenIndex
- if !_rules[ruleTCMarker]() {
- goto l300
- }
+ position++
+ goto l297
+ l298:
+ position, tokenIndex = position298, tokenIndex298
+ }
+ add(ruleSymbolShift, position292)
+ }
+ return true
+ l291:
+ position, tokenIndex = position291, tokenIndex291
+ return false
+ },
+ /* 16 SymbolArg <- <((OpenParen WS?)? (Offset / SymbolType / ((Offset / LocalSymbol / SymbolName / Dot) WS? Operator WS? (Offset / LocalSymbol / SymbolName)) / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?)) (WS? CloseParen)? (WS? SymbolShift)?)> */
+ func() bool {
+ position299, tokenIndex299 := position, tokenIndex
+ {
+ position300 := position
+ {
+ position301, tokenIndex301 := position, tokenIndex
+ if !_rules[ruleOpenParen]() {
goto l301
- l300:
- position, tokenIndex = position300, tokenIndex300
- }
- l301:
- goto l284
- l299:
- position, tokenIndex = position284, tokenIndex284
- if !_rules[ruleSymbolName]() {
- goto l302
- }
- if !_rules[ruleOffset]() {
- goto l302
- }
- goto l284
- l302:
- position, tokenIndex = position284, tokenIndex284
- if !_rules[ruleSymbolName]() {
- goto l282
}
{
position303, tokenIndex303 := position, tokenIndex
- if !_rules[ruleTCMarker]() {
+ if !_rules[ruleWS]() {
goto l303
}
goto l304
@@ -2534,3567 +2560,3777 @@
position, tokenIndex = position303, tokenIndex303
}
l304:
+ goto l302
+ l301:
+ position, tokenIndex = position301, tokenIndex301
}
- l284:
- add(ruleSymbolArg, position283)
- }
- return true
- l282:
- position, tokenIndex = position282, tokenIndex282
- return false
- },
- /* 16 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
- func() bool {
- position305, tokenIndex305 := position, tokenIndex
- {
- position306 := position
+ l302:
{
- position307, tokenIndex307 := position, tokenIndex
- if buffer[position] != rune('@') {
+ position305, tokenIndex305 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l306
+ }
+ goto l305
+ l306:
+ position, tokenIndex = position305, tokenIndex305
+ if !_rules[ruleSymbolType]() {
+ goto l307
+ }
+ goto l305
+ l307:
+ position, tokenIndex = position305, tokenIndex305
+ {
+ position309, tokenIndex309 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l310
+ }
+ goto l309
+ l310:
+ position, tokenIndex = position309, tokenIndex309
+ if !_rules[ruleLocalSymbol]() {
+ goto l311
+ }
+ goto l309
+ l311:
+ position, tokenIndex = position309, tokenIndex309
+ if !_rules[ruleSymbolName]() {
+ goto l312
+ }
+ goto l309
+ l312:
+ position, tokenIndex = position309, tokenIndex309
+ if !_rules[ruleDot]() {
+ goto l308
+ }
+ }
+ l309:
+ {
+ position313, tokenIndex313 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l313
+ }
+ goto l314
+ l313:
+ position, tokenIndex = position313, tokenIndex313
+ }
+ l314:
+ if !_rules[ruleOperator]() {
goto l308
}
- position++
- goto l307
- l308:
- position, tokenIndex = position307, tokenIndex307
- if buffer[position] != rune('%') {
- goto l305
- }
- position++
- }
- l307:
- {
- position309, tokenIndex309 := position, tokenIndex
- if buffer[position] != rune('f') {
- goto l310
- }
- position++
- if buffer[position] != rune('u') {
- goto l310
- }
- position++
- if buffer[position] != rune('n') {
- goto l310
- }
- position++
- if buffer[position] != rune('c') {
- goto l310
- }
- position++
- if buffer[position] != rune('t') {
- goto l310
- }
- position++
- if buffer[position] != rune('i') {
- goto l310
- }
- position++
- if buffer[position] != rune('o') {
- goto l310
- }
- position++
- if buffer[position] != rune('n') {
- goto l310
- }
- position++
- goto l309
- l310:
- position, tokenIndex = position309, tokenIndex309
- if buffer[position] != rune('o') {
- goto l305
- }
- position++
- if buffer[position] != rune('b') {
- goto l305
- }
- position++
- if buffer[position] != rune('j') {
- goto l305
- }
- position++
- if buffer[position] != rune('e') {
- goto l305
- }
- position++
- if buffer[position] != rune('c') {
- goto l305
- }
- position++
- if buffer[position] != rune('t') {
- goto l305
- }
- position++
- }
- l309:
- add(ruleSymbolType, position306)
- }
- return true
- l305:
- position, tokenIndex = position305, tokenIndex305
- return false
- },
- /* 17 Dot <- <'.'> */
- func() bool {
- position311, tokenIndex311 := position, tokenIndex
- {
- position312 := position
- if buffer[position] != rune('.') {
- goto l311
- }
- position++
- add(ruleDot, position312)
- }
- return true
- l311:
- position, tokenIndex = position311, tokenIndex311
- return false
- },
- /* 18 TCMarker <- <('[' 'T' 'C' ']')> */
- func() bool {
- position313, tokenIndex313 := position, tokenIndex
- {
- position314 := position
- if buffer[position] != rune('[') {
- goto l313
- }
- position++
- if buffer[position] != rune('T') {
- goto l313
- }
- position++
- if buffer[position] != rune('C') {
- goto l313
- }
- position++
- if buffer[position] != rune(']') {
- goto l313
- }
- position++
- add(ruleTCMarker, position314)
- }
- return true
- l313:
- position, tokenIndex = position313, tokenIndex313
- return false
- },
- /* 19 EscapedChar <- <('\\' .)> */
- func() bool {
- position315, tokenIndex315 := position, tokenIndex
- {
- position316 := position
- if buffer[position] != rune('\\') {
- goto l315
- }
- position++
- if !matchDot() {
- goto l315
- }
- add(ruleEscapedChar, position316)
- }
- return true
- l315:
- position, tokenIndex = position315, tokenIndex315
- return false
- },
- /* 20 WS <- <(' ' / '\t')+> */
- func() bool {
- position317, tokenIndex317 := position, tokenIndex
- {
- position318 := position
- {
- position321, tokenIndex321 := position, tokenIndex
- if buffer[position] != rune(' ') {
- goto l322
- }
- position++
- goto l321
- l322:
- position, tokenIndex = position321, tokenIndex321
- if buffer[position] != rune('\t') {
- goto l317
- }
- position++
- }
- l321:
- l319:
- {
- position320, tokenIndex320 := position, tokenIndex
{
- position323, tokenIndex323 := position, tokenIndex
- if buffer[position] != rune(' ') {
+ position315, tokenIndex315 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l315
+ }
+ goto l316
+ l315:
+ position, tokenIndex = position315, tokenIndex315
+ }
+ l316:
+ {
+ position317, tokenIndex317 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l318
+ }
+ goto l317
+ l318:
+ position, tokenIndex = position317, tokenIndex317
+ if !_rules[ruleLocalSymbol]() {
+ goto l319
+ }
+ goto l317
+ l319:
+ position, tokenIndex = position317, tokenIndex317
+ if !_rules[ruleSymbolName]() {
+ goto l308
+ }
+ }
+ l317:
+ goto l305
+ l308:
+ position, tokenIndex = position305, tokenIndex305
+ if !_rules[ruleLocalSymbol]() {
+ goto l320
+ }
+ {
+ position321, tokenIndex321 := position, tokenIndex
+ if !_rules[ruleTCMarker]() {
+ goto l321
+ }
+ goto l322
+ l321:
+ position, tokenIndex = position321, tokenIndex321
+ }
+ l322:
+ goto l305
+ l320:
+ position, tokenIndex = position305, tokenIndex305
+ if !_rules[ruleSymbolName]() {
+ goto l323
+ }
+ if !_rules[ruleOffset]() {
+ goto l323
+ }
+ goto l305
+ l323:
+ position, tokenIndex = position305, tokenIndex305
+ if !_rules[ruleSymbolName]() {
+ goto l299
+ }
+ {
+ position324, tokenIndex324 := position, tokenIndex
+ if !_rules[ruleTCMarker]() {
goto l324
}
- position++
- goto l323
- l324:
- position, tokenIndex = position323, tokenIndex323
- if buffer[position] != rune('\t') {
- goto l320
- }
- position++
- }
- l323:
- goto l319
- l320:
- position, tokenIndex = position320, tokenIndex320
- }
- add(ruleWS, position318)
- }
- return true
- l317:
- position, tokenIndex = position317, tokenIndex317
- return false
- },
- /* 21 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
- func() bool {
- position325, tokenIndex325 := position, tokenIndex
- {
- position326 := position
- {
- position327, tokenIndex327 := position, tokenIndex
- if buffer[position] != rune('/') {
- goto l328
- }
- position++
- if buffer[position] != rune('/') {
- goto l328
- }
- position++
- goto l327
- l328:
- position, tokenIndex = position327, tokenIndex327
- if buffer[position] != rune('#') {
goto l325
+ l324:
+ position, tokenIndex = position324, tokenIndex324
}
- position++
+ l325:
+ }
+ l305:
+ {
+ position326, tokenIndex326 := position, tokenIndex
+ {
+ position328, tokenIndex328 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l328
+ }
+ goto l329
+ l328:
+ position, tokenIndex = position328, tokenIndex328
+ }
+ l329:
+ if !_rules[ruleCloseParen]() {
+ goto l326
+ }
+ goto l327
+ l326:
+ position, tokenIndex = position326, tokenIndex326
}
l327:
- l329:
{
position330, tokenIndex330 := position, tokenIndex
{
- position331, tokenIndex331 := position, tokenIndex
- if buffer[position] != rune('\n') {
- goto l331
+ position332, tokenIndex332 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l332
}
- position++
- goto l330
- l331:
- position, tokenIndex = position331, tokenIndex331
+ goto l333
+ l332:
+ position, tokenIndex = position332, tokenIndex332
}
- if !matchDot() {
+ l333:
+ if !_rules[ruleSymbolShift]() {
goto l330
}
- goto l329
+ goto l331
l330:
position, tokenIndex = position330, tokenIndex330
}
- add(ruleComment, position326)
+ l331:
+ add(ruleSymbolArg, position300)
}
return true
- l325:
- position, tokenIndex = position325, tokenIndex325
+ l299:
+ position, tokenIndex = position299, tokenIndex299
return false
},
- /* 22 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
+ /* 17 OpenParen <- <'('> */
func() bool {
- position332, tokenIndex332 := position, tokenIndex
+ position334, tokenIndex334 := position, tokenIndex
{
- position333 := position
- {
- position334, tokenIndex334 := position, tokenIndex
- if !_rules[ruleLocalSymbol]() {
- goto l335
- }
+ position335 := position
+ if buffer[position] != rune('(') {
goto l334
- l335:
- position, tokenIndex = position334, tokenIndex334
- if !_rules[ruleLocalLabel]() {
- goto l336
- }
- goto l334
- l336:
- position, tokenIndex = position334, tokenIndex334
- if !_rules[ruleSymbolName]() {
- goto l332
- }
- }
- l334:
- if buffer[position] != rune(':') {
- goto l332
}
position++
- add(ruleLabel, position333)
+ add(ruleOpenParen, position335)
}
return true
- l332:
- position, tokenIndex = position332, tokenIndex332
+ l334:
+ position, tokenIndex = position334, tokenIndex334
return false
},
- /* 23 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
+ /* 18 CloseParen <- <')'> */
func() bool {
- position337, tokenIndex337 := position, tokenIndex
+ position336, tokenIndex336 := position, tokenIndex
{
- position338 := position
+ position337 := position
+ if buffer[position] != rune(')') {
+ goto l336
+ }
+ position++
+ add(ruleCloseParen, position337)
+ }
+ return true
+ l336:
+ position, tokenIndex = position336, tokenIndex336
+ return false
+ },
+ /* 19 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
+ func() bool {
+ position338, tokenIndex338 := position, tokenIndex
+ {
+ position339 := position
{
- position339, tokenIndex339 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l340
- }
- position++
- goto l339
- l340:
- position, tokenIndex = position339, tokenIndex339
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ position340, tokenIndex340 := position, tokenIndex
+ if buffer[position] != rune('@') {
goto l341
}
position++
- goto l339
+ goto l340
l341:
- position, tokenIndex = position339, tokenIndex339
- if buffer[position] != rune('.') {
- goto l342
- }
- position++
- goto l339
- l342:
- position, tokenIndex = position339, tokenIndex339
- if buffer[position] != rune('_') {
- goto l337
+ position, tokenIndex = position340, tokenIndex340
+ if buffer[position] != rune('%') {
+ goto l338
}
position++
}
- l339:
- l343:
+ l340:
{
- position344, tokenIndex344 := position, tokenIndex
- {
- position345, tokenIndex345 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l346
- }
- position++
- goto l345
- l346:
- position, tokenIndex = position345, tokenIndex345
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l347
- }
- position++
- goto l345
- l347:
- position, tokenIndex = position345, tokenIndex345
- if buffer[position] != rune('.') {
- goto l348
- }
- position++
- goto l345
- l348:
- position, tokenIndex = position345, tokenIndex345
- {
- position350, tokenIndex350 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l351
- }
- position++
- goto l350
- l351:
- position, tokenIndex = position350, tokenIndex350
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l349
- }
- position++
- }
- l350:
- goto l345
- l349:
- position, tokenIndex = position345, tokenIndex345
- if buffer[position] != rune('$') {
- goto l352
- }
- position++
- goto l345
- l352:
- position, tokenIndex = position345, tokenIndex345
- if buffer[position] != rune('_') {
- goto l344
- }
- position++
+ position342, tokenIndex342 := position, tokenIndex
+ if buffer[position] != rune('f') {
+ goto l343
}
- l345:
- goto l343
- l344:
- position, tokenIndex = position344, tokenIndex344
+ position++
+ if buffer[position] != rune('u') {
+ goto l343
+ }
+ position++
+ if buffer[position] != rune('n') {
+ goto l343
+ }
+ position++
+ if buffer[position] != rune('c') {
+ goto l343
+ }
+ position++
+ if buffer[position] != rune('t') {
+ goto l343
+ }
+ position++
+ if buffer[position] != rune('i') {
+ goto l343
+ }
+ position++
+ if buffer[position] != rune('o') {
+ goto l343
+ }
+ position++
+ if buffer[position] != rune('n') {
+ goto l343
+ }
+ position++
+ goto l342
+ l343:
+ position, tokenIndex = position342, tokenIndex342
+ if buffer[position] != rune('o') {
+ goto l338
+ }
+ position++
+ if buffer[position] != rune('b') {
+ goto l338
+ }
+ position++
+ if buffer[position] != rune('j') {
+ goto l338
+ }
+ position++
+ if buffer[position] != rune('e') {
+ goto l338
+ }
+ position++
+ if buffer[position] != rune('c') {
+ goto l338
+ }
+ position++
+ if buffer[position] != rune('t') {
+ goto l338
+ }
+ position++
}
- add(ruleSymbolName, position338)
+ l342:
+ add(ruleSymbolType, position339)
}
return true
- l337:
- position, tokenIndex = position337, tokenIndex337
+ l338:
+ position, tokenIndex = position338, tokenIndex338
return false
},
- /* 24 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
+ /* 20 Dot <- <'.'> */
func() bool {
- position353, tokenIndex353 := position, tokenIndex
+ position344, tokenIndex344 := position, tokenIndex
{
- position354 := position
+ position345 := position
if buffer[position] != rune('.') {
- goto l353
+ goto l344
}
position++
- if buffer[position] != rune('L') {
- goto l353
+ add(ruleDot, position345)
+ }
+ return true
+ l344:
+ position, tokenIndex = position344, tokenIndex344
+ return false
+ },
+ /* 21 TCMarker <- <('[' 'T' 'C' ']')> */
+ func() bool {
+ position346, tokenIndex346 := position, tokenIndex
+ {
+ position347 := position
+ if buffer[position] != rune('[') {
+ goto l346
}
position++
+ if buffer[position] != rune('T') {
+ goto l346
+ }
+ position++
+ if buffer[position] != rune('C') {
+ goto l346
+ }
+ position++
+ if buffer[position] != rune(']') {
+ goto l346
+ }
+ position++
+ add(ruleTCMarker, position347)
+ }
+ return true
+ l346:
+ position, tokenIndex = position346, tokenIndex346
+ return false
+ },
+ /* 22 EscapedChar <- <('\\' .)> */
+ func() bool {
+ position348, tokenIndex348 := position, tokenIndex
+ {
+ position349 := position
+ if buffer[position] != rune('\\') {
+ goto l348
+ }
+ position++
+ if !matchDot() {
+ goto l348
+ }
+ add(ruleEscapedChar, position349)
+ }
+ return true
+ l348:
+ position, tokenIndex = position348, tokenIndex348
+ return false
+ },
+ /* 23 WS <- <(' ' / '\t')+> */
+ func() bool {
+ position350, tokenIndex350 := position, tokenIndex
+ {
+ position351 := position
{
- position357, tokenIndex357 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
+ position354, tokenIndex354 := position, tokenIndex
+ if buffer[position] != rune(' ') {
+ goto l355
+ }
+ position++
+ goto l354
+ l355:
+ position, tokenIndex = position354, tokenIndex354
+ if buffer[position] != rune('\t') {
+ goto l350
+ }
+ position++
+ }
+ l354:
+ l352:
+ {
+ position353, tokenIndex353 := position, tokenIndex
+ {
+ position356, tokenIndex356 := position, tokenIndex
+ if buffer[position] != rune(' ') {
+ goto l357
+ }
+ position++
+ goto l356
+ l357:
+ position, tokenIndex = position356, tokenIndex356
+ if buffer[position] != rune('\t') {
+ goto l353
+ }
+ position++
+ }
+ l356:
+ goto l352
+ l353:
+ position, tokenIndex = position353, tokenIndex353
+ }
+ add(ruleWS, position351)
+ }
+ return true
+ l350:
+ position, tokenIndex = position350, tokenIndex350
+ return false
+ },
+ /* 24 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
+ func() bool {
+ position358, tokenIndex358 := position, tokenIndex
+ {
+ position359 := position
+ {
+ position360, tokenIndex360 := position, tokenIndex
+ if buffer[position] != rune('/') {
+ goto l361
+ }
+ position++
+ if buffer[position] != rune('/') {
+ goto l361
+ }
+ position++
+ goto l360
+ l361:
+ position, tokenIndex = position360, tokenIndex360
+ if buffer[position] != rune('#') {
goto l358
}
position++
- goto l357
- l358:
- position, tokenIndex = position357, tokenIndex357
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l359
- }
- position++
- goto l357
- l359:
- position, tokenIndex = position357, tokenIndex357
+ }
+ l360:
+ l362:
+ {
+ position363, tokenIndex363 := position, tokenIndex
{
- position361, tokenIndex361 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l362
- }
- position++
- goto l361
- l362:
- position, tokenIndex = position361, tokenIndex361
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l360
- }
- position++
- }
- l361:
- goto l357
- l360:
- position, tokenIndex = position357, tokenIndex357
- if buffer[position] != rune('.') {
- goto l363
- }
- position++
- goto l357
- l363:
- position, tokenIndex = position357, tokenIndex357
- {
- position365, tokenIndex365 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l366
- }
- position++
- goto l365
- l366:
- position, tokenIndex = position365, tokenIndex365
- if c := buffer[position]; c < rune('0') || c > rune('9') {
+ position364, tokenIndex364 := position, tokenIndex
+ if buffer[position] != rune('\n') {
goto l364
}
position++
+ goto l363
+ l364:
+ position, tokenIndex = position364, tokenIndex364
}
- l365:
- goto l357
- l364:
- position, tokenIndex = position357, tokenIndex357
- if buffer[position] != rune('$') {
- goto l367
+ if !matchDot() {
+ goto l363
}
- position++
- goto l357
- l367:
- position, tokenIndex = position357, tokenIndex357
- if buffer[position] != rune('_') {
- goto l353
- }
- position++
+ goto l362
+ l363:
+ position, tokenIndex = position363, tokenIndex363
}
- l357:
- l355:
+ add(ruleComment, position359)
+ }
+ return true
+ l358:
+ position, tokenIndex = position358, tokenIndex358
+ return false
+ },
+ /* 25 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
+ func() bool {
+ position365, tokenIndex365 := position, tokenIndex
+ {
+ position366 := position
{
- position356, tokenIndex356 := position, tokenIndex
- {
- position368, tokenIndex368 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l369
- }
- position++
+ position367, tokenIndex367 := position, tokenIndex
+ if !_rules[ruleLocalSymbol]() {
goto l368
- l369:
- position, tokenIndex = position368, tokenIndex368
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l370
- }
- position++
- goto l368
- l370:
- position, tokenIndex = position368, tokenIndex368
- {
- position372, tokenIndex372 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l373
- }
- position++
- goto l372
- l373:
- position, tokenIndex = position372, tokenIndex372
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l371
- }
- position++
- }
- l372:
- goto l368
- l371:
- position, tokenIndex = position368, tokenIndex368
- if buffer[position] != rune('.') {
- goto l374
- }
- position++
- goto l368
- l374:
- position, tokenIndex = position368, tokenIndex368
- {
- position376, tokenIndex376 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l377
- }
- position++
- goto l376
- l377:
- position, tokenIndex = position376, tokenIndex376
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l375
- }
- position++
- }
- l376:
- goto l368
- l375:
- position, tokenIndex = position368, tokenIndex368
- if buffer[position] != rune('$') {
- goto l378
- }
- position++
- goto l368
- l378:
- position, tokenIndex = position368, tokenIndex368
- if buffer[position] != rune('_') {
- goto l356
- }
- position++
}
+ goto l367
l368:
- goto l355
- l356:
- position, tokenIndex = position356, tokenIndex356
+ position, tokenIndex = position367, tokenIndex367
+ if !_rules[ruleLocalLabel]() {
+ goto l369
+ }
+ goto l367
+ l369:
+ position, tokenIndex = position367, tokenIndex367
+ if !_rules[ruleSymbolName]() {
+ goto l365
+ }
}
- add(ruleLocalSymbol, position354)
- }
- return true
- l353:
- position, tokenIndex = position353, tokenIndex353
- return false
- },
- /* 25 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
- func() bool {
- position379, tokenIndex379 := position, tokenIndex
- {
- position380 := position
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l379
+ l367:
+ if buffer[position] != rune(':') {
+ goto l365
}
position++
- l381:
+ add(ruleLabel, position366)
+ }
+ return true
+ l365:
+ position, tokenIndex = position365, tokenIndex365
+ return false
+ },
+ /* 26 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
+ func() bool {
+ position370, tokenIndex370 := position, tokenIndex
+ {
+ position371 := position
{
- position382, tokenIndex382 := position, tokenIndex
+ position372, tokenIndex372 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l373
+ }
+ position++
+ goto l372
+ l373:
+ position, tokenIndex = position372, tokenIndex372
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l374
+ }
+ position++
+ goto l372
+ l374:
+ position, tokenIndex = position372, tokenIndex372
+ if buffer[position] != rune('.') {
+ goto l375
+ }
+ position++
+ goto l372
+ l375:
+ position, tokenIndex = position372, tokenIndex372
+ if buffer[position] != rune('_') {
+ goto l370
+ }
+ position++
+ }
+ l372:
+ l376:
+ {
+ position377, tokenIndex377 := position, tokenIndex
{
- position383, tokenIndex383 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l384
+ position378, tokenIndex378 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l379
}
position++
- goto l383
- l384:
- position, tokenIndex = position383, tokenIndex383
+ goto l378
+ l379:
+ position, tokenIndex = position378, tokenIndex378
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l380
+ }
+ position++
+ goto l378
+ l380:
+ position, tokenIndex = position378, tokenIndex378
+ if buffer[position] != rune('.') {
+ goto l381
+ }
+ position++
+ goto l378
+ l381:
+ position, tokenIndex = position378, tokenIndex378
+ {
+ position383, tokenIndex383 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l384
+ }
+ position++
+ goto l383
+ l384:
+ position, tokenIndex = position383, tokenIndex383
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l382
+ }
+ position++
+ }
+ l383:
+ goto l378
+ l382:
+ position, tokenIndex = position378, tokenIndex378
if buffer[position] != rune('$') {
- goto l382
+ goto l385
+ }
+ position++
+ goto l378
+ l385:
+ position, tokenIndex = position378, tokenIndex378
+ if buffer[position] != rune('_') {
+ goto l377
}
position++
}
- l383:
- goto l381
- l382:
- position, tokenIndex = position382, tokenIndex382
+ l378:
+ goto l376
+ l377:
+ position, tokenIndex = position377, tokenIndex377
}
- add(ruleLocalLabel, position380)
+ add(ruleSymbolName, position371)
}
return true
- l379:
- position, tokenIndex = position379, tokenIndex379
+ l370:
+ position, tokenIndex = position370, tokenIndex370
return false
},
- /* 26 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
+ /* 27 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
func() bool {
- position385, tokenIndex385 := position, tokenIndex
+ position386, tokenIndex386 := position, tokenIndex
{
- position386 := position
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l385
+ position387 := position
+ if buffer[position] != rune('.') {
+ goto l386
}
position++
- l387:
- {
- position388, tokenIndex388 := position, tokenIndex
- {
- position389, tokenIndex389 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l390
- }
- position++
- goto l389
- l390:
- position, tokenIndex = position389, tokenIndex389
- if buffer[position] != rune('$') {
- goto l388
- }
- position++
- }
- l389:
- goto l387
- l388:
- position, tokenIndex = position388, tokenIndex388
+ if buffer[position] != rune('L') {
+ goto l386
}
+ position++
{
- position391, tokenIndex391 := position, tokenIndex
- if buffer[position] != rune('b') {
+ position390, tokenIndex390 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l391
+ }
+ position++
+ goto l390
+ l391:
+ position, tokenIndex = position390, tokenIndex390
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l392
}
position++
- goto l391
+ goto l390
l392:
- position, tokenIndex = position391, tokenIndex391
- if buffer[position] != rune('f') {
- goto l385
+ position, tokenIndex = position390, tokenIndex390
+ {
+ position394, tokenIndex394 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l395
+ }
+ position++
+ goto l394
+ l395:
+ position, tokenIndex = position394, tokenIndex394
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l393
+ }
+ position++
+ }
+ l394:
+ goto l390
+ l393:
+ position, tokenIndex = position390, tokenIndex390
+ if buffer[position] != rune('.') {
+ goto l396
}
position++
- }
- l391:
- add(ruleLocalLabelRef, position386)
- }
- return true
- l385:
- position, tokenIndex = position385, tokenIndex385
- return false
- },
- /* 27 Instruction <- <(InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
- func() bool {
- position393, tokenIndex393 := position, tokenIndex
- {
- position394 := position
- if !_rules[ruleInstructionName]() {
- goto l393
- }
- {
- position395, tokenIndex395 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l395
- }
- if !_rules[ruleInstructionArg]() {
- goto l395
- }
- l397:
+ goto l390
+ l396:
+ position, tokenIndex = position390, tokenIndex390
{
position398, tokenIndex398 := position, tokenIndex
- {
- position399, tokenIndex399 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l399
- }
- goto l400
- l399:
- position, tokenIndex = position399, tokenIndex399
- }
- l400:
- if buffer[position] != rune(',') {
- goto l398
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l399
}
position++
- {
- position401, tokenIndex401 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l401
- }
- goto l402
- l401:
- position, tokenIndex = position401, tokenIndex401
- }
- l402:
- if !_rules[ruleInstructionArg]() {
- goto l398
- }
- goto l397
- l398:
+ goto l398
+ l399:
position, tokenIndex = position398, tokenIndex398
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l397
+ }
+ position++
}
- goto l396
- l395:
- position, tokenIndex = position395, tokenIndex395
- }
- l396:
- add(ruleInstruction, position394)
- }
- return true
- l393:
- position, tokenIndex = position393, tokenIndex393
- return false
- },
- /* 28 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
- func() bool {
- position403, tokenIndex403 := position, tokenIndex
- {
- position404 := position
- {
- position405, tokenIndex405 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l406
+ l398:
+ goto l390
+ l397:
+ position, tokenIndex = position390, tokenIndex390
+ if buffer[position] != rune('$') {
+ goto l400
}
position++
- goto l405
- l406:
- position, tokenIndex = position405, tokenIndex405
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l403
+ goto l390
+ l400:
+ position, tokenIndex = position390, tokenIndex390
+ if buffer[position] != rune('_') {
+ goto l386
}
position++
}
- l405:
- l407:
+ l390:
+ l388:
{
- position408, tokenIndex408 := position, tokenIndex
+ position389, tokenIndex389 := position, tokenIndex
{
- position409, tokenIndex409 := position, tokenIndex
+ position401, tokenIndex401 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l410
+ goto l402
}
position++
- goto l409
- l410:
- position, tokenIndex = position409, tokenIndex409
+ goto l401
+ l402:
+ position, tokenIndex = position401, tokenIndex401
if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l411
+ goto l403
}
position++
- goto l409
- l411:
- position, tokenIndex = position409, tokenIndex409
- if buffer[position] != rune('.') {
- goto l412
- }
- position++
- goto l409
- l412:
- position, tokenIndex = position409, tokenIndex409
+ goto l401
+ l403:
+ position, tokenIndex = position401, tokenIndex401
{
- position413, tokenIndex413 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l414
+ position405, tokenIndex405 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l406
}
position++
- goto l413
- l414:
- position, tokenIndex = position413, tokenIndex413
+ goto l405
+ l406:
+ position, tokenIndex = position405, tokenIndex405
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l404
+ }
+ position++
+ }
+ l405:
+ goto l401
+ l404:
+ position, tokenIndex = position401, tokenIndex401
+ if buffer[position] != rune('.') {
+ goto l407
+ }
+ position++
+ goto l401
+ l407:
+ position, tokenIndex = position401, tokenIndex401
+ {
+ position409, tokenIndex409 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l410
+ }
+ position++
+ goto l409
+ l410:
+ position, tokenIndex = position409, tokenIndex409
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l408
}
position++
}
- l413:
+ l409:
+ goto l401
+ l408:
+ position, tokenIndex = position401, tokenIndex401
+ if buffer[position] != rune('$') {
+ goto l411
+ }
+ position++
+ goto l401
+ l411:
+ position, tokenIndex = position401, tokenIndex401
+ if buffer[position] != rune('_') {
+ goto l389
+ }
+ position++
}
- l409:
- goto l407
- l408:
- position, tokenIndex = position408, tokenIndex408
+ l401:
+ goto l388
+ l389:
+ position, tokenIndex = position389, tokenIndex389
}
+ add(ruleLocalSymbol, position387)
+ }
+ return true
+ l386:
+ position, tokenIndex = position386, tokenIndex386
+ return false
+ },
+ /* 28 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
+ func() bool {
+ position412, tokenIndex412 := position, tokenIndex
+ {
+ position413 := position
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l412
+ }
+ position++
+ l414:
{
position415, tokenIndex415 := position, tokenIndex
{
- position417, tokenIndex417 := position, tokenIndex
- if buffer[position] != rune('.') {
- goto l418
+ position416, tokenIndex416 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l417
}
position++
- goto l417
- l418:
- position, tokenIndex = position417, tokenIndex417
- if buffer[position] != rune('+') {
- goto l419
- }
- position++
- goto l417
- l419:
- position, tokenIndex = position417, tokenIndex417
- if buffer[position] != rune('-') {
+ goto l416
+ l417:
+ position, tokenIndex = position416, tokenIndex416
+ if buffer[position] != rune('$') {
goto l415
}
position++
}
- l417:
- goto l416
+ l416:
+ goto l414
l415:
position, tokenIndex = position415, tokenIndex415
}
- l416:
- add(ruleInstructionName, position404)
+ add(ruleLocalLabel, position413)
}
return true
- l403:
- position, tokenIndex = position403, tokenIndex403
+ l412:
+ position, tokenIndex = position412, tokenIndex412
return false
},
- /* 29 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
+ /* 29 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
func() bool {
- position420, tokenIndex420 := position, tokenIndex
+ position418, tokenIndex418 := position, tokenIndex
{
- position421 := position
- {
- position422, tokenIndex422 := position, tokenIndex
- if !_rules[ruleIndirectionIndicator]() {
- goto l422
- }
- goto l423
- l422:
- position, tokenIndex = position422, tokenIndex422
+ position419 := position
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l418
}
- l423:
+ position++
+ l420:
+ {
+ position421, tokenIndex421 := position, tokenIndex
+ {
+ position422, tokenIndex422 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l423
+ }
+ position++
+ goto l422
+ l423:
+ position, tokenIndex = position422, tokenIndex422
+ if buffer[position] != rune('$') {
+ goto l421
+ }
+ position++
+ }
+ l422:
+ goto l420
+ l421:
+ position, tokenIndex = position421, tokenIndex421
+ }
{
position424, tokenIndex424 := position, tokenIndex
- if !_rules[ruleARMConstantTweak]() {
+ if buffer[position] != rune('b') {
goto l425
}
+ position++
goto l424
l425:
position, tokenIndex = position424, tokenIndex424
- if !_rules[ruleRegisterOrConstant]() {
- goto l426
+ if buffer[position] != rune('f') {
+ goto l418
}
- goto l424
- l426:
- position, tokenIndex = position424, tokenIndex424
- if !_rules[ruleLocalLabelRef]() {
- goto l427
- }
- goto l424
- l427:
- position, tokenIndex = position424, tokenIndex424
- if !_rules[ruleTOCRefHigh]() {
- goto l428
- }
- goto l424
- l428:
- position, tokenIndex = position424, tokenIndex424
- if !_rules[ruleTOCRefLow]() {
- goto l429
- }
- goto l424
- l429:
- position, tokenIndex = position424, tokenIndex424
- if !_rules[ruleGOTLocation]() {
- goto l430
- }
- goto l424
- l430:
- position, tokenIndex = position424, tokenIndex424
- if !_rules[ruleGOTSymbolOffset]() {
- goto l431
- }
- goto l424
- l431:
- position, tokenIndex = position424, tokenIndex424
- if !_rules[ruleMemoryRef]() {
- goto l420
- }
+ position++
}
l424:
- l432:
- {
- position433, tokenIndex433 := position, tokenIndex
- if !_rules[ruleAVX512Token]() {
- goto l433
- }
- goto l432
- l433:
- position, tokenIndex = position433, tokenIndex433
- }
- add(ruleInstructionArg, position421)
+ add(ruleLocalLabelRef, position419)
}
return true
- l420:
- position, tokenIndex = position420, tokenIndex420
+ l418:
+ position, tokenIndex = position418, tokenIndex418
return false
},
- /* 30 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
+ /* 30 Instruction <- <(InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
func() bool {
- position434, tokenIndex434 := position, tokenIndex
+ position426, tokenIndex426 := position, tokenIndex
{
- position435 := position
- if buffer[position] != rune('$') {
- goto l434
+ position427 := position
+ if !_rules[ruleInstructionName]() {
+ goto l426
}
- position++
- if buffer[position] != rune('_') {
- goto l434
+ {
+ position428, tokenIndex428 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l428
+ }
+ if !_rules[ruleInstructionArg]() {
+ goto l428
+ }
+ l430:
+ {
+ position431, tokenIndex431 := position, tokenIndex
+ {
+ position432, tokenIndex432 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l432
+ }
+ goto l433
+ l432:
+ position, tokenIndex = position432, tokenIndex432
+ }
+ l433:
+ if buffer[position] != rune(',') {
+ goto l431
+ }
+ position++
+ {
+ position434, tokenIndex434 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l434
+ }
+ goto l435
+ l434:
+ position, tokenIndex = position434, tokenIndex434
+ }
+ l435:
+ if !_rules[ruleInstructionArg]() {
+ goto l431
+ }
+ goto l430
+ l431:
+ position, tokenIndex = position431, tokenIndex431
+ }
+ goto l429
+ l428:
+ position, tokenIndex = position428, tokenIndex428
}
- position++
- if buffer[position] != rune('G') {
- goto l434
- }
- position++
- if buffer[position] != rune('L') {
- goto l434
- }
- position++
- if buffer[position] != rune('O') {
- goto l434
- }
- position++
- if buffer[position] != rune('B') {
- goto l434
- }
- position++
- if buffer[position] != rune('A') {
- goto l434
- }
- position++
- if buffer[position] != rune('L') {
- goto l434
- }
- position++
- if buffer[position] != rune('_') {
- goto l434
- }
- position++
- if buffer[position] != rune('O') {
- goto l434
- }
- position++
- if buffer[position] != rune('F') {
- goto l434
- }
- position++
- if buffer[position] != rune('F') {
- goto l434
- }
- position++
- if buffer[position] != rune('S') {
- goto l434
- }
- position++
- if buffer[position] != rune('E') {
- goto l434
- }
- position++
- if buffer[position] != rune('T') {
- goto l434
- }
- position++
- if buffer[position] != rune('_') {
- goto l434
- }
- position++
- if buffer[position] != rune('T') {
- goto l434
- }
- position++
- if buffer[position] != rune('A') {
- goto l434
- }
- position++
- if buffer[position] != rune('B') {
- goto l434
- }
- position++
- if buffer[position] != rune('L') {
- goto l434
- }
- position++
- if buffer[position] != rune('E') {
- goto l434
- }
- position++
- if buffer[position] != rune('_') {
- goto l434
- }
- position++
- if buffer[position] != rune('-') {
- goto l434
- }
- position++
- if !_rules[ruleLocalSymbol]() {
- goto l434
- }
- add(ruleGOTLocation, position435)
+ l429:
+ add(ruleInstruction, position427)
}
return true
- l434:
- position, tokenIndex = position434, tokenIndex434
+ l426:
+ position, tokenIndex = position426, tokenIndex426
return false
},
- /* 31 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
+ /* 31 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
func() bool {
position436, tokenIndex436 := position, tokenIndex
{
position437 := position
{
position438, tokenIndex438 := position, tokenIndex
- if buffer[position] != rune('$') {
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l439
}
position++
- if !_rules[ruleSymbolName]() {
- goto l439
- }
- if buffer[position] != rune('@') {
- goto l439
- }
- position++
- if buffer[position] != rune('G') {
- goto l439
- }
- position++
- if buffer[position] != rune('O') {
- goto l439
- }
- position++
- if buffer[position] != rune('T') {
- goto l439
- }
- position++
- {
- position440, tokenIndex440 := position, tokenIndex
- if buffer[position] != rune('O') {
- goto l440
- }
- position++
- if buffer[position] != rune('F') {
- goto l440
- }
- position++
- if buffer[position] != rune('F') {
- goto l440
- }
- position++
- goto l441
- l440:
- position, tokenIndex = position440, tokenIndex440
- }
- l441:
goto l438
l439:
position, tokenIndex = position438, tokenIndex438
- if buffer[position] != rune(':') {
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l436
}
position++
+ }
+ l438:
+ l440:
+ {
+ position441, tokenIndex441 := position, tokenIndex
{
position442, tokenIndex442 := position, tokenIndex
- if buffer[position] != rune('g') {
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l443
}
position++
goto l442
l443:
position, tokenIndex = position442, tokenIndex442
- if buffer[position] != rune('G') {
- goto l436
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l444
}
position++
- }
- l442:
- {
- position444, tokenIndex444 := position, tokenIndex
- if buffer[position] != rune('o') {
+ goto l442
+ l444:
+ position, tokenIndex = position442, tokenIndex442
+ if buffer[position] != rune('.') {
goto l445
}
position++
- goto l444
+ goto l442
l445:
- position, tokenIndex = position444, tokenIndex444
- if buffer[position] != rune('O') {
- goto l436
+ position, tokenIndex = position442, tokenIndex442
+ {
+ position446, tokenIndex446 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l447
+ }
+ position++
+ goto l446
+ l447:
+ position, tokenIndex = position446, tokenIndex446
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l441
+ }
+ position++
}
- position++
+ l446:
}
- l444:
- {
- position446, tokenIndex446 := position, tokenIndex
- if buffer[position] != rune('t') {
- goto l447
- }
- position++
- goto l446
- l447:
- position, tokenIndex = position446, tokenIndex446
- if buffer[position] != rune('T') {
- goto l436
- }
- position++
- }
- l446:
- if buffer[position] != rune(':') {
- goto l436
- }
- position++
- if !_rules[ruleSymbolName]() {
- goto l436
- }
+ l442:
+ goto l440
+ l441:
+ position, tokenIndex = position441, tokenIndex441
}
- l438:
- add(ruleGOTSymbolOffset, position437)
+ {
+ position448, tokenIndex448 := position, tokenIndex
+ {
+ position450, tokenIndex450 := position, tokenIndex
+ if buffer[position] != rune('.') {
+ goto l451
+ }
+ position++
+ goto l450
+ l451:
+ position, tokenIndex = position450, tokenIndex450
+ if buffer[position] != rune('+') {
+ goto l452
+ }
+ position++
+ goto l450
+ l452:
+ position, tokenIndex = position450, tokenIndex450
+ if buffer[position] != rune('-') {
+ goto l448
+ }
+ position++
+ }
+ l450:
+ goto l449
+ l448:
+ position, tokenIndex = position448, tokenIndex448
+ }
+ l449:
+ add(ruleInstructionName, position437)
}
return true
l436:
position, tokenIndex = position436, tokenIndex436
return false
},
- /* 32 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
+ /* 32 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
func() bool {
- position448, tokenIndex448 := position, tokenIndex
+ position453, tokenIndex453 := position, tokenIndex
{
- position449 := position
- {
- position450, tokenIndex450 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l450
- }
- goto l451
- l450:
- position, tokenIndex = position450, tokenIndex450
- }
- l451:
- if buffer[position] != rune('{') {
- goto l448
- }
- position++
- {
- position452, tokenIndex452 := position, tokenIndex
- if buffer[position] != rune('%') {
- goto l452
- }
- position++
- goto l453
- l452:
- position, tokenIndex = position452, tokenIndex452
- }
- l453:
- l454:
+ position454 := position
{
position455, tokenIndex455 := position, tokenIndex
- {
- position456, tokenIndex456 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l457
- }
- position++
- goto l456
- l457:
- position, tokenIndex = position456, tokenIndex456
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l455
- }
- position++
+ if !_rules[ruleIndirectionIndicator]() {
+ goto l455
}
- l456:
- goto l454
+ goto l456
l455:
position, tokenIndex = position455, tokenIndex455
}
- if buffer[position] != rune('}') {
- goto l448
- }
- position++
- add(ruleAVX512Token, position449)
- }
- return true
- l448:
- position, tokenIndex = position448, tokenIndex448
- return false
- },
- /* 33 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
- func() bool {
- position458, tokenIndex458 := position, tokenIndex
- {
- position459 := position
- if buffer[position] != rune('.') {
- goto l458
- }
- position++
- if buffer[position] != rune('T') {
- goto l458
- }
- position++
- if buffer[position] != rune('O') {
- goto l458
- }
- position++
- if buffer[position] != rune('C') {
- goto l458
- }
- position++
- if buffer[position] != rune('.') {
- goto l458
- }
- position++
- if buffer[position] != rune('-') {
- goto l458
- }
- position++
+ l456:
{
- position460, tokenIndex460 := position, tokenIndex
- if buffer[position] != rune('0') {
+ position457, tokenIndex457 := position, tokenIndex
+ if !_rules[ruleARMConstantTweak]() {
+ goto l458
+ }
+ goto l457
+ l458:
+ position, tokenIndex = position457, tokenIndex457
+ if !_rules[ruleRegisterOrConstant]() {
+ goto l459
+ }
+ goto l457
+ l459:
+ position, tokenIndex = position457, tokenIndex457
+ if !_rules[ruleLocalLabelRef]() {
+ goto l460
+ }
+ goto l457
+ l460:
+ position, tokenIndex = position457, tokenIndex457
+ if !_rules[ruleTOCRefHigh]() {
goto l461
}
- position++
- if buffer[position] != rune('b') {
- goto l461
- }
- position++
- goto l460
+ goto l457
l461:
- position, tokenIndex = position460, tokenIndex460
- if buffer[position] != rune('.') {
- goto l458
- }
- position++
- if buffer[position] != rune('L') {
- goto l458
- }
- position++
- {
- position464, tokenIndex464 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l465
- }
- position++
- goto l464
- l465:
- position, tokenIndex = position464, tokenIndex464
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l466
- }
- position++
- goto l464
- l466:
- position, tokenIndex = position464, tokenIndex464
- if buffer[position] != rune('_') {
- goto l467
- }
- position++
- goto l464
- l467:
- position, tokenIndex = position464, tokenIndex464
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l458
- }
- position++
- }
- l464:
- l462:
- {
- position463, tokenIndex463 := position, tokenIndex
- {
- position468, tokenIndex468 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l469
- }
- position++
- goto l468
- l469:
- position, tokenIndex = position468, tokenIndex468
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l470
- }
- position++
- goto l468
- l470:
- position, tokenIndex = position468, tokenIndex468
- if buffer[position] != rune('_') {
- goto l471
- }
- position++
- goto l468
- l471:
- position, tokenIndex = position468, tokenIndex468
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l463
- }
- position++
- }
- l468:
+ position, tokenIndex = position457, tokenIndex457
+ if !_rules[ruleTOCRefLow]() {
goto l462
- l463:
- position, tokenIndex = position463, tokenIndex463
+ }
+ goto l457
+ l462:
+ position, tokenIndex = position457, tokenIndex457
+ if !_rules[ruleGOTLocation]() {
+ goto l463
+ }
+ goto l457
+ l463:
+ position, tokenIndex = position457, tokenIndex457
+ if !_rules[ruleGOTSymbolOffset]() {
+ goto l464
+ }
+ goto l457
+ l464:
+ position, tokenIndex = position457, tokenIndex457
+ if !_rules[ruleMemoryRef]() {
+ goto l453
}
}
- l460:
- if buffer[position] != rune('@') {
- goto l458
- }
- position++
+ l457:
+ l465:
{
- position472, tokenIndex472 := position, tokenIndex
- if buffer[position] != rune('h') {
- goto l473
+ position466, tokenIndex466 := position, tokenIndex
+ if !_rules[ruleAVX512Token]() {
+ goto l466
}
- position++
- goto l472
- l473:
- position, tokenIndex = position472, tokenIndex472
- if buffer[position] != rune('H') {
- goto l458
- }
- position++
+ goto l465
+ l466:
+ position, tokenIndex = position466, tokenIndex466
}
- l472:
- {
- position474, tokenIndex474 := position, tokenIndex
- if buffer[position] != rune('a') {
- goto l475
- }
- position++
- goto l474
- l475:
- position, tokenIndex = position474, tokenIndex474
- if buffer[position] != rune('A') {
- goto l458
- }
- position++
- }
- l474:
- add(ruleTOCRefHigh, position459)
+ add(ruleInstructionArg, position454)
}
return true
- l458:
- position, tokenIndex = position458, tokenIndex458
+ l453:
+ position, tokenIndex = position453, tokenIndex453
return false
},
- /* 34 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
+ /* 33 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
func() bool {
- position476, tokenIndex476 := position, tokenIndex
+ position467, tokenIndex467 := position, tokenIndex
{
- position477 := position
- if buffer[position] != rune('.') {
- goto l476
+ position468 := position
+ if buffer[position] != rune('$') {
+ goto l467
}
position++
- if buffer[position] != rune('T') {
- goto l476
+ if buffer[position] != rune('_') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('G') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('L') {
+ goto l467
}
position++
if buffer[position] != rune('O') {
- goto l476
+ goto l467
}
position++
- if buffer[position] != rune('C') {
- goto l476
+ if buffer[position] != rune('B') {
+ goto l467
}
position++
- if buffer[position] != rune('.') {
- goto l476
+ if buffer[position] != rune('A') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('L') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('_') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('O') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('F') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('F') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('S') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('E') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('T') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('_') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('T') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('A') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('B') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('L') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('E') {
+ goto l467
+ }
+ position++
+ if buffer[position] != rune('_') {
+ goto l467
}
position++
if buffer[position] != rune('-') {
- goto l476
+ goto l467
}
position++
+ if !_rules[ruleLocalSymbol]() {
+ goto l467
+ }
+ add(ruleGOTLocation, position468)
+ }
+ return true
+ l467:
+ position, tokenIndex = position467, tokenIndex467
+ return false
+ },
+ /* 34 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
+ func() bool {
+ position469, tokenIndex469 := position, tokenIndex
+ {
+ position470 := position
{
- position478, tokenIndex478 := position, tokenIndex
- if buffer[position] != rune('0') {
- goto l479
+ position471, tokenIndex471 := position, tokenIndex
+ if buffer[position] != rune('$') {
+ goto l472
}
position++
- if buffer[position] != rune('b') {
- goto l479
+ if !_rules[ruleSymbolName]() {
+ goto l472
+ }
+ if buffer[position] != rune('@') {
+ goto l472
}
position++
- goto l478
- l479:
- position, tokenIndex = position478, tokenIndex478
- if buffer[position] != rune('.') {
- goto l476
+ if buffer[position] != rune('G') {
+ goto l472
}
position++
- if buffer[position] != rune('L') {
- goto l476
+ if buffer[position] != rune('O') {
+ goto l472
+ }
+ position++
+ if buffer[position] != rune('T') {
+ goto l472
}
position++
{
- position482, tokenIndex482 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l483
+ position473, tokenIndex473 := position, tokenIndex
+ if buffer[position] != rune('O') {
+ goto l473
}
position++
- goto l482
- l483:
- position, tokenIndex = position482, tokenIndex482
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l484
+ if buffer[position] != rune('F') {
+ goto l473
}
position++
- goto l482
- l484:
- position, tokenIndex = position482, tokenIndex482
- if buffer[position] != rune('_') {
- goto l485
+ if buffer[position] != rune('F') {
+ goto l473
}
position++
- goto l482
- l485:
- position, tokenIndex = position482, tokenIndex482
- if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l474
+ l473:
+ position, tokenIndex = position473, tokenIndex473
+ }
+ l474:
+ goto l471
+ l472:
+ position, tokenIndex = position471, tokenIndex471
+ if buffer[position] != rune(':') {
+ goto l469
+ }
+ position++
+ {
+ position475, tokenIndex475 := position, tokenIndex
+ if buffer[position] != rune('g') {
goto l476
}
position++
- }
- l482:
- l480:
- {
- position481, tokenIndex481 := position, tokenIndex
- {
- position486, tokenIndex486 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l487
- }
- position++
- goto l486
- l487:
- position, tokenIndex = position486, tokenIndex486
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l488
- }
- position++
- goto l486
- l488:
- position, tokenIndex = position486, tokenIndex486
- if buffer[position] != rune('_') {
- goto l489
- }
- position++
- goto l486
- l489:
- position, tokenIndex = position486, tokenIndex486
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l481
- }
- position++
+ goto l475
+ l476:
+ position, tokenIndex = position475, tokenIndex475
+ if buffer[position] != rune('G') {
+ goto l469
}
- l486:
- goto l480
- l481:
- position, tokenIndex = position481, tokenIndex481
+ position++
+ }
+ l475:
+ {
+ position477, tokenIndex477 := position, tokenIndex
+ if buffer[position] != rune('o') {
+ goto l478
+ }
+ position++
+ goto l477
+ l478:
+ position, tokenIndex = position477, tokenIndex477
+ if buffer[position] != rune('O') {
+ goto l469
+ }
+ position++
+ }
+ l477:
+ {
+ position479, tokenIndex479 := position, tokenIndex
+ if buffer[position] != rune('t') {
+ goto l480
+ }
+ position++
+ goto l479
+ l480:
+ position, tokenIndex = position479, tokenIndex479
+ if buffer[position] != rune('T') {
+ goto l469
+ }
+ position++
+ }
+ l479:
+ if buffer[position] != rune(':') {
+ goto l469
+ }
+ position++
+ if !_rules[ruleSymbolName]() {
+ goto l469
}
}
- l478:
- if buffer[position] != rune('@') {
- goto l476
+ l471:
+ add(ruleGOTSymbolOffset, position470)
+ }
+ return true
+ l469:
+ position, tokenIndex = position469, tokenIndex469
+ return false
+ },
+ /* 35 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
+ func() bool {
+ position481, tokenIndex481 := position, tokenIndex
+ {
+ position482 := position
+ {
+ position483, tokenIndex483 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l483
+ }
+ goto l484
+ l483:
+ position, tokenIndex = position483, tokenIndex483
+ }
+ l484:
+ if buffer[position] != rune('{') {
+ goto l481
}
position++
{
- position490, tokenIndex490 := position, tokenIndex
- if buffer[position] != rune('l') {
+ position485, tokenIndex485 := position, tokenIndex
+ if buffer[position] != rune('%') {
+ goto l485
+ }
+ position++
+ goto l486
+ l485:
+ position, tokenIndex = position485, tokenIndex485
+ }
+ l486:
+ l487:
+ {
+ position488, tokenIndex488 := position, tokenIndex
+ {
+ position489, tokenIndex489 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l490
+ }
+ position++
+ goto l489
+ l490:
+ position, tokenIndex = position489, tokenIndex489
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l488
+ }
+ position++
+ }
+ l489:
+ goto l487
+ l488:
+ position, tokenIndex = position488, tokenIndex488
+ }
+ if buffer[position] != rune('}') {
+ goto l481
+ }
+ position++
+ add(ruleAVX512Token, position482)
+ }
+ return true
+ l481:
+ position, tokenIndex = position481, tokenIndex481
+ return false
+ },
+ /* 36 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
+ func() bool {
+ position491, tokenIndex491 := position, tokenIndex
+ {
+ position492 := position
+ if buffer[position] != rune('.') {
+ goto l491
+ }
+ position++
+ if buffer[position] != rune('T') {
+ goto l491
+ }
+ position++
+ if buffer[position] != rune('O') {
+ goto l491
+ }
+ position++
+ if buffer[position] != rune('C') {
+ goto l491
+ }
+ position++
+ if buffer[position] != rune('.') {
+ goto l491
+ }
+ position++
+ if buffer[position] != rune('-') {
+ goto l491
+ }
+ position++
+ {
+ position493, tokenIndex493 := position, tokenIndex
+ if buffer[position] != rune('0') {
+ goto l494
+ }
+ position++
+ if buffer[position] != rune('b') {
+ goto l494
+ }
+ position++
+ goto l493
+ l494:
+ position, tokenIndex = position493, tokenIndex493
+ if buffer[position] != rune('.') {
goto l491
}
position++
- goto l490
- l491:
- position, tokenIndex = position490, tokenIndex490
if buffer[position] != rune('L') {
- goto l476
- }
- position++
- }
- l490:
- add(ruleTOCRefLow, position477)
- }
- return true
- l476:
- position, tokenIndex = position476, tokenIndex476
- return false
- },
- /* 35 IndirectionIndicator <- <'*'> */
- func() bool {
- position492, tokenIndex492 := position, tokenIndex
- {
- position493 := position
- if buffer[position] != rune('*') {
- goto l492
- }
- position++
- add(ruleIndirectionIndicator, position493)
- }
- return true
- l492:
- position, tokenIndex = position492, tokenIndex492
- return false
- },
- /* 36 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 {
- position494, tokenIndex494 := position, tokenIndex
- {
- position495 := position
- {
- position496, tokenIndex496 := position, tokenIndex
- if buffer[position] != rune('%') {
- goto l497
+ goto l491
}
position++
{
- position498, tokenIndex498 := position, tokenIndex
+ position497, tokenIndex497 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l498
+ }
+ position++
+ goto l497
+ l498:
+ position, tokenIndex = position497, tokenIndex497
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l499
}
position++
- goto l498
+ goto l497
l499:
- position, tokenIndex = position498, tokenIndex498
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l497
+ position, tokenIndex = position497, tokenIndex497
+ if buffer[position] != rune('_') {
+ goto l500
+ }
+ position++
+ goto l497
+ l500:
+ position, tokenIndex = position497, tokenIndex497
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l491
}
position++
}
- l498:
- l500:
+ l497:
+ l495:
{
- position501, tokenIndex501 := position, tokenIndex
+ position496, tokenIndex496 := position, tokenIndex
{
- position502, tokenIndex502 := position, tokenIndex
+ position501, tokenIndex501 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l502
+ }
+ position++
+ goto l501
+ l502:
+ position, tokenIndex = position501, tokenIndex501
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l503
}
position++
- goto l502
+ goto l501
l503:
- position, tokenIndex = position502, tokenIndex502
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ position, tokenIndex = position501, tokenIndex501
+ if buffer[position] != rune('_') {
goto l504
}
position++
- goto l502
+ goto l501
l504:
- position, tokenIndex = position502, tokenIndex502
- {
- position505, tokenIndex505 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l506
- }
- position++
- goto l505
- l506:
- position, tokenIndex = position505, tokenIndex505
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l501
- }
- position++
+ position, tokenIndex = position501, tokenIndex501
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l496
}
- l505:
+ position++
}
- l502:
- goto l500
l501:
- position, tokenIndex = position501, tokenIndex501
- }
- goto l496
- l497:
- position, tokenIndex = position496, tokenIndex496
- {
- position508, tokenIndex508 := position, tokenIndex
- if buffer[position] != rune('$') {
- goto l508
- }
- position++
- goto l509
- l508:
- position, tokenIndex = position508, tokenIndex508
- }
- l509:
- {
- position510, tokenIndex510 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l511
- }
- if !_rules[ruleOffset]() {
- goto l511
- }
- goto l510
- l511:
- position, tokenIndex = position510, tokenIndex510
- if !_rules[ruleOffset]() {
- goto l507
- }
- }
- l510:
- goto l496
- l507:
- position, tokenIndex = position496, tokenIndex496
- if buffer[position] != rune('#') {
- goto l512
- }
- position++
- if !_rules[ruleOffset]() {
- goto l512
- }
- {
- position513, tokenIndex513 := position, tokenIndex
- if buffer[position] != rune('*') {
- goto l513
- }
- position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l513
- }
- position++
- l515:
- {
- position516, tokenIndex516 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l516
- }
- position++
- goto l515
- l516:
- position, tokenIndex = position516, tokenIndex516
- }
- {
- position517, tokenIndex517 := position, tokenIndex
- if buffer[position] != rune('-') {
- goto l517
- }
- position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l517
- }
- position++
- l519:
- {
- position520, tokenIndex520 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l520
- }
- position++
- goto l519
- l520:
- position, tokenIndex = position520, tokenIndex520
- }
- goto l518
- l517:
- position, tokenIndex = position517, tokenIndex517
- }
- l518:
- goto l514
- l513:
- position, tokenIndex = position513, tokenIndex513
- }
- l514:
- goto l496
- l512:
- position, tokenIndex = position496, tokenIndex496
- if buffer[position] != rune('#') {
- goto l521
- }
- position++
- {
- position522, tokenIndex522 := position, tokenIndex
- if buffer[position] != rune('~') {
- goto l522
- }
- position++
- goto l523
- l522:
- position, tokenIndex = position522, tokenIndex522
- }
- l523:
- if buffer[position] != rune('(') {
- goto l521
- }
- position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l521
- }
- position++
- {
- position524, tokenIndex524 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l524
- }
- goto l525
- l524:
- position, tokenIndex = position524, tokenIndex524
- }
- l525:
- if buffer[position] != rune('<') {
- goto l521
- }
- position++
- if buffer[position] != rune('<') {
- goto l521
- }
- position++
- {
- position526, tokenIndex526 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l526
- }
- goto l527
- l526:
- position, tokenIndex = position526, tokenIndex526
- }
- l527:
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l521
- }
- position++
- if buffer[position] != rune(')') {
- goto l521
- }
- position++
- goto l496
- l521:
- position, tokenIndex = position496, tokenIndex496
- if !_rules[ruleARMRegister]() {
- goto l494
+ goto l495
+ l496:
+ position, tokenIndex = position496, tokenIndex496
}
}
- l496:
+ l493:
+ if buffer[position] != rune('@') {
+ goto l491
+ }
+ position++
{
- position528, tokenIndex528 := position, tokenIndex
+ position505, tokenIndex505 := position, tokenIndex
+ if buffer[position] != rune('h') {
+ goto l506
+ }
+ position++
+ goto l505
+ l506:
+ position, tokenIndex = position505, tokenIndex505
+ if buffer[position] != rune('H') {
+ goto l491
+ }
+ position++
+ }
+ l505:
+ {
+ position507, tokenIndex507 := position, tokenIndex
+ if buffer[position] != rune('a') {
+ goto l508
+ }
+ position++
+ goto l507
+ l508:
+ position, tokenIndex = position507, tokenIndex507
+ if buffer[position] != rune('A') {
+ goto l491
+ }
+ position++
+ }
+ l507:
+ add(ruleTOCRefHigh, position492)
+ }
+ return true
+ l491:
+ position, tokenIndex = position491, tokenIndex491
+ return false
+ },
+ /* 37 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
+ func() bool {
+ position509, tokenIndex509 := position, tokenIndex
+ {
+ position510 := position
+ if buffer[position] != rune('.') {
+ goto l509
+ }
+ position++
+ if buffer[position] != rune('T') {
+ goto l509
+ }
+ position++
+ if buffer[position] != rune('O') {
+ goto l509
+ }
+ position++
+ if buffer[position] != rune('C') {
+ goto l509
+ }
+ position++
+ if buffer[position] != rune('.') {
+ goto l509
+ }
+ position++
+ if buffer[position] != rune('-') {
+ goto l509
+ }
+ position++
+ {
+ position511, tokenIndex511 := position, tokenIndex
+ if buffer[position] != rune('0') {
+ goto l512
+ }
+ position++
+ if buffer[position] != rune('b') {
+ goto l512
+ }
+ position++
+ goto l511
+ l512:
+ position, tokenIndex = position511, tokenIndex511
+ if buffer[position] != rune('.') {
+ goto l509
+ }
+ position++
+ if buffer[position] != rune('L') {
+ goto l509
+ }
+ position++
{
- position529, tokenIndex529 := position, tokenIndex
- if buffer[position] != rune('f') {
- goto l530
+ position515, tokenIndex515 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l516
}
position++
- goto l529
- l530:
- position, tokenIndex = position529, tokenIndex529
- if buffer[position] != rune('b') {
- goto l531
+ goto l515
+ l516:
+ position, tokenIndex = position515, tokenIndex515
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l517
}
position++
- goto l529
- l531:
- position, tokenIndex = position529, tokenIndex529
- if buffer[position] != rune(':') {
+ goto l515
+ l517:
+ position, tokenIndex = position515, tokenIndex515
+ if buffer[position] != rune('_') {
+ goto l518
+ }
+ position++
+ goto l515
+ l518:
+ position, tokenIndex = position515, tokenIndex515
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l509
+ }
+ position++
+ }
+ l515:
+ l513:
+ {
+ position514, tokenIndex514 := position, tokenIndex
+ {
+ position519, tokenIndex519 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l520
+ }
+ position++
+ goto l519
+ l520:
+ position, tokenIndex = position519, tokenIndex519
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l521
+ }
+ position++
+ goto l519
+ l521:
+ position, tokenIndex = position519, tokenIndex519
+ if buffer[position] != rune('_') {
+ goto l522
+ }
+ position++
+ goto l519
+ l522:
+ position, tokenIndex = position519, tokenIndex519
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l514
+ }
+ position++
+ }
+ l519:
+ goto l513
+ l514:
+ position, tokenIndex = position514, tokenIndex514
+ }
+ }
+ l511:
+ if buffer[position] != rune('@') {
+ goto l509
+ }
+ position++
+ {
+ position523, tokenIndex523 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l524
+ }
+ position++
+ goto l523
+ l524:
+ position, tokenIndex = position523, tokenIndex523
+ if buffer[position] != rune('L') {
+ goto l509
+ }
+ position++
+ }
+ l523:
+ add(ruleTOCRefLow, position510)
+ }
+ return true
+ l509:
+ position, tokenIndex = position509, tokenIndex509
+ return false
+ },
+ /* 38 IndirectionIndicator <- <'*'> */
+ func() bool {
+ position525, tokenIndex525 := position, tokenIndex
+ {
+ position526 := position
+ if buffer[position] != rune('*') {
+ goto l525
+ }
+ position++
+ add(ruleIndirectionIndicator, position526)
+ }
+ return true
+ l525:
+ position, tokenIndex = position525, tokenIndex525
+ return false
+ },
+ /* 39 RegisterOrConstant <- <((('%' ([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))*) / ('$'? ((Offset Offset) / Offset)) / ('#' Offset ('*' [0-9]+ ('-' [0-9] [0-9]*)?)?) / ('#' '~'? '(' [0-9] WS? ('<' '<') WS? [0-9] ')') / ARMRegister) !('f' / 'b' / ':' / '(' / '+' / '-'))> */
+ func() bool {
+ position527, tokenIndex527 := position, tokenIndex
+ {
+ position528 := position
+ {
+ position529, tokenIndex529 := position, tokenIndex
+ if buffer[position] != rune('%') {
+ goto l530
+ }
+ position++
+ {
+ position531, tokenIndex531 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l532
}
position++
- goto l529
+ goto l531
l532:
- position, tokenIndex = position529, tokenIndex529
- if buffer[position] != rune('(') {
- goto l533
- }
- position++
- goto l529
- l533:
- position, tokenIndex = position529, tokenIndex529
- if buffer[position] != rune('+') {
- goto l534
- }
- position++
- goto l529
- l534:
- position, tokenIndex = position529, tokenIndex529
- if buffer[position] != rune('-') {
- goto l528
+ position, tokenIndex = position531, tokenIndex531
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l530
}
position++
}
- l529:
- goto l494
- l528:
- position, tokenIndex = position528, tokenIndex528
- }
- add(ruleRegisterOrConstant, position495)
- }
- return true
- l494:
- position, tokenIndex = position494, tokenIndex494
- return false
- },
- /* 37 ARMConstantTweak <- <(((('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('s' / 'S') ('x' / 'X') ('t' / 'T') ('w' / 'W')) / (('u' / 'U') ('x' / 'X') ('t' / 'T') ('w' / 'W')) / (('u' / 'U') ('x' / 'X') ('t' / 'T') ('b' / 'B')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R'))) (WS '#' Offset)?)> */
- func() bool {
- position535, tokenIndex535 := position, tokenIndex
- {
- position536 := position
- {
- position537, tokenIndex537 := position, tokenIndex
+ l531:
+ l533:
{
- position539, tokenIndex539 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l540
+ position534, tokenIndex534 := position, tokenIndex
+ {
+ position535, tokenIndex535 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l536
+ }
+ position++
+ goto l535
+ l536:
+ position, tokenIndex = position535, tokenIndex535
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l537
+ }
+ position++
+ goto l535
+ l537:
+ position, tokenIndex = position535, tokenIndex535
+ {
+ position538, tokenIndex538 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l539
+ }
+ position++
+ goto l538
+ l539:
+ position, tokenIndex = position538, tokenIndex538
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l534
+ }
+ position++
+ }
+ l538:
}
- position++
- goto l539
- l540:
- position, tokenIndex = position539, tokenIndex539
- if buffer[position] != rune('L') {
- goto l538
- }
- position++
+ l535:
+ goto l533
+ l534:
+ position, tokenIndex = position534, tokenIndex534
}
- l539:
+ goto l529
+ l530:
+ position, tokenIndex = position529, tokenIndex529
{
position541, tokenIndex541 := position, tokenIndex
- if buffer[position] != rune('s') {
- goto l542
+ if buffer[position] != rune('$') {
+ goto l541
}
position++
- goto l541
- l542:
+ goto l542
+ l541:
position, tokenIndex = position541, tokenIndex541
- if buffer[position] != rune('S') {
- goto l538
- }
- position++
}
- l541:
+ l542:
{
position543, tokenIndex543 := position, tokenIndex
- if buffer[position] != rune('l') {
+ if !_rules[ruleOffset]() {
goto l544
}
- position++
+ if !_rules[ruleOffset]() {
+ goto l544
+ }
goto l543
l544:
position, tokenIndex = position543, tokenIndex543
- if buffer[position] != rune('L') {
- goto l538
+ if !_rules[ruleOffset]() {
+ goto l540
}
- position++
}
l543:
- goto l537
- l538:
- position, tokenIndex = position537, tokenIndex537
+ goto l529
+ l540:
+ position, tokenIndex = position529, tokenIndex529
+ if buffer[position] != rune('#') {
+ goto l545
+ }
+ position++
+ if !_rules[ruleOffset]() {
+ goto l545
+ }
{
position546, tokenIndex546 := position, tokenIndex
- if buffer[position] != rune('s') {
- goto l547
+ if buffer[position] != rune('*') {
+ goto l546
}
position++
- goto l546
- l547:
- position, tokenIndex = position546, tokenIndex546
- if buffer[position] != rune('S') {
- goto l545
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l546
}
position++
- }
- l546:
- {
- position548, tokenIndex548 := position, tokenIndex
- if buffer[position] != rune('x') {
- goto l549
+ l548:
+ {
+ position549, tokenIndex549 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l549
+ }
+ position++
+ goto l548
+ l549:
+ position, tokenIndex = position549, tokenIndex549
}
- position++
- goto l548
- l549:
- position, tokenIndex = position548, tokenIndex548
- if buffer[position] != rune('X') {
- goto l545
- }
- position++
- }
- l548:
- {
- position550, tokenIndex550 := position, tokenIndex
- if buffer[position] != rune('t') {
+ {
+ position550, tokenIndex550 := position, tokenIndex
+ if buffer[position] != rune('-') {
+ goto l550
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l550
+ }
+ position++
+ l552:
+ {
+ position553, tokenIndex553 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l553
+ }
+ position++
+ goto l552
+ l553:
+ position, tokenIndex = position553, tokenIndex553
+ }
goto l551
+ l550:
+ position, tokenIndex = position550, tokenIndex550
}
- position++
- goto l550
l551:
- position, tokenIndex = position550, tokenIndex550
- if buffer[position] != rune('T') {
- goto l545
- }
- position++
+ goto l547
+ l546:
+ position, tokenIndex = position546, tokenIndex546
}
- l550:
- {
- position552, tokenIndex552 := position, tokenIndex
- if buffer[position] != rune('w') {
- goto l553
- }
- position++
- goto l552
- l553:
- position, tokenIndex = position552, tokenIndex552
- if buffer[position] != rune('W') {
- goto l545
- }
- position++
- }
- l552:
- goto l537
+ l547:
+ goto l529
l545:
- position, tokenIndex = position537, tokenIndex537
+ position, tokenIndex = position529, tokenIndex529
+ if buffer[position] != rune('#') {
+ goto l554
+ }
+ position++
{
position555, tokenIndex555 := position, tokenIndex
- if buffer[position] != rune('u') {
- goto l556
+ if buffer[position] != rune('~') {
+ goto l555
}
position++
- goto l555
- l556:
+ goto l556
+ l555:
position, tokenIndex = position555, tokenIndex555
- if buffer[position] != rune('U') {
- goto l554
- }
- position++
}
- l555:
+ l556:
+ if buffer[position] != rune('(') {
+ goto l554
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l554
+ }
+ position++
{
position557, tokenIndex557 := position, tokenIndex
- if buffer[position] != rune('x') {
- goto l558
+ if !_rules[ruleWS]() {
+ goto l557
}
- position++
- goto l557
- l558:
+ goto l558
+ l557:
position, tokenIndex = position557, tokenIndex557
- if buffer[position] != rune('X') {
- goto l554
- }
- position++
}
- l557:
+ l558:
+ if buffer[position] != rune('<') {
+ goto l554
+ }
+ position++
+ if buffer[position] != rune('<') {
+ goto l554
+ }
+ position++
{
position559, tokenIndex559 := position, tokenIndex
- if buffer[position] != rune('t') {
- goto l560
+ if !_rules[ruleWS]() {
+ goto l559
}
- position++
- goto l559
- l560:
+ goto l560
+ l559:
position, tokenIndex = position559, tokenIndex559
- if buffer[position] != rune('T') {
- goto l554
- }
- position++
}
- l559:
- {
- position561, tokenIndex561 := position, tokenIndex
- if buffer[position] != rune('w') {
- goto l562
- }
- position++
- goto l561
- l562:
- position, tokenIndex = position561, tokenIndex561
- if buffer[position] != rune('W') {
- goto l554
- }
- position++
+ l560:
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l554
}
- l561:
- goto l537
+ position++
+ if buffer[position] != rune(')') {
+ goto l554
+ }
+ position++
+ goto l529
l554:
- position, tokenIndex = position537, tokenIndex537
+ position, tokenIndex = position529, tokenIndex529
+ if !_rules[ruleARMRegister]() {
+ goto l527
+ }
+ }
+ l529:
+ {
+ position561, tokenIndex561 := position, tokenIndex
{
- position564, tokenIndex564 := position, tokenIndex
- if buffer[position] != rune('u') {
+ position562, tokenIndex562 := position, tokenIndex
+ if buffer[position] != rune('f') {
+ goto l563
+ }
+ position++
+ goto l562
+ l563:
+ position, tokenIndex = position562, tokenIndex562
+ if buffer[position] != rune('b') {
+ goto l564
+ }
+ position++
+ goto l562
+ l564:
+ position, tokenIndex = position562, tokenIndex562
+ if buffer[position] != rune(':') {
goto l565
}
position++
- goto l564
+ goto l562
l565:
- position, tokenIndex = position564, tokenIndex564
- if buffer[position] != rune('U') {
- goto l563
+ position, tokenIndex = position562, tokenIndex562
+ if buffer[position] != rune('(') {
+ goto l566
}
position++
- }
- l564:
- {
- position566, tokenIndex566 := position, tokenIndex
- if buffer[position] != rune('x') {
+ goto l562
+ l566:
+ position, tokenIndex = position562, tokenIndex562
+ if buffer[position] != rune('+') {
goto l567
}
position++
- goto l566
+ goto l562
l567:
- position, tokenIndex = position566, tokenIndex566
- if buffer[position] != rune('X') {
- goto l563
+ position, tokenIndex = position562, tokenIndex562
+ if buffer[position] != rune('-') {
+ goto l561
}
position++
}
- l566:
+ l562:
+ goto l527
+ l561:
+ position, tokenIndex = position561, tokenIndex561
+ }
+ add(ruleRegisterOrConstant, position528)
+ }
+ return true
+ l527:
+ position, tokenIndex = position527, tokenIndex527
+ return false
+ },
+ /* 40 ARMConstantTweak <- <(((('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('s' / 'S') ('x' / 'X') ('t' / 'T') ('w' / 'W')) / (('u' / 'U') ('x' / 'X') ('t' / 'T') ('w' / 'W')) / (('u' / 'U') ('x' / 'X') ('t' / 'T') ('b' / 'B')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R'))) (WS '#' Offset)?)> */
+ func() bool {
+ position568, tokenIndex568 := position, tokenIndex
+ {
+ position569 := position
+ {
+ position570, tokenIndex570 := position, tokenIndex
{
- position568, tokenIndex568 := position, tokenIndex
- if buffer[position] != rune('t') {
- goto l569
+ position572, tokenIndex572 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l573
}
position++
- goto l568
- l569:
- position, tokenIndex = position568, tokenIndex568
- if buffer[position] != rune('T') {
- goto l563
- }
- position++
- }
- l568:
- {
- position570, tokenIndex570 := position, tokenIndex
- if buffer[position] != rune('b') {
+ goto l572
+ l573:
+ position, tokenIndex = position572, tokenIndex572
+ if buffer[position] != rune('L') {
goto l571
}
position++
- goto l570
- l571:
- position, tokenIndex = position570, tokenIndex570
- if buffer[position] != rune('B') {
- goto l563
- }
- position++
}
- l570:
- goto l537
- l563:
- position, tokenIndex = position537, tokenIndex537
+ l572:
{
- position573, tokenIndex573 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l574
- }
- position++
- goto l573
- l574:
- position, tokenIndex = position573, tokenIndex573
- if buffer[position] != rune('L') {
- goto l572
- }
- position++
- }
- l573:
- {
- position575, tokenIndex575 := position, tokenIndex
+ position574, tokenIndex574 := position, tokenIndex
if buffer[position] != rune('s') {
- goto l576
+ goto l575
}
position++
- goto l575
- l576:
- position, tokenIndex = position575, tokenIndex575
+ goto l574
+ l575:
+ position, tokenIndex = position574, tokenIndex574
if buffer[position] != rune('S') {
- goto l572
+ goto l571
}
position++
}
- l575:
+ l574:
{
- position577, tokenIndex577 := position, tokenIndex
- if buffer[position] != rune('r') {
+ position576, tokenIndex576 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l577
+ }
+ position++
+ goto l576
+ l577:
+ position, tokenIndex = position576, tokenIndex576
+ if buffer[position] != rune('L') {
+ goto l571
+ }
+ position++
+ }
+ l576:
+ goto l570
+ l571:
+ position, tokenIndex = position570, tokenIndex570
+ {
+ position579, tokenIndex579 := position, tokenIndex
+ if buffer[position] != rune('s') {
+ goto l580
+ }
+ position++
+ goto l579
+ l580:
+ position, tokenIndex = position579, tokenIndex579
+ if buffer[position] != rune('S') {
goto l578
}
position++
- goto l577
- l578:
- position, tokenIndex = position577, tokenIndex577
- if buffer[position] != rune('R') {
- goto l572
- }
- position++
}
- l577:
- goto l537
- l572:
- position, tokenIndex = position537, tokenIndex537
- {
- position580, tokenIndex580 := position, tokenIndex
- if buffer[position] != rune('r') {
- goto l581
- }
- position++
- goto l580
- l581:
- position, tokenIndex = position580, tokenIndex580
- if buffer[position] != rune('R') {
- goto l579
- }
- position++
- }
- l580:
- {
- position582, tokenIndex582 := position, tokenIndex
- if buffer[position] != rune('o') {
- goto l583
- }
- position++
- goto l582
- l583:
- position, tokenIndex = position582, tokenIndex582
- if buffer[position] != rune('O') {
- goto l579
- }
- position++
- }
- l582:
- {
- position584, tokenIndex584 := position, tokenIndex
- if buffer[position] != rune('r') {
- goto l585
- }
- position++
- goto l584
- l585:
- position, tokenIndex = position584, tokenIndex584
- if buffer[position] != rune('R') {
- goto l579
- }
- position++
- }
- l584:
- goto l537
l579:
- position, tokenIndex = position537, tokenIndex537
{
- position586, tokenIndex586 := position, tokenIndex
- if buffer[position] != rune('a') {
- goto l587
+ position581, tokenIndex581 := position, tokenIndex
+ if buffer[position] != rune('x') {
+ goto l582
}
position++
- goto l586
- l587:
- position, tokenIndex = position586, tokenIndex586
- if buffer[position] != rune('A') {
- goto l535
+ goto l581
+ l582:
+ position, tokenIndex = position581, tokenIndex581
+ if buffer[position] != rune('X') {
+ goto l578
}
position++
}
- l586:
+ l581:
+ {
+ position583, tokenIndex583 := position, tokenIndex
+ if buffer[position] != rune('t') {
+ goto l584
+ }
+ position++
+ goto l583
+ l584:
+ position, tokenIndex = position583, tokenIndex583
+ if buffer[position] != rune('T') {
+ goto l578
+ }
+ position++
+ }
+ l583:
+ {
+ position585, tokenIndex585 := position, tokenIndex
+ if buffer[position] != rune('w') {
+ goto l586
+ }
+ position++
+ goto l585
+ l586:
+ position, tokenIndex = position585, tokenIndex585
+ if buffer[position] != rune('W') {
+ goto l578
+ }
+ position++
+ }
+ l585:
+ goto l570
+ l578:
+ position, tokenIndex = position570, tokenIndex570
{
position588, tokenIndex588 := position, tokenIndex
- if buffer[position] != rune('s') {
+ if buffer[position] != rune('u') {
goto l589
}
position++
goto l588
l589:
position, tokenIndex = position588, tokenIndex588
- if buffer[position] != rune('S') {
- goto l535
+ if buffer[position] != rune('U') {
+ goto l587
}
position++
}
l588:
{
position590, tokenIndex590 := position, tokenIndex
- if buffer[position] != rune('r') {
+ if buffer[position] != rune('x') {
goto l591
}
position++
goto l590
l591:
position, tokenIndex = position590, tokenIndex590
- if buffer[position] != rune('R') {
- goto l535
+ if buffer[position] != rune('X') {
+ goto l587
}
position++
}
l590:
- }
- l537:
- {
- position592, tokenIndex592 := position, tokenIndex
- if !_rules[ruleWS]() {
+ {
+ position592, tokenIndex592 := position, tokenIndex
+ if buffer[position] != rune('t') {
+ goto l593
+ }
+ position++
goto l592
+ l593:
+ position, tokenIndex = position592, tokenIndex592
+ if buffer[position] != rune('T') {
+ goto l587
+ }
+ position++
}
- if buffer[position] != rune('#') {
- goto l592
- }
- position++
- if !_rules[ruleOffset]() {
- goto l592
- }
- goto l593
l592:
- position, tokenIndex = position592, tokenIndex592
- }
- l593:
- add(ruleARMConstantTweak, position536)
- }
- return true
- l535:
- position, tokenIndex = position535, tokenIndex535
- return false
- },
- /* 38 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / ARMVectorRegister / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] ']')?))> */
- func() bool {
- position594, tokenIndex594 := position, tokenIndex
- {
- position595 := position
- {
- position596, tokenIndex596 := position, tokenIndex
{
- position598, tokenIndex598 := position, tokenIndex
- if buffer[position] != rune('s') {
- goto l599
+ position594, tokenIndex594 := position, tokenIndex
+ if buffer[position] != rune('w') {
+ goto l595
}
position++
- goto l598
- l599:
- position, tokenIndex = position598, tokenIndex598
- if buffer[position] != rune('S') {
- goto l597
+ goto l594
+ l595:
+ position, tokenIndex = position594, tokenIndex594
+ if buffer[position] != rune('W') {
+ goto l587
}
position++
}
- l598:
+ l594:
+ goto l570
+ l587:
+ position, tokenIndex = position570, tokenIndex570
{
- position600, tokenIndex600 := position, tokenIndex
- if buffer[position] != rune('p') {
- goto l601
+ position597, tokenIndex597 := position, tokenIndex
+ if buffer[position] != rune('u') {
+ goto l598
}
position++
- goto l600
- l601:
- position, tokenIndex = position600, tokenIndex600
- if buffer[position] != rune('P') {
- goto l597
+ goto l597
+ l598:
+ position, tokenIndex = position597, tokenIndex597
+ if buffer[position] != rune('U') {
+ goto l596
}
position++
}
- l600:
- goto l596
l597:
- position, tokenIndex = position596, tokenIndex596
+ {
+ position599, tokenIndex599 := position, tokenIndex
+ if buffer[position] != rune('x') {
+ goto l600
+ }
+ position++
+ goto l599
+ l600:
+ position, tokenIndex = position599, tokenIndex599
+ if buffer[position] != rune('X') {
+ goto l596
+ }
+ position++
+ }
+ l599:
+ {
+ position601, tokenIndex601 := position, tokenIndex
+ if buffer[position] != rune('t') {
+ goto l602
+ }
+ position++
+ goto l601
+ l602:
+ position, tokenIndex = position601, tokenIndex601
+ if buffer[position] != rune('T') {
+ goto l596
+ }
+ position++
+ }
+ l601:
{
position603, tokenIndex603 := position, tokenIndex
- if buffer[position] != rune('x') {
+ if buffer[position] != rune('b') {
goto l604
}
position++
goto l603
l604:
position, tokenIndex = position603, tokenIndex603
- if buffer[position] != rune('w') {
- goto l605
- }
- position++
- goto l603
- l605:
- position, tokenIndex = position603, tokenIndex603
- if buffer[position] != rune('d') {
- goto l606
- }
- position++
- goto l603
- l606:
- position, tokenIndex = position603, tokenIndex603
- if buffer[position] != rune('q') {
- goto l607
- }
- position++
- goto l603
- l607:
- position, tokenIndex = position603, tokenIndex603
- if buffer[position] != rune('s') {
- goto l602
+ if buffer[position] != rune('B') {
+ goto l596
}
position++
}
l603:
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l602
+ goto l570
+ l596:
+ position, tokenIndex = position570, tokenIndex570
+ {
+ position606, tokenIndex606 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l607
+ }
+ position++
+ goto l606
+ l607:
+ position, tokenIndex = position606, tokenIndex606
+ if buffer[position] != rune('L') {
+ goto l605
+ }
+ position++
}
- position++
+ l606:
{
position608, tokenIndex608 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l608
+ if buffer[position] != rune('s') {
+ goto l609
}
position++
- goto l609
- l608:
+ goto l608
+ l609:
position, tokenIndex = position608, tokenIndex608
+ if buffer[position] != rune('S') {
+ goto l605
+ }
+ position++
}
- l609:
- goto l596
- l602:
- position, tokenIndex = position596, tokenIndex596
+ l608:
{
- position611, tokenIndex611 := position, tokenIndex
- if buffer[position] != rune('x') {
- goto l612
+ position610, tokenIndex610 := position, tokenIndex
+ if buffer[position] != rune('r') {
+ goto l611
}
position++
- goto l611
- l612:
- position, tokenIndex = position611, tokenIndex611
- if buffer[position] != rune('X') {
- goto l610
+ goto l610
+ l611:
+ position, tokenIndex = position610, tokenIndex610
+ if buffer[position] != rune('R') {
+ goto l605
}
position++
}
- l611:
+ l610:
+ goto l570
+ l605:
+ position, tokenIndex = position570, tokenIndex570
{
position613, tokenIndex613 := position, tokenIndex
- if buffer[position] != rune('z') {
+ if buffer[position] != rune('r') {
goto l614
}
position++
goto l613
l614:
position, tokenIndex = position613, tokenIndex613
- if buffer[position] != rune('Z') {
- goto l610
+ if buffer[position] != rune('R') {
+ goto l612
}
position++
}
l613:
{
position615, tokenIndex615 := position, tokenIndex
- if buffer[position] != rune('r') {
+ if buffer[position] != rune('o') {
goto l616
}
position++
goto l615
l616:
position, tokenIndex = position615, tokenIndex615
- if buffer[position] != rune('R') {
- goto l610
+ if buffer[position] != rune('O') {
+ goto l612
}
position++
}
l615:
- goto l596
- l610:
- position, tokenIndex = position596, tokenIndex596
{
- position618, tokenIndex618 := position, tokenIndex
- if buffer[position] != rune('w') {
- goto l619
- }
- position++
- goto l618
- l619:
- position, tokenIndex = position618, tokenIndex618
- if buffer[position] != rune('W') {
- goto l617
- }
- position++
- }
- l618:
- {
- position620, tokenIndex620 := position, tokenIndex
- if buffer[position] != rune('z') {
- goto l621
- }
- position++
- goto l620
- l621:
- position, tokenIndex = position620, tokenIndex620
- if buffer[position] != rune('Z') {
- goto l617
- }
- position++
- }
- l620:
- {
- position622, tokenIndex622 := position, tokenIndex
+ position617, tokenIndex617 := position, tokenIndex
if buffer[position] != rune('r') {
- goto l623
+ goto l618
}
position++
- goto l622
- l623:
- position, tokenIndex = position622, tokenIndex622
+ goto l617
+ l618:
+ position, tokenIndex = position617, tokenIndex617
if buffer[position] != rune('R') {
- goto l617
+ goto l612
}
position++
}
- l622:
- goto l596
l617:
- position, tokenIndex = position596, tokenIndex596
- if !_rules[ruleARMVectorRegister]() {
- goto l624
- }
- goto l596
- l624:
- position, tokenIndex = position596, tokenIndex596
- if buffer[position] != rune('{') {
- goto l594
- }
- position++
+ goto l570
+ l612:
+ position, tokenIndex = position570, tokenIndex570
{
- position625, tokenIndex625 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l625
- }
- goto l626
- l625:
- position, tokenIndex = position625, tokenIndex625
- }
- l626:
- if !_rules[ruleARMVectorRegister]() {
- goto l594
- }
- l627:
- {
- position628, tokenIndex628 := position, tokenIndex
- if buffer[position] != rune(',') {
- goto l628
+ position619, tokenIndex619 := position, tokenIndex
+ if buffer[position] != rune('a') {
+ goto l620
}
position++
- {
- position629, tokenIndex629 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l629
- }
- goto l630
- l629:
- position, tokenIndex = position629, tokenIndex629
+ goto l619
+ l620:
+ position, tokenIndex = position619, tokenIndex619
+ if buffer[position] != rune('A') {
+ goto l568
}
- l630:
- if !_rules[ruleARMVectorRegister]() {
- goto l628
- }
- goto l627
- l628:
- position, tokenIndex = position628, tokenIndex628
+ position++
}
+ l619:
{
- position631, tokenIndex631 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l631
+ position621, tokenIndex621 := position, tokenIndex
+ if buffer[position] != rune('s') {
+ goto l622
}
- goto l632
- l631:
- position, tokenIndex = position631, tokenIndex631
+ position++
+ goto l621
+ l622:
+ position, tokenIndex = position621, tokenIndex621
+ if buffer[position] != rune('S') {
+ goto l568
+ }
+ position++
}
- l632:
- if buffer[position] != rune('}') {
- goto l594
- }
- position++
+ l621:
{
- position633, tokenIndex633 := position, tokenIndex
- if buffer[position] != rune('[') {
- goto l633
+ position623, tokenIndex623 := position, tokenIndex
+ if buffer[position] != rune('r') {
+ goto l624
}
position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l633
+ goto l623
+ l624:
+ position, tokenIndex = position623, tokenIndex623
+ if buffer[position] != rune('R') {
+ goto l568
}
position++
- if buffer[position] != rune(']') {
- goto l633
- }
- position++
- goto l634
- l633:
- position, tokenIndex = position633, tokenIndex633
}
- l634:
+ l623:
}
- l596:
- add(ruleARMRegister, position595)
+ l570:
+ {
+ position625, tokenIndex625 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l625
+ }
+ if buffer[position] != rune('#') {
+ goto l625
+ }
+ position++
+ if !_rules[ruleOffset]() {
+ goto l625
+ }
+ goto l626
+ l625:
+ position, tokenIndex = position625, tokenIndex625
+ }
+ l626:
+ add(ruleARMConstantTweak, position569)
}
return true
- l594:
- position, tokenIndex = position594, tokenIndex594
+ l568:
+ position, tokenIndex = position568, tokenIndex568
return false
},
- /* 39 ARMVectorRegister <- <(('v' / 'V') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */
+ /* 41 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / ARMVectorRegister / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
func() bool {
- position635, tokenIndex635 := position, tokenIndex
+ position627, tokenIndex627 := position, tokenIndex
{
- position636 := position
+ position628 := position
{
- position637, tokenIndex637 := position, tokenIndex
- if buffer[position] != rune('v') {
- goto l638
+ position629, tokenIndex629 := position, tokenIndex
+ {
+ position631, tokenIndex631 := position, tokenIndex
+ if buffer[position] != rune('s') {
+ goto l632
+ }
+ position++
+ goto l631
+ l632:
+ position, tokenIndex = position631, tokenIndex631
+ if buffer[position] != rune('S') {
+ goto l630
+ }
+ position++
}
- position++
- goto l637
- l638:
- position, tokenIndex = position637, tokenIndex637
- if buffer[position] != rune('V') {
+ l631:
+ {
+ position633, tokenIndex633 := position, tokenIndex
+ if buffer[position] != rune('p') {
+ goto l634
+ }
+ position++
+ goto l633
+ l634:
+ position, tokenIndex = position633, tokenIndex633
+ if buffer[position] != rune('P') {
+ goto l630
+ }
+ position++
+ }
+ l633:
+ goto l629
+ l630:
+ position, tokenIndex = position629, tokenIndex629
+ {
+ position636, tokenIndex636 := position, tokenIndex
+ if buffer[position] != rune('x') {
+ goto l637
+ }
+ position++
+ goto l636
+ l637:
+ position, tokenIndex = position636, tokenIndex636
+ if buffer[position] != rune('w') {
+ goto l638
+ }
+ position++
+ goto l636
+ l638:
+ position, tokenIndex = position636, tokenIndex636
+ if buffer[position] != rune('d') {
+ goto l639
+ }
+ position++
+ goto l636
+ l639:
+ position, tokenIndex = position636, tokenIndex636
+ if buffer[position] != rune('q') {
+ goto l640
+ }
+ position++
+ goto l636
+ l640:
+ position, tokenIndex = position636, tokenIndex636
+ if buffer[position] != rune('s') {
+ goto l635
+ }
+ position++
+ }
+ l636:
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l635
}
position++
- }
- l637:
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l635
- }
- position++
- {
- position639, tokenIndex639 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l639
- }
- position++
- goto l640
- l639:
- position, tokenIndex = position639, tokenIndex639
- }
- l640:
- {
- position641, tokenIndex641 := position, tokenIndex
- if buffer[position] != rune('.') {
- goto l641
- }
- position++
- l643:
{
- position644, tokenIndex644 := position, tokenIndex
+ position641, tokenIndex641 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l644
- }
- position++
- goto l643
- l644:
- position, tokenIndex = position644, tokenIndex644
- }
- {
- position645, tokenIndex645 := position, tokenIndex
- if buffer[position] != rune('b') {
- goto l646
- }
- position++
- goto l645
- l646:
- position, tokenIndex = position645, tokenIndex645
- if buffer[position] != rune('s') {
- goto l647
- }
- position++
- goto l645
- l647:
- position, tokenIndex = position645, tokenIndex645
- if buffer[position] != rune('d') {
- goto l648
- }
- position++
- goto l645
- l648:
- position, tokenIndex = position645, tokenIndex645
- if buffer[position] != rune('h') {
- goto l649
- }
- position++
- goto l645
- l649:
- position, tokenIndex = position645, tokenIndex645
- if buffer[position] != rune('q') {
goto l641
}
position++
+ goto l642
+ l641:
+ position, tokenIndex = position641, tokenIndex641
}
- l645:
+ l642:
+ goto l629
+ l635:
+ position, tokenIndex = position629, tokenIndex629
{
- position650, tokenIndex650 := position, tokenIndex
- if buffer[position] != rune('[') {
- goto l650
+ position644, tokenIndex644 := position, tokenIndex
+ if buffer[position] != rune('x') {
+ goto l645
}
position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l650
+ goto l644
+ l645:
+ position, tokenIndex = position644, tokenIndex644
+ if buffer[position] != rune('X') {
+ goto l643
}
position++
- {
- position652, tokenIndex652 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l652
- }
- position++
- goto l653
- l652:
- position, tokenIndex = position652, tokenIndex652
+ }
+ l644:
+ {
+ position646, tokenIndex646 := position, tokenIndex
+ if buffer[position] != rune('z') {
+ goto l647
}
- l653:
- if buffer[position] != rune(']') {
- goto l650
+ position++
+ goto l646
+ l647:
+ position, tokenIndex = position646, tokenIndex646
+ if buffer[position] != rune('Z') {
+ goto l643
+ }
+ position++
+ }
+ l646:
+ {
+ position648, tokenIndex648 := position, tokenIndex
+ if buffer[position] != rune('r') {
+ goto l649
+ }
+ position++
+ goto l648
+ l649:
+ position, tokenIndex = position648, tokenIndex648
+ if buffer[position] != rune('R') {
+ goto l643
+ }
+ position++
+ }
+ l648:
+ goto l629
+ l643:
+ position, tokenIndex = position629, tokenIndex629
+ {
+ position651, tokenIndex651 := position, tokenIndex
+ if buffer[position] != rune('w') {
+ goto l652
}
position++
goto l651
- l650:
- position, tokenIndex = position650, tokenIndex650
+ l652:
+ position, tokenIndex = position651, tokenIndex651
+ if buffer[position] != rune('W') {
+ goto l650
+ }
+ position++
}
l651:
- goto l642
- l641:
- position, tokenIndex = position641, tokenIndex641
- }
- l642:
- add(ruleARMVectorRegister, position636)
- }
- return true
- l635:
- position, tokenIndex = position635, tokenIndex635
- return false
- },
- /* 40 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
- func() bool {
- position654, tokenIndex654 := position, tokenIndex
- {
- position655 := position
- {
- position656, tokenIndex656 := position, tokenIndex
- if !_rules[ruleSymbolRef]() {
+ {
+ position653, tokenIndex653 := position, tokenIndex
+ if buffer[position] != rune('z') {
+ goto l654
+ }
+ position++
+ goto l653
+ l654:
+ position, tokenIndex = position653, tokenIndex653
+ if buffer[position] != rune('Z') {
+ goto l650
+ }
+ position++
+ }
+ l653:
+ {
+ position655, tokenIndex655 := position, tokenIndex
+ if buffer[position] != rune('r') {
+ goto l656
+ }
+ position++
+ goto l655
+ l656:
+ position, tokenIndex = position655, tokenIndex655
+ if buffer[position] != rune('R') {
+ goto l650
+ }
+ position++
+ }
+ l655:
+ goto l629
+ l650:
+ position, tokenIndex = position629, tokenIndex629
+ if !_rules[ruleARMVectorRegister]() {
goto l657
}
- if !_rules[ruleBaseIndexScale]() {
- goto l657
- }
- goto l656
+ goto l629
l657:
- position, tokenIndex = position656, tokenIndex656
- if !_rules[ruleSymbolRef]() {
- goto l658
- }
- goto l656
- l658:
- position, tokenIndex = position656, tokenIndex656
- if !_rules[ruleLow12BitsSymbolRef]() {
- goto l659
- }
- goto l656
- l659:
- position, tokenIndex = position656, tokenIndex656
- l661:
- {
- position662, tokenIndex662 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l662
- }
- goto l661
- l662:
- position, tokenIndex = position662, tokenIndex662
- }
- if !_rules[ruleBaseIndexScale]() {
- goto l660
- }
- goto l656
- l660:
- position, tokenIndex = position656, tokenIndex656
- if !_rules[ruleSegmentRegister]() {
- goto l663
- }
- if !_rules[ruleOffset]() {
- goto l663
- }
- if !_rules[ruleBaseIndexScale]() {
- goto l663
- }
- goto l656
- l663:
- position, tokenIndex = position656, tokenIndex656
- if !_rules[ruleSegmentRegister]() {
- goto l664
- }
- if !_rules[ruleBaseIndexScale]() {
- goto l664
- }
- goto l656
- l664:
- position, tokenIndex = position656, tokenIndex656
- if !_rules[ruleSegmentRegister]() {
- goto l665
- }
- if !_rules[ruleOffset]() {
- goto l665
- }
- goto l656
- l665:
- position, tokenIndex = position656, tokenIndex656
- if !_rules[ruleARMBaseIndexScale]() {
- goto l666
- }
- goto l656
- l666:
- position, tokenIndex = position656, tokenIndex656
- if !_rules[ruleBaseIndexScale]() {
- goto l654
- }
- }
- l656:
- add(ruleMemoryRef, position655)
- }
- return true
- l654:
- position, tokenIndex = position654, tokenIndex654
- return false
- },
- /* 41 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
- func() bool {
- position667, tokenIndex667 := position, tokenIndex
- {
- position668 := position
- {
- position669, tokenIndex669 := position, tokenIndex
- l671:
- {
- position672, tokenIndex672 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l672
- }
- goto l671
- l672:
- position, tokenIndex = position672, tokenIndex672
- }
- if buffer[position] != rune('+') {
- goto l669
+ position, tokenIndex = position629, tokenIndex629
+ if buffer[position] != rune('{') {
+ goto l627
}
position++
- goto l670
- l669:
- position, tokenIndex = position669, tokenIndex669
+ {
+ position658, tokenIndex658 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l658
+ }
+ goto l659
+ l658:
+ position, tokenIndex = position658, tokenIndex658
+ }
+ l659:
+ if !_rules[ruleARMVectorRegister]() {
+ goto l627
+ }
+ l660:
+ {
+ position661, tokenIndex661 := position, tokenIndex
+ if buffer[position] != rune(',') {
+ goto l661
+ }
+ position++
+ {
+ position662, tokenIndex662 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l662
+ }
+ goto l663
+ l662:
+ position, tokenIndex = position662, tokenIndex662
+ }
+ l663:
+ if !_rules[ruleARMVectorRegister]() {
+ goto l661
+ }
+ goto l660
+ l661:
+ position, tokenIndex = position661, tokenIndex661
+ }
+ {
+ position664, tokenIndex664 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l664
+ }
+ goto l665
+ l664:
+ position, tokenIndex = position664, tokenIndex664
+ }
+ l665:
+ if buffer[position] != rune('}') {
+ goto l627
+ }
+ position++
+ {
+ position666, tokenIndex666 := position, tokenIndex
+ if buffer[position] != rune('[') {
+ goto l666
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l666
+ }
+ position++
+ {
+ position668, tokenIndex668 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l668
+ }
+ position++
+ goto l669
+ l668:
+ position, tokenIndex = position668, tokenIndex668
+ }
+ l669:
+ if buffer[position] != rune(']') {
+ goto l666
+ }
+ position++
+ goto l667
+ l666:
+ position, tokenIndex = position666, tokenIndex666
+ }
+ l667:
}
- l670:
+ l629:
+ add(ruleARMRegister, position628)
+ }
+ return true
+ l627:
+ position, tokenIndex = position627, tokenIndex627
+ return false
+ },
+ /* 42 ARMVectorRegister <- <(('v' / 'V') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */
+ func() bool {
+ position670, tokenIndex670 := position, tokenIndex
+ {
+ position671 := position
{
- position673, tokenIndex673 := position, tokenIndex
- if !_rules[ruleLocalSymbol]() {
+ position672, tokenIndex672 := position, tokenIndex
+ if buffer[position] != rune('v') {
+ goto l673
+ }
+ position++
+ goto l672
+ l673:
+ position, tokenIndex = position672, tokenIndex672
+ if buffer[position] != rune('V') {
+ goto l670
+ }
+ position++
+ }
+ l672:
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l670
+ }
+ position++
+ {
+ position674, tokenIndex674 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l674
}
- goto l673
+ position++
+ goto l675
l674:
- position, tokenIndex = position673, tokenIndex673
- if !_rules[ruleSymbolName]() {
- goto l667
- }
+ position, tokenIndex = position674, tokenIndex674
}
- l673:
l675:
{
position676, tokenIndex676 := position, tokenIndex
- if !_rules[ruleOffset]() {
+ if buffer[position] != rune('.') {
goto l676
}
- goto l675
+ position++
+ l678:
+ {
+ position679, tokenIndex679 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l679
+ }
+ position++
+ goto l678
+ l679:
+ position, tokenIndex = position679, tokenIndex679
+ }
+ {
+ position680, tokenIndex680 := position, tokenIndex
+ if buffer[position] != rune('b') {
+ goto l681
+ }
+ position++
+ goto l680
+ l681:
+ position, tokenIndex = position680, tokenIndex680
+ if buffer[position] != rune('s') {
+ goto l682
+ }
+ position++
+ goto l680
+ l682:
+ position, tokenIndex = position680, tokenIndex680
+ if buffer[position] != rune('d') {
+ goto l683
+ }
+ position++
+ goto l680
+ l683:
+ position, tokenIndex = position680, tokenIndex680
+ if buffer[position] != rune('h') {
+ goto l684
+ }
+ position++
+ goto l680
+ l684:
+ position, tokenIndex = position680, tokenIndex680
+ if buffer[position] != rune('q') {
+ goto l676
+ }
+ position++
+ }
+ l680:
+ {
+ position685, tokenIndex685 := position, tokenIndex
+ if buffer[position] != rune('[') {
+ goto l685
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l685
+ }
+ position++
+ {
+ position687, tokenIndex687 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l687
+ }
+ position++
+ goto l688
+ l687:
+ position, tokenIndex = position687, tokenIndex687
+ }
+ l688:
+ if buffer[position] != rune(']') {
+ goto l685
+ }
+ position++
+ goto l686
+ l685:
+ position, tokenIndex = position685, tokenIndex685
+ }
+ l686:
+ goto l677
l676:
position, tokenIndex = position676, tokenIndex676
}
- {
- position677, tokenIndex677 := position, tokenIndex
- if buffer[position] != rune('@') {
- goto l677
- }
- position++
- if !_rules[ruleSection]() {
- goto l677
- }
- l679:
- {
- position680, tokenIndex680 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l680
- }
- goto l679
- l680:
- position, tokenIndex = position680, tokenIndex680
- }
- goto l678
- l677:
- position, tokenIndex = position677, tokenIndex677
- }
- l678:
- add(ruleSymbolRef, position668)
+ l677:
+ add(ruleARMVectorRegister, position671)
}
return true
- l667:
- position, tokenIndex = position667, tokenIndex667
+ l670:
+ position, tokenIndex = position670, tokenIndex670
return false
},
- /* 42 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
+ /* 43 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
func() bool {
- position681, tokenIndex681 := position, tokenIndex
+ position689, tokenIndex689 := position, tokenIndex
{
- position682 := position
- if buffer[position] != rune(':') {
- goto l681
- }
- position++
+ position690 := position
{
- position683, tokenIndex683 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l684
+ position691, tokenIndex691 := position, tokenIndex
+ if !_rules[ruleSymbolRef]() {
+ goto l692
}
- position++
- goto l683
- l684:
- position, tokenIndex = position683, tokenIndex683
- if buffer[position] != rune('L') {
- goto l681
+ if !_rules[ruleBaseIndexScale]() {
+ goto l692
}
- position++
- }
- l683:
- {
- position685, tokenIndex685 := position, tokenIndex
- if buffer[position] != rune('o') {
- goto l686
- }
- position++
- goto l685
- l686:
- position, tokenIndex = position685, tokenIndex685
- if buffer[position] != rune('O') {
- goto l681
- }
- position++
- }
- l685:
- if buffer[position] != rune('1') {
- goto l681
- }
- position++
- if buffer[position] != rune('2') {
- goto l681
- }
- position++
- if buffer[position] != rune(':') {
- goto l681
- }
- position++
- {
- position687, tokenIndex687 := position, tokenIndex
- if !_rules[ruleLocalSymbol]() {
- goto l688
- }
- goto l687
- l688:
- position, tokenIndex = position687, tokenIndex687
- if !_rules[ruleSymbolName]() {
- goto l681
- }
- }
- l687:
- {
- position689, tokenIndex689 := position, tokenIndex
- if !_rules[ruleOffset]() {
- goto l689
- }
- goto l690
- l689:
- position, tokenIndex = position689, tokenIndex689
- }
- l690:
- add(ruleLow12BitsSymbolRef, position682)
- }
- return true
- l681:
- position, tokenIndex = position681, tokenIndex681
- return false
- },
- /* 43 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset ('*' [0-9]+)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
- func() bool {
- position691, tokenIndex691 := position, tokenIndex
- {
- position692 := position
- if buffer[position] != rune('[') {
goto l691
- }
- position++
- if !_rules[ruleARMRegister]() {
- goto l691
- }
- {
- position693, tokenIndex693 := position, tokenIndex
- if buffer[position] != rune(',') {
+ l692:
+ position, tokenIndex = position691, tokenIndex691
+ if !_rules[ruleSymbolRef]() {
goto l693
}
- position++
- {
- position695, tokenIndex695 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l695
- }
- goto l696
- l695:
- position, tokenIndex = position695, tokenIndex695
+ goto l691
+ l693:
+ position, tokenIndex = position691, tokenIndex691
+ if !_rules[ruleLow12BitsSymbolRef]() {
+ goto l694
}
+ goto l691
+ l694:
+ position, tokenIndex = position691, tokenIndex691
l696:
{
position697, tokenIndex697 := position, tokenIndex
- if buffer[position] != rune('#') {
- goto l698
- }
- position++
if !_rules[ruleOffset]() {
- goto l698
+ goto l697
}
- {
- position699, tokenIndex699 := position, tokenIndex
- if buffer[position] != rune('*') {
- goto l699
- }
- position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l699
- }
- position++
- l701:
- {
- position702, tokenIndex702 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l702
- }
- position++
- goto l701
- l702:
- position, tokenIndex = position702, tokenIndex702
- }
- goto l700
- l699:
- position, tokenIndex = position699, tokenIndex699
- }
- l700:
- goto l697
- l698:
+ goto l696
+ l697:
position, tokenIndex = position697, tokenIndex697
- if !_rules[ruleARMGOTLow12]() {
- goto l703
- }
- goto l697
- l703:
- position, tokenIndex = position697, tokenIndex697
- if !_rules[ruleLow12BitsSymbolRef]() {
- goto l704
- }
- goto l697
- l704:
- position, tokenIndex = position697, tokenIndex697
- if !_rules[ruleARMRegister]() {
- goto l693
- }
}
- l697:
- {
- position705, tokenIndex705 := position, tokenIndex
- if buffer[position] != rune(',') {
- goto l705
- }
- position++
- {
- position707, tokenIndex707 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l707
- }
- goto l708
- l707:
- position, tokenIndex = position707, tokenIndex707
- }
- l708:
- if !_rules[ruleARMConstantTweak]() {
- goto l705
- }
- goto l706
- l705:
- position, tokenIndex = position705, tokenIndex705
+ if !_rules[ruleBaseIndexScale]() {
+ goto l695
}
- l706:
- goto l694
- l693:
- position, tokenIndex = position693, tokenIndex693
- }
- l694:
- if buffer[position] != rune(']') {
goto l691
- }
- position++
- {
- position709, tokenIndex709 := position, tokenIndex
- if !_rules[ruleARMPostincrement]() {
- goto l709
+ l695:
+ position, tokenIndex = position691, tokenIndex691
+ if !_rules[ruleSegmentRegister]() {
+ goto l698
}
- goto l710
- l709:
- position, tokenIndex = position709, tokenIndex709
+ if !_rules[ruleOffset]() {
+ goto l698
+ }
+ if !_rules[ruleBaseIndexScale]() {
+ goto l698
+ }
+ goto l691
+ l698:
+ position, tokenIndex = position691, tokenIndex691
+ if !_rules[ruleSegmentRegister]() {
+ goto l699
+ }
+ if !_rules[ruleBaseIndexScale]() {
+ goto l699
+ }
+ goto l691
+ l699:
+ position, tokenIndex = position691, tokenIndex691
+ if !_rules[ruleSegmentRegister]() {
+ goto l700
+ }
+ if !_rules[ruleOffset]() {
+ goto l700
+ }
+ goto l691
+ l700:
+ position, tokenIndex = position691, tokenIndex691
+ if !_rules[ruleARMBaseIndexScale]() {
+ goto l701
+ }
+ goto l691
+ l701:
+ position, tokenIndex = position691, tokenIndex691
+ if !_rules[ruleBaseIndexScale]() {
+ goto l689
+ }
}
- l710:
- add(ruleARMBaseIndexScale, position692)
+ l691:
+ add(ruleMemoryRef, position690)
}
return true
- l691:
- position, tokenIndex = position691, tokenIndex691
+ l689:
+ position, tokenIndex = position689, tokenIndex689
return false
},
- /* 44 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
+ /* 44 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
func() bool {
- position711, tokenIndex711 := position, tokenIndex
+ position702, tokenIndex702 := position, tokenIndex
{
- position712 := position
+ position703 := position
+ {
+ position704, tokenIndex704 := position, tokenIndex
+ l706:
+ {
+ position707, tokenIndex707 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l707
+ }
+ goto l706
+ l707:
+ position, tokenIndex = position707, tokenIndex707
+ }
+ if buffer[position] != rune('+') {
+ goto l704
+ }
+ position++
+ goto l705
+ l704:
+ position, tokenIndex = position704, tokenIndex704
+ }
+ l705:
+ {
+ position708, tokenIndex708 := position, tokenIndex
+ if !_rules[ruleLocalSymbol]() {
+ goto l709
+ }
+ goto l708
+ l709:
+ position, tokenIndex = position708, tokenIndex708
+ if !_rules[ruleSymbolName]() {
+ goto l702
+ }
+ }
+ l708:
+ l710:
+ {
+ position711, tokenIndex711 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l711
+ }
+ goto l710
+ l711:
+ position, tokenIndex = position711, tokenIndex711
+ }
+ {
+ position712, tokenIndex712 := position, tokenIndex
+ if buffer[position] != rune('@') {
+ goto l712
+ }
+ position++
+ if !_rules[ruleSection]() {
+ goto l712
+ }
+ l714:
+ {
+ position715, tokenIndex715 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l715
+ }
+ goto l714
+ l715:
+ position, tokenIndex = position715, tokenIndex715
+ }
+ goto l713
+ l712:
+ position, tokenIndex = position712, tokenIndex712
+ }
+ l713:
+ add(ruleSymbolRef, position703)
+ }
+ return true
+ l702:
+ position, tokenIndex = position702, tokenIndex702
+ return false
+ },
+ /* 45 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
+ func() bool {
+ position716, tokenIndex716 := position, tokenIndex
+ {
+ position717 := position
if buffer[position] != rune(':') {
- goto l711
+ goto l716
}
position++
{
- position713, tokenIndex713 := position, tokenIndex
- if buffer[position] != rune('g') {
- goto l714
+ position718, tokenIndex718 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l719
}
position++
- goto l713
- l714:
- position, tokenIndex = position713, tokenIndex713
- if buffer[position] != rune('G') {
- goto l711
- }
- position++
- }
- l713:
- {
- position715, tokenIndex715 := position, tokenIndex
- if buffer[position] != rune('o') {
+ goto l718
+ l719:
+ position, tokenIndex = position718, tokenIndex718
+ if buffer[position] != rune('L') {
goto l716
}
position++
- goto l715
- l716:
- position, tokenIndex = position715, tokenIndex715
- if buffer[position] != rune('O') {
- goto l711
- }
- position++
}
- l715:
+ l718:
{
- position717, tokenIndex717 := position, tokenIndex
- if buffer[position] != rune('t') {
- goto l718
- }
- position++
- goto l717
- l718:
- position, tokenIndex = position717, tokenIndex717
- if buffer[position] != rune('T') {
- goto l711
- }
- position++
- }
- l717:
- if buffer[position] != rune('_') {
- goto l711
- }
- position++
- {
- position719, tokenIndex719 := position, tokenIndex
- if buffer[position] != rune('l') {
- goto l720
- }
- position++
- goto l719
- l720:
- position, tokenIndex = position719, tokenIndex719
- if buffer[position] != rune('L') {
- goto l711
- }
- position++
- }
- l719:
- {
- position721, tokenIndex721 := position, tokenIndex
+ position720, tokenIndex720 := position, tokenIndex
if buffer[position] != rune('o') {
- goto l722
+ goto l721
}
position++
- goto l721
- l722:
- position, tokenIndex = position721, tokenIndex721
+ goto l720
+ l721:
+ position, tokenIndex = position720, tokenIndex720
if buffer[position] != rune('O') {
- goto l711
+ goto l716
}
position++
}
- l721:
+ l720:
if buffer[position] != rune('1') {
- goto l711
+ goto l716
}
position++
if buffer[position] != rune('2') {
- goto l711
+ goto l716
}
position++
if buffer[position] != rune(':') {
- goto l711
+ goto l716
}
position++
- if !_rules[ruleSymbolName]() {
- goto l711
+ {
+ position722, tokenIndex722 := position, tokenIndex
+ if !_rules[ruleLocalSymbol]() {
+ goto l723
+ }
+ goto l722
+ l723:
+ position, tokenIndex = position722, tokenIndex722
+ if !_rules[ruleSymbolName]() {
+ goto l716
+ }
}
- add(ruleARMGOTLow12, position712)
- }
- return true
- l711:
- position, tokenIndex = position711, tokenIndex711
- return false
- },
- /* 45 ARMPostincrement <- <'!'> */
- func() bool {
- position723, tokenIndex723 := position, tokenIndex
- {
- position724 := position
- if buffer[position] != rune('!') {
- goto l723
- }
- position++
- add(ruleARMPostincrement, position724)
- }
- return true
- l723:
- position, tokenIndex = position723, tokenIndex723
- return false
- },
- /* 46 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
- func() bool {
- position725, tokenIndex725 := position, tokenIndex
- {
- position726 := position
- if buffer[position] != rune('(') {
+ l722:
+ {
+ position724, tokenIndex724 := position, tokenIndex
+ if !_rules[ruleOffset]() {
+ goto l724
+ }
goto l725
+ l724:
+ position, tokenIndex = position724, tokenIndex724
+ }
+ l725:
+ add(ruleLow12BitsSymbolRef, position717)
+ }
+ return true
+ l716:
+ position, tokenIndex = position716, tokenIndex716
+ return false
+ },
+ /* 46 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset ('*' [0-9]+)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
+ func() bool {
+ position726, tokenIndex726 := position, tokenIndex
+ {
+ position727 := position
+ if buffer[position] != rune('[') {
+ goto l726
}
position++
- {
- position727, tokenIndex727 := position, tokenIndex
- if !_rules[ruleRegisterOrConstant]() {
- goto l727
- }
- goto l728
- l727:
- position, tokenIndex = position727, tokenIndex727
+ if !_rules[ruleARMRegister]() {
+ goto l726
}
- l728:
{
- position729, tokenIndex729 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l729
- }
- goto l730
- l729:
- position, tokenIndex = position729, tokenIndex729
- }
- l730:
- {
- position731, tokenIndex731 := position, tokenIndex
+ position728, tokenIndex728 := position, tokenIndex
if buffer[position] != rune(',') {
- goto l731
+ goto l728
}
position++
{
- position733, tokenIndex733 := position, tokenIndex
+ position730, tokenIndex730 := position, tokenIndex
if !_rules[ruleWS]() {
+ goto l730
+ }
+ goto l731
+ l730:
+ position, tokenIndex = position730, tokenIndex730
+ }
+ l731:
+ {
+ position732, tokenIndex732 := position, tokenIndex
+ if buffer[position] != rune('#') {
goto l733
}
- goto l734
- l733:
- position, tokenIndex = position733, tokenIndex733
- }
- l734:
- if !_rules[ruleRegisterOrConstant]() {
- goto l731
- }
- {
- position735, tokenIndex735 := position, tokenIndex
- if !_rules[ruleWS]() {
- goto l735
- }
- goto l736
- l735:
- position, tokenIndex = position735, tokenIndex735
- }
- l736:
- {
- position737, tokenIndex737 := position, tokenIndex
- if buffer[position] != rune(',') {
- goto l737
- }
position++
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l737
+ if !_rules[ruleOffset]() {
+ goto l733
}
- position++
- l739:
{
- position740, tokenIndex740 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l740
+ position734, tokenIndex734 := position, tokenIndex
+ if buffer[position] != rune('*') {
+ goto l734
}
position++
- goto l739
- l740:
- position, tokenIndex = position740, tokenIndex740
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l734
+ }
+ position++
+ l736:
+ {
+ position737, tokenIndex737 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l737
+ }
+ position++
+ goto l736
+ l737:
+ position, tokenIndex = position737, tokenIndex737
+ }
+ goto l735
+ l734:
+ position, tokenIndex = position734, tokenIndex734
}
- goto l738
- l737:
- position, tokenIndex = position737, tokenIndex737
+ l735:
+ goto l732
+ l733:
+ position, tokenIndex = position732, tokenIndex732
+ if !_rules[ruleARMGOTLow12]() {
+ goto l738
+ }
+ goto l732
+ l738:
+ position, tokenIndex = position732, tokenIndex732
+ if !_rules[ruleLow12BitsSymbolRef]() {
+ goto l739
+ }
+ goto l732
+ l739:
+ position, tokenIndex = position732, tokenIndex732
+ if !_rules[ruleARMRegister]() {
+ goto l728
+ }
}
- l738:
- goto l732
- l731:
- position, tokenIndex = position731, tokenIndex731
+ l732:
+ {
+ position740, tokenIndex740 := position, tokenIndex
+ if buffer[position] != rune(',') {
+ goto l740
+ }
+ position++
+ {
+ position742, tokenIndex742 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l742
+ }
+ goto l743
+ l742:
+ position, tokenIndex = position742, tokenIndex742
+ }
+ l743:
+ if !_rules[ruleARMConstantTweak]() {
+ goto l740
+ }
+ goto l741
+ l740:
+ position, tokenIndex = position740, tokenIndex740
+ }
+ l741:
+ goto l729
+ l728:
+ position, tokenIndex = position728, tokenIndex728
}
- l732:
- if buffer[position] != rune(')') {
- goto l725
+ l729:
+ if buffer[position] != rune(']') {
+ goto l726
}
position++
- add(ruleBaseIndexScale, position726)
- }
- return true
- l725:
- position, tokenIndex = position725, tokenIndex725
- return false
- },
- /* 47 Operator <- <('+' / '-')> */
- func() bool {
- position741, tokenIndex741 := position, tokenIndex
- {
- position742 := position
{
- position743, tokenIndex743 := position, tokenIndex
- if buffer[position] != rune('+') {
+ position744, tokenIndex744 := position, tokenIndex
+ if !_rules[ruleARMPostincrement]() {
goto l744
}
- position++
- goto l743
+ goto l745
l744:
- position, tokenIndex = position743, tokenIndex743
- if buffer[position] != rune('-') {
- goto l741
- }
- position++
+ position, tokenIndex = position744, tokenIndex744
}
- l743:
- add(ruleOperator, position742)
+ l745:
+ add(ruleARMBaseIndexScale, position727)
}
return true
- l741:
- position, tokenIndex = position741, tokenIndex741
+ l726:
+ position, tokenIndex = position726, tokenIndex726
return false
},
- /* 48 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
+ /* 47 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
func() bool {
- position745, tokenIndex745 := position, tokenIndex
+ position746, tokenIndex746 := position, tokenIndex
{
- position746 := position
- {
- position747, tokenIndex747 := position, tokenIndex
- if buffer[position] != rune('+') {
- goto l747
- }
- position++
- goto l748
- l747:
- position, tokenIndex = position747, tokenIndex747
+ position747 := position
+ if buffer[position] != rune(':') {
+ goto l746
}
- l748:
+ position++
{
- position749, tokenIndex749 := position, tokenIndex
- if buffer[position] != rune('-') {
+ position748, tokenIndex748 := position, tokenIndex
+ if buffer[position] != rune('g') {
goto l749
}
position++
- goto l750
+ goto l748
l749:
- position, tokenIndex = position749, tokenIndex749
+ position, tokenIndex = position748, tokenIndex748
+ if buffer[position] != rune('G') {
+ goto l746
+ }
+ position++
+ }
+ l748:
+ {
+ position750, tokenIndex750 := position, tokenIndex
+ if buffer[position] != rune('o') {
+ goto l751
+ }
+ position++
+ goto l750
+ l751:
+ position, tokenIndex = position750, tokenIndex750
+ if buffer[position] != rune('O') {
+ goto l746
+ }
+ position++
}
l750:
{
- position751, tokenIndex751 := position, tokenIndex
- if buffer[position] != rune('0') {
- goto l752
- }
- position++
- {
- position753, tokenIndex753 := position, tokenIndex
- if buffer[position] != rune('b') {
- goto l754
- }
- position++
+ position752, tokenIndex752 := position, tokenIndex
+ if buffer[position] != rune('t') {
goto l753
- l754:
- position, tokenIndex = position753, tokenIndex753
- if buffer[position] != rune('B') {
- goto l752
- }
- position++
}
+ position++
+ goto l752
l753:
- {
- position757, tokenIndex757 := position, tokenIndex
- if buffer[position] != rune('0') {
- goto l758
- }
- position++
- goto l757
- l758:
- position, tokenIndex = position757, tokenIndex757
- if buffer[position] != rune('1') {
- goto l752
- }
- position++
- }
- l757:
- l755:
- {
- position756, tokenIndex756 := position, tokenIndex
- {
- position759, tokenIndex759 := position, tokenIndex
- if buffer[position] != rune('0') {
- goto l760
- }
- position++
- goto l759
- l760:
- position, tokenIndex = position759, tokenIndex759
- if buffer[position] != rune('1') {
- goto l756
- }
- position++
- }
- l759:
- goto l755
- l756:
- position, tokenIndex = position756, tokenIndex756
- }
- goto l751
- l752:
- position, tokenIndex = position751, tokenIndex751
- if buffer[position] != rune('0') {
- goto l761
- }
- position++
- {
- position762, tokenIndex762 := position, tokenIndex
- if buffer[position] != rune('x') {
- goto l763
- }
- position++
- goto l762
- l763:
- position, tokenIndex = position762, tokenIndex762
- if buffer[position] != rune('X') {
- goto l761
- }
- position++
- }
- l762:
- {
- position766, tokenIndex766 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l767
- }
- position++
- goto l766
- l767:
- position, tokenIndex = position766, tokenIndex766
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l768
- }
- position++
- goto l766
- l768:
- position, tokenIndex = position766, tokenIndex766
- {
- position769, tokenIndex769 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('f') {
- goto l770
- }
- position++
- goto l769
- l770:
- position, tokenIndex = position769, tokenIndex769
- if c := buffer[position]; c < rune('A') || c > rune('F') {
- goto l761
- }
- position++
- }
- l769:
- }
- l766:
- l764:
- {
- position765, tokenIndex765 := position, tokenIndex
- {
- position771, tokenIndex771 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l772
- }
- position++
- goto l771
- l772:
- position, tokenIndex = position771, tokenIndex771
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l773
- }
- position++
- goto l771
- l773:
- position, tokenIndex = position771, tokenIndex771
- {
- position774, tokenIndex774 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('f') {
- goto l775
- }
- position++
- goto l774
- l775:
- position, tokenIndex = position774, tokenIndex774
- if c := buffer[position]; c < rune('A') || c > rune('F') {
- goto l765
- }
- position++
- }
- l774:
- }
- l771:
- goto l764
- l765:
- position, tokenIndex = position765, tokenIndex765
- }
- goto l751
- l761:
- position, tokenIndex = position751, tokenIndex751
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l745
- }
- position++
- l776:
- {
- position777, tokenIndex777 := position, tokenIndex
- if c := buffer[position]; c < rune('0') || c > rune('9') {
- goto l777
- }
- position++
- goto l776
- l777:
- position, tokenIndex = position777, tokenIndex777
- }
- }
- l751:
- add(ruleOffset, position746)
- }
- return true
- l745:
- position, tokenIndex = position745, tokenIndex745
- return false
- },
- /* 49 Section <- <([a-z] / [A-Z] / '@')+> */
- func() bool {
- position778, tokenIndex778 := position, tokenIndex
- {
- position779 := position
- {
- position782, tokenIndex782 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l783
- }
- position++
- goto l782
- l783:
- position, tokenIndex = position782, tokenIndex782
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l784
- }
- position++
- goto l782
- l784:
- position, tokenIndex = position782, tokenIndex782
- if buffer[position] != rune('@') {
- goto l778
+ position, tokenIndex = position752, tokenIndex752
+ if buffer[position] != rune('T') {
+ goto l746
}
position++
}
- l782:
- l780:
- {
- position781, tokenIndex781 := position, tokenIndex
- {
- position785, tokenIndex785 := position, tokenIndex
- if c := buffer[position]; c < rune('a') || c > rune('z') {
- goto l786
- }
- position++
- goto l785
- l786:
- position, tokenIndex = position785, tokenIndex785
- if c := buffer[position]; c < rune('A') || c > rune('Z') {
- goto l787
- }
- position++
- goto l785
- l787:
- position, tokenIndex = position785, tokenIndex785
- if buffer[position] != rune('@') {
- goto l781
- }
- position++
- }
- l785:
- goto l780
- l781:
- position, tokenIndex = position781, tokenIndex781
- }
- add(ruleSection, position779)
- }
- return true
- l778:
- position, tokenIndex = position778, tokenIndex778
- return false
- },
- /* 50 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
- func() bool {
- position788, tokenIndex788 := position, tokenIndex
- {
- position789 := position
- if buffer[position] != rune('%') {
- goto l788
+ l752:
+ if buffer[position] != rune('_') {
+ goto l746
}
position++
{
- position790, tokenIndex790 := position, tokenIndex
- if c := buffer[position]; c < rune('c') || c > rune('g') {
- goto l791
+ position754, tokenIndex754 := position, tokenIndex
+ if buffer[position] != rune('l') {
+ goto l755
}
position++
- goto l790
- l791:
- position, tokenIndex = position790, tokenIndex790
- if buffer[position] != rune('s') {
- goto l788
+ goto l754
+ l755:
+ position, tokenIndex = position754, tokenIndex754
+ if buffer[position] != rune('L') {
+ goto l746
}
position++
}
- l790:
- if buffer[position] != rune('s') {
- goto l788
+ l754:
+ {
+ position756, tokenIndex756 := position, tokenIndex
+ if buffer[position] != rune('o') {
+ goto l757
+ }
+ position++
+ goto l756
+ l757:
+ position, tokenIndex = position756, tokenIndex756
+ if buffer[position] != rune('O') {
+ goto l746
+ }
+ position++
+ }
+ l756:
+ if buffer[position] != rune('1') {
+ goto l746
+ }
+ position++
+ if buffer[position] != rune('2') {
+ goto l746
}
position++
if buffer[position] != rune(':') {
- goto l788
+ goto l746
}
position++
- add(ruleSegmentRegister, position789)
+ if !_rules[ruleSymbolName]() {
+ goto l746
+ }
+ add(ruleARMGOTLow12, position747)
}
return true
- l788:
- position, tokenIndex = position788, tokenIndex788
+ l746:
+ position, tokenIndex = position746, tokenIndex746
+ return false
+ },
+ /* 48 ARMPostincrement <- <'!'> */
+ func() bool {
+ position758, tokenIndex758 := position, tokenIndex
+ {
+ position759 := position
+ if buffer[position] != rune('!') {
+ goto l758
+ }
+ position++
+ add(ruleARMPostincrement, position759)
+ }
+ return true
+ l758:
+ position, tokenIndex = position758, tokenIndex758
+ return false
+ },
+ /* 49 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
+ func() bool {
+ position760, tokenIndex760 := position, tokenIndex
+ {
+ position761 := position
+ if buffer[position] != rune('(') {
+ goto l760
+ }
+ position++
+ {
+ position762, tokenIndex762 := position, tokenIndex
+ if !_rules[ruleRegisterOrConstant]() {
+ goto l762
+ }
+ goto l763
+ l762:
+ position, tokenIndex = position762, tokenIndex762
+ }
+ l763:
+ {
+ position764, tokenIndex764 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l764
+ }
+ goto l765
+ l764:
+ position, tokenIndex = position764, tokenIndex764
+ }
+ l765:
+ {
+ position766, tokenIndex766 := position, tokenIndex
+ if buffer[position] != rune(',') {
+ goto l766
+ }
+ position++
+ {
+ position768, tokenIndex768 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l768
+ }
+ goto l769
+ l768:
+ position, tokenIndex = position768, tokenIndex768
+ }
+ l769:
+ if !_rules[ruleRegisterOrConstant]() {
+ goto l766
+ }
+ {
+ position770, tokenIndex770 := position, tokenIndex
+ if !_rules[ruleWS]() {
+ goto l770
+ }
+ goto l771
+ l770:
+ position, tokenIndex = position770, tokenIndex770
+ }
+ l771:
+ {
+ position772, tokenIndex772 := position, tokenIndex
+ if buffer[position] != rune(',') {
+ goto l772
+ }
+ position++
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l772
+ }
+ position++
+ l774:
+ {
+ position775, tokenIndex775 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l775
+ }
+ position++
+ goto l774
+ l775:
+ position, tokenIndex = position775, tokenIndex775
+ }
+ goto l773
+ l772:
+ position, tokenIndex = position772, tokenIndex772
+ }
+ l773:
+ goto l767
+ l766:
+ position, tokenIndex = position766, tokenIndex766
+ }
+ l767:
+ if buffer[position] != rune(')') {
+ goto l760
+ }
+ position++
+ add(ruleBaseIndexScale, position761)
+ }
+ return true
+ l760:
+ position, tokenIndex = position760, tokenIndex760
+ return false
+ },
+ /* 50 Operator <- <('+' / '-')> */
+ func() bool {
+ position776, tokenIndex776 := position, tokenIndex
+ {
+ position777 := position
+ {
+ position778, tokenIndex778 := position, tokenIndex
+ if buffer[position] != rune('+') {
+ goto l779
+ }
+ position++
+ goto l778
+ l779:
+ position, tokenIndex = position778, tokenIndex778
+ if buffer[position] != rune('-') {
+ goto l776
+ }
+ position++
+ }
+ l778:
+ add(ruleOperator, position777)
+ }
+ return true
+ l776:
+ position, tokenIndex = position776, tokenIndex776
+ return false
+ },
+ /* 51 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
+ func() bool {
+ position780, tokenIndex780 := position, tokenIndex
+ {
+ position781 := position
+ {
+ position782, tokenIndex782 := position, tokenIndex
+ if buffer[position] != rune('+') {
+ goto l782
+ }
+ position++
+ goto l783
+ l782:
+ position, tokenIndex = position782, tokenIndex782
+ }
+ l783:
+ {
+ position784, tokenIndex784 := position, tokenIndex
+ if buffer[position] != rune('-') {
+ goto l784
+ }
+ position++
+ goto l785
+ l784:
+ position, tokenIndex = position784, tokenIndex784
+ }
+ l785:
+ {
+ position786, tokenIndex786 := position, tokenIndex
+ if buffer[position] != rune('0') {
+ goto l787
+ }
+ position++
+ {
+ position788, tokenIndex788 := position, tokenIndex
+ if buffer[position] != rune('b') {
+ goto l789
+ }
+ position++
+ goto l788
+ l789:
+ position, tokenIndex = position788, tokenIndex788
+ if buffer[position] != rune('B') {
+ goto l787
+ }
+ position++
+ }
+ l788:
+ {
+ position792, tokenIndex792 := position, tokenIndex
+ if buffer[position] != rune('0') {
+ goto l793
+ }
+ position++
+ goto l792
+ l793:
+ position, tokenIndex = position792, tokenIndex792
+ if buffer[position] != rune('1') {
+ goto l787
+ }
+ position++
+ }
+ l792:
+ l790:
+ {
+ position791, tokenIndex791 := position, tokenIndex
+ {
+ position794, tokenIndex794 := position, tokenIndex
+ if buffer[position] != rune('0') {
+ goto l795
+ }
+ position++
+ goto l794
+ l795:
+ position, tokenIndex = position794, tokenIndex794
+ if buffer[position] != rune('1') {
+ goto l791
+ }
+ position++
+ }
+ l794:
+ goto l790
+ l791:
+ position, tokenIndex = position791, tokenIndex791
+ }
+ goto l786
+ l787:
+ position, tokenIndex = position786, tokenIndex786
+ if buffer[position] != rune('0') {
+ goto l796
+ }
+ position++
+ {
+ position797, tokenIndex797 := position, tokenIndex
+ if buffer[position] != rune('x') {
+ goto l798
+ }
+ position++
+ goto l797
+ l798:
+ position, tokenIndex = position797, tokenIndex797
+ if buffer[position] != rune('X') {
+ goto l796
+ }
+ position++
+ }
+ l797:
+ {
+ position801, tokenIndex801 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l802
+ }
+ position++
+ goto l801
+ l802:
+ position, tokenIndex = position801, tokenIndex801
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l803
+ }
+ position++
+ goto l801
+ l803:
+ position, tokenIndex = position801, tokenIndex801
+ {
+ position804, tokenIndex804 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('f') {
+ goto l805
+ }
+ position++
+ goto l804
+ l805:
+ position, tokenIndex = position804, tokenIndex804
+ if c := buffer[position]; c < rune('A') || c > rune('F') {
+ goto l796
+ }
+ position++
+ }
+ l804:
+ }
+ l801:
+ l799:
+ {
+ position800, tokenIndex800 := position, tokenIndex
+ {
+ position806, tokenIndex806 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l807
+ }
+ position++
+ goto l806
+ l807:
+ position, tokenIndex = position806, tokenIndex806
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l808
+ }
+ position++
+ goto l806
+ l808:
+ position, tokenIndex = position806, tokenIndex806
+ {
+ position809, tokenIndex809 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('f') {
+ goto l810
+ }
+ position++
+ goto l809
+ l810:
+ position, tokenIndex = position809, tokenIndex809
+ if c := buffer[position]; c < rune('A') || c > rune('F') {
+ goto l800
+ }
+ position++
+ }
+ l809:
+ }
+ l806:
+ goto l799
+ l800:
+ position, tokenIndex = position800, tokenIndex800
+ }
+ goto l786
+ l796:
+ position, tokenIndex = position786, tokenIndex786
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l780
+ }
+ position++
+ l811:
+ {
+ position812, tokenIndex812 := position, tokenIndex
+ if c := buffer[position]; c < rune('0') || c > rune('9') {
+ goto l812
+ }
+ position++
+ goto l811
+ l812:
+ position, tokenIndex = position812, tokenIndex812
+ }
+ }
+ l786:
+ add(ruleOffset, position781)
+ }
+ return true
+ l780:
+ position, tokenIndex = position780, tokenIndex780
+ return false
+ },
+ /* 52 Section <- <([a-z] / [A-Z] / '@')+> */
+ func() bool {
+ position813, tokenIndex813 := position, tokenIndex
+ {
+ position814 := position
+ {
+ position817, tokenIndex817 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l818
+ }
+ position++
+ goto l817
+ l818:
+ position, tokenIndex = position817, tokenIndex817
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l819
+ }
+ position++
+ goto l817
+ l819:
+ position, tokenIndex = position817, tokenIndex817
+ if buffer[position] != rune('@') {
+ goto l813
+ }
+ position++
+ }
+ l817:
+ l815:
+ {
+ position816, tokenIndex816 := position, tokenIndex
+ {
+ position820, tokenIndex820 := position, tokenIndex
+ if c := buffer[position]; c < rune('a') || c > rune('z') {
+ goto l821
+ }
+ position++
+ goto l820
+ l821:
+ position, tokenIndex = position820, tokenIndex820
+ if c := buffer[position]; c < rune('A') || c > rune('Z') {
+ goto l822
+ }
+ position++
+ goto l820
+ l822:
+ position, tokenIndex = position820, tokenIndex820
+ if buffer[position] != rune('@') {
+ goto l816
+ }
+ position++
+ }
+ l820:
+ goto l815
+ l816:
+ position, tokenIndex = position816, tokenIndex816
+ }
+ add(ruleSection, position814)
+ }
+ return true
+ l813:
+ position, tokenIndex = position813, tokenIndex813
+ return false
+ },
+ /* 53 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
+ func() bool {
+ position823, tokenIndex823 := position, tokenIndex
+ {
+ position824 := position
+ if buffer[position] != rune('%') {
+ goto l823
+ }
+ position++
+ {
+ position825, tokenIndex825 := position, tokenIndex
+ if c := buffer[position]; c < rune('c') || c > rune('g') {
+ goto l826
+ }
+ position++
+ goto l825
+ l826:
+ position, tokenIndex = position825, tokenIndex825
+ if buffer[position] != rune('s') {
+ goto l823
+ }
+ position++
+ }
+ l825:
+ if buffer[position] != rune('s') {
+ goto l823
+ }
+ position++
+ if buffer[position] != rune(':') {
+ goto l823
+ }
+ position++
+ add(ruleSegmentRegister, position824)
+ }
+ return true
+ l823:
+ position, tokenIndex = position823, tokenIndex823
return false
},
}
diff --git a/util/fipstools/delocate/testdata/aarch64-Basic/in.s b/util/fipstools/delocate/testdata/aarch64-Basic/in.s
index e1c256a..3b80125 100644
--- a/util/fipstools/delocate/testdata/aarch64-Basic/in.s
+++ b/util/fipstools/delocate/testdata/aarch64-Basic/in.s
@@ -43,6 +43,10 @@
bl bss_symbol_bss_get
+ # Regression test for a two-digit index.
+ ld1 { v1.b }[10], [x9]
+
+
local_function:
// BSS data
diff --git a/util/fipstools/delocate/testdata/aarch64-Basic/out.s b/util/fipstools/delocate/testdata/aarch64-Basic/out.s
index eb401da..12b408d 100644
--- a/util/fipstools/delocate/testdata/aarch64-Basic/out.s
+++ b/util/fipstools/delocate/testdata/aarch64-Basic/out.s
@@ -88,6 +88,10 @@
bl bss_symbol_bss_get
+ # Regression test for a two-digit index.
+ ld1 { v1.b }[10], [x9]
+
+
.Llocal_function_local_target:
local_function:
diff --git a/util/fipstools/delocate/testdata/x86_64-LabelRewrite/in2.s b/util/fipstools/delocate/testdata/x86_64-LabelRewrite/in2.s
index 5027325..b925655 100644
--- a/util/fipstools/delocate/testdata/x86_64-LabelRewrite/in2.s
+++ b/util/fipstools/delocate/testdata/x86_64-LabelRewrite/in2.s
@@ -12,3 +12,8 @@
.uleb128 .L2-.L1
.sleb128 .L2-.L1
+# .byte was not parsed as a symbol-containing directive on the
+# assumption that it's too small to hold a pointer. But Clang
+# will store offsets in it.
+.byte (.LBB231_40-.LBB231_19)>>2, 4, .Lfoo, (.Lfoo), .Lfoo<<400, ( .Lfoo ) << 66
+.byte 421
diff --git a/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s b/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s
index 252f69c..feb9a43 100644
--- a/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s
+++ b/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s
@@ -89,6 +89,12 @@
# WAS .sleb128 .L2-.L1
.sleb128 .L2_BCM_1-.L1_BCM_1
+# .byte was not parsed as a symbol-containing directive on the
+# assumption that it's too small to hold a pointer. But Clang
+# will store offsets in it.
+# WAS .byte (.LBB231_40-.LBB231_19)>>2, 4, .Lfoo, (.Lfoo), .Lfoo<<400, ( .Lfoo ) << 66
+ .byte (.LBB231_40_BCM_1-.LBB231_19_BCM_1)>>2, 4, .Lfoo_BCM_1, (.Lfoo_BCM_1), .Lfoo_BCM_1<<400, ( .Lfoo_BCM_1 ) << 66
+.byte 421
.text
.loc 1 2 0
BORINGSSL_bcm_text_end: