delocate: Recognize msl as an ARMConstantTweak

MOVI has a form that's tagged MSL:

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

Change-Id: Ib252966d46a890296aa429e7d6882ef45e8c40ab
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/77067
Reviewed-by: Bob Beck <bbe@google.com>
Commit-Queue: Bob Beck <bbe@google.com>
diff --git a/util/fipstools/delocate/delocate.peg b/util/fipstools/delocate/delocate.peg
index 2112a33..078972e 100644
--- a/util/fipstools/delocate/delocate.peg
+++ b/util/fipstools/delocate/delocate.peg
@@ -88,7 +88,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 b8b3fc9..0ff918c 100644
--- a/util/fipstools/delocate/delocate.peg.go
+++ b/util/fipstools/delocate/delocate.peg.go
@@ -1,6 +1,6 @@
 package main
 
-// Code generated by /usr/local/google/home/davidben/go/bin/peg delocate.peg DO NOT EDIT.
+// Code generated by peg delocate.peg DO NOT EDIT.
 
 import (
 	"fmt"
@@ -5186,7 +5186,7 @@
 			position, tokenIndex = position587, tokenIndex587
 			return false
 		},
-		/* 47 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]))> */
+		/* 47 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 {
 			position629, tokenIndex629 := position, tokenIndex
 			{
@@ -5417,199 +5417,247 @@
 					l659:
 						position, tokenIndex = position633, tokenIndex633
 						{
-							position666, tokenIndex666 := position, tokenIndex
+							position667, tokenIndex667 := position, tokenIndex
 							if buffer[position] != rune('a') {
-								goto l667
+								goto l668
 							}
 							position++
-							goto l666
-						l667:
-							position, tokenIndex = position666, tokenIndex666
+							goto l667
+						l668:
+							position, tokenIndex = position667, tokenIndex667
 							if buffer[position] != rune('A') {
+								goto l666
+							}
+							position++
+						}
+					l667:
+						{
+							position669, tokenIndex669 := position, tokenIndex
+							if buffer[position] != rune('s') {
+								goto l670
+							}
+							position++
+							goto l669
+						l670:
+							position, tokenIndex = position669, tokenIndex669
+							if buffer[position] != rune('S') {
+								goto l666
+							}
+							position++
+						}
+					l669:
+						{
+							position671, tokenIndex671 := position, tokenIndex
+							if buffer[position] != rune('r') {
+								goto l672
+							}
+							position++
+							goto l671
+						l672:
+							position, tokenIndex = position671, tokenIndex671
+							if buffer[position] != rune('R') {
+								goto l666
+							}
+							position++
+						}
+					l671:
+						goto l633
+					l666:
+						position, tokenIndex = position633, tokenIndex633
+						{
+							position673, tokenIndex673 := position, tokenIndex
+							if buffer[position] != rune('m') {
+								goto l674
+							}
+							position++
+							goto l673
+						l674:
+							position, tokenIndex = position673, tokenIndex673
+							if buffer[position] != rune('M') {
 								goto l632
 							}
 							position++
 						}
-					l666:
+					l673:
 						{
-							position668, tokenIndex668 := position, tokenIndex
+							position675, tokenIndex675 := position, tokenIndex
 							if buffer[position] != rune('s') {
-								goto l669
+								goto l676
 							}
 							position++
-							goto l668
-						l669:
-							position, tokenIndex = position668, tokenIndex668
+							goto l675
+						l676:
+							position, tokenIndex = position675, tokenIndex675
 							if buffer[position] != rune('S') {
 								goto l632
 							}
 							position++
 						}
-					l668:
+					l675:
 						{
-							position670, tokenIndex670 := position, tokenIndex
-							if buffer[position] != rune('r') {
-								goto l671
+							position677, tokenIndex677 := position, tokenIndex
+							if buffer[position] != rune('l') {
+								goto l678
 							}
 							position++
-							goto l670
-						l671:
-							position, tokenIndex = position670, tokenIndex670
-							if buffer[position] != rune('R') {
+							goto l677
+						l678:
+							position, tokenIndex = position677, tokenIndex677
+							if buffer[position] != rune('L') {
 								goto l632
 							}
 							position++
 						}
-					l670:
+					l677:
 					}
 				l633:
 					{
-						position672, tokenIndex672 := position, tokenIndex
+						position679, tokenIndex679 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l672
+							goto l679
 						}
 						if buffer[position] != rune('#') {
-							goto l672
+							goto l679
 						}
 						position++
 						if !_rules[ruleOffset]() {
-							goto l672
+							goto l679
 						}
-						goto l673
-					l672:
-						position, tokenIndex = position672, tokenIndex672
+						goto l680
+					l679:
+						position, tokenIndex = position679, tokenIndex679
 					}
-				l673:
+				l680:
 					goto l631
 				l632:
 					position, tokenIndex = position631, tokenIndex631
 					{
-						position675, tokenIndex675 := position, tokenIndex
+						position682, tokenIndex682 := position, tokenIndex
 						if buffer[position] != rune('m') {
-							goto l676
+							goto l683
 						}
 						position++
-						goto l675
-					l676:
-						position, tokenIndex = position675, tokenIndex675
+						goto l682
+					l683:
+						position, tokenIndex = position682, tokenIndex682
 						if buffer[position] != rune('M') {
-							goto l674
+							goto l681
 						}
 						position++
 					}
-				l675:
+				l682:
 					{
-						position677, tokenIndex677 := position, tokenIndex
+						position684, tokenIndex684 := position, tokenIndex
 						if buffer[position] != rune('u') {
-							goto l678
+							goto l685
 						}
 						position++
-						goto l677
-					l678:
-						position, tokenIndex = position677, tokenIndex677
+						goto l684
+					l685:
+						position, tokenIndex = position684, tokenIndex684
 						if buffer[position] != rune('U') {
-							goto l674
+							goto l681
 						}
 						position++
 					}
-				l677:
+				l684:
 					{
-						position679, tokenIndex679 := position, tokenIndex
+						position686, tokenIndex686 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l680
+							goto l687
 						}
 						position++
-						goto l679
-					l680:
-						position, tokenIndex = position679, tokenIndex679
+						goto l686
+					l687:
+						position, tokenIndex = position686, tokenIndex686
 						if buffer[position] != rune('L') {
-							goto l674
+							goto l681
 						}
 						position++
 					}
-				l679:
+				l686:
 					if buffer[position] != rune(' ') {
-						goto l674
+						goto l681
 					}
 					position++
 					{
-						position681, tokenIndex681 := position, tokenIndex
+						position688, tokenIndex688 := position, tokenIndex
 						if buffer[position] != rune('v') {
-							goto l682
+							goto l689
 						}
 						position++
-						goto l681
-					l682:
-						position, tokenIndex = position681, tokenIndex681
+						goto l688
+					l689:
+						position, tokenIndex = position688, tokenIndex688
 						if buffer[position] != rune('V') {
-							goto l674
+							goto l681
 						}
 						position++
 					}
-				l681:
+				l688:
 					{
-						position683, tokenIndex683 := position, tokenIndex
+						position690, tokenIndex690 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l684
+							goto l691
 						}
 						position++
-						goto l683
-					l684:
-						position, tokenIndex = position683, tokenIndex683
+						goto l690
+					l691:
+						position, tokenIndex = position690, tokenIndex690
 						if buffer[position] != rune('L') {
-							goto l674
+							goto l681
 						}
 						position++
 					}
-				l683:
+				l690:
 					goto l631
-				l674:
+				l681:
 					position, tokenIndex = position631, tokenIndex631
 					{
-						position685, tokenIndex685 := position, tokenIndex
+						position692, tokenIndex692 := position, tokenIndex
 						if buffer[position] != rune('m') {
-							goto l686
+							goto l693
 						}
 						position++
-						goto l685
-					l686:
-						position, tokenIndex = position685, tokenIndex685
+						goto l692
+					l693:
+						position, tokenIndex = position692, tokenIndex692
 						if buffer[position] != rune('M') {
 							goto l629
 						}
 						position++
 					}
-				l685:
+				l692:
 					{
-						position687, tokenIndex687 := position, tokenIndex
+						position694, tokenIndex694 := position, tokenIndex
 						if buffer[position] != rune('u') {
-							goto l688
+							goto l695
 						}
 						position++
-						goto l687
-					l688:
-						position, tokenIndex = position687, tokenIndex687
+						goto l694
+					l695:
+						position, tokenIndex = position694, tokenIndex694
 						if buffer[position] != rune('U') {
 							goto l629
 						}
 						position++
 					}
-				l687:
+				l694:
 					{
-						position689, tokenIndex689 := position, tokenIndex
+						position696, tokenIndex696 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l690
+							goto l697
 						}
 						position++
-						goto l689
-					l690:
-						position, tokenIndex = position689, tokenIndex689
+						goto l696
+					l697:
+						position, tokenIndex = position696, tokenIndex696
 						if buffer[position] != rune('L') {
 							goto l629
 						}
 						position++
 					}
-				l689:
+				l696:
 					if buffer[position] != rune(' ') {
 						goto l629
 					}
@@ -5633,170 +5681,122 @@
 		},
 		/* 48 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 {
-			position691, tokenIndex691 := position, tokenIndex
+			position698, tokenIndex698 := position, tokenIndex
 			{
-				position692 := position
+				position699 := position
 				{
-					position693, tokenIndex693 := position, tokenIndex
+					position700, tokenIndex700 := position, tokenIndex
 					{
-						position695, tokenIndex695 := position, tokenIndex
+						position702, tokenIndex702 := position, tokenIndex
 						if buffer[position] != rune('s') {
-							goto l696
-						}
-						position++
-						goto l695
-					l696:
-						position, tokenIndex = position695, tokenIndex695
-						if buffer[position] != rune('S') {
-							goto l694
-						}
-						position++
-					}
-				l695:
-					{
-						position697, tokenIndex697 := position, tokenIndex
-						if buffer[position] != rune('p') {
-							goto l698
-						}
-						position++
-						goto l697
-					l698:
-						position, tokenIndex = position697, tokenIndex697
-						if buffer[position] != rune('P') {
-							goto l694
-						}
-						position++
-					}
-				l697:
-					goto l693
-				l694:
-					position, tokenIndex = position693, tokenIndex693
-					{
-						position700, tokenIndex700 := position, tokenIndex
-						if buffer[position] != rune('x') {
-							goto l701
-						}
-						position++
-						goto l700
-					l701:
-						position, tokenIndex = position700, tokenIndex700
-						if buffer[position] != rune('w') {
-							goto l702
-						}
-						position++
-						goto l700
-					l702:
-						position, tokenIndex = position700, tokenIndex700
-						if buffer[position] != rune('d') {
 							goto l703
 						}
 						position++
-						goto l700
+						goto l702
 					l703:
-						position, tokenIndex = position700, tokenIndex700
-						if buffer[position] != rune('q') {
-							goto l704
+						position, tokenIndex = position702, tokenIndex702
+						if buffer[position] != rune('S') {
+							goto l701
 						}
 						position++
-						goto l700
-					l704:
-						position, tokenIndex = position700, tokenIndex700
-						if buffer[position] != rune('s') {
+					}
+				l702:
+					{
+						position704, tokenIndex704 := position, tokenIndex
+						if buffer[position] != rune('p') {
 							goto l705
 						}
 						position++
-						goto l700
+						goto l704
 					l705:
-						position, tokenIndex = position700, tokenIndex700
-						if buffer[position] != rune('h') {
-							goto l706
-						}
-						position++
-						goto l700
-					l706:
-						position, tokenIndex = position700, tokenIndex700
-						if buffer[position] != rune('b') {
-							goto l699
+						position, tokenIndex = position704, tokenIndex704
+						if buffer[position] != rune('P') {
+							goto l701
 						}
 						position++
 					}
-				l700:
-					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l699
-					}
-					position++
+				l704:
+					goto l700
+				l701:
+					position, tokenIndex = position700, tokenIndex700
 					{
 						position707, tokenIndex707 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l707
+						if buffer[position] != rune('x') {
+							goto l708
 						}
 						position++
-						goto l708
-					l707:
+						goto l707
+					l708:
 						position, tokenIndex = position707, tokenIndex707
-					}
-				l708:
-					goto l693
-				l699:
-					position, tokenIndex = position693, tokenIndex693
-					{
-						position710, tokenIndex710 := position, tokenIndex
-						if buffer[position] != rune('x') {
+						if buffer[position] != rune('w') {
+							goto l709
+						}
+						position++
+						goto l707
+					l709:
+						position, tokenIndex = position707, tokenIndex707
+						if buffer[position] != rune('d') {
+							goto l710
+						}
+						position++
+						goto l707
+					l710:
+						position, tokenIndex = position707, tokenIndex707
+						if buffer[position] != rune('q') {
 							goto l711
 						}
 						position++
-						goto l710
+						goto l707
 					l711:
-						position, tokenIndex = position710, tokenIndex710
-						if buffer[position] != rune('X') {
-							goto l709
+						position, tokenIndex = position707, tokenIndex707
+						if buffer[position] != rune('s') {
+							goto l712
 						}
 						position++
-					}
-				l710:
-					{
-						position712, tokenIndex712 := position, tokenIndex
-						if buffer[position] != rune('z') {
+						goto l707
+					l712:
+						position, tokenIndex = position707, tokenIndex707
+						if buffer[position] != rune('h') {
 							goto l713
 						}
 						position++
-						goto l712
+						goto l707
 					l713:
-						position, tokenIndex = position712, tokenIndex712
-						if buffer[position] != rune('Z') {
-							goto l709
+						position, tokenIndex = position707, tokenIndex707
+						if buffer[position] != rune('b') {
+							goto l706
 						}
 						position++
 					}
-				l712:
+				l707:
+					if c := buffer[position]; c < rune('0') || c > rune('9') {
+						goto l706
+					}
+					position++
 					{
 						position714, tokenIndex714 := position, tokenIndex
-						if buffer[position] != rune('r') {
-							goto l715
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l714
 						}
 						position++
-						goto l714
-					l715:
+						goto l715
+					l714:
 						position, tokenIndex = position714, tokenIndex714
-						if buffer[position] != rune('R') {
-							goto l709
-						}
-						position++
 					}
-				l714:
-					goto l693
-				l709:
-					position, tokenIndex = position693, tokenIndex693
+				l715:
+					goto l700
+				l706:
+					position, tokenIndex = position700, tokenIndex700
 					{
 						position717, tokenIndex717 := position, tokenIndex
-						if buffer[position] != rune('w') {
+						if buffer[position] != rune('x') {
 							goto l718
 						}
 						position++
 						goto l717
 					l718:
 						position, tokenIndex = position717, tokenIndex717
-						if buffer[position] != rune('W') {
+						if buffer[position] != rune('X') {
 							goto l716
 						}
 						position++
@@ -5832,19 +5832,19 @@
 						position++
 					}
 				l721:
-					goto l693
+					goto l700
 				l716:
-					position, tokenIndex = position693, tokenIndex693
+					position, tokenIndex = position700, tokenIndex700
 					{
 						position724, tokenIndex724 := position, tokenIndex
-						if buffer[position] != rune('n') {
+						if buffer[position] != rune('w') {
 							goto l725
 						}
 						position++
 						goto l724
 					l725:
 						position, tokenIndex = position724, tokenIndex724
-						if buffer[position] != rune('N') {
+						if buffer[position] != rune('W') {
 							goto l723
 						}
 						position++
@@ -5867,480 +5867,476 @@
 				l726:
 					{
 						position728, tokenIndex728 := position, tokenIndex
-						if buffer[position] != rune('c') {
+						if buffer[position] != rune('r') {
 							goto l729
 						}
 						position++
 						goto l728
 					l729:
 						position, tokenIndex = position728, tokenIndex728
-						if buffer[position] != rune('C') {
+						if buffer[position] != rune('R') {
 							goto l723
 						}
 						position++
 					}
 				l728:
-					{
-						position730, tokenIndex730 := position, tokenIndex
-						if buffer[position] != rune('v') {
-							goto l731
-						}
-						position++
-						goto l730
-					l731:
-						position, tokenIndex = position730, tokenIndex730
-						if buffer[position] != rune('V') {
-							goto l723
-						}
-						position++
-					}
-				l730:
-					goto l693
+					goto l700
 				l723:
-					position, tokenIndex = position693, tokenIndex693
-					if !_rules[ruleSVE2PredicateRegister]() {
-						goto l732
+					position, tokenIndex = position700, tokenIndex700
+					{
+						position731, tokenIndex731 := position, tokenIndex
+						if buffer[position] != rune('n') {
+							goto l732
+						}
+						position++
+						goto l731
+					l732:
+						position, tokenIndex = position731, tokenIndex731
+						if buffer[position] != rune('N') {
+							goto l730
+						}
+						position++
 					}
-					goto l693
-				l732:
-					position, tokenIndex = position693, tokenIndex693
-					if !_rules[ruleARMVectorRegister]() {
+				l731:
+					{
+						position733, tokenIndex733 := position, tokenIndex
+						if buffer[position] != rune('z') {
+							goto l734
+						}
+						position++
 						goto l733
+					l734:
+						position, tokenIndex = position733, tokenIndex733
+						if buffer[position] != rune('Z') {
+							goto l730
+						}
+						position++
 					}
-					goto l693
 				l733:
-					position, tokenIndex = position693, tokenIndex693
-					if !_rules[ruleSVE2SpecialValue]() {
-						goto l734
+					{
+						position735, tokenIndex735 := position, tokenIndex
+						if buffer[position] != rune('c') {
+							goto l736
+						}
+						position++
+						goto l735
+					l736:
+						position, tokenIndex = position735, tokenIndex735
+						if buffer[position] != rune('C') {
+							goto l730
+						}
+						position++
 					}
-					goto l693
-				l734:
-					position, tokenIndex = position693, tokenIndex693
+				l735:
+					{
+						position737, tokenIndex737 := position, tokenIndex
+						if buffer[position] != rune('v') {
+							goto l738
+						}
+						position++
+						goto l737
+					l738:
+						position, tokenIndex = position737, tokenIndex737
+						if buffer[position] != rune('V') {
+							goto l730
+						}
+						position++
+					}
+				l737:
+					goto l700
+				l730:
+					position, tokenIndex = position700, tokenIndex700
+					if !_rules[ruleSVE2PredicateRegister]() {
+						goto l739
+					}
+					goto l700
+				l739:
+					position, tokenIndex = position700, tokenIndex700
+					if !_rules[ruleARMVectorRegister]() {
+						goto l740
+					}
+					goto l700
+				l740:
+					position, tokenIndex = position700, tokenIndex700
+					if !_rules[ruleSVE2SpecialValue]() {
+						goto l741
+					}
+					goto l700
+				l741:
+					position, tokenIndex = position700, tokenIndex700
 					if buffer[position] != rune('{') {
-						goto l691
+						goto l698
 					}
 					position++
 					{
-						position735, tokenIndex735 := position, tokenIndex
+						position742, tokenIndex742 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l735
+							goto l742
 						}
-						goto l736
-					l735:
-						position, tokenIndex = position735, tokenIndex735
+						goto l743
+					l742:
+						position, tokenIndex = position742, tokenIndex742
 					}
-				l736:
+				l743:
 					if !_rules[ruleARMVectorRegister]() {
-						goto l691
+						goto l698
 					}
-				l737:
+				l744:
 					{
-						position738, tokenIndex738 := position, tokenIndex
+						position745, tokenIndex745 := position, tokenIndex
 						if buffer[position] != rune(',') {
-							goto l738
+							goto l745
 						}
 						position++
 						{
-							position739, tokenIndex739 := position, tokenIndex
+							position746, tokenIndex746 := position, tokenIndex
 							if !_rules[ruleWS]() {
-								goto l739
+								goto l746
 							}
-							goto l740
-						l739:
-							position, tokenIndex = position739, tokenIndex739
+							goto l747
+						l746:
+							position, tokenIndex = position746, tokenIndex746
 						}
-					l740:
+					l747:
 						if !_rules[ruleARMVectorRegister]() {
-							goto l738
+							goto l745
 						}
-						goto l737
-					l738:
-						position, tokenIndex = position738, tokenIndex738
+						goto l744
+					l745:
+						position, tokenIndex = position745, tokenIndex745
 					}
 					{
-						position741, tokenIndex741 := position, tokenIndex
+						position748, tokenIndex748 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l741
+							goto l748
 						}
-						goto l742
-					l741:
-						position, tokenIndex = position741, tokenIndex741
+						goto l749
+					l748:
+						position, tokenIndex = position748, tokenIndex748
 					}
-				l742:
+				l749:
 					if buffer[position] != rune('}') {
-						goto l691
+						goto l698
 					}
 					position++
 					{
-						position743, tokenIndex743 := position, tokenIndex
+						position750, tokenIndex750 := position, tokenIndex
 						if buffer[position] != rune('[') {
-							goto l743
+							goto l750
 						}
 						position++
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l743
+							goto l750
 						}
 						position++
 						{
-							position745, tokenIndex745 := position, tokenIndex
+							position752, tokenIndex752 := position, tokenIndex
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l745
+								goto l752
 							}
 							position++
-							goto l746
-						l745:
-							position, tokenIndex = position745, tokenIndex745
+							goto l753
+						l752:
+							position, tokenIndex = position752, tokenIndex752
 						}
-					l746:
+					l753:
 						if buffer[position] != rune(']') {
-							goto l743
+							goto l750
 						}
 						position++
-						goto l744
-					l743:
-						position, tokenIndex = position743, tokenIndex743
+						goto l751
+					l750:
+						position, tokenIndex = position750, tokenIndex750
 					}
-				l744:
+				l751:
 				}
-			l693:
-				add(ruleARMRegister, position692)
+			l700:
+				add(ruleARMRegister, position699)
 			}
 			return true
-		l691:
-			position, tokenIndex = position691, tokenIndex691
+		l698:
+			position, tokenIndex = position698, tokenIndex698
 			return false
 		},
 		/* 49 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 {
-			position747, tokenIndex747 := position, tokenIndex
+			position754, tokenIndex754 := position, tokenIndex
 			{
-				position748 := position
+				position755 := position
 				{
-					position749, tokenIndex749 := position, tokenIndex
+					position756, tokenIndex756 := position, tokenIndex
 					if buffer[position] != rune('p') {
-						goto l750
+						goto l757
 					}
 					position++
-					goto l749
-				l750:
-					position, tokenIndex = position749, tokenIndex749
+					goto l756
+				l757:
+					position, tokenIndex = position756, tokenIndex756
 					if buffer[position] != rune('v') {
-						goto l751
+						goto l758
 					}
 					position++
-					goto l749
-				l751:
-					position, tokenIndex = position749, tokenIndex749
+					goto l756
+				l758:
+					position, tokenIndex = position756, tokenIndex756
 					if buffer[position] != rune('z') {
-						goto l747
+						goto l754
 					}
 					position++
 				}
-			l749:
+			l756:
 				if c := buffer[position]; c < rune('0') || c > rune('9') {
-					goto l747
+					goto l754
 				}
 				position++
 				{
-					position752, tokenIndex752 := position, tokenIndex
+					position759, tokenIndex759 := position, tokenIndex
 					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l752
+						goto l759
 					}
 					position++
-					goto l753
-				l752:
-					position, tokenIndex = position752, tokenIndex752
+					goto l760
+				l759:
+					position, tokenIndex = position759, tokenIndex759
 				}
-			l753:
-				{
-					position754, tokenIndex754 := position, tokenIndex
-					{
-						position755, tokenIndex755 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l756
-						}
-						position++
-						goto l755
-					l756:
-						position, tokenIndex = position755, tokenIndex755
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l757
-						}
-						position++
-						goto l755
-					l757:
-						position, tokenIndex = position755, tokenIndex755
-						{
-							position759, tokenIndex759 := position, tokenIndex
-							if c := buffer[position]; c < rune('a') || c > rune('z') {
-								goto l760
-							}
-							position++
-							goto l759
-						l760:
-							position, tokenIndex = position759, tokenIndex759
-							if c := buffer[position]; c < rune('A') || c > rune('Z') {
-								goto l758
-							}
-							position++
-						}
-					l759:
-						goto l755
-					l758:
-						position, tokenIndex = position755, tokenIndex755
-						if buffer[position] != rune('_') {
-							goto l754
-						}
-						position++
-					}
-				l755:
-					goto l747
-				l754:
-					position, tokenIndex = position754, tokenIndex754
-				}
+			l760:
 				{
 					position761, tokenIndex761 := position, tokenIndex
-					if buffer[position] != rune('.') {
-						goto l761
-					}
-					position++
-				l763:
 					{
-						position764, tokenIndex764 := position, tokenIndex
+						position762, tokenIndex762 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l763
+						}
+						position++
+						goto l762
+					l763:
+						position, tokenIndex = position762, tokenIndex762
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
 							goto l764
 						}
 						position++
-						goto l763
+						goto l762
 					l764:
-						position, tokenIndex = position764, tokenIndex764
-					}
-					{
-						position765, tokenIndex765 := position, tokenIndex
-						if buffer[position] != rune('b') {
+						position, tokenIndex = position762, tokenIndex762
+						{
+							position766, tokenIndex766 := position, tokenIndex
+							if c := buffer[position]; c < rune('a') || c > rune('z') {
+								goto l767
+							}
+							position++
 							goto l766
+						l767:
+							position, tokenIndex = position766, tokenIndex766
+							if c := buffer[position]; c < rune('A') || c > rune('Z') {
+								goto l765
+							}
+							position++
 						}
-						position++
-						goto l765
 					l766:
-						position, tokenIndex = position765, tokenIndex765
-						if buffer[position] != rune('s') {
-							goto l767
-						}
-						position++
-						goto l765
-					l767:
-						position, tokenIndex = position765, tokenIndex765
-						if buffer[position] != rune('d') {
-							goto l768
-						}
-						position++
-						goto l765
-					l768:
-						position, tokenIndex = position765, tokenIndex765
-						if buffer[position] != rune('h') {
-							goto l769
-						}
-						position++
-						goto l765
-					l769:
-						position, tokenIndex = position765, tokenIndex765
-						if buffer[position] != rune('q') {
+						goto l762
+					l765:
+						position, tokenIndex = position762, tokenIndex762
+						if buffer[position] != rune('_') {
 							goto l761
 						}
 						position++
 					}
-				l765:
-					{
-						position770, tokenIndex770 := position, tokenIndex
-						if buffer[position] != rune('[') {
-							goto l770
-						}
-						position++
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l770
-						}
-						position++
-						{
-							position772, tokenIndex772 := position, tokenIndex
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l772
-							}
-							position++
-							goto l773
-						l772:
-							position, tokenIndex = position772, tokenIndex772
-						}
-					l773:
-						if buffer[position] != rune(']') {
-							goto l770
-						}
-						position++
-						goto l771
-					l770:
-						position, tokenIndex = position770, tokenIndex770
-					}
-				l771:
-					goto l762
+				l762:
+					goto l754
 				l761:
 					position, tokenIndex = position761, tokenIndex761
 				}
-			l762:
-				add(ruleARMVectorRegister, position748)
+				{
+					position768, tokenIndex768 := position, tokenIndex
+					if buffer[position] != rune('.') {
+						goto l768
+					}
+					position++
+				l770:
+					{
+						position771, tokenIndex771 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l771
+						}
+						position++
+						goto l770
+					l771:
+						position, tokenIndex = position771, tokenIndex771
+					}
+					{
+						position772, tokenIndex772 := position, tokenIndex
+						if buffer[position] != rune('b') {
+							goto l773
+						}
+						position++
+						goto l772
+					l773:
+						position, tokenIndex = position772, tokenIndex772
+						if buffer[position] != rune('s') {
+							goto l774
+						}
+						position++
+						goto l772
+					l774:
+						position, tokenIndex = position772, tokenIndex772
+						if buffer[position] != rune('d') {
+							goto l775
+						}
+						position++
+						goto l772
+					l775:
+						position, tokenIndex = position772, tokenIndex772
+						if buffer[position] != rune('h') {
+							goto l776
+						}
+						position++
+						goto l772
+					l776:
+						position, tokenIndex = position772, tokenIndex772
+						if buffer[position] != rune('q') {
+							goto l768
+						}
+						position++
+					}
+				l772:
+					{
+						position777, tokenIndex777 := position, tokenIndex
+						if buffer[position] != rune('[') {
+							goto l777
+						}
+						position++
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l777
+						}
+						position++
+						{
+							position779, tokenIndex779 := position, tokenIndex
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l779
+							}
+							position++
+							goto l780
+						l779:
+							position, tokenIndex = position779, tokenIndex779
+						}
+					l780:
+						if buffer[position] != rune(']') {
+							goto l777
+						}
+						position++
+						goto l778
+					l777:
+						position, tokenIndex = position777, tokenIndex777
+					}
+				l778:
+					goto l769
+				l768:
+					position, tokenIndex = position768, tokenIndex768
+				}
+			l769:
+				add(ruleARMVectorRegister, position755)
 			}
 			return true
-		l747:
-			position, tokenIndex = position747, tokenIndex747
+		l754:
+			position, tokenIndex = position754, tokenIndex754
 			return false
 		},
 		/* 50 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / ('z' / 'Z')))> */
 		func() bool {
-			position774, tokenIndex774 := position, tokenIndex
+			position781, tokenIndex781 := position, tokenIndex
 			{
-				position775 := position
+				position782 := position
 				{
-					position776, tokenIndex776 := position, tokenIndex
+					position783, tokenIndex783 := position, tokenIndex
 					if buffer[position] != rune('p') {
-						goto l777
+						goto l784
 					}
 					position++
-					goto l776
-				l777:
-					position, tokenIndex = position776, tokenIndex776
+					goto l783
+				l784:
+					position, tokenIndex = position783, tokenIndex783
 					if buffer[position] != rune('P') {
-						goto l774
-					}
-					position++
-				}
-			l776:
-				if c := buffer[position]; c < rune('0') || c > rune('9') {
-					goto l774
-				}
-				position++
-				{
-					position778, tokenIndex778 := position, tokenIndex
-					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l778
-					}
-					position++
-					goto l779
-				l778:
-					position, tokenIndex = position778, tokenIndex778
-				}
-			l779:
-				if buffer[position] != rune('/') {
-					goto l774
-				}
-				position++
-				{
-					position780, tokenIndex780 := position, tokenIndex
-					if buffer[position] != rune('m') {
 						goto l781
 					}
 					position++
-					goto l780
-				l781:
-					position, tokenIndex = position780, tokenIndex780
-					if buffer[position] != rune('M') {
-						goto l782
+				}
+			l783:
+				if c := buffer[position]; c < rune('0') || c > rune('9') {
+					goto l781
+				}
+				position++
+				{
+					position785, tokenIndex785 := position, tokenIndex
+					if c := buffer[position]; c < rune('0') || c > rune('9') {
+						goto l785
 					}
 					position++
-					goto l780
-				l782:
-					position, tokenIndex = position780, tokenIndex780
-					{
-						position783, tokenIndex783 := position, tokenIndex
-						if buffer[position] != rune('z') {
-							goto l784
-						}
-						position++
-						goto l783
-					l784:
-						position, tokenIndex = position783, tokenIndex783
-						if buffer[position] != rune('Z') {
-							goto l774
-						}
-						position++
-					}
-				l783:
+					goto l786
+				l785:
+					position, tokenIndex = position785, tokenIndex785
 				}
-			l780:
-				add(ruleSVE2PredicateRegister, position775)
-			}
-			return true
-		l774:
-			position, tokenIndex = position774, tokenIndex774
-			return false
-		},
-		/* 51 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 {
-			position785, tokenIndex785 := position, tokenIndex
-			{
-				position786 := position
+			l786:
+				if buffer[position] != rune('/') {
+					goto l781
+				}
+				position++
 				{
 					position787, tokenIndex787 := position, tokenIndex
-					{
-						position789, tokenIndex789 := position, tokenIndex
-						if buffer[position] != rune('p') {
-							goto l790
-						}
-						position++
-						goto l789
-					l790:
-						position, tokenIndex = position789, tokenIndex789
-						if buffer[position] != rune('P') {
-							goto l788
-						}
-						position++
-					}
-				l789:
-					{
-						position791, tokenIndex791 := position, tokenIndex
-						if buffer[position] != rune('o') {
-							goto l792
-						}
-						position++
-						goto l791
-					l792:
-						position, tokenIndex = position791, tokenIndex791
-						if buffer[position] != rune('O') {
-							goto l788
-						}
-						position++
-					}
-				l791:
-					{
-						position793, tokenIndex793 := position, tokenIndex
-						if buffer[position] != rune('w') {
-							goto l794
-						}
-						position++
-						goto l793
-					l794:
-						position, tokenIndex = position793, tokenIndex793
-						if buffer[position] != rune('W') {
-							goto l788
-						}
-						position++
-					}
-				l793:
-					if buffer[position] != rune('2') {
+					if buffer[position] != rune('m') {
 						goto l788
 					}
 					position++
 					goto l787
 				l788:
 					position, tokenIndex = position787, tokenIndex787
+					if buffer[position] != rune('M') {
+						goto l789
+					}
+					position++
+					goto l787
+				l789:
+					position, tokenIndex = position787, tokenIndex787
+					{
+						position790, tokenIndex790 := position, tokenIndex
+						if buffer[position] != rune('z') {
+							goto l791
+						}
+						position++
+						goto l790
+					l791:
+						position, tokenIndex = position790, tokenIndex790
+						if buffer[position] != rune('Z') {
+							goto l781
+						}
+						position++
+					}
+				l790:
+				}
+			l787:
+				add(ruleSVE2PredicateRegister, position782)
+			}
+			return true
+		l781:
+			position, tokenIndex = position781, tokenIndex781
+			return false
+		},
+		/* 51 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 {
+			position792, tokenIndex792 := position, tokenIndex
+			{
+				position793 := position
+				{
+					position794, tokenIndex794 := position, tokenIndex
 					{
 						position796, tokenIndex796 := position, tokenIndex
-						if buffer[position] != rune('v') {
+						if buffer[position] != rune('p') {
 							goto l797
 						}
 						position++
 						goto l796
 					l797:
 						position, tokenIndex = position796, tokenIndex796
-						if buffer[position] != rune('V') {
+						if buffer[position] != rune('P') {
 							goto l795
 						}
 						position++
@@ -6348,14 +6344,14 @@
 				l796:
 					{
 						position798, tokenIndex798 := position, tokenIndex
-						if buffer[position] != rune('l') {
+						if buffer[position] != rune('o') {
 							goto l799
 						}
 						position++
 						goto l798
 					l799:
 						position, tokenIndex = position798, tokenIndex798
-						if buffer[position] != rune('L') {
+						if buffer[position] != rune('O') {
 							goto l795
 						}
 						position++
@@ -6363,313 +6359,305 @@
 				l798:
 					{
 						position800, tokenIndex800 := position, tokenIndex
-						if buffer[position] != rune('1') {
+						if buffer[position] != rune('w') {
 							goto l801
 						}
 						position++
 						goto l800
 					l801:
 						position, tokenIndex = position800, tokenIndex800
-						if buffer[position] != rune('2') {
-							goto l802
-						}
-						position++
-						goto l800
-					l802:
-						position, tokenIndex = position800, tokenIndex800
-						if buffer[position] != rune('3') {
-							goto l803
-						}
-						position++
-						goto l800
-					l803:
-						position, tokenIndex = position800, tokenIndex800
-						if buffer[position] != rune('4') {
-							goto l804
-						}
-						position++
-						goto l800
-					l804:
-						position, tokenIndex = position800, tokenIndex800
-						if buffer[position] != rune('5') {
-							goto l805
-						}
-						position++
-						goto l800
-					l805:
-						position, tokenIndex = position800, tokenIndex800
-						if buffer[position] != rune('6') {
-							goto l806
-						}
-						position++
-						goto l800
-					l806:
-						position, tokenIndex = position800, tokenIndex800
-						if buffer[position] != rune('7') {
-							goto l807
-						}
-						position++
-						goto l800
-					l807:
-						position, tokenIndex = position800, tokenIndex800
-						if buffer[position] != rune('8') {
+						if buffer[position] != rune('W') {
 							goto l795
 						}
 						position++
 					}
 				l800:
+					if buffer[position] != rune('2') {
+						goto l795
+					}
+					position++
+					goto l794
+				l795:
+					position, tokenIndex = position794, tokenIndex794
 					{
-						position808, tokenIndex808 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
+						position803, tokenIndex803 := position, tokenIndex
+						if buffer[position] != rune('v') {
+							goto l804
+						}
+						position++
+						goto l803
+					l804:
+						position, tokenIndex = position803, tokenIndex803
+						if buffer[position] != rune('V') {
+							goto l802
+						}
+						position++
+					}
+				l803:
+					{
+						position805, tokenIndex805 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l806
+						}
+						position++
+						goto l805
+					l806:
+						position, tokenIndex = position805, tokenIndex805
+						if buffer[position] != rune('L') {
+							goto l802
+						}
+						position++
+					}
+				l805:
+					{
+						position807, tokenIndex807 := position, tokenIndex
+						if buffer[position] != rune('1') {
 							goto l808
 						}
 						position++
-						goto l795
+						goto l807
 					l808:
-						position, tokenIndex = position808, tokenIndex808
-					}
-					goto l787
-				l795:
-					position, tokenIndex = position787, tokenIndex787
-					{
-						position810, tokenIndex810 := position, tokenIndex
-						if buffer[position] != rune('v') {
+						position, tokenIndex = position807, tokenIndex807
+						if buffer[position] != rune('2') {
+							goto l809
+						}
+						position++
+						goto l807
+					l809:
+						position, tokenIndex = position807, tokenIndex807
+						if buffer[position] != rune('3') {
+							goto l810
+						}
+						position++
+						goto l807
+					l810:
+						position, tokenIndex = position807, tokenIndex807
+						if buffer[position] != rune('4') {
 							goto l811
 						}
 						position++
-						goto l810
+						goto l807
 					l811:
-						position, tokenIndex = position810, tokenIndex810
-						if buffer[position] != rune('V') {
-							goto l809
+						position, tokenIndex = position807, tokenIndex807
+						if buffer[position] != rune('5') {
+							goto l812
 						}
 						position++
-					}
-				l810:
-					{
-						position812, tokenIndex812 := position, tokenIndex
-						if buffer[position] != rune('l') {
+						goto l807
+					l812:
+						position, tokenIndex = position807, tokenIndex807
+						if buffer[position] != rune('6') {
 							goto l813
 						}
 						position++
-						goto l812
+						goto l807
 					l813:
-						position, tokenIndex = position812, tokenIndex812
-						if buffer[position] != rune('L') {
-							goto l809
-						}
-						position++
-					}
-				l812:
-					if buffer[position] != rune('1') {
-						goto l809
-					}
-					position++
-					if buffer[position] != rune('6') {
-						goto l809
-					}
-					position++
-					goto l787
-				l809:
-					position, tokenIndex = position787, tokenIndex787
-					{
-						position815, tokenIndex815 := position, tokenIndex
-						if buffer[position] != rune('v') {
-							goto l816
-						}
-						position++
-						goto l815
-					l816:
-						position, tokenIndex = position815, tokenIndex815
-						if buffer[position] != rune('V') {
+						position, tokenIndex = position807, tokenIndex807
+						if buffer[position] != rune('7') {
 							goto l814
 						}
 						position++
+						goto l807
+					l814:
+						position, tokenIndex = position807, tokenIndex807
+						if buffer[position] != rune('8') {
+							goto l802
+						}
+						position++
 					}
-				l815:
+				l807:
+					{
+						position815, tokenIndex815 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l815
+						}
+						position++
+						goto l802
+					l815:
+						position, tokenIndex = position815, tokenIndex815
+					}
+					goto l794
+				l802:
+					position, tokenIndex = position794, tokenIndex794
 					{
 						position817, tokenIndex817 := position, tokenIndex
-						if buffer[position] != rune('l') {
+						if buffer[position] != rune('v') {
 							goto l818
 						}
 						position++
 						goto l817
 					l818:
 						position, tokenIndex = position817, tokenIndex817
-						if buffer[position] != rune('L') {
-							goto l814
+						if buffer[position] != rune('V') {
+							goto l816
 						}
 						position++
 					}
 				l817:
-					if buffer[position] != rune('3') {
-						goto l814
-					}
-					position++
-					if buffer[position] != rune('2') {
-						goto l814
-					}
-					position++
-					goto l787
-				l814:
-					position, tokenIndex = position787, tokenIndex787
 					{
-						position820, tokenIndex820 := position, tokenIndex
-						if buffer[position] != rune('v') {
-							goto l821
+						position819, tokenIndex819 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l820
 						}
 						position++
-						goto l820
-					l821:
-						position, tokenIndex = position820, tokenIndex820
-						if buffer[position] != rune('V') {
-							goto l819
+						goto l819
+					l820:
+						position, tokenIndex = position819, tokenIndex819
+						if buffer[position] != rune('L') {
+							goto l816
 						}
 						position++
 					}
-				l820:
+				l819:
+					if buffer[position] != rune('1') {
+						goto l816
+					}
+					position++
+					if buffer[position] != rune('6') {
+						goto l816
+					}
+					position++
+					goto l794
+				l816:
+					position, tokenIndex = position794, tokenIndex794
 					{
 						position822, tokenIndex822 := position, tokenIndex
-						if buffer[position] != rune('l') {
+						if buffer[position] != rune('v') {
 							goto l823
 						}
 						position++
 						goto l822
 					l823:
 						position, tokenIndex = position822, tokenIndex822
-						if buffer[position] != rune('L') {
-							goto l819
+						if buffer[position] != rune('V') {
+							goto l821
 						}
 						position++
 					}
 				l822:
-					if buffer[position] != rune('6') {
-						goto l819
-					}
-					position++
-					if buffer[position] != rune('4') {
-						goto l819
-					}
-					position++
-					goto l787
-				l819:
-					position, tokenIndex = position787, tokenIndex787
 					{
-						position825, tokenIndex825 := position, tokenIndex
-						if buffer[position] != rune('v') {
-							goto l826
+						position824, tokenIndex824 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l825
 						}
 						position++
-						goto l825
-					l826:
-						position, tokenIndex = position825, tokenIndex825
-						if buffer[position] != rune('V') {
-							goto l824
+						goto l824
+					l825:
+						position, tokenIndex = position824, tokenIndex824
+						if buffer[position] != rune('L') {
+							goto l821
 						}
 						position++
 					}
-				l825:
+				l824:
+					if buffer[position] != rune('3') {
+						goto l821
+					}
+					position++
+					if buffer[position] != rune('2') {
+						goto l821
+					}
+					position++
+					goto l794
+				l821:
+					position, tokenIndex = position794, tokenIndex794
 					{
 						position827, tokenIndex827 := position, tokenIndex
-						if buffer[position] != rune('l') {
+						if buffer[position] != rune('v') {
 							goto l828
 						}
 						position++
 						goto l827
 					l828:
 						position, tokenIndex = position827, tokenIndex827
-						if buffer[position] != rune('L') {
-							goto l824
+						if buffer[position] != rune('V') {
+							goto l826
 						}
 						position++
 					}
 				l827:
-					if buffer[position] != rune('1') {
-						goto l824
-					}
-					position++
-					if buffer[position] != rune('2') {
-						goto l824
-					}
-					position++
-					if buffer[position] != rune('8') {
-						goto l824
-					}
-					position++
-					goto l787
-				l824:
-					position, tokenIndex = position787, tokenIndex787
 					{
-						position830, tokenIndex830 := position, tokenIndex
-						if buffer[position] != rune('v') {
-							goto l831
+						position829, tokenIndex829 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l830
 						}
 						position++
-						goto l830
-					l831:
-						position, tokenIndex = position830, tokenIndex830
-						if buffer[position] != rune('V') {
-							goto l829
+						goto l829
+					l830:
+						position, tokenIndex = position829, tokenIndex829
+						if buffer[position] != rune('L') {
+							goto l826
 						}
 						position++
 					}
-				l830:
+				l829:
+					if buffer[position] != rune('6') {
+						goto l826
+					}
+					position++
+					if buffer[position] != rune('4') {
+						goto l826
+					}
+					position++
+					goto l794
+				l826:
+					position, tokenIndex = position794, tokenIndex794
 					{
 						position832, tokenIndex832 := position, tokenIndex
-						if buffer[position] != rune('l') {
+						if buffer[position] != rune('v') {
 							goto l833
 						}
 						position++
 						goto l832
 					l833:
 						position, tokenIndex = position832, tokenIndex832
-						if buffer[position] != rune('L') {
-							goto l829
+						if buffer[position] != rune('V') {
+							goto l831
 						}
 						position++
 					}
 				l832:
-					if buffer[position] != rune('2') {
-						goto l829
-					}
-					position++
-					if buffer[position] != rune('5') {
-						goto l829
-					}
-					position++
-					if buffer[position] != rune('6') {
-						goto l829
-					}
-					position++
-					goto l787
-				l829:
-					position, tokenIndex = position787, tokenIndex787
 					{
-						position835, tokenIndex835 := position, tokenIndex
-						if buffer[position] != rune('m') {
-							goto l836
+						position834, tokenIndex834 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l835
 						}
 						position++
-						goto l835
-					l836:
-						position, tokenIndex = position835, tokenIndex835
-						if buffer[position] != rune('M') {
-							goto l834
+						goto l834
+					l835:
+						position, tokenIndex = position834, tokenIndex834
+						if buffer[position] != rune('L') {
+							goto l831
 						}
 						position++
 					}
-				l835:
+				l834:
+					if buffer[position] != rune('1') {
+						goto l831
+					}
+					position++
+					if buffer[position] != rune('2') {
+						goto l831
+					}
+					position++
+					if buffer[position] != rune('8') {
+						goto l831
+					}
+					position++
+					goto l794
+				l831:
+					position, tokenIndex = position794, tokenIndex794
 					{
 						position837, tokenIndex837 := position, tokenIndex
-						if buffer[position] != rune('u') {
+						if buffer[position] != rune('v') {
 							goto l838
 						}
 						position++
 						goto l837
 					l838:
 						position, tokenIndex = position837, tokenIndex837
-						if buffer[position] != rune('U') {
-							goto l834
+						if buffer[position] != rune('V') {
+							goto l836
 						}
 						position++
 					}
@@ -6684,18 +6672,26 @@
 					l840:
 						position, tokenIndex = position839, tokenIndex839
 						if buffer[position] != rune('L') {
-							goto l834
+							goto l836
 						}
 						position++
 					}
 				l839:
-					if buffer[position] != rune('3') {
-						goto l834
+					if buffer[position] != rune('2') {
+						goto l836
 					}
 					position++
-					goto l787
-				l834:
-					position, tokenIndex = position787, tokenIndex787
+					if buffer[position] != rune('5') {
+						goto l836
+					}
+					position++
+					if buffer[position] != rune('6') {
+						goto l836
+					}
+					position++
+					goto l794
+				l836:
+					position, tokenIndex = position794, tokenIndex794
 					{
 						position842, tokenIndex842 := position, tokenIndex
 						if buffer[position] != rune('m') {
@@ -6741,1140 +6737,1192 @@
 						position++
 					}
 				l846:
-					if buffer[position] != rune('4') {
+					if buffer[position] != rune('3') {
 						goto l841
 					}
 					position++
-					goto l787
+					goto l794
 				l841:
-					position, tokenIndex = position787, tokenIndex787
+					position, tokenIndex = position794, tokenIndex794
 					{
-						position848, tokenIndex848 := position, tokenIndex
-						if buffer[position] != rune('a') {
-							goto l849
+						position849, tokenIndex849 := position, tokenIndex
+						if buffer[position] != rune('m') {
+							goto l850
 						}
 						position++
+						goto l849
+					l850:
+						position, tokenIndex = position849, tokenIndex849
+						if buffer[position] != rune('M') {
+							goto l848
+						}
+						position++
+					}
+				l849:
+					{
+						position851, tokenIndex851 := position, tokenIndex
+						if buffer[position] != rune('u') {
+							goto l852
+						}
+						position++
+						goto l851
+					l852:
+						position, tokenIndex = position851, tokenIndex851
+						if buffer[position] != rune('U') {
+							goto l848
+						}
+						position++
+					}
+				l851:
+					{
+						position853, tokenIndex853 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l854
+						}
+						position++
+						goto l853
+					l854:
+						position, tokenIndex = position853, tokenIndex853
+						if buffer[position] != rune('L') {
+							goto l848
+						}
+						position++
+					}
+				l853:
+					if buffer[position] != rune('4') {
 						goto l848
-					l849:
-						position, tokenIndex = position848, tokenIndex848
-						if buffer[position] != rune('A') {
-							goto l785
-						}
-						position++
 					}
+					position++
+					goto l794
 				l848:
-					{
-						position850, tokenIndex850 := position, tokenIndex
-						if buffer[position] != rune('l') {
-							goto l851
-						}
-						position++
-						goto l850
-					l851:
-						position, tokenIndex = position850, tokenIndex850
-						if buffer[position] != rune('L') {
-							goto l785
-						}
-						position++
-					}
-				l850:
-					{
-						position852, tokenIndex852 := position, tokenIndex
-						if buffer[position] != rune('l') {
-							goto l853
-						}
-						position++
-						goto l852
-					l853:
-						position, tokenIndex = position852, tokenIndex852
-						if buffer[position] != rune('L') {
-							goto l785
-						}
-						position++
-					}
-				l852:
-				}
-			l787:
-				{
-					position854, tokenIndex854 := position, tokenIndex
+					position, tokenIndex = position794, tokenIndex794
 					{
 						position855, tokenIndex855 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
+						if buffer[position] != rune('a') {
 							goto l856
 						}
 						position++
 						goto l855
 					l856:
 						position, tokenIndex = position855, tokenIndex855
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l857
-						}
-						position++
-						goto l855
-					l857:
-						position, tokenIndex = position855, tokenIndex855
-						{
-							position859, tokenIndex859 := position, tokenIndex
-							if c := buffer[position]; c < rune('a') || c > rune('z') {
-								goto l860
-							}
-							position++
-							goto l859
-						l860:
-							position, tokenIndex = position859, tokenIndex859
-							if c := buffer[position]; c < rune('A') || c > rune('Z') {
-								goto l858
-							}
-							position++
-						}
-					l859:
-						goto l855
-					l858:
-						position, tokenIndex = position855, tokenIndex855
-						if buffer[position] != rune('_') {
-							goto l854
+						if buffer[position] != rune('A') {
+							goto l792
 						}
 						position++
 					}
 				l855:
-					goto l785
-				l854:
-					position, tokenIndex = position854, tokenIndex854
+					{
+						position857, tokenIndex857 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l858
+						}
+						position++
+						goto l857
+					l858:
+						position, tokenIndex = position857, tokenIndex857
+						if buffer[position] != rune('L') {
+							goto l792
+						}
+						position++
+					}
+				l857:
+					{
+						position859, tokenIndex859 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l860
+						}
+						position++
+						goto l859
+					l860:
+						position, tokenIndex = position859, tokenIndex859
+						if buffer[position] != rune('L') {
+							goto l792
+						}
+						position++
+					}
+				l859:
 				}
-				add(ruleSVE2SpecialValue, position786)
+			l794:
+				{
+					position861, tokenIndex861 := position, tokenIndex
+					{
+						position862, tokenIndex862 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l863
+						}
+						position++
+						goto l862
+					l863:
+						position, tokenIndex = position862, tokenIndex862
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l864
+						}
+						position++
+						goto l862
+					l864:
+						position, tokenIndex = position862, tokenIndex862
+						{
+							position866, tokenIndex866 := position, tokenIndex
+							if c := buffer[position]; c < rune('a') || c > rune('z') {
+								goto l867
+							}
+							position++
+							goto l866
+						l867:
+							position, tokenIndex = position866, tokenIndex866
+							if c := buffer[position]; c < rune('A') || c > rune('Z') {
+								goto l865
+							}
+							position++
+						}
+					l866:
+						goto l862
+					l865:
+						position, tokenIndex = position862, tokenIndex862
+						if buffer[position] != rune('_') {
+							goto l861
+						}
+						position++
+					}
+				l862:
+					goto l792
+				l861:
+					position, tokenIndex = position861, tokenIndex861
+				}
+				add(ruleSVE2SpecialValue, position793)
 			}
 			return true
-		l785:
-			position, tokenIndex = position785, tokenIndex785
+		l792:
+			position, tokenIndex = position792, tokenIndex792
 			return false
 		},
 		/* 52 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
 		func() bool {
-			position861, tokenIndex861 := position, tokenIndex
+			position868, tokenIndex868 := position, tokenIndex
 			{
-				position862 := position
+				position869 := position
 				{
-					position863, tokenIndex863 := position, tokenIndex
+					position870, tokenIndex870 := position, tokenIndex
 					if !_rules[ruleSymbolRef]() {
-						goto l864
-					}
-					if !_rules[ruleBaseIndexScale]() {
-						goto l864
-					}
-					goto l863
-				l864:
-					position, tokenIndex = position863, tokenIndex863
-					if !_rules[ruleSymbolRef]() {
-						goto l865
-					}
-					goto l863
-				l865:
-					position, tokenIndex = position863, tokenIndex863
-					if !_rules[ruleLow12BitsSymbolRef]() {
-						goto l866
-					}
-					goto l863
-				l866:
-					position, tokenIndex = position863, tokenIndex863
-				l868:
-					{
-						position869, tokenIndex869 := position, tokenIndex
-						if !_rules[ruleOffset]() {
-							goto l869
-						}
-						goto l868
-					l869:
-						position, tokenIndex = position869, tokenIndex869
-					}
-					if !_rules[ruleBaseIndexScale]() {
-						goto l867
-					}
-					goto l863
-				l867:
-					position, tokenIndex = position863, tokenIndex863
-					if !_rules[ruleSegmentRegister]() {
-						goto l870
-					}
-					if !_rules[ruleOffset]() {
-						goto l870
-					}
-					if !_rules[ruleBaseIndexScale]() {
-						goto l870
-					}
-					goto l863
-				l870:
-					position, tokenIndex = position863, tokenIndex863
-					if !_rules[ruleSegmentRegister]() {
 						goto l871
 					}
 					if !_rules[ruleBaseIndexScale]() {
 						goto l871
 					}
-					goto l863
+					goto l870
 				l871:
-					position, tokenIndex = position863, tokenIndex863
-					if !_rules[ruleSegmentRegister]() {
+					position, tokenIndex = position870, tokenIndex870
+					if !_rules[ruleSymbolRef]() {
 						goto l872
 					}
-					if !_rules[ruleOffset]() {
-						goto l872
-					}
-					goto l863
+					goto l870
 				l872:
-					position, tokenIndex = position863, tokenIndex863
-					if !_rules[ruleARMBaseIndexScale]() {
+					position, tokenIndex = position870, tokenIndex870
+					if !_rules[ruleLow12BitsSymbolRef]() {
 						goto l873
 					}
-					goto l863
+					goto l870
 				l873:
-					position, tokenIndex = position863, tokenIndex863
+					position, tokenIndex = position870, tokenIndex870
+				l875:
+					{
+						position876, tokenIndex876 := position, tokenIndex
+						if !_rules[ruleOffset]() {
+							goto l876
+						}
+						goto l875
+					l876:
+						position, tokenIndex = position876, tokenIndex876
+					}
 					if !_rules[ruleBaseIndexScale]() {
-						goto l861
+						goto l874
+					}
+					goto l870
+				l874:
+					position, tokenIndex = position870, tokenIndex870
+					if !_rules[ruleSegmentRegister]() {
+						goto l877
+					}
+					if !_rules[ruleOffset]() {
+						goto l877
+					}
+					if !_rules[ruleBaseIndexScale]() {
+						goto l877
+					}
+					goto l870
+				l877:
+					position, tokenIndex = position870, tokenIndex870
+					if !_rules[ruleSegmentRegister]() {
+						goto l878
+					}
+					if !_rules[ruleBaseIndexScale]() {
+						goto l878
+					}
+					goto l870
+				l878:
+					position, tokenIndex = position870, tokenIndex870
+					if !_rules[ruleSegmentRegister]() {
+						goto l879
+					}
+					if !_rules[ruleOffset]() {
+						goto l879
+					}
+					goto l870
+				l879:
+					position, tokenIndex = position870, tokenIndex870
+					if !_rules[ruleARMBaseIndexScale]() {
+						goto l880
+					}
+					goto l870
+				l880:
+					position, tokenIndex = position870, tokenIndex870
+					if !_rules[ruleBaseIndexScale]() {
+						goto l868
 					}
 				}
-			l863:
-				add(ruleMemoryRef, position862)
+			l870:
+				add(ruleMemoryRef, position869)
 			}
 			return true
-		l861:
-			position, tokenIndex = position861, tokenIndex861
+		l868:
+			position, tokenIndex = position868, tokenIndex868
 			return false
 		},
 		/* 53 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
 		func() bool {
-			position874, tokenIndex874 := position, tokenIndex
+			position881, tokenIndex881 := position, tokenIndex
 			{
-				position875 := position
-				{
-					position876, tokenIndex876 := position, tokenIndex
-				l878:
-					{
-						position879, tokenIndex879 := position, tokenIndex
-						if !_rules[ruleOffset]() {
-							goto l879
-						}
-						goto l878
-					l879:
-						position, tokenIndex = position879, tokenIndex879
-					}
-					if buffer[position] != rune('+') {
-						goto l876
-					}
-					position++
-					goto l877
-				l876:
-					position, tokenIndex = position876, tokenIndex876
-				}
-			l877:
-				{
-					position880, tokenIndex880 := position, tokenIndex
-					if !_rules[ruleLocalSymbol]() {
-						goto l881
-					}
-					goto l880
-				l881:
-					position, tokenIndex = position880, tokenIndex880
-					if !_rules[ruleSymbolName]() {
-						goto l874
-					}
-				}
-			l880:
-			l882:
+				position882 := position
 				{
 					position883, tokenIndex883 := position, tokenIndex
-					if !_rules[ruleOffset]() {
+				l885:
+					{
+						position886, tokenIndex886 := position, tokenIndex
+						if !_rules[ruleOffset]() {
+							goto l886
+						}
+						goto l885
+					l886:
+						position, tokenIndex = position886, tokenIndex886
+					}
+					if buffer[position] != rune('+') {
 						goto l883
 					}
-					goto l882
+					position++
+					goto l884
 				l883:
 					position, tokenIndex = position883, tokenIndex883
 				}
+			l884:
 				{
-					position884, tokenIndex884 := position, tokenIndex
+					position887, tokenIndex887 := position, tokenIndex
+					if !_rules[ruleLocalSymbol]() {
+						goto l888
+					}
+					goto l887
+				l888:
+					position, tokenIndex = position887, tokenIndex887
+					if !_rules[ruleSymbolName]() {
+						goto l881
+					}
+				}
+			l887:
+			l889:
+				{
+					position890, tokenIndex890 := position, tokenIndex
+					if !_rules[ruleOffset]() {
+						goto l890
+					}
+					goto l889
+				l890:
+					position, tokenIndex = position890, tokenIndex890
+				}
+				{
+					position891, tokenIndex891 := position, tokenIndex
 					if buffer[position] != rune('@') {
-						goto l884
+						goto l891
 					}
 					position++
 					if !_rules[ruleSection]() {
-						goto l884
+						goto l891
 					}
-				l886:
+				l893:
 					{
-						position887, tokenIndex887 := position, tokenIndex
+						position894, tokenIndex894 := position, tokenIndex
 						if !_rules[ruleOffset]() {
-							goto l887
+							goto l894
 						}
-						goto l886
-					l887:
-						position, tokenIndex = position887, tokenIndex887
+						goto l893
+					l894:
+						position, tokenIndex = position894, tokenIndex894
 					}
-					goto l885
-				l884:
-					position, tokenIndex = position884, tokenIndex884
+					goto l892
+				l891:
+					position, tokenIndex = position891, tokenIndex891
 				}
-			l885:
-				add(ruleSymbolRef, position875)
+			l892:
+				add(ruleSymbolRef, position882)
 			}
 			return true
-		l874:
-			position, tokenIndex = position874, tokenIndex874
+		l881:
+			position, tokenIndex = position881, tokenIndex881
 			return false
 		},
 		/* 54 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
 		func() bool {
-			position888, tokenIndex888 := position, tokenIndex
+			position895, tokenIndex895 := position, tokenIndex
 			{
-				position889 := position
+				position896 := position
 				if buffer[position] != rune(':') {
-					goto l888
+					goto l895
 				}
 				position++
 				{
-					position890, tokenIndex890 := position, tokenIndex
+					position897, tokenIndex897 := position, tokenIndex
 					if buffer[position] != rune('l') {
-						goto l891
+						goto l898
 					}
 					position++
-					goto l890
-				l891:
-					position, tokenIndex = position890, tokenIndex890
+					goto l897
+				l898:
+					position, tokenIndex = position897, tokenIndex897
 					if buffer[position] != rune('L') {
-						goto l888
+						goto l895
 					}
 					position++
 				}
-			l890:
+			l897:
 				{
-					position892, tokenIndex892 := position, tokenIndex
+					position899, tokenIndex899 := position, tokenIndex
 					if buffer[position] != rune('o') {
-						goto l893
+						goto l900
 					}
 					position++
-					goto l892
-				l893:
-					position, tokenIndex = position892, tokenIndex892
+					goto l899
+				l900:
+					position, tokenIndex = position899, tokenIndex899
 					if buffer[position] != rune('O') {
-						goto l888
+						goto l895
 					}
 					position++
 				}
-			l892:
+			l899:
 				if buffer[position] != rune('1') {
-					goto l888
+					goto l895
 				}
 				position++
 				if buffer[position] != rune('2') {
-					goto l888
+					goto l895
 				}
 				position++
 				if buffer[position] != rune(':') {
-					goto l888
+					goto l895
 				}
 				position++
 				{
-					position894, tokenIndex894 := position, tokenIndex
+					position901, tokenIndex901 := position, tokenIndex
 					if !_rules[ruleLocalSymbol]() {
+						goto l902
+					}
+					goto l901
+				l902:
+					position, tokenIndex = position901, tokenIndex901
+					if !_rules[ruleSymbolName]() {
 						goto l895
 					}
-					goto l894
-				l895:
-					position, tokenIndex = position894, tokenIndex894
-					if !_rules[ruleSymbolName]() {
-						goto l888
-					}
 				}
-			l894:
+			l901:
 				{
-					position896, tokenIndex896 := position, tokenIndex
+					position903, tokenIndex903 := position, tokenIndex
 					if !_rules[ruleOffset]() {
-						goto l896
+						goto l903
 					}
-					goto l897
-				l896:
-					position, tokenIndex = position896, tokenIndex896
+					goto l904
+				l903:
+					position, tokenIndex = position903, tokenIndex903
 				}
-			l897:
-				add(ruleLow12BitsSymbolRef, position889)
+			l904:
+				add(ruleLow12BitsSymbolRef, position896)
 			}
 			return true
-		l888:
-			position, tokenIndex = position888, tokenIndex888
+		l895:
+			position, tokenIndex = position895, tokenIndex895
 			return false
 		},
 		/* 55 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
 		func() bool {
-			position898, tokenIndex898 := position, tokenIndex
+			position905, tokenIndex905 := position, tokenIndex
 			{
-				position899 := position
+				position906 := position
 				if buffer[position] != rune('[') {
-					goto l898
+					goto l905
 				}
 				position++
 				if !_rules[ruleARMRegister]() {
-					goto l898
+					goto l905
 				}
 				{
-					position900, tokenIndex900 := position, tokenIndex
+					position907, tokenIndex907 := position, tokenIndex
 					if buffer[position] != rune(',') {
-						goto l900
+						goto l907
 					}
 					position++
 					{
-						position902, tokenIndex902 := position, tokenIndex
+						position909, tokenIndex909 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l902
+							goto l909
 						}
-						goto l903
-					l902:
-						position, tokenIndex = position902, tokenIndex902
+						goto l910
+					l909:
+						position, tokenIndex = position909, tokenIndex909
 					}
-				l903:
+				l910:
 					{
-						position904, tokenIndex904 := position, tokenIndex
+						position911, tokenIndex911 := position, tokenIndex
 						if buffer[position] != rune('#') {
-							goto l905
+							goto l912
 						}
 						position++
 						if !_rules[ruleOffset]() {
-							goto l905
+							goto l912
 						}
 						{
-							position906, tokenIndex906 := position, tokenIndex
+							position913, tokenIndex913 := position, tokenIndex
 							{
-								position908, tokenIndex908 := position, tokenIndex
+								position915, tokenIndex915 := position, tokenIndex
 								if buffer[position] != rune('*') {
-									goto l909
+									goto l916
 								}
 								position++
 								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l909
+									goto l916
 								}
 								position++
-							l910:
-								{
-									position911, tokenIndex911 := position, tokenIndex
-									if c := buffer[position]; c < rune('0') || c > rune('9') {
-										goto l911
-									}
-									position++
-									goto l910
-								l911:
-									position, tokenIndex = position911, tokenIndex911
-								}
-								goto l908
-							l909:
-								position, tokenIndex = position908, tokenIndex908
-								if buffer[position] != rune('*') {
-									goto l912
-								}
-								position++
-								if buffer[position] != rune('(') {
-									goto l912
-								}
-								position++
-								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l912
-								}
-								position++
-							l913:
-								{
-									position914, tokenIndex914 := position, tokenIndex
-									if c := buffer[position]; c < rune('0') || c > rune('9') {
-										goto l914
-									}
-									position++
-									goto l913
-								l914:
-									position, tokenIndex = position914, tokenIndex914
-								}
-								if !_rules[ruleOperator]() {
-									goto l912
-								}
-								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l912
-								}
-								position++
-							l915:
-								{
-									position916, tokenIndex916 := position, tokenIndex
-									if c := buffer[position]; c < rune('0') || c > rune('9') {
-										goto l916
-									}
-									position++
-									goto l915
-								l916:
-									position, tokenIndex = position916, tokenIndex916
-								}
-								if buffer[position] != rune(')') {
-									goto l912
-								}
-								position++
-								goto l908
-							l912:
-								position, tokenIndex = position908, tokenIndex908
 							l917:
 								{
 									position918, tokenIndex918 := position, tokenIndex
-									if buffer[position] != rune('+') {
-										goto l918
-									}
-									position++
 									if c := buffer[position]; c < rune('0') || c > rune('9') {
 										goto l918
 									}
 									position++
-								l919:
-									{
-										position920, tokenIndex920 := position, tokenIndex
-										if c := buffer[position]; c < rune('0') || c > rune('9') {
-											goto l920
-										}
-										position++
-										goto l919
-									l920:
-										position, tokenIndex = position920, tokenIndex920
-									}
 									goto l917
 								l918:
 									position, tokenIndex = position918, tokenIndex918
 								}
+								goto l915
+							l916:
+								position, tokenIndex = position915, tokenIndex915
+								if buffer[position] != rune('*') {
+									goto l919
+								}
+								position++
+								if buffer[position] != rune('(') {
+									goto l919
+								}
+								position++
+								if c := buffer[position]; c < rune('0') || c > rune('9') {
+									goto l919
+								}
+								position++
+							l920:
+								{
+									position921, tokenIndex921 := position, tokenIndex
+									if c := buffer[position]; c < rune('0') || c > rune('9') {
+										goto l921
+									}
+									position++
+									goto l920
+								l921:
+									position, tokenIndex = position921, tokenIndex921
+								}
+								if !_rules[ruleOperator]() {
+									goto l919
+								}
+								if c := buffer[position]; c < rune('0') || c > rune('9') {
+									goto l919
+								}
+								position++
+							l922:
+								{
+									position923, tokenIndex923 := position, tokenIndex
+									if c := buffer[position]; c < rune('0') || c > rune('9') {
+										goto l923
+									}
+									position++
+									goto l922
+								l923:
+									position, tokenIndex = position923, tokenIndex923
+								}
+								if buffer[position] != rune(')') {
+									goto l919
+								}
+								position++
+								goto l915
+							l919:
+								position, tokenIndex = position915, tokenIndex915
+							l924:
+								{
+									position925, tokenIndex925 := position, tokenIndex
+									if buffer[position] != rune('+') {
+										goto l925
+									}
+									position++
+									if c := buffer[position]; c < rune('0') || c > rune('9') {
+										goto l925
+									}
+									position++
+								l926:
+									{
+										position927, tokenIndex927 := position, tokenIndex
+										if c := buffer[position]; c < rune('0') || c > rune('9') {
+											goto l927
+										}
+										position++
+										goto l926
+									l927:
+										position, tokenIndex = position927, tokenIndex927
+									}
+									goto l924
+								l925:
+									position, tokenIndex = position925, tokenIndex925
+								}
 							}
-						l908:
-							goto l907
+						l915:
+							goto l914
 
-							position, tokenIndex = position906, tokenIndex906
+							position, tokenIndex = position913, tokenIndex913
 						}
-					l907:
-						goto l904
-					l905:
-						position, tokenIndex = position904, tokenIndex904
+					l914:
+						goto l911
+					l912:
+						position, tokenIndex = position911, tokenIndex911
 						if !_rules[ruleARMGOTLow12]() {
-							goto l921
+							goto l928
 						}
-						goto l904
-					l921:
-						position, tokenIndex = position904, tokenIndex904
+						goto l911
+					l928:
+						position, tokenIndex = position911, tokenIndex911
 						if !_rules[ruleLow12BitsSymbolRef]() {
-							goto l922
+							goto l929
 						}
-						goto l904
-					l922:
-						position, tokenIndex = position904, tokenIndex904
+						goto l911
+					l929:
+						position, tokenIndex = position911, tokenIndex911
 						if !_rules[ruleARMRegister]() {
-							goto l900
+							goto l907
 						}
 					}
-				l904:
+				l911:
 					{
-						position923, tokenIndex923 := position, tokenIndex
+						position930, tokenIndex930 := position, tokenIndex
 						if buffer[position] != rune(',') {
-							goto l923
+							goto l930
 						}
 						position++
 						{
-							position925, tokenIndex925 := position, tokenIndex
+							position932, tokenIndex932 := position, tokenIndex
 							if !_rules[ruleWS]() {
-								goto l925
+								goto l932
 							}
-							goto l926
-						l925:
-							position, tokenIndex = position925, tokenIndex925
+							goto l933
+						l932:
+							position, tokenIndex = position932, tokenIndex932
 						}
-					l926:
+					l933:
 						if !_rules[ruleARMConstantTweak]() {
-							goto l923
+							goto l930
 						}
-						goto l924
-					l923:
-						position, tokenIndex = position923, tokenIndex923
+						goto l931
+					l930:
+						position, tokenIndex = position930, tokenIndex930
 					}
-				l924:
-					goto l901
-				l900:
-					position, tokenIndex = position900, tokenIndex900
+				l931:
+					goto l908
+				l907:
+					position, tokenIndex = position907, tokenIndex907
 				}
-			l901:
+			l908:
 				if buffer[position] != rune(']') {
-					goto l898
+					goto l905
 				}
 				position++
 				{
-					position927, tokenIndex927 := position, tokenIndex
+					position934, tokenIndex934 := position, tokenIndex
 					if !_rules[ruleARMPostincrement]() {
-						goto l927
+						goto l934
 					}
-					goto l928
-				l927:
-					position, tokenIndex = position927, tokenIndex927
+					goto l935
+				l934:
+					position, tokenIndex = position934, tokenIndex934
 				}
-			l928:
-				add(ruleARMBaseIndexScale, position899)
+			l935:
+				add(ruleARMBaseIndexScale, position906)
 			}
 			return true
-		l898:
-			position, tokenIndex = position898, tokenIndex898
+		l905:
+			position, tokenIndex = position905, tokenIndex905
 			return false
 		},
 		/* 56 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
 		func() bool {
-			position929, tokenIndex929 := position, tokenIndex
+			position936, tokenIndex936 := position, tokenIndex
 			{
-				position930 := position
+				position937 := position
 				if buffer[position] != rune(':') {
-					goto l929
+					goto l936
 				}
 				position++
 				{
-					position931, tokenIndex931 := position, tokenIndex
+					position938, tokenIndex938 := position, tokenIndex
 					if buffer[position] != rune('g') {
-						goto l932
+						goto l939
 					}
 					position++
-					goto l931
-				l932:
-					position, tokenIndex = position931, tokenIndex931
+					goto l938
+				l939:
+					position, tokenIndex = position938, tokenIndex938
 					if buffer[position] != rune('G') {
-						goto l929
-					}
-					position++
-				}
-			l931:
-				{
-					position933, tokenIndex933 := position, tokenIndex
-					if buffer[position] != rune('o') {
-						goto l934
-					}
-					position++
-					goto l933
-				l934:
-					position, tokenIndex = position933, tokenIndex933
-					if buffer[position] != rune('O') {
-						goto l929
-					}
-					position++
-				}
-			l933:
-				{
-					position935, tokenIndex935 := position, tokenIndex
-					if buffer[position] != rune('t') {
 						goto l936
 					}
 					position++
-					goto l935
-				l936:
-					position, tokenIndex = position935, tokenIndex935
-					if buffer[position] != rune('T') {
-						goto l929
+				}
+			l938:
+				{
+					position940, tokenIndex940 := position, tokenIndex
+					if buffer[position] != rune('o') {
+						goto l941
+					}
+					position++
+					goto l940
+				l941:
+					position, tokenIndex = position940, tokenIndex940
+					if buffer[position] != rune('O') {
+						goto l936
 					}
 					position++
 				}
-			l935:
+			l940:
+				{
+					position942, tokenIndex942 := position, tokenIndex
+					if buffer[position] != rune('t') {
+						goto l943
+					}
+					position++
+					goto l942
+				l943:
+					position, tokenIndex = position942, tokenIndex942
+					if buffer[position] != rune('T') {
+						goto l936
+					}
+					position++
+				}
+			l942:
 				if buffer[position] != rune('_') {
-					goto l929
+					goto l936
 				}
 				position++
 				{
-					position937, tokenIndex937 := position, tokenIndex
+					position944, tokenIndex944 := position, tokenIndex
 					if buffer[position] != rune('l') {
-						goto l938
+						goto l945
 					}
 					position++
-					goto l937
-				l938:
-					position, tokenIndex = position937, tokenIndex937
+					goto l944
+				l945:
+					position, tokenIndex = position944, tokenIndex944
 					if buffer[position] != rune('L') {
-						goto l929
+						goto l936
 					}
 					position++
 				}
-			l937:
+			l944:
 				{
-					position939, tokenIndex939 := position, tokenIndex
+					position946, tokenIndex946 := position, tokenIndex
 					if buffer[position] != rune('o') {
-						goto l940
+						goto l947
 					}
 					position++
-					goto l939
-				l940:
-					position, tokenIndex = position939, tokenIndex939
+					goto l946
+				l947:
+					position, tokenIndex = position946, tokenIndex946
 					if buffer[position] != rune('O') {
-						goto l929
+						goto l936
 					}
 					position++
 				}
-			l939:
+			l946:
 				if buffer[position] != rune('1') {
-					goto l929
+					goto l936
 				}
 				position++
 				if buffer[position] != rune('2') {
-					goto l929
+					goto l936
 				}
 				position++
 				if buffer[position] != rune(':') {
-					goto l929
+					goto l936
 				}
 				position++
 				if !_rules[ruleSymbolName]() {
-					goto l929
+					goto l936
 				}
-				add(ruleARMGOTLow12, position930)
+				add(ruleARMGOTLow12, position937)
 			}
 			return true
-		l929:
-			position, tokenIndex = position929, tokenIndex929
+		l936:
+			position, tokenIndex = position936, tokenIndex936
 			return false
 		},
 		/* 57 ARMPostincrement <- <'!'> */
 		func() bool {
-			position941, tokenIndex941 := position, tokenIndex
+			position948, tokenIndex948 := position, tokenIndex
 			{
-				position942 := position
+				position949 := position
 				if buffer[position] != rune('!') {
-					goto l941
+					goto l948
 				}
 				position++
-				add(ruleARMPostincrement, position942)
+				add(ruleARMPostincrement, position949)
 			}
 			return true
-		l941:
-			position, tokenIndex = position941, tokenIndex941
+		l948:
+			position, tokenIndex = position948, tokenIndex948
 			return false
 		},
 		/* 58 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
 		func() bool {
-			position943, tokenIndex943 := position, tokenIndex
+			position950, tokenIndex950 := position, tokenIndex
 			{
-				position944 := position
+				position951 := position
 				if buffer[position] != rune('(') {
-					goto l943
+					goto l950
 				}
 				position++
 				{
-					position945, tokenIndex945 := position, tokenIndex
+					position952, tokenIndex952 := position, tokenIndex
 					if !_rules[ruleRegisterOrConstant]() {
-						goto l945
+						goto l952
 					}
-					goto l946
-				l945:
-					position, tokenIndex = position945, tokenIndex945
+					goto l953
+				l952:
+					position, tokenIndex = position952, tokenIndex952
 				}
-			l946:
+			l953:
 				{
-					position947, tokenIndex947 := position, tokenIndex
+					position954, tokenIndex954 := position, tokenIndex
 					if !_rules[ruleWS]() {
-						goto l947
+						goto l954
 					}
-					goto l948
-				l947:
-					position, tokenIndex = position947, tokenIndex947
+					goto l955
+				l954:
+					position, tokenIndex = position954, tokenIndex954
 				}
-			l948:
+			l955:
 				{
-					position949, tokenIndex949 := position, tokenIndex
+					position956, tokenIndex956 := position, tokenIndex
 					if buffer[position] != rune(',') {
-						goto l949
+						goto l956
 					}
 					position++
 					{
-						position951, tokenIndex951 := position, tokenIndex
+						position958, tokenIndex958 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l951
+							goto l958
 						}
-						goto l952
-					l951:
-						position, tokenIndex = position951, tokenIndex951
+						goto l959
+					l958:
+						position, tokenIndex = position958, tokenIndex958
 					}
-				l952:
+				l959:
 					if !_rules[ruleRegisterOrConstant]() {
-						goto l949
+						goto l956
 					}
 					{
-						position953, tokenIndex953 := position, tokenIndex
+						position960, tokenIndex960 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l953
+							goto l960
 						}
-						goto l954
-					l953:
-						position, tokenIndex = position953, tokenIndex953
+						goto l961
+					l960:
+						position, tokenIndex = position960, tokenIndex960
 					}
-				l954:
+				l961:
 					{
-						position955, tokenIndex955 := position, tokenIndex
+						position962, tokenIndex962 := position, tokenIndex
 						if buffer[position] != rune(',') {
-							goto l955
+							goto l962
 						}
 						position++
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l955
+							goto l962
 						}
 						position++
-					l957:
+					l964:
 						{
-							position958, tokenIndex958 := position, tokenIndex
+							position965, tokenIndex965 := position, tokenIndex
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l958
+								goto l965
 							}
 							position++
-							goto l957
-						l958:
-							position, tokenIndex = position958, tokenIndex958
+							goto l964
+						l965:
+							position, tokenIndex = position965, tokenIndex965
 						}
-						goto l956
-					l955:
-						position, tokenIndex = position955, tokenIndex955
+						goto l963
+					l962:
+						position, tokenIndex = position962, tokenIndex962
 					}
+				l963:
+					goto l957
 				l956:
-					goto l950
-				l949:
-					position, tokenIndex = position949, tokenIndex949
+					position, tokenIndex = position956, tokenIndex956
 				}
-			l950:
+			l957:
 				if buffer[position] != rune(')') {
-					goto l943
+					goto l950
 				}
 				position++
-				add(ruleBaseIndexScale, position944)
+				add(ruleBaseIndexScale, position951)
 			}
 			return true
-		l943:
-			position, tokenIndex = position943, tokenIndex943
+		l950:
+			position, tokenIndex = position950, tokenIndex950
 			return false
 		},
 		/* 59 Operator <- <('+' / '-')> */
 		func() bool {
-			position959, tokenIndex959 := position, tokenIndex
+			position966, tokenIndex966 := position, tokenIndex
 			{
-				position960 := position
+				position967 := position
 				{
-					position961, tokenIndex961 := position, tokenIndex
+					position968, tokenIndex968 := position, tokenIndex
 					if buffer[position] != rune('+') {
-						goto l962
+						goto l969
 					}
 					position++
-					goto l961
-				l962:
-					position, tokenIndex = position961, tokenIndex961
+					goto l968
+				l969:
+					position, tokenIndex = position968, tokenIndex968
 					if buffer[position] != rune('-') {
-						goto l959
+						goto l966
 					}
 					position++
 				}
-			l961:
-				add(ruleOperator, position960)
+			l968:
+				add(ruleOperator, position967)
 			}
 			return true
-		l959:
-			position, tokenIndex = position959, tokenIndex959
+		l966:
+			position, tokenIndex = position966, tokenIndex966
 			return false
 		},
 		/* 60 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
 		func() bool {
-			position963, tokenIndex963 := position, tokenIndex
+			position970, tokenIndex970 := position, tokenIndex
 			{
-				position964 := position
+				position971 := position
 				{
-					position965, tokenIndex965 := position, tokenIndex
+					position972, tokenIndex972 := position, tokenIndex
 					if buffer[position] != rune('+') {
-						goto l965
+						goto l972
 					}
 					position++
-					goto l966
-				l965:
-					position, tokenIndex = position965, tokenIndex965
+					goto l973
+				l972:
+					position, tokenIndex = position972, tokenIndex972
 				}
-			l966:
+			l973:
 				{
-					position967, tokenIndex967 := position, tokenIndex
+					position974, tokenIndex974 := position, tokenIndex
 					if buffer[position] != rune('-') {
-						goto l967
+						goto l974
 					}
 					position++
-					goto l968
-				l967:
-					position, tokenIndex = position967, tokenIndex967
+					goto l975
+				l974:
+					position, tokenIndex = position974, tokenIndex974
 				}
-			l968:
+			l975:
 				{
-					position969, tokenIndex969 := position, tokenIndex
+					position976, tokenIndex976 := position, tokenIndex
 					if buffer[position] != rune('0') {
-						goto l970
+						goto l977
 					}
 					position++
 					{
-						position971, tokenIndex971 := position, tokenIndex
+						position978, tokenIndex978 := position, tokenIndex
 						if buffer[position] != rune('b') {
-							goto l972
-						}
-						position++
-						goto l971
-					l972:
-						position, tokenIndex = position971, tokenIndex971
-						if buffer[position] != rune('B') {
-							goto l970
-						}
-						position++
-					}
-				l971:
-					{
-						position975, tokenIndex975 := position, tokenIndex
-						if buffer[position] != rune('0') {
-							goto l976
-						}
-						position++
-						goto l975
-					l976:
-						position, tokenIndex = position975, tokenIndex975
-						if buffer[position] != rune('1') {
-							goto l970
-						}
-						position++
-					}
-				l975:
-				l973:
-					{
-						position974, tokenIndex974 := position, tokenIndex
-						{
-							position977, tokenIndex977 := position, tokenIndex
-							if buffer[position] != rune('0') {
-								goto l978
-							}
-							position++
-							goto l977
-						l978:
-							position, tokenIndex = position977, tokenIndex977
-							if buffer[position] != rune('1') {
-								goto l974
-							}
-							position++
-						}
-					l977:
-						goto l973
-					l974:
-						position, tokenIndex = position974, tokenIndex974
-					}
-					goto l969
-				l970:
-					position, tokenIndex = position969, tokenIndex969
-					if buffer[position] != rune('0') {
-						goto l979
-					}
-					position++
-					{
-						position980, tokenIndex980 := position, tokenIndex
-						if buffer[position] != rune('x') {
-							goto l981
-						}
-						position++
-						goto l980
-					l981:
-						position, tokenIndex = position980, tokenIndex980
-						if buffer[position] != rune('X') {
 							goto l979
 						}
 						position++
-					}
-				l980:
-					{
-						position984, tokenIndex984 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l985
+						goto l978
+					l979:
+						position, tokenIndex = position978, tokenIndex978
+						if buffer[position] != rune('B') {
+							goto l977
 						}
 						position++
-						goto l984
-					l985:
-						position, tokenIndex = position984, tokenIndex984
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
+					}
+				l978:
+					{
+						position982, tokenIndex982 := position, tokenIndex
+						if buffer[position] != rune('0') {
+							goto l983
+						}
+						position++
+						goto l982
+					l983:
+						position, tokenIndex = position982, tokenIndex982
+						if buffer[position] != rune('1') {
+							goto l977
+						}
+						position++
+					}
+				l982:
+				l980:
+					{
+						position981, tokenIndex981 := position, tokenIndex
+						{
+							position984, tokenIndex984 := position, tokenIndex
+							if buffer[position] != rune('0') {
+								goto l985
+							}
+							position++
+							goto l984
+						l985:
+							position, tokenIndex = position984, tokenIndex984
+							if buffer[position] != rune('1') {
+								goto l981
+							}
+							position++
+						}
+					l984:
+						goto l980
+					l981:
+						position, tokenIndex = position981, tokenIndex981
+					}
+					goto l976
+				l977:
+					position, tokenIndex = position976, tokenIndex976
+					if buffer[position] != rune('0') {
+						goto l986
+					}
+					position++
+					{
+						position987, tokenIndex987 := position, tokenIndex
+						if buffer[position] != rune('x') {
+							goto l988
+						}
+						position++
+						goto l987
+					l988:
+						position, tokenIndex = position987, tokenIndex987
+						if buffer[position] != rune('X') {
 							goto l986
 						}
 						position++
-						goto l984
-					l986:
-						position, tokenIndex = position984, tokenIndex984
-						{
-							position987, tokenIndex987 := position, tokenIndex
-							if c := buffer[position]; c < rune('a') || c > rune('f') {
-								goto l988
-							}
-							position++
-							goto l987
-						l988:
-							position, tokenIndex = position987, tokenIndex987
-							if c := buffer[position]; c < rune('A') || c > rune('F') {
-								goto l979
-							}
-							position++
-						}
-					l987:
 					}
-				l984:
-				l982:
+				l987:
 					{
-						position983, tokenIndex983 := position, tokenIndex
-						{
-							position989, tokenIndex989 := position, tokenIndex
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l990
-							}
-							position++
-							goto l989
-						l990:
-							position, tokenIndex = position989, tokenIndex989
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l991
-							}
-							position++
-							goto l989
-						l991:
-							position, tokenIndex = position989, tokenIndex989
-							{
-								position992, tokenIndex992 := position, tokenIndex
-								if c := buffer[position]; c < rune('a') || c > rune('f') {
-									goto l993
-								}
-								position++
-								goto l992
-							l993:
-								position, tokenIndex = position992, tokenIndex992
-								if c := buffer[position]; c < rune('A') || c > rune('F') {
-									goto l983
-								}
-								position++
-							}
-						l992:
-						}
-					l989:
-						goto l982
-					l983:
-						position, tokenIndex = position983, tokenIndex983
-					}
-					goto l969
-				l979:
-					position, tokenIndex = position969, tokenIndex969
-					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l963
-					}
-					position++
-				l994:
-					{
-						position995, tokenIndex995 := position, tokenIndex
+						position991, tokenIndex991 := position, tokenIndex
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l995
+							goto l992
 						}
 						position++
-						goto l994
-					l995:
-						position, tokenIndex = position995, tokenIndex995
+						goto l991
+					l992:
+						position, tokenIndex = position991, tokenIndex991
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l993
+						}
+						position++
+						goto l991
+					l993:
+						position, tokenIndex = position991, tokenIndex991
+						{
+							position994, tokenIndex994 := position, tokenIndex
+							if c := buffer[position]; c < rune('a') || c > rune('f') {
+								goto l995
+							}
+							position++
+							goto l994
+						l995:
+							position, tokenIndex = position994, tokenIndex994
+							if c := buffer[position]; c < rune('A') || c > rune('F') {
+								goto l986
+							}
+							position++
+						}
+					l994:
+					}
+				l991:
+				l989:
+					{
+						position990, tokenIndex990 := position, tokenIndex
+						{
+							position996, tokenIndex996 := position, tokenIndex
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l997
+							}
+							position++
+							goto l996
+						l997:
+							position, tokenIndex = position996, tokenIndex996
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l998
+							}
+							position++
+							goto l996
+						l998:
+							position, tokenIndex = position996, tokenIndex996
+							{
+								position999, tokenIndex999 := position, tokenIndex
+								if c := buffer[position]; c < rune('a') || c > rune('f') {
+									goto l1000
+								}
+								position++
+								goto l999
+							l1000:
+								position, tokenIndex = position999, tokenIndex999
+								if c := buffer[position]; c < rune('A') || c > rune('F') {
+									goto l990
+								}
+								position++
+							}
+						l999:
+						}
+					l996:
+						goto l989
+					l990:
+						position, tokenIndex = position990, tokenIndex990
+					}
+					goto l976
+				l986:
+					position, tokenIndex = position976, tokenIndex976
+					if c := buffer[position]; c < rune('0') || c > rune('9') {
+						goto l970
+					}
+					position++
+				l1001:
+					{
+						position1002, tokenIndex1002 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l1002
+						}
+						position++
+						goto l1001
+					l1002:
+						position, tokenIndex = position1002, tokenIndex1002
 					}
 				}
-			l969:
-				add(ruleOffset, position964)
+			l976:
+				add(ruleOffset, position971)
 			}
 			return true
-		l963:
-			position, tokenIndex = position963, tokenIndex963
+		l970:
+			position, tokenIndex = position970, tokenIndex970
 			return false
 		},
 		/* 61 Section <- <([a-z] / [A-Z] / '@')+> */
 		func() bool {
-			position996, tokenIndex996 := position, tokenIndex
+			position1003, tokenIndex1003 := position, tokenIndex
 			{
-				position997 := position
+				position1004 := position
 				{
-					position1000, tokenIndex1000 := position, tokenIndex
+					position1007, tokenIndex1007 := position, tokenIndex
 					if c := buffer[position]; c < rune('a') || c > rune('z') {
-						goto l1001
+						goto l1008
 					}
 					position++
-					goto l1000
-				l1001:
-					position, tokenIndex = position1000, tokenIndex1000
+					goto l1007
+				l1008:
+					position, tokenIndex = position1007, tokenIndex1007
 					if c := buffer[position]; c < rune('A') || c > rune('Z') {
-						goto l1002
+						goto l1009
 					}
 					position++
-					goto l1000
-				l1002:
-					position, tokenIndex = position1000, tokenIndex1000
+					goto l1007
+				l1009:
+					position, tokenIndex = position1007, tokenIndex1007
 					if buffer[position] != rune('@') {
-						goto l996
+						goto l1003
 					}
 					position++
 				}
-			l1000:
-			l998:
+			l1007:
+			l1005:
 				{
-					position999, tokenIndex999 := position, tokenIndex
+					position1006, tokenIndex1006 := position, tokenIndex
 					{
-						position1003, tokenIndex1003 := position, tokenIndex
+						position1010, tokenIndex1010 := position, tokenIndex
 						if c := buffer[position]; c < rune('a') || c > rune('z') {
-							goto l1004
+							goto l1011
 						}
 						position++
-						goto l1003
-					l1004:
-						position, tokenIndex = position1003, tokenIndex1003
+						goto l1010
+					l1011:
+						position, tokenIndex = position1010, tokenIndex1010
 						if c := buffer[position]; c < rune('A') || c > rune('Z') {
-							goto l1005
+							goto l1012
 						}
 						position++
-						goto l1003
-					l1005:
-						position, tokenIndex = position1003, tokenIndex1003
+						goto l1010
+					l1012:
+						position, tokenIndex = position1010, tokenIndex1010
 						if buffer[position] != rune('@') {
-							goto l999
+							goto l1006
 						}
 						position++
 					}
-				l1003:
-					goto l998
-				l999:
-					position, tokenIndex = position999, tokenIndex999
+				l1010:
+					goto l1005
+				l1006:
+					position, tokenIndex = position1006, tokenIndex1006
 				}
-				add(ruleSection, position997)
+				add(ruleSection, position1004)
 			}
 			return true
-		l996:
-			position, tokenIndex = position996, tokenIndex996
+		l1003:
+			position, tokenIndex = position1003, tokenIndex1003
 			return false
 		},
 		/* 62 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
 		func() bool {
-			position1006, tokenIndex1006 := position, tokenIndex
+			position1013, tokenIndex1013 := position, tokenIndex
 			{
-				position1007 := position
+				position1014 := position
 				if buffer[position] != rune('%') {
-					goto l1006
+					goto l1013
 				}
 				position++
 				{
-					position1008, tokenIndex1008 := position, tokenIndex
+					position1015, tokenIndex1015 := position, tokenIndex
 					if c := buffer[position]; c < rune('c') || c > rune('g') {
-						goto l1009
+						goto l1016
 					}
 					position++
-					goto l1008
-				l1009:
-					position, tokenIndex = position1008, tokenIndex1008
+					goto l1015
+				l1016:
+					position, tokenIndex = position1015, tokenIndex1015
 					if buffer[position] != rune('s') {
-						goto l1006
+						goto l1013
 					}
 					position++
 				}
-			l1008:
+			l1015:
 				if buffer[position] != rune('s') {
-					goto l1006
+					goto l1013
 				}
 				position++
 				if buffer[position] != rune(':') {
-					goto l1006
+					goto l1013
 				}
 				position++
-				add(ruleSegmentRegister, position1007)
+				add(ruleSegmentRegister, position1014)
 			}
 			return true
-		l1006:
-			position, tokenIndex = position1006, tokenIndex1006
+		l1013:
+			position, tokenIndex = position1013, tokenIndex1013
 			return false
 		},
 	}
diff --git a/util/fipstools/delocate/testdata/aarch64-Basic/in.s b/util/fipstools/delocate/testdata/aarch64-Basic/in.s
index f8ff4e6..a2334f0 100644
--- a/util/fipstools/delocate/testdata/aarch64-Basic/in.s
+++ b/util/fipstools/delocate/testdata/aarch64-Basic/in.s
@@ -73,6 +73,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 08a6db7..9ff57b5 100644
--- a/util/fipstools/delocate/testdata/aarch64-Basic/out.s
+++ b/util/fipstools/delocate/testdata/aarch64-Basic/out.s
@@ -109,6 +109,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]