Merge to fips-20250107: delocate: Recognize msl as an ARMConstantTweak

MOVI has a form that's tagged MSL:

  MOVI <Vd>.<T>, #<imm8>, MSL #<amount>

(cherry picked from commit 90e641cefeb2c02deb3b2d0f65729212cf9f0d2b)
Change-Id: I616406d9ae1e7248b37ea96fbbb13e72fdee89f9
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/77087
Auto-Submit: Adam Langley <agl@google.com>
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 c73cbb2..2085849 100644
--- a/util/fipstools/delocate/delocate.peg
+++ b/util/fipstools/delocate/delocate.peg
@@ -85,7 +85,7 @@
                        ('#' '~'? '(' [0-9] WS? "<<" WS? [0-9] ')' ) /
                        ARMRegister)
                       ![fb:(+\-]
-ARMConstantTweak <- ((([us] "xt" [xwhb]) / "lsl" / "lsr" / "ror" / "asr") (WS '#' Offset)?) /
+ARMConstantTweak <- ((([us] "xt" [xwhb]) / "lsl" / "lsr" / "ror" / "asr" / "msl") (WS '#' Offset)?) /
                     "mul vl"  / # multiply offset by the hardware's vector length
                     "mul #" [0-9]
 ARMRegister <- "sp" /
diff --git a/util/fipstools/delocate/delocate.peg.go b/util/fipstools/delocate/delocate.peg.go
index 0f8ac01..1ad0d3c 100644
--- a/util/fipstools/delocate/delocate.peg.go
+++ b/util/fipstools/delocate/delocate.peg.go
@@ -4972,7 +4972,7 @@
 			position, tokenIndex = position558, tokenIndex558
 			return false
 		},
-		/* 45 ARMConstantTweak <- <((((('u' / 's') (('x' / 'X') ('t' / 'T')) ('x' / 'w' / 'h' / 'b')) / (('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R'))) (WS '#' Offset)?) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' ('v' / 'V') ('l' / 'L')) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' '#' [0-9]))> */
+		/* 45 ARMConstantTweak <- <((((('u' / 's') (('x' / 'X') ('t' / 'T')) ('x' / 'w' / 'h' / 'b')) / (('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R')) / (('m' / 'M') ('s' / 'S') ('l' / 'L'))) (WS '#' Offset)?) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' ('v' / 'V') ('l' / 'L')) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' '#' [0-9]))> */
 		func() bool {
 			position600, tokenIndex600 := position, tokenIndex
 			{
@@ -5203,199 +5203,247 @@
 					l630:
 						position, tokenIndex = position604, tokenIndex604
 						{
-							position637, tokenIndex637 := position, tokenIndex
+							position638, tokenIndex638 := position, tokenIndex
 							if buffer[position] != rune('a') {
-								goto l638
+								goto l639
 							}
 							position++
-							goto l637
-						l638:
-							position, tokenIndex = position637, tokenIndex637
+							goto l638
+						l639:
+							position, tokenIndex = position638, tokenIndex638
 							if buffer[position] != rune('A') {
+								goto l637
+							}
+							position++
+						}
+					l638:
+						{
+							position640, tokenIndex640 := position, tokenIndex
+							if buffer[position] != rune('s') {
+								goto l641
+							}
+							position++
+							goto l640
+						l641:
+							position, tokenIndex = position640, tokenIndex640
+							if buffer[position] != rune('S') {
+								goto l637
+							}
+							position++
+						}
+					l640:
+						{
+							position642, tokenIndex642 := position, tokenIndex
+							if buffer[position] != rune('r') {
+								goto l643
+							}
+							position++
+							goto l642
+						l643:
+							position, tokenIndex = position642, tokenIndex642
+							if buffer[position] != rune('R') {
+								goto l637
+							}
+							position++
+						}
+					l642:
+						goto l604
+					l637:
+						position, tokenIndex = position604, tokenIndex604
+						{
+							position644, tokenIndex644 := position, tokenIndex
+							if buffer[position] != rune('m') {
+								goto l645
+							}
+							position++
+							goto l644
+						l645:
+							position, tokenIndex = position644, tokenIndex644
+							if buffer[position] != rune('M') {
 								goto l603
 							}
 							position++
 						}
-					l637:
+					l644:
 						{
-							position639, tokenIndex639 := position, tokenIndex
+							position646, tokenIndex646 := position, tokenIndex
 							if buffer[position] != rune('s') {
-								goto l640
+								goto l647
 							}
 							position++
-							goto l639
-						l640:
-							position, tokenIndex = position639, tokenIndex639
+							goto l646
+						l647:
+							position, tokenIndex = position646, tokenIndex646
 							if buffer[position] != rune('S') {
 								goto l603
 							}
 							position++
 						}
-					l639:
+					l646:
 						{
-							position641, tokenIndex641 := position, tokenIndex
-							if buffer[position] != rune('r') {
-								goto l642
+							position648, tokenIndex648 := position, tokenIndex
+							if buffer[position] != rune('l') {
+								goto l649
 							}
 							position++
-							goto l641
-						l642:
-							position, tokenIndex = position641, tokenIndex641
-							if buffer[position] != rune('R') {
+							goto l648
+						l649:
+							position, tokenIndex = position648, tokenIndex648
+							if buffer[position] != rune('L') {
 								goto l603
 							}
 							position++
 						}
-					l641:
+					l648:
 					}
 				l604:
 					{
-						position643, tokenIndex643 := position, tokenIndex
+						position650, tokenIndex650 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l643
+							goto l650
 						}
 						if buffer[position] != rune('#') {
-							goto l643
+							goto l650
 						}
 						position++
 						if !_rules[ruleOffset]() {
-							goto l643
+							goto l650
 						}
-						goto l644
-					l643:
-						position, tokenIndex = position643, tokenIndex643
+						goto l651
+					l650:
+						position, tokenIndex = position650, tokenIndex650
 					}
-				l644:
+				l651:
 					goto l602
 				l603:
 					position, tokenIndex = position602, tokenIndex602
 					{
-						position646, tokenIndex646 := position, tokenIndex
+						position653, tokenIndex653 := position, tokenIndex
 						if buffer[position] != rune('m') {
-							goto l647
+							goto l654
 						}
 						position++
-						goto l646
-					l647:
-						position, tokenIndex = position646, tokenIndex646
+						goto l653
+					l654:
+						position, tokenIndex = position653, tokenIndex653
 						if buffer[position] != rune('M') {
-							goto l645
+							goto l652
 						}
 						position++
 					}
-				l646:
+				l653:
 					{
-						position648, tokenIndex648 := position, tokenIndex
+						position655, tokenIndex655 := position, tokenIndex
 						if buffer[position] != rune('u') {
-							goto l649
+							goto l656
 						}
 						position++
-						goto l648
-					l649:
-						position, tokenIndex = position648, tokenIndex648
+						goto l655
+					l656:
+						position, tokenIndex = position655, tokenIndex655
 						if buffer[position] != rune('U') {
-							goto l645
+							goto l652
 						}
 						position++
 					}
-				l648:
+				l655:
 					{
-						position650, tokenIndex650 := position, tokenIndex
+						position657, tokenIndex657 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l651
+							goto l658
 						}
 						position++
-						goto l650
-					l651:
-						position, tokenIndex = position650, tokenIndex650
+						goto l657
+					l658:
+						position, tokenIndex = position657, tokenIndex657
 						if buffer[position] != rune('L') {
-							goto l645
+							goto l652
 						}
 						position++
 					}
-				l650:
+				l657:
 					if buffer[position] != rune(' ') {
-						goto l645
+						goto l652
 					}
 					position++
 					{
-						position652, tokenIndex652 := position, tokenIndex
+						position659, tokenIndex659 := position, tokenIndex
 						if buffer[position] != rune('v') {
-							goto l653
+							goto l660
 						}
 						position++
-						goto l652
-					l653:
-						position, tokenIndex = position652, tokenIndex652
+						goto l659
+					l660:
+						position, tokenIndex = position659, tokenIndex659
 						if buffer[position] != rune('V') {
-							goto l645
+							goto l652
 						}
 						position++
 					}
-				l652:
+				l659:
 					{
-						position654, tokenIndex654 := position, tokenIndex
+						position661, tokenIndex661 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l655
+							goto l662
 						}
 						position++
-						goto l654
-					l655:
-						position, tokenIndex = position654, tokenIndex654
+						goto l661
+					l662:
+						position, tokenIndex = position661, tokenIndex661
 						if buffer[position] != rune('L') {
-							goto l645
+							goto l652
 						}
 						position++
 					}
-				l654:
+				l661:
 					goto l602
-				l645:
+				l652:
 					position, tokenIndex = position602, tokenIndex602
 					{
-						position656, tokenIndex656 := position, tokenIndex
+						position663, tokenIndex663 := position, tokenIndex
 						if buffer[position] != rune('m') {
-							goto l657
+							goto l664
 						}
 						position++
-						goto l656
-					l657:
-						position, tokenIndex = position656, tokenIndex656
+						goto l663
+					l664:
+						position, tokenIndex = position663, tokenIndex663
 						if buffer[position] != rune('M') {
 							goto l600
 						}
 						position++
 					}
-				l656:
+				l663:
 					{
-						position658, tokenIndex658 := position, tokenIndex
+						position665, tokenIndex665 := position, tokenIndex
 						if buffer[position] != rune('u') {
-							goto l659
+							goto l666
 						}
 						position++
-						goto l658
-					l659:
-						position, tokenIndex = position658, tokenIndex658
+						goto l665
+					l666:
+						position, tokenIndex = position665, tokenIndex665
 						if buffer[position] != rune('U') {
 							goto l600
 						}
 						position++
 					}
-				l658:
+				l665:
 					{
-						position660, tokenIndex660 := position, tokenIndex
+						position667, tokenIndex667 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l661
+							goto l668
 						}
 						position++
-						goto l660
-					l661:
-						position, tokenIndex = position660, tokenIndex660
+						goto l667
+					l668:
+						position, tokenIndex = position667, tokenIndex667
 						if buffer[position] != rune('L') {
 							goto l600
 						}
 						position++
 					}
-				l660:
+				l667:
 					if buffer[position] != rune(' ') {
 						goto l600
 					}
@@ -5419,170 +5467,122 @@
 		},
 		/* 46 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's' / 'h' / 'b') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / (('n' / 'N') ('z' / 'Z') ('c' / 'C') ('v' / 'V')) / SVE2PredicateRegister / ARMVectorRegister / SVE2SpecialValue / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
 		func() bool {
-			position662, tokenIndex662 := position, tokenIndex
+			position669, tokenIndex669 := position, tokenIndex
 			{
-				position663 := position
+				position670 := position
 				{
-					position664, tokenIndex664 := position, tokenIndex
+					position671, tokenIndex671 := position, tokenIndex
 					{
-						position666, tokenIndex666 := position, tokenIndex
+						position673, tokenIndex673 := position, tokenIndex
 						if buffer[position] != rune('s') {
-							goto l667
-						}
-						position++
-						goto l666
-					l667:
-						position, tokenIndex = position666, tokenIndex666
-						if buffer[position] != rune('S') {
-							goto l665
-						}
-						position++
-					}
-				l666:
-					{
-						position668, tokenIndex668 := position, tokenIndex
-						if buffer[position] != rune('p') {
-							goto l669
-						}
-						position++
-						goto l668
-					l669:
-						position, tokenIndex = position668, tokenIndex668
-						if buffer[position] != rune('P') {
-							goto l665
-						}
-						position++
-					}
-				l668:
-					goto l664
-				l665:
-					position, tokenIndex = position664, tokenIndex664
-					{
-						position671, tokenIndex671 := position, tokenIndex
-						if buffer[position] != rune('x') {
-							goto l672
-						}
-						position++
-						goto l671
-					l672:
-						position, tokenIndex = position671, tokenIndex671
-						if buffer[position] != rune('w') {
-							goto l673
-						}
-						position++
-						goto l671
-					l673:
-						position, tokenIndex = position671, tokenIndex671
-						if buffer[position] != rune('d') {
 							goto l674
 						}
 						position++
-						goto l671
+						goto l673
 					l674:
-						position, tokenIndex = position671, tokenIndex671
-						if buffer[position] != rune('q') {
-							goto l675
+						position, tokenIndex = position673, tokenIndex673
+						if buffer[position] != rune('S') {
+							goto l672
 						}
 						position++
-						goto l671
-					l675:
-						position, tokenIndex = position671, tokenIndex671
-						if buffer[position] != rune('s') {
+					}
+				l673:
+					{
+						position675, tokenIndex675 := position, tokenIndex
+						if buffer[position] != rune('p') {
 							goto l676
 						}
 						position++
-						goto l671
+						goto l675
 					l676:
-						position, tokenIndex = position671, tokenIndex671
-						if buffer[position] != rune('h') {
-							goto l677
-						}
-						position++
-						goto l671
-					l677:
-						position, tokenIndex = position671, tokenIndex671
-						if buffer[position] != rune('b') {
-							goto l670
+						position, tokenIndex = position675, tokenIndex675
+						if buffer[position] != rune('P') {
+							goto l672
 						}
 						position++
 					}
-				l671:
-					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l670
-					}
-					position++
+				l675:
+					goto l671
+				l672:
+					position, tokenIndex = position671, tokenIndex671
 					{
 						position678, tokenIndex678 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l678
+						if buffer[position] != rune('x') {
+							goto l679
 						}
 						position++
-						goto l679
-					l678:
+						goto l678
+					l679:
 						position, tokenIndex = position678, tokenIndex678
-					}
-				l679:
-					goto l664
-				l670:
-					position, tokenIndex = position664, tokenIndex664
-					{
-						position681, tokenIndex681 := position, tokenIndex
-						if buffer[position] != rune('x') {
+						if buffer[position] != rune('w') {
+							goto l680
+						}
+						position++
+						goto l678
+					l680:
+						position, tokenIndex = position678, tokenIndex678
+						if buffer[position] != rune('d') {
+							goto l681
+						}
+						position++
+						goto l678
+					l681:
+						position, tokenIndex = position678, tokenIndex678
+						if buffer[position] != rune('q') {
 							goto l682
 						}
 						position++
-						goto l681
+						goto l678
 					l682:
-						position, tokenIndex = position681, tokenIndex681
-						if buffer[position] != rune('X') {
-							goto l680
+						position, tokenIndex = position678, tokenIndex678
+						if buffer[position] != rune('s') {
+							goto l683
 						}
 						position++
-					}
-				l681:
-					{
-						position683, tokenIndex683 := position, tokenIndex
-						if buffer[position] != rune('z') {
+						goto l678
+					l683:
+						position, tokenIndex = position678, tokenIndex678
+						if buffer[position] != rune('h') {
 							goto l684
 						}
 						position++
-						goto l683
+						goto l678
 					l684:
-						position, tokenIndex = position683, tokenIndex683
-						if buffer[position] != rune('Z') {
-							goto l680
+						position, tokenIndex = position678, tokenIndex678
+						if buffer[position] != rune('b') {
+							goto l677
 						}
 						position++
 					}
-				l683:
+				l678:
+					if c := buffer[position]; c < rune('0') || c > rune('9') {
+						goto l677
+					}
+					position++
 					{
 						position685, tokenIndex685 := position, tokenIndex
-						if buffer[position] != rune('r') {
-							goto l686
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l685
 						}
 						position++
-						goto l685
-					l686:
+						goto l686
+					l685:
 						position, tokenIndex = position685, tokenIndex685
-						if buffer[position] != rune('R') {
-							goto l680
-						}
-						position++
 					}
-				l685:
-					goto l664
-				l680:
-					position, tokenIndex = position664, tokenIndex664
+				l686:
+					goto l671
+				l677:
+					position, tokenIndex = position671, tokenIndex671
 					{
 						position688, tokenIndex688 := position, tokenIndex
-						if buffer[position] != rune('w') {
+						if buffer[position] != rune('x') {
 							goto l689
 						}
 						position++
 						goto l688
 					l689:
 						position, tokenIndex = position688, tokenIndex688
-						if buffer[position] != rune('W') {
+						if buffer[position] != rune('X') {
 							goto l687
 						}
 						position++
@@ -5618,19 +5618,19 @@
 						position++
 					}
 				l692:
-					goto l664
+					goto l671
 				l687:
-					position, tokenIndex = position664, tokenIndex664
+					position, tokenIndex = position671, tokenIndex671
 					{
 						position695, tokenIndex695 := position, tokenIndex
-						if buffer[position] != rune('n') {
+						if buffer[position] != rune('w') {
 							goto l696
 						}
 						position++
 						goto l695
 					l696:
 						position, tokenIndex = position695, tokenIndex695
-						if buffer[position] != rune('N') {
+						if buffer[position] != rune('W') {
 							goto l694
 						}
 						position++
@@ -5653,480 +5653,476 @@
 				l697:
 					{
 						position699, tokenIndex699 := position, tokenIndex
-						if buffer[position] != rune('c') {
+						if buffer[position] != rune('r') {
 							goto l700
 						}
 						position++
 						goto l699
 					l700:
 						position, tokenIndex = position699, tokenIndex699
-						if buffer[position] != rune('C') {
+						if buffer[position] != rune('R') {
 							goto l694
 						}
 						position++
 					}
 				l699:
-					{
-						position701, tokenIndex701 := position, tokenIndex
-						if buffer[position] != rune('v') {
-							goto l702
-						}
-						position++
-						goto l701
-					l702:
-						position, tokenIndex = position701, tokenIndex701
-						if buffer[position] != rune('V') {
-							goto l694
-						}
-						position++
-					}
-				l701:
-					goto l664
+					goto l671
 				l694:
-					position, tokenIndex = position664, tokenIndex664
-					if !_rules[ruleSVE2PredicateRegister]() {
-						goto l703
+					position, tokenIndex = position671, tokenIndex671
+					{
+						position702, tokenIndex702 := position, tokenIndex
+						if buffer[position] != rune('n') {
+							goto l703
+						}
+						position++
+						goto l702
+					l703:
+						position, tokenIndex = position702, tokenIndex702
+						if buffer[position] != rune('N') {
+							goto l701
+						}
+						position++
 					}
-					goto l664
-				l703:
-					position, tokenIndex = position664, tokenIndex664
-					if !_rules[ruleARMVectorRegister]() {
+				l702:
+					{
+						position704, tokenIndex704 := position, tokenIndex
+						if buffer[position] != rune('z') {
+							goto l705
+						}
+						position++
 						goto l704
+					l705:
+						position, tokenIndex = position704, tokenIndex704
+						if buffer[position] != rune('Z') {
+							goto l701
+						}
+						position++
 					}
-					goto l664
 				l704:
-					position, tokenIndex = position664, tokenIndex664
-					if !_rules[ruleSVE2SpecialValue]() {
-						goto l705
+					{
+						position706, tokenIndex706 := position, tokenIndex
+						if buffer[position] != rune('c') {
+							goto l707
+						}
+						position++
+						goto l706
+					l707:
+						position, tokenIndex = position706, tokenIndex706
+						if buffer[position] != rune('C') {
+							goto l701
+						}
+						position++
 					}
-					goto l664
-				l705:
-					position, tokenIndex = position664, tokenIndex664
+				l706:
+					{
+						position708, tokenIndex708 := position, tokenIndex
+						if buffer[position] != rune('v') {
+							goto l709
+						}
+						position++
+						goto l708
+					l709:
+						position, tokenIndex = position708, tokenIndex708
+						if buffer[position] != rune('V') {
+							goto l701
+						}
+						position++
+					}
+				l708:
+					goto l671
+				l701:
+					position, tokenIndex = position671, tokenIndex671
+					if !_rules[ruleSVE2PredicateRegister]() {
+						goto l710
+					}
+					goto l671
+				l710:
+					position, tokenIndex = position671, tokenIndex671
+					if !_rules[ruleARMVectorRegister]() {
+						goto l711
+					}
+					goto l671
+				l711:
+					position, tokenIndex = position671, tokenIndex671
+					if !_rules[ruleSVE2SpecialValue]() {
+						goto l712
+					}
+					goto l671
+				l712:
+					position, tokenIndex = position671, tokenIndex671
 					if buffer[position] != rune('{') {
-						goto l662
+						goto l669
 					}
 					position++
 					{
-						position706, tokenIndex706 := position, tokenIndex
+						position713, tokenIndex713 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l706
+							goto l713
 						}
-						goto l707
-					l706:
-						position, tokenIndex = position706, tokenIndex706
+						goto l714
+					l713:
+						position, tokenIndex = position713, tokenIndex713
 					}
-				l707:
+				l714:
 					if !_rules[ruleARMVectorRegister]() {
-						goto l662
+						goto l669
 					}
-				l708:
+				l715:
 					{
-						position709, tokenIndex709 := position, tokenIndex
+						position716, tokenIndex716 := position, tokenIndex
 						if buffer[position] != rune(',') {
-							goto l709
+							goto l716
 						}
 						position++
 						{
-							position710, tokenIndex710 := position, tokenIndex
+							position717, tokenIndex717 := position, tokenIndex
 							if !_rules[ruleWS]() {
-								goto l710
+								goto l717
 							}
-							goto l711
-						l710:
-							position, tokenIndex = position710, tokenIndex710
+							goto l718
+						l717:
+							position, tokenIndex = position717, tokenIndex717
 						}
-					l711:
+					l718:
 						if !_rules[ruleARMVectorRegister]() {
-							goto l709
+							goto l716
 						}
-						goto l708
-					l709:
-						position, tokenIndex = position709, tokenIndex709
+						goto l715
+					l716:
+						position, tokenIndex = position716, tokenIndex716
 					}
 					{
-						position712, tokenIndex712 := position, tokenIndex
+						position719, tokenIndex719 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l712
+							goto l719
 						}
-						goto l713
-					l712:
-						position, tokenIndex = position712, tokenIndex712
+						goto l720
+					l719:
+						position, tokenIndex = position719, tokenIndex719
 					}
-				l713:
+				l720:
 					if buffer[position] != rune('}') {
-						goto l662
+						goto l669
 					}
 					position++
 					{
-						position714, tokenIndex714 := position, tokenIndex
+						position721, tokenIndex721 := position, tokenIndex
 						if buffer[position] != rune('[') {
-							goto l714
+							goto l721
 						}
 						position++
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l714
+							goto l721
 						}
 						position++
 						{
-							position716, tokenIndex716 := position, tokenIndex
+							position723, tokenIndex723 := position, tokenIndex
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l716
+								goto l723
 							}
 							position++
-							goto l717
-						l716:
-							position, tokenIndex = position716, tokenIndex716
+							goto l724
+						l723:
+							position, tokenIndex = position723, tokenIndex723
 						}
-					l717:
+					l724:
 						if buffer[position] != rune(']') {
-							goto l714
+							goto l721
 						}
 						position++
-						goto l715
-					l714:
-						position, tokenIndex = position714, tokenIndex714
+						goto l722
+					l721:
+						position, tokenIndex = position721, tokenIndex721
 					}
-				l715:
+				l722:
 				}
-			l664:
-				add(ruleARMRegister, position663)
+			l671:
+				add(ruleARMRegister, position670)
 			}
 			return true
-		l662:
-			position, tokenIndex = position662, tokenIndex662
+		l669:
+			position, tokenIndex = position669, tokenIndex669
 			return false
 		},
 		/* 47 ARMVectorRegister <- <(('p' / 'v' / 'z') [0-9] [0-9]? !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_') ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */
 		func() bool {
-			position718, tokenIndex718 := position, tokenIndex
+			position725, tokenIndex725 := position, tokenIndex
 			{
-				position719 := position
+				position726 := position
 				{
-					position720, tokenIndex720 := position, tokenIndex
+					position727, tokenIndex727 := position, tokenIndex
 					if buffer[position] != rune('p') {
-						goto l721
+						goto l728
 					}
 					position++
-					goto l720
-				l721:
-					position, tokenIndex = position720, tokenIndex720
+					goto l727
+				l728:
+					position, tokenIndex = position727, tokenIndex727
 					if buffer[position] != rune('v') {
-						goto l722
+						goto l729
 					}
 					position++
-					goto l720
-				l722:
-					position, tokenIndex = position720, tokenIndex720
+					goto l727
+				l729:
+					position, tokenIndex = position727, tokenIndex727
 					if buffer[position] != rune('z') {
-						goto l718
+						goto l725
 					}
 					position++
 				}
-			l720:
+			l727:
 				if c := buffer[position]; c < rune('0') || c > rune('9') {
-					goto l718
+					goto l725
 				}
 				position++
 				{
-					position723, tokenIndex723 := position, tokenIndex
+					position730, tokenIndex730 := position, tokenIndex
 					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l723
+						goto l730
 					}
 					position++
-					goto l724
-				l723:
-					position, tokenIndex = position723, tokenIndex723
+					goto l731
+				l730:
+					position, tokenIndex = position730, tokenIndex730
 				}
-			l724:
-				{
-					position725, tokenIndex725 := position, tokenIndex
-					{
-						position726, tokenIndex726 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l727
-						}
-						position++
-						goto l726
-					l727:
-						position, tokenIndex = position726, tokenIndex726
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l728
-						}
-						position++
-						goto l726
-					l728:
-						position, tokenIndex = position726, tokenIndex726
-						{
-							position730, tokenIndex730 := position, tokenIndex
-							if c := buffer[position]; c < rune('a') || c > rune('z') {
-								goto l731
-							}
-							position++
-							goto l730
-						l731:
-							position, tokenIndex = position730, tokenIndex730
-							if c := buffer[position]; c < rune('A') || c > rune('Z') {
-								goto l729
-							}
-							position++
-						}
-					l730:
-						goto l726
-					l729:
-						position, tokenIndex = position726, tokenIndex726
-						if buffer[position] != rune('_') {
-							goto l725
-						}
-						position++
-					}
-				l726:
-					goto l718
-				l725:
-					position, tokenIndex = position725, tokenIndex725
-				}
+			l731:
 				{
 					position732, tokenIndex732 := position, tokenIndex
-					if buffer[position] != rune('.') {
-						goto l732
-					}
-					position++
-				l734:
 					{
-						position735, tokenIndex735 := position, tokenIndex
+						position733, tokenIndex733 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l734
+						}
+						position++
+						goto l733
+					l734:
+						position, tokenIndex = position733, tokenIndex733
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
 							goto l735
 						}
 						position++
-						goto l734
+						goto l733
 					l735:
-						position, tokenIndex = position735, tokenIndex735
-					}
-					{
-						position736, tokenIndex736 := position, tokenIndex
-						if buffer[position] != rune('b') {
+						position, tokenIndex = position733, tokenIndex733
+						{
+							position737, tokenIndex737 := position, tokenIndex
+							if c := buffer[position]; c < rune('a') || c > rune('z') {
+								goto l738
+							}
+							position++
 							goto l737
+						l738:
+							position, tokenIndex = position737, tokenIndex737
+							if c := buffer[position]; c < rune('A') || c > rune('Z') {
+								goto l736
+							}
+							position++
 						}
-						position++
-						goto l736
 					l737:
-						position, tokenIndex = position736, tokenIndex736
-						if buffer[position] != rune('s') {
-							goto l738
-						}
-						position++
-						goto l736
-					l738:
-						position, tokenIndex = position736, tokenIndex736
-						if buffer[position] != rune('d') {
-							goto l739
-						}
-						position++
-						goto l736
-					l739:
-						position, tokenIndex = position736, tokenIndex736
-						if buffer[position] != rune('h') {
-							goto l740
-						}
-						position++
-						goto l736
-					l740:
-						position, tokenIndex = position736, tokenIndex736
-						if buffer[position] != rune('q') {
+						goto l733
+					l736:
+						position, tokenIndex = position733, tokenIndex733
+						if buffer[position] != rune('_') {
 							goto l732
 						}
 						position++
 					}
-				l736:
-					{
-						position741, tokenIndex741 := position, tokenIndex
-						if buffer[position] != rune('[') {
-							goto l741
-						}
-						position++
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l741
-						}
-						position++
-						{
-							position743, tokenIndex743 := position, tokenIndex
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l743
-							}
-							position++
-							goto l744
-						l743:
-							position, tokenIndex = position743, tokenIndex743
-						}
-					l744:
-						if buffer[position] != rune(']') {
-							goto l741
-						}
-						position++
-						goto l742
-					l741:
-						position, tokenIndex = position741, tokenIndex741
-					}
-				l742:
-					goto l733
+				l733:
+					goto l725
 				l732:
 					position, tokenIndex = position732, tokenIndex732
 				}
-			l733:
-				add(ruleARMVectorRegister, position719)
+				{
+					position739, tokenIndex739 := position, tokenIndex
+					if buffer[position] != rune('.') {
+						goto l739
+					}
+					position++
+				l741:
+					{
+						position742, tokenIndex742 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l742
+						}
+						position++
+						goto l741
+					l742:
+						position, tokenIndex = position742, tokenIndex742
+					}
+					{
+						position743, tokenIndex743 := position, tokenIndex
+						if buffer[position] != rune('b') {
+							goto l744
+						}
+						position++
+						goto l743
+					l744:
+						position, tokenIndex = position743, tokenIndex743
+						if buffer[position] != rune('s') {
+							goto l745
+						}
+						position++
+						goto l743
+					l745:
+						position, tokenIndex = position743, tokenIndex743
+						if buffer[position] != rune('d') {
+							goto l746
+						}
+						position++
+						goto l743
+					l746:
+						position, tokenIndex = position743, tokenIndex743
+						if buffer[position] != rune('h') {
+							goto l747
+						}
+						position++
+						goto l743
+					l747:
+						position, tokenIndex = position743, tokenIndex743
+						if buffer[position] != rune('q') {
+							goto l739
+						}
+						position++
+					}
+				l743:
+					{
+						position748, tokenIndex748 := position, tokenIndex
+						if buffer[position] != rune('[') {
+							goto l748
+						}
+						position++
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l748
+						}
+						position++
+						{
+							position750, tokenIndex750 := position, tokenIndex
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l750
+							}
+							position++
+							goto l751
+						l750:
+							position, tokenIndex = position750, tokenIndex750
+						}
+					l751:
+						if buffer[position] != rune(']') {
+							goto l748
+						}
+						position++
+						goto l749
+					l748:
+						position, tokenIndex = position748, tokenIndex748
+					}
+				l749:
+					goto l740
+				l739:
+					position, tokenIndex = position739, tokenIndex739
+				}
+			l740:
+				add(ruleARMVectorRegister, position726)
 			}
 			return true
-		l718:
-			position, tokenIndex = position718, tokenIndex718
+		l725:
+			position, tokenIndex = position725, tokenIndex725
 			return false
 		},
 		/* 48 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / ('z' / 'Z')))> */
 		func() bool {
-			position745, tokenIndex745 := position, tokenIndex
+			position752, tokenIndex752 := position, tokenIndex
 			{
-				position746 := position
+				position753 := position
 				{
-					position747, tokenIndex747 := position, tokenIndex
+					position754, tokenIndex754 := position, tokenIndex
 					if buffer[position] != rune('p') {
-						goto l748
+						goto l755
 					}
 					position++
-					goto l747
-				l748:
-					position, tokenIndex = position747, tokenIndex747
+					goto l754
+				l755:
+					position, tokenIndex = position754, tokenIndex754
 					if buffer[position] != rune('P') {
-						goto l745
-					}
-					position++
-				}
-			l747:
-				if c := buffer[position]; c < rune('0') || c > rune('9') {
-					goto l745
-				}
-				position++
-				{
-					position749, tokenIndex749 := position, tokenIndex
-					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l749
-					}
-					position++
-					goto l750
-				l749:
-					position, tokenIndex = position749, tokenIndex749
-				}
-			l750:
-				if buffer[position] != rune('/') {
-					goto l745
-				}
-				position++
-				{
-					position751, tokenIndex751 := position, tokenIndex
-					if buffer[position] != rune('m') {
 						goto l752
 					}
 					position++
-					goto l751
-				l752:
-					position, tokenIndex = position751, tokenIndex751
-					if buffer[position] != rune('M') {
-						goto l753
+				}
+			l754:
+				if c := buffer[position]; c < rune('0') || c > rune('9') {
+					goto l752
+				}
+				position++
+				{
+					position756, tokenIndex756 := position, tokenIndex
+					if c := buffer[position]; c < rune('0') || c > rune('9') {
+						goto l756
 					}
 					position++
-					goto l751
-				l753:
-					position, tokenIndex = position751, tokenIndex751
-					{
-						position754, tokenIndex754 := position, tokenIndex
-						if buffer[position] != rune('z') {
-							goto l755
-						}
-						position++
-						goto l754
-					l755:
-						position, tokenIndex = position754, tokenIndex754
-						if buffer[position] != rune('Z') {
-							goto l745
-						}
-						position++
-					}
-				l754:
+					goto l757
+				l756:
+					position, tokenIndex = position756, tokenIndex756
 				}
-			l751:
-				add(ruleSVE2PredicateRegister, position746)
-			}
-			return true
-		l745:
-			position, tokenIndex = position745, tokenIndex745
-			return false
-		},
-		/* 49 SVE2SpecialValue <- <(((('p' / 'P') ('o' / 'O') ('w' / 'W') '2') / (('v' / 'V') ('l' / 'L') ('1' / '2' / '3' / '4' / '5' / '6' / '7' / '8') ![0-9]) / (('v' / 'V') ('l' / 'L') '1' '6') / (('v' / 'V') ('l' / 'L') '3' '2') / (('v' / 'V') ('l' / 'L') '6' '4') / (('v' / 'V') ('l' / 'L') '1' '2' '8') / (('v' / 'V') ('l' / 'L') '2' '5' '6') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '3') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '4') / (('a' / 'A') ('l' / 'L') ('l' / 'L'))) !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_'))> */
-		func() bool {
-			position756, tokenIndex756 := position, tokenIndex
-			{
-				position757 := position
+			l757:
+				if buffer[position] != rune('/') {
+					goto l752
+				}
+				position++
 				{
 					position758, tokenIndex758 := position, tokenIndex
-					{
-						position760, tokenIndex760 := position, tokenIndex
-						if buffer[position] != rune('p') {
-							goto l761
-						}
-						position++
-						goto l760
-					l761:
-						position, tokenIndex = position760, tokenIndex760
-						if buffer[position] != rune('P') {
-							goto l759
-						}
-						position++
-					}
-				l760:
-					{
-						position762, tokenIndex762 := position, tokenIndex
-						if buffer[position] != rune('o') {
-							goto l763
-						}
-						position++
-						goto l762
-					l763:
-						position, tokenIndex = position762, tokenIndex762
-						if buffer[position] != rune('O') {
-							goto l759
-						}
-						position++
-					}
-				l762:
-					{
-						position764, tokenIndex764 := position, tokenIndex
-						if buffer[position] != rune('w') {
-							goto l765
-						}
-						position++
-						goto l764
-					l765:
-						position, tokenIndex = position764, tokenIndex764
-						if buffer[position] != rune('W') {
-							goto l759
-						}
-						position++
-					}
-				l764:
-					if buffer[position] != rune('2') {
+					if buffer[position] != rune('m') {
 						goto l759
 					}
 					position++
 					goto l758
 				l759:
 					position, tokenIndex = position758, tokenIndex758
+					if buffer[position] != rune('M') {
+						goto l760
+					}
+					position++
+					goto l758
+				l760:
+					position, tokenIndex = position758, tokenIndex758
+					{
+						position761, tokenIndex761 := position, tokenIndex
+						if buffer[position] != rune('z') {
+							goto l762
+						}
+						position++
+						goto l761
+					l762:
+						position, tokenIndex = position761, tokenIndex761
+						if buffer[position] != rune('Z') {
+							goto l752
+						}
+						position++
+					}
+				l761:
+				}
+			l758:
+				add(ruleSVE2PredicateRegister, position753)
+			}
+			return true
+		l752:
+			position, tokenIndex = position752, tokenIndex752
+			return false
+		},
+		/* 49 SVE2SpecialValue <- <(((('p' / 'P') ('o' / 'O') ('w' / 'W') '2') / (('v' / 'V') ('l' / 'L') ('1' / '2' / '3' / '4' / '5' / '6' / '7' / '8') ![0-9]) / (('v' / 'V') ('l' / 'L') '1' '6') / (('v' / 'V') ('l' / 'L') '3' '2') / (('v' / 'V') ('l' / 'L') '6' '4') / (('v' / 'V') ('l' / 'L') '1' '2' '8') / (('v' / 'V') ('l' / 'L') '2' '5' '6') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '3') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '4') / (('a' / 'A') ('l' / 'L') ('l' / 'L'))) !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_'))> */
+		func() bool {
+			position763, tokenIndex763 := position, tokenIndex
+			{
+				position764 := position
+				{
+					position765, tokenIndex765 := position, tokenIndex
 					{
 						position767, tokenIndex767 := position, tokenIndex
-						if buffer[position] != rune('v') {
+						if buffer[position] != rune('p') {
 							goto l768
 						}
 						position++
 						goto l767
 					l768:
 						position, tokenIndex = position767, tokenIndex767
-						if buffer[position] != rune('V') {
+						if buffer[position] != rune('P') {
 							goto l766
 						}
 						position++
@@ -6134,14 +6130,14 @@
 				l767:
 					{
 						position769, tokenIndex769 := position, tokenIndex
-						if buffer[position] != rune('l') {
+						if buffer[position] != rune('o') {
 							goto l770
 						}
 						position++
 						goto l769
 					l770:
 						position, tokenIndex = position769, tokenIndex769
-						if buffer[position] != rune('L') {
+						if buffer[position] != rune('O') {
 							goto l766
 						}
 						position++
@@ -6149,313 +6145,305 @@
 				l769:
 					{
 						position771, tokenIndex771 := position, tokenIndex
-						if buffer[position] != rune('1') {
+						if buffer[position] != rune('w') {
 							goto l772
 						}
 						position++
 						goto l771
 					l772:
 						position, tokenIndex = position771, tokenIndex771
-						if buffer[position] != rune('2') {
-							goto l773
-						}
-						position++
-						goto l771
-					l773:
-						position, tokenIndex = position771, tokenIndex771
-						if buffer[position] != rune('3') {
-							goto l774
-						}
-						position++
-						goto l771
-					l774:
-						position, tokenIndex = position771, tokenIndex771
-						if buffer[position] != rune('4') {
-							goto l775
-						}
-						position++
-						goto l771
-					l775:
-						position, tokenIndex = position771, tokenIndex771
-						if buffer[position] != rune('5') {
-							goto l776
-						}
-						position++
-						goto l771
-					l776:
-						position, tokenIndex = position771, tokenIndex771
-						if buffer[position] != rune('6') {
-							goto l777
-						}
-						position++
-						goto l771
-					l777:
-						position, tokenIndex = position771, tokenIndex771
-						if buffer[position] != rune('7') {
-							goto l778
-						}
-						position++
-						goto l771
-					l778:
-						position, tokenIndex = position771, tokenIndex771
-						if buffer[position] != rune('8') {
+						if buffer[position] != rune('W') {
 							goto l766
 						}
 						position++
 					}
 				l771:
+					if buffer[position] != rune('2') {
+						goto l766
+					}
+					position++
+					goto l765
+				l766:
+					position, tokenIndex = position765, tokenIndex765
 					{
-						position779, tokenIndex779 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
+						position774, tokenIndex774 := position, tokenIndex
+						if buffer[position] != rune('v') {
+							goto l775
+						}
+						position++
+						goto l774
+					l775:
+						position, tokenIndex = position774, tokenIndex774
+						if buffer[position] != rune('V') {
+							goto l773
+						}
+						position++
+					}
+				l774:
+					{
+						position776, tokenIndex776 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l777
+						}
+						position++
+						goto l776
+					l777:
+						position, tokenIndex = position776, tokenIndex776
+						if buffer[position] != rune('L') {
+							goto l773
+						}
+						position++
+					}
+				l776:
+					{
+						position778, tokenIndex778 := position, tokenIndex
+						if buffer[position] != rune('1') {
 							goto l779
 						}
 						position++
-						goto l766
+						goto l778
 					l779:
-						position, tokenIndex = position779, tokenIndex779
-					}
-					goto l758
-				l766:
-					position, tokenIndex = position758, tokenIndex758
-					{
-						position781, tokenIndex781 := position, tokenIndex
-						if buffer[position] != rune('v') {
+						position, tokenIndex = position778, tokenIndex778
+						if buffer[position] != rune('2') {
+							goto l780
+						}
+						position++
+						goto l778
+					l780:
+						position, tokenIndex = position778, tokenIndex778
+						if buffer[position] != rune('3') {
+							goto l781
+						}
+						position++
+						goto l778
+					l781:
+						position, tokenIndex = position778, tokenIndex778
+						if buffer[position] != rune('4') {
 							goto l782
 						}
 						position++
-						goto l781
+						goto l778
 					l782:
-						position, tokenIndex = position781, tokenIndex781
-						if buffer[position] != rune('V') {
-							goto l780
+						position, tokenIndex = position778, tokenIndex778
+						if buffer[position] != rune('5') {
+							goto l783
 						}
 						position++
-					}
-				l781:
-					{
-						position783, tokenIndex783 := position, tokenIndex
-						if buffer[position] != rune('l') {
+						goto l778
+					l783:
+						position, tokenIndex = position778, tokenIndex778
+						if buffer[position] != rune('6') {
 							goto l784
 						}
 						position++
-						goto l783
+						goto l778
 					l784:
-						position, tokenIndex = position783, tokenIndex783
-						if buffer[position] != rune('L') {
-							goto l780
-						}
-						position++
-					}
-				l783:
-					if buffer[position] != rune('1') {
-						goto l780
-					}
-					position++
-					if buffer[position] != rune('6') {
-						goto l780
-					}
-					position++
-					goto l758
-				l780:
-					position, tokenIndex = position758, tokenIndex758
-					{
-						position786, tokenIndex786 := position, tokenIndex
-						if buffer[position] != rune('v') {
-							goto l787
-						}
-						position++
-						goto l786
-					l787:
-						position, tokenIndex = position786, tokenIndex786
-						if buffer[position] != rune('V') {
+						position, tokenIndex = position778, tokenIndex778
+						if buffer[position] != rune('7') {
 							goto l785
 						}
 						position++
+						goto l778
+					l785:
+						position, tokenIndex = position778, tokenIndex778
+						if buffer[position] != rune('8') {
+							goto l773
+						}
+						position++
 					}
-				l786:
+				l778:
+					{
+						position786, tokenIndex786 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l786
+						}
+						position++
+						goto l773
+					l786:
+						position, tokenIndex = position786, tokenIndex786
+					}
+					goto l765
+				l773:
+					position, tokenIndex = position765, tokenIndex765
 					{
 						position788, tokenIndex788 := position, tokenIndex
-						if buffer[position] != rune('l') {
+						if buffer[position] != rune('v') {
 							goto l789
 						}
 						position++
 						goto l788
 					l789:
 						position, tokenIndex = position788, tokenIndex788
-						if buffer[position] != rune('L') {
-							goto l785
+						if buffer[position] != rune('V') {
+							goto l787
 						}
 						position++
 					}
 				l788:
-					if buffer[position] != rune('3') {
-						goto l785
-					}
-					position++
-					if buffer[position] != rune('2') {
-						goto l785
-					}
-					position++
-					goto l758
-				l785:
-					position, tokenIndex = position758, tokenIndex758
 					{
-						position791, tokenIndex791 := position, tokenIndex
-						if buffer[position] != rune('v') {
-							goto l792
+						position790, tokenIndex790 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l791
 						}
 						position++
-						goto l791
-					l792:
-						position, tokenIndex = position791, tokenIndex791
-						if buffer[position] != rune('V') {
-							goto l790
+						goto l790
+					l791:
+						position, tokenIndex = position790, tokenIndex790
+						if buffer[position] != rune('L') {
+							goto l787
 						}
 						position++
 					}
-				l791:
+				l790:
+					if buffer[position] != rune('1') {
+						goto l787
+					}
+					position++
+					if buffer[position] != rune('6') {
+						goto l787
+					}
+					position++
+					goto l765
+				l787:
+					position, tokenIndex = position765, tokenIndex765
 					{
 						position793, tokenIndex793 := position, tokenIndex
-						if buffer[position] != rune('l') {
+						if buffer[position] != rune('v') {
 							goto l794
 						}
 						position++
 						goto l793
 					l794:
 						position, tokenIndex = position793, tokenIndex793
-						if buffer[position] != rune('L') {
-							goto l790
+						if buffer[position] != rune('V') {
+							goto l792
 						}
 						position++
 					}
 				l793:
-					if buffer[position] != rune('6') {
-						goto l790
-					}
-					position++
-					if buffer[position] != rune('4') {
-						goto l790
-					}
-					position++
-					goto l758
-				l790:
-					position, tokenIndex = position758, tokenIndex758
 					{
-						position796, tokenIndex796 := position, tokenIndex
-						if buffer[position] != rune('v') {
-							goto l797
+						position795, tokenIndex795 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l796
 						}
 						position++
-						goto l796
-					l797:
-						position, tokenIndex = position796, tokenIndex796
-						if buffer[position] != rune('V') {
-							goto l795
+						goto l795
+					l796:
+						position, tokenIndex = position795, tokenIndex795
+						if buffer[position] != rune('L') {
+							goto l792
 						}
 						position++
 					}
-				l796:
+				l795:
+					if buffer[position] != rune('3') {
+						goto l792
+					}
+					position++
+					if buffer[position] != rune('2') {
+						goto l792
+					}
+					position++
+					goto l765
+				l792:
+					position, tokenIndex = position765, tokenIndex765
 					{
 						position798, tokenIndex798 := position, tokenIndex
-						if buffer[position] != rune('l') {
+						if buffer[position] != rune('v') {
 							goto l799
 						}
 						position++
 						goto l798
 					l799:
 						position, tokenIndex = position798, tokenIndex798
-						if buffer[position] != rune('L') {
-							goto l795
+						if buffer[position] != rune('V') {
+							goto l797
 						}
 						position++
 					}
 				l798:
-					if buffer[position] != rune('1') {
-						goto l795
-					}
-					position++
-					if buffer[position] != rune('2') {
-						goto l795
-					}
-					position++
-					if buffer[position] != rune('8') {
-						goto l795
-					}
-					position++
-					goto l758
-				l795:
-					position, tokenIndex = position758, tokenIndex758
 					{
-						position801, tokenIndex801 := position, tokenIndex
-						if buffer[position] != rune('v') {
-							goto l802
+						position800, tokenIndex800 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l801
 						}
 						position++
-						goto l801
-					l802:
-						position, tokenIndex = position801, tokenIndex801
-						if buffer[position] != rune('V') {
-							goto l800
+						goto l800
+					l801:
+						position, tokenIndex = position800, tokenIndex800
+						if buffer[position] != rune('L') {
+							goto l797
 						}
 						position++
 					}
-				l801:
+				l800:
+					if buffer[position] != rune('6') {
+						goto l797
+					}
+					position++
+					if buffer[position] != rune('4') {
+						goto l797
+					}
+					position++
+					goto l765
+				l797:
+					position, tokenIndex = position765, tokenIndex765
 					{
 						position803, tokenIndex803 := position, tokenIndex
-						if buffer[position] != rune('l') {
+						if buffer[position] != rune('v') {
 							goto l804
 						}
 						position++
 						goto l803
 					l804:
 						position, tokenIndex = position803, tokenIndex803
-						if buffer[position] != rune('L') {
-							goto l800
+						if buffer[position] != rune('V') {
+							goto l802
 						}
 						position++
 					}
 				l803:
-					if buffer[position] != rune('2') {
-						goto l800
-					}
-					position++
-					if buffer[position] != rune('5') {
-						goto l800
-					}
-					position++
-					if buffer[position] != rune('6') {
-						goto l800
-					}
-					position++
-					goto l758
-				l800:
-					position, tokenIndex = position758, tokenIndex758
 					{
-						position806, tokenIndex806 := position, tokenIndex
-						if buffer[position] != rune('m') {
-							goto l807
+						position805, tokenIndex805 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l806
 						}
 						position++
-						goto l806
-					l807:
-						position, tokenIndex = position806, tokenIndex806
-						if buffer[position] != rune('M') {
-							goto l805
+						goto l805
+					l806:
+						position, tokenIndex = position805, tokenIndex805
+						if buffer[position] != rune('L') {
+							goto l802
 						}
 						position++
 					}
-				l806:
+				l805:
+					if buffer[position] != rune('1') {
+						goto l802
+					}
+					position++
+					if buffer[position] != rune('2') {
+						goto l802
+					}
+					position++
+					if buffer[position] != rune('8') {
+						goto l802
+					}
+					position++
+					goto l765
+				l802:
+					position, tokenIndex = position765, tokenIndex765
 					{
 						position808, tokenIndex808 := position, tokenIndex
-						if buffer[position] != rune('u') {
+						if buffer[position] != rune('v') {
 							goto l809
 						}
 						position++
 						goto l808
 					l809:
 						position, tokenIndex = position808, tokenIndex808
-						if buffer[position] != rune('U') {
-							goto l805
+						if buffer[position] != rune('V') {
+							goto l807
 						}
 						position++
 					}
@@ -6470,18 +6458,26 @@
 					l811:
 						position, tokenIndex = position810, tokenIndex810
 						if buffer[position] != rune('L') {
-							goto l805
+							goto l807
 						}
 						position++
 					}
 				l810:
-					if buffer[position] != rune('3') {
-						goto l805
+					if buffer[position] != rune('2') {
+						goto l807
 					}
 					position++
-					goto l758
-				l805:
-					position, tokenIndex = position758, tokenIndex758
+					if buffer[position] != rune('5') {
+						goto l807
+					}
+					position++
+					if buffer[position] != rune('6') {
+						goto l807
+					}
+					position++
+					goto l765
+				l807:
+					position, tokenIndex = position765, tokenIndex765
 					{
 						position813, tokenIndex813 := position, tokenIndex
 						if buffer[position] != rune('m') {
@@ -6527,1140 +6523,1192 @@
 						position++
 					}
 				l817:
-					if buffer[position] != rune('4') {
+					if buffer[position] != rune('3') {
 						goto l812
 					}
 					position++
-					goto l758
+					goto l765
 				l812:
-					position, tokenIndex = position758, tokenIndex758
+					position, tokenIndex = position765, tokenIndex765
 					{
-						position819, tokenIndex819 := position, tokenIndex
-						if buffer[position] != rune('a') {
-							goto l820
+						position820, tokenIndex820 := position, tokenIndex
+						if buffer[position] != rune('m') {
+							goto l821
 						}
 						position++
+						goto l820
+					l821:
+						position, tokenIndex = position820, tokenIndex820
+						if buffer[position] != rune('M') {
+							goto l819
+						}
+						position++
+					}
+				l820:
+					{
+						position822, tokenIndex822 := position, tokenIndex
+						if buffer[position] != rune('u') {
+							goto l823
+						}
+						position++
+						goto l822
+					l823:
+						position, tokenIndex = position822, tokenIndex822
+						if buffer[position] != rune('U') {
+							goto l819
+						}
+						position++
+					}
+				l822:
+					{
+						position824, tokenIndex824 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l825
+						}
+						position++
+						goto l824
+					l825:
+						position, tokenIndex = position824, tokenIndex824
+						if buffer[position] != rune('L') {
+							goto l819
+						}
+						position++
+					}
+				l824:
+					if buffer[position] != rune('4') {
 						goto l819
-					l820:
-						position, tokenIndex = position819, tokenIndex819
-						if buffer[position] != rune('A') {
-							goto l756
-						}
-						position++
 					}
+					position++
+					goto l765
 				l819:
-					{
-						position821, tokenIndex821 := position, tokenIndex
-						if buffer[position] != rune('l') {
-							goto l822
-						}
-						position++
-						goto l821
-					l822:
-						position, tokenIndex = position821, tokenIndex821
-						if buffer[position] != rune('L') {
-							goto l756
-						}
-						position++
-					}
-				l821:
-					{
-						position823, tokenIndex823 := position, tokenIndex
-						if buffer[position] != rune('l') {
-							goto l824
-						}
-						position++
-						goto l823
-					l824:
-						position, tokenIndex = position823, tokenIndex823
-						if buffer[position] != rune('L') {
-							goto l756
-						}
-						position++
-					}
-				l823:
-				}
-			l758:
-				{
-					position825, tokenIndex825 := position, tokenIndex
+					position, tokenIndex = position765, tokenIndex765
 					{
 						position826, tokenIndex826 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
+						if buffer[position] != rune('a') {
 							goto l827
 						}
 						position++
 						goto l826
 					l827:
 						position, tokenIndex = position826, tokenIndex826
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l828
-						}
-						position++
-						goto l826
-					l828:
-						position, tokenIndex = position826, tokenIndex826
-						{
-							position830, tokenIndex830 := position, tokenIndex
-							if c := buffer[position]; c < rune('a') || c > rune('z') {
-								goto l831
-							}
-							position++
-							goto l830
-						l831:
-							position, tokenIndex = position830, tokenIndex830
-							if c := buffer[position]; c < rune('A') || c > rune('Z') {
-								goto l829
-							}
-							position++
-						}
-					l830:
-						goto l826
-					l829:
-						position, tokenIndex = position826, tokenIndex826
-						if buffer[position] != rune('_') {
-							goto l825
+						if buffer[position] != rune('A') {
+							goto l763
 						}
 						position++
 					}
 				l826:
-					goto l756
-				l825:
-					position, tokenIndex = position825, tokenIndex825
+					{
+						position828, tokenIndex828 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l829
+						}
+						position++
+						goto l828
+					l829:
+						position, tokenIndex = position828, tokenIndex828
+						if buffer[position] != rune('L') {
+							goto l763
+						}
+						position++
+					}
+				l828:
+					{
+						position830, tokenIndex830 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l831
+						}
+						position++
+						goto l830
+					l831:
+						position, tokenIndex = position830, tokenIndex830
+						if buffer[position] != rune('L') {
+							goto l763
+						}
+						position++
+					}
+				l830:
 				}
-				add(ruleSVE2SpecialValue, position757)
+			l765:
+				{
+					position832, tokenIndex832 := position, tokenIndex
+					{
+						position833, tokenIndex833 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l834
+						}
+						position++
+						goto l833
+					l834:
+						position, tokenIndex = position833, tokenIndex833
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l835
+						}
+						position++
+						goto l833
+					l835:
+						position, tokenIndex = position833, tokenIndex833
+						{
+							position837, tokenIndex837 := position, tokenIndex
+							if c := buffer[position]; c < rune('a') || c > rune('z') {
+								goto l838
+							}
+							position++
+							goto l837
+						l838:
+							position, tokenIndex = position837, tokenIndex837
+							if c := buffer[position]; c < rune('A') || c > rune('Z') {
+								goto l836
+							}
+							position++
+						}
+					l837:
+						goto l833
+					l836:
+						position, tokenIndex = position833, tokenIndex833
+						if buffer[position] != rune('_') {
+							goto l832
+						}
+						position++
+					}
+				l833:
+					goto l763
+				l832:
+					position, tokenIndex = position832, tokenIndex832
+				}
+				add(ruleSVE2SpecialValue, position764)
 			}
 			return true
-		l756:
-			position, tokenIndex = position756, tokenIndex756
+		l763:
+			position, tokenIndex = position763, tokenIndex763
 			return false
 		},
 		/* 50 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
 		func() bool {
-			position832, tokenIndex832 := position, tokenIndex
+			position839, tokenIndex839 := position, tokenIndex
 			{
-				position833 := position
+				position840 := position
 				{
-					position834, tokenIndex834 := position, tokenIndex
+					position841, tokenIndex841 := position, tokenIndex
 					if !_rules[ruleSymbolRef]() {
-						goto l835
-					}
-					if !_rules[ruleBaseIndexScale]() {
-						goto l835
-					}
-					goto l834
-				l835:
-					position, tokenIndex = position834, tokenIndex834
-					if !_rules[ruleSymbolRef]() {
-						goto l836
-					}
-					goto l834
-				l836:
-					position, tokenIndex = position834, tokenIndex834
-					if !_rules[ruleLow12BitsSymbolRef]() {
-						goto l837
-					}
-					goto l834
-				l837:
-					position, tokenIndex = position834, tokenIndex834
-				l839:
-					{
-						position840, tokenIndex840 := position, tokenIndex
-						if !_rules[ruleOffset]() {
-							goto l840
-						}
-						goto l839
-					l840:
-						position, tokenIndex = position840, tokenIndex840
-					}
-					if !_rules[ruleBaseIndexScale]() {
-						goto l838
-					}
-					goto l834
-				l838:
-					position, tokenIndex = position834, tokenIndex834
-					if !_rules[ruleSegmentRegister]() {
-						goto l841
-					}
-					if !_rules[ruleOffset]() {
-						goto l841
-					}
-					if !_rules[ruleBaseIndexScale]() {
-						goto l841
-					}
-					goto l834
-				l841:
-					position, tokenIndex = position834, tokenIndex834
-					if !_rules[ruleSegmentRegister]() {
 						goto l842
 					}
 					if !_rules[ruleBaseIndexScale]() {
 						goto l842
 					}
-					goto l834
+					goto l841
 				l842:
-					position, tokenIndex = position834, tokenIndex834
-					if !_rules[ruleSegmentRegister]() {
+					position, tokenIndex = position841, tokenIndex841
+					if !_rules[ruleSymbolRef]() {
 						goto l843
 					}
-					if !_rules[ruleOffset]() {
-						goto l843
-					}
-					goto l834
+					goto l841
 				l843:
-					position, tokenIndex = position834, tokenIndex834
-					if !_rules[ruleARMBaseIndexScale]() {
+					position, tokenIndex = position841, tokenIndex841
+					if !_rules[ruleLow12BitsSymbolRef]() {
 						goto l844
 					}
-					goto l834
+					goto l841
 				l844:
-					position, tokenIndex = position834, tokenIndex834
+					position, tokenIndex = position841, tokenIndex841
+				l846:
+					{
+						position847, tokenIndex847 := position, tokenIndex
+						if !_rules[ruleOffset]() {
+							goto l847
+						}
+						goto l846
+					l847:
+						position, tokenIndex = position847, tokenIndex847
+					}
 					if !_rules[ruleBaseIndexScale]() {
-						goto l832
+						goto l845
+					}
+					goto l841
+				l845:
+					position, tokenIndex = position841, tokenIndex841
+					if !_rules[ruleSegmentRegister]() {
+						goto l848
+					}
+					if !_rules[ruleOffset]() {
+						goto l848
+					}
+					if !_rules[ruleBaseIndexScale]() {
+						goto l848
+					}
+					goto l841
+				l848:
+					position, tokenIndex = position841, tokenIndex841
+					if !_rules[ruleSegmentRegister]() {
+						goto l849
+					}
+					if !_rules[ruleBaseIndexScale]() {
+						goto l849
+					}
+					goto l841
+				l849:
+					position, tokenIndex = position841, tokenIndex841
+					if !_rules[ruleSegmentRegister]() {
+						goto l850
+					}
+					if !_rules[ruleOffset]() {
+						goto l850
+					}
+					goto l841
+				l850:
+					position, tokenIndex = position841, tokenIndex841
+					if !_rules[ruleARMBaseIndexScale]() {
+						goto l851
+					}
+					goto l841
+				l851:
+					position, tokenIndex = position841, tokenIndex841
+					if !_rules[ruleBaseIndexScale]() {
+						goto l839
 					}
 				}
-			l834:
-				add(ruleMemoryRef, position833)
+			l841:
+				add(ruleMemoryRef, position840)
 			}
 			return true
-		l832:
-			position, tokenIndex = position832, tokenIndex832
+		l839:
+			position, tokenIndex = position839, tokenIndex839
 			return false
 		},
 		/* 51 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
 		func() bool {
-			position845, tokenIndex845 := position, tokenIndex
+			position852, tokenIndex852 := position, tokenIndex
 			{
-				position846 := position
-				{
-					position847, tokenIndex847 := position, tokenIndex
-				l849:
-					{
-						position850, tokenIndex850 := position, tokenIndex
-						if !_rules[ruleOffset]() {
-							goto l850
-						}
-						goto l849
-					l850:
-						position, tokenIndex = position850, tokenIndex850
-					}
-					if buffer[position] != rune('+') {
-						goto l847
-					}
-					position++
-					goto l848
-				l847:
-					position, tokenIndex = position847, tokenIndex847
-				}
-			l848:
-				{
-					position851, tokenIndex851 := position, tokenIndex
-					if !_rules[ruleLocalSymbol]() {
-						goto l852
-					}
-					goto l851
-				l852:
-					position, tokenIndex = position851, tokenIndex851
-					if !_rules[ruleSymbolName]() {
-						goto l845
-					}
-				}
-			l851:
-			l853:
+				position853 := position
 				{
 					position854, tokenIndex854 := position, tokenIndex
-					if !_rules[ruleOffset]() {
+				l856:
+					{
+						position857, tokenIndex857 := position, tokenIndex
+						if !_rules[ruleOffset]() {
+							goto l857
+						}
+						goto l856
+					l857:
+						position, tokenIndex = position857, tokenIndex857
+					}
+					if buffer[position] != rune('+') {
 						goto l854
 					}
-					goto l853
+					position++
+					goto l855
 				l854:
 					position, tokenIndex = position854, tokenIndex854
 				}
+			l855:
 				{
-					position855, tokenIndex855 := position, tokenIndex
+					position858, tokenIndex858 := position, tokenIndex
+					if !_rules[ruleLocalSymbol]() {
+						goto l859
+					}
+					goto l858
+				l859:
+					position, tokenIndex = position858, tokenIndex858
+					if !_rules[ruleSymbolName]() {
+						goto l852
+					}
+				}
+			l858:
+			l860:
+				{
+					position861, tokenIndex861 := position, tokenIndex
+					if !_rules[ruleOffset]() {
+						goto l861
+					}
+					goto l860
+				l861:
+					position, tokenIndex = position861, tokenIndex861
+				}
+				{
+					position862, tokenIndex862 := position, tokenIndex
 					if buffer[position] != rune('@') {
-						goto l855
+						goto l862
 					}
 					position++
 					if !_rules[ruleSection]() {
-						goto l855
+						goto l862
 					}
-				l857:
+				l864:
 					{
-						position858, tokenIndex858 := position, tokenIndex
+						position865, tokenIndex865 := position, tokenIndex
 						if !_rules[ruleOffset]() {
-							goto l858
+							goto l865
 						}
-						goto l857
-					l858:
-						position, tokenIndex = position858, tokenIndex858
+						goto l864
+					l865:
+						position, tokenIndex = position865, tokenIndex865
 					}
-					goto l856
-				l855:
-					position, tokenIndex = position855, tokenIndex855
+					goto l863
+				l862:
+					position, tokenIndex = position862, tokenIndex862
 				}
-			l856:
-				add(ruleSymbolRef, position846)
+			l863:
+				add(ruleSymbolRef, position853)
 			}
 			return true
-		l845:
-			position, tokenIndex = position845, tokenIndex845
+		l852:
+			position, tokenIndex = position852, tokenIndex852
 			return false
 		},
 		/* 52 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
 		func() bool {
-			position859, tokenIndex859 := position, tokenIndex
+			position866, tokenIndex866 := position, tokenIndex
 			{
-				position860 := position
+				position867 := position
 				if buffer[position] != rune(':') {
-					goto l859
+					goto l866
 				}
 				position++
 				{
-					position861, tokenIndex861 := position, tokenIndex
+					position868, tokenIndex868 := position, tokenIndex
 					if buffer[position] != rune('l') {
-						goto l862
+						goto l869
 					}
 					position++
-					goto l861
-				l862:
-					position, tokenIndex = position861, tokenIndex861
+					goto l868
+				l869:
+					position, tokenIndex = position868, tokenIndex868
 					if buffer[position] != rune('L') {
-						goto l859
+						goto l866
 					}
 					position++
 				}
-			l861:
+			l868:
 				{
-					position863, tokenIndex863 := position, tokenIndex
+					position870, tokenIndex870 := position, tokenIndex
 					if buffer[position] != rune('o') {
-						goto l864
+						goto l871
 					}
 					position++
-					goto l863
-				l864:
-					position, tokenIndex = position863, tokenIndex863
+					goto l870
+				l871:
+					position, tokenIndex = position870, tokenIndex870
 					if buffer[position] != rune('O') {
-						goto l859
+						goto l866
 					}
 					position++
 				}
-			l863:
+			l870:
 				if buffer[position] != rune('1') {
-					goto l859
+					goto l866
 				}
 				position++
 				if buffer[position] != rune('2') {
-					goto l859
+					goto l866
 				}
 				position++
 				if buffer[position] != rune(':') {
-					goto l859
+					goto l866
 				}
 				position++
 				{
-					position865, tokenIndex865 := position, tokenIndex
+					position872, tokenIndex872 := position, tokenIndex
 					if !_rules[ruleLocalSymbol]() {
+						goto l873
+					}
+					goto l872
+				l873:
+					position, tokenIndex = position872, tokenIndex872
+					if !_rules[ruleSymbolName]() {
 						goto l866
 					}
-					goto l865
-				l866:
-					position, tokenIndex = position865, tokenIndex865
-					if !_rules[ruleSymbolName]() {
-						goto l859
-					}
 				}
-			l865:
+			l872:
 				{
-					position867, tokenIndex867 := position, tokenIndex
+					position874, tokenIndex874 := position, tokenIndex
 					if !_rules[ruleOffset]() {
-						goto l867
+						goto l874
 					}
-					goto l868
-				l867:
-					position, tokenIndex = position867, tokenIndex867
+					goto l875
+				l874:
+					position, tokenIndex = position874, tokenIndex874
 				}
-			l868:
-				add(ruleLow12BitsSymbolRef, position860)
+			l875:
+				add(ruleLow12BitsSymbolRef, position867)
 			}
 			return true
-		l859:
-			position, tokenIndex = position859, tokenIndex859
+		l866:
+			position, tokenIndex = position866, tokenIndex866
 			return false
 		},
 		/* 53 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
 		func() bool {
-			position869, tokenIndex869 := position, tokenIndex
+			position876, tokenIndex876 := position, tokenIndex
 			{
-				position870 := position
+				position877 := position
 				if buffer[position] != rune('[') {
-					goto l869
+					goto l876
 				}
 				position++
 				if !_rules[ruleARMRegister]() {
-					goto l869
+					goto l876
 				}
 				{
-					position871, tokenIndex871 := position, tokenIndex
+					position878, tokenIndex878 := position, tokenIndex
 					if buffer[position] != rune(',') {
-						goto l871
+						goto l878
 					}
 					position++
 					{
-						position873, tokenIndex873 := position, tokenIndex
+						position880, tokenIndex880 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l873
+							goto l880
 						}
-						goto l874
-					l873:
-						position, tokenIndex = position873, tokenIndex873
+						goto l881
+					l880:
+						position, tokenIndex = position880, tokenIndex880
 					}
-				l874:
+				l881:
 					{
-						position875, tokenIndex875 := position, tokenIndex
+						position882, tokenIndex882 := position, tokenIndex
 						if buffer[position] != rune('#') {
-							goto l876
+							goto l883
 						}
 						position++
 						if !_rules[ruleOffset]() {
-							goto l876
+							goto l883
 						}
 						{
-							position877, tokenIndex877 := position, tokenIndex
+							position884, tokenIndex884 := position, tokenIndex
 							{
-								position879, tokenIndex879 := position, tokenIndex
+								position886, tokenIndex886 := position, tokenIndex
 								if buffer[position] != rune('*') {
-									goto l880
+									goto l887
 								}
 								position++
 								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l880
+									goto l887
 								}
 								position++
-							l881:
-								{
-									position882, tokenIndex882 := position, tokenIndex
-									if c := buffer[position]; c < rune('0') || c > rune('9') {
-										goto l882
-									}
-									position++
-									goto l881
-								l882:
-									position, tokenIndex = position882, tokenIndex882
-								}
-								goto l879
-							l880:
-								position, tokenIndex = position879, tokenIndex879
-								if buffer[position] != rune('*') {
-									goto l883
-								}
-								position++
-								if buffer[position] != rune('(') {
-									goto l883
-								}
-								position++
-								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l883
-								}
-								position++
-							l884:
-								{
-									position885, tokenIndex885 := position, tokenIndex
-									if c := buffer[position]; c < rune('0') || c > rune('9') {
-										goto l885
-									}
-									position++
-									goto l884
-								l885:
-									position, tokenIndex = position885, tokenIndex885
-								}
-								if !_rules[ruleOperator]() {
-									goto l883
-								}
-								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l883
-								}
-								position++
-							l886:
-								{
-									position887, tokenIndex887 := position, tokenIndex
-									if c := buffer[position]; c < rune('0') || c > rune('9') {
-										goto l887
-									}
-									position++
-									goto l886
-								l887:
-									position, tokenIndex = position887, tokenIndex887
-								}
-								if buffer[position] != rune(')') {
-									goto l883
-								}
-								position++
-								goto l879
-							l883:
-								position, tokenIndex = position879, tokenIndex879
 							l888:
 								{
 									position889, tokenIndex889 := position, tokenIndex
-									if buffer[position] != rune('+') {
-										goto l889
-									}
-									position++
 									if c := buffer[position]; c < rune('0') || c > rune('9') {
 										goto l889
 									}
 									position++
-								l890:
-									{
-										position891, tokenIndex891 := position, tokenIndex
-										if c := buffer[position]; c < rune('0') || c > rune('9') {
-											goto l891
-										}
-										position++
-										goto l890
-									l891:
-										position, tokenIndex = position891, tokenIndex891
-									}
 									goto l888
 								l889:
 									position, tokenIndex = position889, tokenIndex889
 								}
+								goto l886
+							l887:
+								position, tokenIndex = position886, tokenIndex886
+								if buffer[position] != rune('*') {
+									goto l890
+								}
+								position++
+								if buffer[position] != rune('(') {
+									goto l890
+								}
+								position++
+								if c := buffer[position]; c < rune('0') || c > rune('9') {
+									goto l890
+								}
+								position++
+							l891:
+								{
+									position892, tokenIndex892 := position, tokenIndex
+									if c := buffer[position]; c < rune('0') || c > rune('9') {
+										goto l892
+									}
+									position++
+									goto l891
+								l892:
+									position, tokenIndex = position892, tokenIndex892
+								}
+								if !_rules[ruleOperator]() {
+									goto l890
+								}
+								if c := buffer[position]; c < rune('0') || c > rune('9') {
+									goto l890
+								}
+								position++
+							l893:
+								{
+									position894, tokenIndex894 := position, tokenIndex
+									if c := buffer[position]; c < rune('0') || c > rune('9') {
+										goto l894
+									}
+									position++
+									goto l893
+								l894:
+									position, tokenIndex = position894, tokenIndex894
+								}
+								if buffer[position] != rune(')') {
+									goto l890
+								}
+								position++
+								goto l886
+							l890:
+								position, tokenIndex = position886, tokenIndex886
+							l895:
+								{
+									position896, tokenIndex896 := position, tokenIndex
+									if buffer[position] != rune('+') {
+										goto l896
+									}
+									position++
+									if c := buffer[position]; c < rune('0') || c > rune('9') {
+										goto l896
+									}
+									position++
+								l897:
+									{
+										position898, tokenIndex898 := position, tokenIndex
+										if c := buffer[position]; c < rune('0') || c > rune('9') {
+											goto l898
+										}
+										position++
+										goto l897
+									l898:
+										position, tokenIndex = position898, tokenIndex898
+									}
+									goto l895
+								l896:
+									position, tokenIndex = position896, tokenIndex896
+								}
 							}
-						l879:
-							goto l878
+						l886:
+							goto l885
 
-							position, tokenIndex = position877, tokenIndex877
+							position, tokenIndex = position884, tokenIndex884
 						}
-					l878:
-						goto l875
-					l876:
-						position, tokenIndex = position875, tokenIndex875
+					l885:
+						goto l882
+					l883:
+						position, tokenIndex = position882, tokenIndex882
 						if !_rules[ruleARMGOTLow12]() {
-							goto l892
+							goto l899
 						}
-						goto l875
-					l892:
-						position, tokenIndex = position875, tokenIndex875
+						goto l882
+					l899:
+						position, tokenIndex = position882, tokenIndex882
 						if !_rules[ruleLow12BitsSymbolRef]() {
-							goto l893
+							goto l900
 						}
-						goto l875
-					l893:
-						position, tokenIndex = position875, tokenIndex875
+						goto l882
+					l900:
+						position, tokenIndex = position882, tokenIndex882
 						if !_rules[ruleARMRegister]() {
-							goto l871
+							goto l878
 						}
 					}
-				l875:
+				l882:
 					{
-						position894, tokenIndex894 := position, tokenIndex
+						position901, tokenIndex901 := position, tokenIndex
 						if buffer[position] != rune(',') {
-							goto l894
+							goto l901
 						}
 						position++
 						{
-							position896, tokenIndex896 := position, tokenIndex
+							position903, tokenIndex903 := position, tokenIndex
 							if !_rules[ruleWS]() {
-								goto l896
+								goto l903
 							}
-							goto l897
-						l896:
-							position, tokenIndex = position896, tokenIndex896
+							goto l904
+						l903:
+							position, tokenIndex = position903, tokenIndex903
 						}
-					l897:
+					l904:
 						if !_rules[ruleARMConstantTweak]() {
-							goto l894
+							goto l901
 						}
-						goto l895
-					l894:
-						position, tokenIndex = position894, tokenIndex894
+						goto l902
+					l901:
+						position, tokenIndex = position901, tokenIndex901
 					}
-				l895:
-					goto l872
-				l871:
-					position, tokenIndex = position871, tokenIndex871
+				l902:
+					goto l879
+				l878:
+					position, tokenIndex = position878, tokenIndex878
 				}
-			l872:
+			l879:
 				if buffer[position] != rune(']') {
-					goto l869
+					goto l876
 				}
 				position++
 				{
-					position898, tokenIndex898 := position, tokenIndex
+					position905, tokenIndex905 := position, tokenIndex
 					if !_rules[ruleARMPostincrement]() {
-						goto l898
+						goto l905
 					}
-					goto l899
-				l898:
-					position, tokenIndex = position898, tokenIndex898
+					goto l906
+				l905:
+					position, tokenIndex = position905, tokenIndex905
 				}
-			l899:
-				add(ruleARMBaseIndexScale, position870)
+			l906:
+				add(ruleARMBaseIndexScale, position877)
 			}
 			return true
-		l869:
-			position, tokenIndex = position869, tokenIndex869
+		l876:
+			position, tokenIndex = position876, tokenIndex876
 			return false
 		},
 		/* 54 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
 		func() bool {
-			position900, tokenIndex900 := position, tokenIndex
+			position907, tokenIndex907 := position, tokenIndex
 			{
-				position901 := position
+				position908 := position
 				if buffer[position] != rune(':') {
-					goto l900
+					goto l907
 				}
 				position++
 				{
-					position902, tokenIndex902 := position, tokenIndex
+					position909, tokenIndex909 := position, tokenIndex
 					if buffer[position] != rune('g') {
-						goto l903
+						goto l910
 					}
 					position++
-					goto l902
-				l903:
-					position, tokenIndex = position902, tokenIndex902
+					goto l909
+				l910:
+					position, tokenIndex = position909, tokenIndex909
 					if buffer[position] != rune('G') {
-						goto l900
-					}
-					position++
-				}
-			l902:
-				{
-					position904, tokenIndex904 := position, tokenIndex
-					if buffer[position] != rune('o') {
-						goto l905
-					}
-					position++
-					goto l904
-				l905:
-					position, tokenIndex = position904, tokenIndex904
-					if buffer[position] != rune('O') {
-						goto l900
-					}
-					position++
-				}
-			l904:
-				{
-					position906, tokenIndex906 := position, tokenIndex
-					if buffer[position] != rune('t') {
 						goto l907
 					}
 					position++
-					goto l906
-				l907:
-					position, tokenIndex = position906, tokenIndex906
-					if buffer[position] != rune('T') {
-						goto l900
+				}
+			l909:
+				{
+					position911, tokenIndex911 := position, tokenIndex
+					if buffer[position] != rune('o') {
+						goto l912
+					}
+					position++
+					goto l911
+				l912:
+					position, tokenIndex = position911, tokenIndex911
+					if buffer[position] != rune('O') {
+						goto l907
 					}
 					position++
 				}
-			l906:
+			l911:
+				{
+					position913, tokenIndex913 := position, tokenIndex
+					if buffer[position] != rune('t') {
+						goto l914
+					}
+					position++
+					goto l913
+				l914:
+					position, tokenIndex = position913, tokenIndex913
+					if buffer[position] != rune('T') {
+						goto l907
+					}
+					position++
+				}
+			l913:
 				if buffer[position] != rune('_') {
-					goto l900
+					goto l907
 				}
 				position++
 				{
-					position908, tokenIndex908 := position, tokenIndex
+					position915, tokenIndex915 := position, tokenIndex
 					if buffer[position] != rune('l') {
-						goto l909
+						goto l916
 					}
 					position++
-					goto l908
-				l909:
-					position, tokenIndex = position908, tokenIndex908
+					goto l915
+				l916:
+					position, tokenIndex = position915, tokenIndex915
 					if buffer[position] != rune('L') {
-						goto l900
+						goto l907
 					}
 					position++
 				}
-			l908:
+			l915:
 				{
-					position910, tokenIndex910 := position, tokenIndex
+					position917, tokenIndex917 := position, tokenIndex
 					if buffer[position] != rune('o') {
-						goto l911
+						goto l918
 					}
 					position++
-					goto l910
-				l911:
-					position, tokenIndex = position910, tokenIndex910
+					goto l917
+				l918:
+					position, tokenIndex = position917, tokenIndex917
 					if buffer[position] != rune('O') {
-						goto l900
+						goto l907
 					}
 					position++
 				}
-			l910:
+			l917:
 				if buffer[position] != rune('1') {
-					goto l900
+					goto l907
 				}
 				position++
 				if buffer[position] != rune('2') {
-					goto l900
+					goto l907
 				}
 				position++
 				if buffer[position] != rune(':') {
-					goto l900
+					goto l907
 				}
 				position++
 				if !_rules[ruleSymbolName]() {
-					goto l900
+					goto l907
 				}
-				add(ruleARMGOTLow12, position901)
+				add(ruleARMGOTLow12, position908)
 			}
 			return true
-		l900:
-			position, tokenIndex = position900, tokenIndex900
+		l907:
+			position, tokenIndex = position907, tokenIndex907
 			return false
 		},
 		/* 55 ARMPostincrement <- <'!'> */
 		func() bool {
-			position912, tokenIndex912 := position, tokenIndex
+			position919, tokenIndex919 := position, tokenIndex
 			{
-				position913 := position
+				position920 := position
 				if buffer[position] != rune('!') {
-					goto l912
+					goto l919
 				}
 				position++
-				add(ruleARMPostincrement, position913)
+				add(ruleARMPostincrement, position920)
 			}
 			return true
-		l912:
-			position, tokenIndex = position912, tokenIndex912
+		l919:
+			position, tokenIndex = position919, tokenIndex919
 			return false
 		},
 		/* 56 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
 		func() bool {
-			position914, tokenIndex914 := position, tokenIndex
+			position921, tokenIndex921 := position, tokenIndex
 			{
-				position915 := position
+				position922 := position
 				if buffer[position] != rune('(') {
-					goto l914
+					goto l921
 				}
 				position++
 				{
-					position916, tokenIndex916 := position, tokenIndex
+					position923, tokenIndex923 := position, tokenIndex
 					if !_rules[ruleRegisterOrConstant]() {
-						goto l916
+						goto l923
 					}
-					goto l917
-				l916:
-					position, tokenIndex = position916, tokenIndex916
+					goto l924
+				l923:
+					position, tokenIndex = position923, tokenIndex923
 				}
-			l917:
+			l924:
 				{
-					position918, tokenIndex918 := position, tokenIndex
+					position925, tokenIndex925 := position, tokenIndex
 					if !_rules[ruleWS]() {
-						goto l918
+						goto l925
 					}
-					goto l919
-				l918:
-					position, tokenIndex = position918, tokenIndex918
+					goto l926
+				l925:
+					position, tokenIndex = position925, tokenIndex925
 				}
-			l919:
+			l926:
 				{
-					position920, tokenIndex920 := position, tokenIndex
+					position927, tokenIndex927 := position, tokenIndex
 					if buffer[position] != rune(',') {
-						goto l920
+						goto l927
 					}
 					position++
 					{
-						position922, tokenIndex922 := position, tokenIndex
+						position929, tokenIndex929 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l922
+							goto l929
 						}
-						goto l923
-					l922:
-						position, tokenIndex = position922, tokenIndex922
+						goto l930
+					l929:
+						position, tokenIndex = position929, tokenIndex929
 					}
-				l923:
+				l930:
 					if !_rules[ruleRegisterOrConstant]() {
-						goto l920
+						goto l927
 					}
 					{
-						position924, tokenIndex924 := position, tokenIndex
+						position931, tokenIndex931 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l924
+							goto l931
 						}
-						goto l925
-					l924:
-						position, tokenIndex = position924, tokenIndex924
+						goto l932
+					l931:
+						position, tokenIndex = position931, tokenIndex931
 					}
-				l925:
+				l932:
 					{
-						position926, tokenIndex926 := position, tokenIndex
+						position933, tokenIndex933 := position, tokenIndex
 						if buffer[position] != rune(',') {
-							goto l926
+							goto l933
 						}
 						position++
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l926
+							goto l933
 						}
 						position++
-					l928:
+					l935:
 						{
-							position929, tokenIndex929 := position, tokenIndex
+							position936, tokenIndex936 := position, tokenIndex
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l929
+								goto l936
 							}
 							position++
-							goto l928
-						l929:
-							position, tokenIndex = position929, tokenIndex929
+							goto l935
+						l936:
+							position, tokenIndex = position936, tokenIndex936
 						}
-						goto l927
-					l926:
-						position, tokenIndex = position926, tokenIndex926
+						goto l934
+					l933:
+						position, tokenIndex = position933, tokenIndex933
 					}
+				l934:
+					goto l928
 				l927:
-					goto l921
-				l920:
-					position, tokenIndex = position920, tokenIndex920
+					position, tokenIndex = position927, tokenIndex927
 				}
-			l921:
+			l928:
 				if buffer[position] != rune(')') {
-					goto l914
+					goto l921
 				}
 				position++
-				add(ruleBaseIndexScale, position915)
+				add(ruleBaseIndexScale, position922)
 			}
 			return true
-		l914:
-			position, tokenIndex = position914, tokenIndex914
+		l921:
+			position, tokenIndex = position921, tokenIndex921
 			return false
 		},
 		/* 57 Operator <- <('+' / '-')> */
 		func() bool {
-			position930, tokenIndex930 := position, tokenIndex
+			position937, tokenIndex937 := position, tokenIndex
 			{
-				position931 := position
+				position938 := position
 				{
-					position932, tokenIndex932 := position, tokenIndex
+					position939, tokenIndex939 := position, tokenIndex
 					if buffer[position] != rune('+') {
-						goto l933
+						goto l940
 					}
 					position++
-					goto l932
-				l933:
-					position, tokenIndex = position932, tokenIndex932
+					goto l939
+				l940:
+					position, tokenIndex = position939, tokenIndex939
 					if buffer[position] != rune('-') {
-						goto l930
+						goto l937
 					}
 					position++
 				}
-			l932:
-				add(ruleOperator, position931)
+			l939:
+				add(ruleOperator, position938)
 			}
 			return true
-		l930:
-			position, tokenIndex = position930, tokenIndex930
+		l937:
+			position, tokenIndex = position937, tokenIndex937
 			return false
 		},
 		/* 58 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
 		func() bool {
-			position934, tokenIndex934 := position, tokenIndex
+			position941, tokenIndex941 := position, tokenIndex
 			{
-				position935 := position
+				position942 := position
 				{
-					position936, tokenIndex936 := position, tokenIndex
+					position943, tokenIndex943 := position, tokenIndex
 					if buffer[position] != rune('+') {
-						goto l936
+						goto l943
 					}
 					position++
-					goto l937
-				l936:
-					position, tokenIndex = position936, tokenIndex936
+					goto l944
+				l943:
+					position, tokenIndex = position943, tokenIndex943
 				}
-			l937:
+			l944:
 				{
-					position938, tokenIndex938 := position, tokenIndex
+					position945, tokenIndex945 := position, tokenIndex
 					if buffer[position] != rune('-') {
-						goto l938
+						goto l945
 					}
 					position++
-					goto l939
-				l938:
-					position, tokenIndex = position938, tokenIndex938
+					goto l946
+				l945:
+					position, tokenIndex = position945, tokenIndex945
 				}
-			l939:
+			l946:
 				{
-					position940, tokenIndex940 := position, tokenIndex
+					position947, tokenIndex947 := position, tokenIndex
 					if buffer[position] != rune('0') {
-						goto l941
+						goto l948
 					}
 					position++
 					{
-						position942, tokenIndex942 := position, tokenIndex
+						position949, tokenIndex949 := position, tokenIndex
 						if buffer[position] != rune('b') {
-							goto l943
-						}
-						position++
-						goto l942
-					l943:
-						position, tokenIndex = position942, tokenIndex942
-						if buffer[position] != rune('B') {
-							goto l941
-						}
-						position++
-					}
-				l942:
-					{
-						position946, tokenIndex946 := position, tokenIndex
-						if buffer[position] != rune('0') {
-							goto l947
-						}
-						position++
-						goto l946
-					l947:
-						position, tokenIndex = position946, tokenIndex946
-						if buffer[position] != rune('1') {
-							goto l941
-						}
-						position++
-					}
-				l946:
-				l944:
-					{
-						position945, tokenIndex945 := position, tokenIndex
-						{
-							position948, tokenIndex948 := position, tokenIndex
-							if buffer[position] != rune('0') {
-								goto l949
-							}
-							position++
-							goto l948
-						l949:
-							position, tokenIndex = position948, tokenIndex948
-							if buffer[position] != rune('1') {
-								goto l945
-							}
-							position++
-						}
-					l948:
-						goto l944
-					l945:
-						position, tokenIndex = position945, tokenIndex945
-					}
-					goto l940
-				l941:
-					position, tokenIndex = position940, tokenIndex940
-					if buffer[position] != rune('0') {
-						goto l950
-					}
-					position++
-					{
-						position951, tokenIndex951 := position, tokenIndex
-						if buffer[position] != rune('x') {
-							goto l952
-						}
-						position++
-						goto l951
-					l952:
-						position, tokenIndex = position951, tokenIndex951
-						if buffer[position] != rune('X') {
 							goto l950
 						}
 						position++
-					}
-				l951:
-					{
-						position955, tokenIndex955 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l956
+						goto l949
+					l950:
+						position, tokenIndex = position949, tokenIndex949
+						if buffer[position] != rune('B') {
+							goto l948
 						}
 						position++
-						goto l955
-					l956:
-						position, tokenIndex = position955, tokenIndex955
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
+					}
+				l949:
+					{
+						position953, tokenIndex953 := position, tokenIndex
+						if buffer[position] != rune('0') {
+							goto l954
+						}
+						position++
+						goto l953
+					l954:
+						position, tokenIndex = position953, tokenIndex953
+						if buffer[position] != rune('1') {
+							goto l948
+						}
+						position++
+					}
+				l953:
+				l951:
+					{
+						position952, tokenIndex952 := position, tokenIndex
+						{
+							position955, tokenIndex955 := position, tokenIndex
+							if buffer[position] != rune('0') {
+								goto l956
+							}
+							position++
+							goto l955
+						l956:
+							position, tokenIndex = position955, tokenIndex955
+							if buffer[position] != rune('1') {
+								goto l952
+							}
+							position++
+						}
+					l955:
+						goto l951
+					l952:
+						position, tokenIndex = position952, tokenIndex952
+					}
+					goto l947
+				l948:
+					position, tokenIndex = position947, tokenIndex947
+					if buffer[position] != rune('0') {
+						goto l957
+					}
+					position++
+					{
+						position958, tokenIndex958 := position, tokenIndex
+						if buffer[position] != rune('x') {
+							goto l959
+						}
+						position++
+						goto l958
+					l959:
+						position, tokenIndex = position958, tokenIndex958
+						if buffer[position] != rune('X') {
 							goto l957
 						}
 						position++
-						goto l955
-					l957:
-						position, tokenIndex = position955, tokenIndex955
-						{
-							position958, tokenIndex958 := position, tokenIndex
-							if c := buffer[position]; c < rune('a') || c > rune('f') {
-								goto l959
-							}
-							position++
-							goto l958
-						l959:
-							position, tokenIndex = position958, tokenIndex958
-							if c := buffer[position]; c < rune('A') || c > rune('F') {
-								goto l950
-							}
-							position++
-						}
-					l958:
 					}
-				l955:
-				l953:
+				l958:
 					{
-						position954, tokenIndex954 := position, tokenIndex
-						{
-							position960, tokenIndex960 := position, tokenIndex
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l961
-							}
-							position++
-							goto l960
-						l961:
-							position, tokenIndex = position960, tokenIndex960
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l962
-							}
-							position++
-							goto l960
-						l962:
-							position, tokenIndex = position960, tokenIndex960
-							{
-								position963, tokenIndex963 := position, tokenIndex
-								if c := buffer[position]; c < rune('a') || c > rune('f') {
-									goto l964
-								}
-								position++
-								goto l963
-							l964:
-								position, tokenIndex = position963, tokenIndex963
-								if c := buffer[position]; c < rune('A') || c > rune('F') {
-									goto l954
-								}
-								position++
-							}
-						l963:
-						}
-					l960:
-						goto l953
-					l954:
-						position, tokenIndex = position954, tokenIndex954
-					}
-					goto l940
-				l950:
-					position, tokenIndex = position940, tokenIndex940
-					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l934
-					}
-					position++
-				l965:
-					{
-						position966, tokenIndex966 := position, tokenIndex
+						position962, tokenIndex962 := position, tokenIndex
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l966
+							goto l963
 						}
 						position++
-						goto l965
-					l966:
-						position, tokenIndex = position966, tokenIndex966
+						goto l962
+					l963:
+						position, tokenIndex = position962, tokenIndex962
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l964
+						}
+						position++
+						goto l962
+					l964:
+						position, tokenIndex = position962, tokenIndex962
+						{
+							position965, tokenIndex965 := position, tokenIndex
+							if c := buffer[position]; c < rune('a') || c > rune('f') {
+								goto l966
+							}
+							position++
+							goto l965
+						l966:
+							position, tokenIndex = position965, tokenIndex965
+							if c := buffer[position]; c < rune('A') || c > rune('F') {
+								goto l957
+							}
+							position++
+						}
+					l965:
+					}
+				l962:
+				l960:
+					{
+						position961, tokenIndex961 := position, tokenIndex
+						{
+							position967, tokenIndex967 := position, tokenIndex
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l968
+							}
+							position++
+							goto l967
+						l968:
+							position, tokenIndex = position967, tokenIndex967
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l969
+							}
+							position++
+							goto l967
+						l969:
+							position, tokenIndex = position967, tokenIndex967
+							{
+								position970, tokenIndex970 := position, tokenIndex
+								if c := buffer[position]; c < rune('a') || c > rune('f') {
+									goto l971
+								}
+								position++
+								goto l970
+							l971:
+								position, tokenIndex = position970, tokenIndex970
+								if c := buffer[position]; c < rune('A') || c > rune('F') {
+									goto l961
+								}
+								position++
+							}
+						l970:
+						}
+					l967:
+						goto l960
+					l961:
+						position, tokenIndex = position961, tokenIndex961
+					}
+					goto l947
+				l957:
+					position, tokenIndex = position947, tokenIndex947
+					if c := buffer[position]; c < rune('0') || c > rune('9') {
+						goto l941
+					}
+					position++
+				l972:
+					{
+						position973, tokenIndex973 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l973
+						}
+						position++
+						goto l972
+					l973:
+						position, tokenIndex = position973, tokenIndex973
 					}
 				}
-			l940:
-				add(ruleOffset, position935)
+			l947:
+				add(ruleOffset, position942)
 			}
 			return true
-		l934:
-			position, tokenIndex = position934, tokenIndex934
+		l941:
+			position, tokenIndex = position941, tokenIndex941
 			return false
 		},
 		/* 59 Section <- <([a-z] / [A-Z] / '@')+> */
 		func() bool {
-			position967, tokenIndex967 := position, tokenIndex
+			position974, tokenIndex974 := position, tokenIndex
 			{
-				position968 := position
+				position975 := position
 				{
-					position971, tokenIndex971 := position, tokenIndex
+					position978, tokenIndex978 := position, tokenIndex
 					if c := buffer[position]; c < rune('a') || c > rune('z') {
-						goto l972
+						goto l979
 					}
 					position++
-					goto l971
-				l972:
-					position, tokenIndex = position971, tokenIndex971
+					goto l978
+				l979:
+					position, tokenIndex = position978, tokenIndex978
 					if c := buffer[position]; c < rune('A') || c > rune('Z') {
-						goto l973
+						goto l980
 					}
 					position++
-					goto l971
-				l973:
-					position, tokenIndex = position971, tokenIndex971
+					goto l978
+				l980:
+					position, tokenIndex = position978, tokenIndex978
 					if buffer[position] != rune('@') {
-						goto l967
+						goto l974
 					}
 					position++
 				}
-			l971:
-			l969:
+			l978:
+			l976:
 				{
-					position970, tokenIndex970 := position, tokenIndex
+					position977, tokenIndex977 := position, tokenIndex
 					{
-						position974, tokenIndex974 := position, tokenIndex
+						position981, tokenIndex981 := position, tokenIndex
 						if c := buffer[position]; c < rune('a') || c > rune('z') {
-							goto l975
+							goto l982
 						}
 						position++
-						goto l974
-					l975:
-						position, tokenIndex = position974, tokenIndex974
+						goto l981
+					l982:
+						position, tokenIndex = position981, tokenIndex981
 						if c := buffer[position]; c < rune('A') || c > rune('Z') {
-							goto l976
+							goto l983
 						}
 						position++
-						goto l974
-					l976:
-						position, tokenIndex = position974, tokenIndex974
+						goto l981
+					l983:
+						position, tokenIndex = position981, tokenIndex981
 						if buffer[position] != rune('@') {
-							goto l970
+							goto l977
 						}
 						position++
 					}
-				l974:
-					goto l969
-				l970:
-					position, tokenIndex = position970, tokenIndex970
+				l981:
+					goto l976
+				l977:
+					position, tokenIndex = position977, tokenIndex977
 				}
-				add(ruleSection, position968)
+				add(ruleSection, position975)
 			}
 			return true
-		l967:
-			position, tokenIndex = position967, tokenIndex967
+		l974:
+			position, tokenIndex = position974, tokenIndex974
 			return false
 		},
 		/* 60 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
 		func() bool {
-			position977, tokenIndex977 := position, tokenIndex
+			position984, tokenIndex984 := position, tokenIndex
 			{
-				position978 := position
+				position985 := position
 				if buffer[position] != rune('%') {
-					goto l977
+					goto l984
 				}
 				position++
 				{
-					position979, tokenIndex979 := position, tokenIndex
+					position986, tokenIndex986 := position, tokenIndex
 					if c := buffer[position]; c < rune('c') || c > rune('g') {
-						goto l980
+						goto l987
 					}
 					position++
-					goto l979
-				l980:
-					position, tokenIndex = position979, tokenIndex979
+					goto l986
+				l987:
+					position, tokenIndex = position986, tokenIndex986
 					if buffer[position] != rune('s') {
-						goto l977
+						goto l984
 					}
 					position++
 				}
-			l979:
+			l986:
 				if buffer[position] != rune('s') {
-					goto l977
+					goto l984
 				}
 				position++
 				if buffer[position] != rune(':') {
-					goto l977
+					goto l984
 				}
 				position++
-				add(ruleSegmentRegister, position978)
+				add(ruleSegmentRegister, position985)
 			}
 			return true
-		l977:
-			position, tokenIndex = position977, tokenIndex977
+		l984:
+			position, tokenIndex = position984, tokenIndex984
 			return false
 		},
 	}
diff --git a/util/fipstools/delocate/testdata/aarch64-Basic/in.s b/util/fipstools/delocate/testdata/aarch64-Basic/in.s
index 114ff4f..f259dc1 100644
--- a/util/fipstools/delocate/testdata/aarch64-Basic/in.s
+++ b/util/fipstools/delocate/testdata/aarch64-Basic/in.s
@@ -81,6 +81,7 @@
 	add w0, w1, b2, sxth
 	add w0, w1, b2, sxtw
 	add w0, w1, b2, sxtx
+	movi v0.4s, #3, msl #8
 
 	// Aarch64 SVE2 added these forms:
 	ld1d { z1.d }, p91/z, [x13, x11, lsl #3]
diff --git a/util/fipstools/delocate/testdata/aarch64-Basic/out.s b/util/fipstools/delocate/testdata/aarch64-Basic/out.s
index d77695d..4a84704 100644
--- a/util/fipstools/delocate/testdata/aarch64-Basic/out.s
+++ b/util/fipstools/delocate/testdata/aarch64-Basic/out.s
@@ -130,6 +130,7 @@
 	add w0, w1, b2, sxth
 	add w0, w1, b2, sxtw
 	add w0, w1, b2, sxtx
+	movi v0.4s, #3, msl #8
 
 	// Aarch64 SVE2 added these forms:
 	ld1d { z1.d }, p91/z, [x13, x11, lsl #3]