all: BITALG instructions (#362)

Adds the AVX-512 Bit Algorithms instruction set.

These new instructions are added via the `opcodesextra` mechanism #345, since
they're missing from the opcodes database.

Contributed by @vsivsi. Extracted from #234 with simplifications for AVX-512
form expansion.

Co-authored-by: Vaughn Iverson <vsivsi@yahoo.com>
This commit is contained in:
Michael McLoughlin
2023-01-10 18:55:12 -08:00
committed by GitHub
parent a42c8ae281
commit 05ed388d0f
8 changed files with 1308 additions and 159 deletions

View File

@@ -323,6 +323,8 @@ const (
isasAVX512VBMI
isasAVX512IFMA_AVX512VL
isasAVX512IFMA
isasAVX512BITALG_AVX512VL
isasAVX512BITALG
isasAVX512VL_AVX512VPOPCNTDQ
isasAVX512VPOPCNTDQ
isasAVX512BW_AVX512F
@@ -392,6 +394,8 @@ var isaslisttable = [][]string{
{"AVX512VBMI"},
{"AVX512IFMA", "AVX512VL"},
{"AVX512IFMA"},
{"AVX512BITALG", "AVX512VL"},
{"AVX512BITALG"},
{"AVX512VL", "AVX512VPOPCNTDQ"},
{"AVX512VPOPCNTDQ"},
{"AVX512BW", "AVX512F"},
@@ -1528,8 +1532,10 @@ const (
opcVPMULLW
opcVPMULTISHIFTQB
opcVPMULUDQ
opcVPOPCNTB
opcVPOPCNTD
opcVPOPCNTQ
opcVPOPCNTW
opcVPOR
opcVPORD
opcVPORQ
@@ -1547,6 +1553,7 @@ const (
opcVPSCATTERQD
opcVPSCATTERQQ
opcVPSHUFB
opcVPSHUFBITQMB
opcVPSHUFD
opcVPSHUFHW
opcVPSHUFLW
@@ -2828,8 +2835,10 @@ var opcstringtable = []string{
"VPMULLW",
"VPMULTISHIFTQB",
"VPMULUDQ",
"VPOPCNTB",
"VPOPCNTD",
"VPOPCNTQ",
"VPOPCNTW",
"VPOR",
"VPORD",
"VPORQ",
@@ -2847,6 +2856,7 @@ var opcstringtable = []string{
"VPSCATTERQD",
"VPSCATTERQQ",
"VPSHUFB",
"VPSHUFBITQMB",
"VPSHUFD",
"VPSHUFHW",
"VPSHUFLW",
@@ -11918,6 +11928,24 @@ var forms = []form{
{opcVPMULUDQ, sffxsclsNIL, 0, isasAVX512F, 4, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeZMM), false, actionRW}}},
{opcVPMULUDQ, sffxsclsZ, 0, isasAVX512F, 4, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeZMM), false, actionW}}},
{opcVPMULUDQ, sffxsclsNIL, 0, isasAVX512F, 3, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeZMM), false, actionW}}},
{opcVPOPCNTB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeM128), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeXMM), false, actionRW}}},
{opcVPOPCNTB, sffxsclsZ, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeM128), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeXMM), false, actionW}}},
{opcVPOPCNTB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 2, oprnds{{uint8(oprndtypeM128), false, actionR}, {uint8(oprndtypeXMM), false, actionW}}},
{opcVPOPCNTB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeM256), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeYMM), false, actionRW}}},
{opcVPOPCNTB, sffxsclsZ, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeM256), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeYMM), false, actionW}}},
{opcVPOPCNTB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 2, oprnds{{uint8(oprndtypeM256), false, actionR}, {uint8(oprndtypeYMM), false, actionW}}},
{opcVPOPCNTB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeXMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeXMM), false, actionRW}}},
{opcVPOPCNTB, sffxsclsZ, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeXMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeXMM), false, actionW}}},
{opcVPOPCNTB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 2, oprnds{{uint8(oprndtypeXMM), false, actionR}, {uint8(oprndtypeXMM), false, actionW}}},
{opcVPOPCNTB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeYMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeYMM), false, actionRW}}},
{opcVPOPCNTB, sffxsclsZ, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeYMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeYMM), false, actionW}}},
{opcVPOPCNTB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 2, oprnds{{uint8(oprndtypeYMM), false, actionR}, {uint8(oprndtypeYMM), false, actionW}}},
{opcVPOPCNTB, sffxsclsNIL, 0, isasAVX512BITALG, 3, oprnds{{uint8(oprndtypeM512), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeZMM), false, actionRW}}},
{opcVPOPCNTB, sffxsclsZ, 0, isasAVX512BITALG, 3, oprnds{{uint8(oprndtypeM512), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeZMM), false, actionW}}},
{opcVPOPCNTB, sffxsclsNIL, 0, isasAVX512BITALG, 2, oprnds{{uint8(oprndtypeM512), false, actionR}, {uint8(oprndtypeZMM), false, actionW}}},
{opcVPOPCNTB, sffxsclsNIL, 0, isasAVX512BITALG, 3, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeZMM), false, actionRW}}},
{opcVPOPCNTB, sffxsclsZ, 0, isasAVX512BITALG, 3, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeZMM), false, actionW}}},
{opcVPOPCNTB, sffxsclsNIL, 0, isasAVX512BITALG, 2, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeZMM), false, actionW}}},
{opcVPOPCNTD, sffxsclsNIL, 0, isasAVX512VL_AVX512VPOPCNTDQ, 3, oprnds{{uint8(oprndtypeM128), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeXMM), false, actionRW}}},
{opcVPOPCNTD, sffxsclsZ, 0, isasAVX512VL_AVX512VPOPCNTDQ, 3, oprnds{{uint8(oprndtypeM128), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeXMM), false, actionW}}},
{opcVPOPCNTD, sffxsclsNIL, 0, isasAVX512VL_AVX512VPOPCNTDQ, 2, oprnds{{uint8(oprndtypeM128), false, actionR}, {uint8(oprndtypeXMM), false, actionW}}},
@@ -11972,6 +12000,24 @@ var forms = []form{
{opcVPOPCNTQ, sffxsclsNIL, 0, isasAVX512VPOPCNTDQ, 3, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeZMM), false, actionRW}}},
{opcVPOPCNTQ, sffxsclsZ, 0, isasAVX512VPOPCNTDQ, 3, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeZMM), false, actionW}}},
{opcVPOPCNTQ, sffxsclsNIL, 0, isasAVX512VPOPCNTDQ, 2, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeZMM), false, actionW}}},
{opcVPOPCNTW, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeM128), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeXMM), false, actionRW}}},
{opcVPOPCNTW, sffxsclsZ, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeM128), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeXMM), false, actionW}}},
{opcVPOPCNTW, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 2, oprnds{{uint8(oprndtypeM128), false, actionR}, {uint8(oprndtypeXMM), false, actionW}}},
{opcVPOPCNTW, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeM256), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeYMM), false, actionRW}}},
{opcVPOPCNTW, sffxsclsZ, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeM256), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeYMM), false, actionW}}},
{opcVPOPCNTW, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 2, oprnds{{uint8(oprndtypeM256), false, actionR}, {uint8(oprndtypeYMM), false, actionW}}},
{opcVPOPCNTW, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeXMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeXMM), false, actionRW}}},
{opcVPOPCNTW, sffxsclsZ, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeXMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeXMM), false, actionW}}},
{opcVPOPCNTW, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 2, oprnds{{uint8(oprndtypeXMM), false, actionR}, {uint8(oprndtypeXMM), false, actionW}}},
{opcVPOPCNTW, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeYMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeYMM), false, actionRW}}},
{opcVPOPCNTW, sffxsclsZ, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeYMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeYMM), false, actionW}}},
{opcVPOPCNTW, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 2, oprnds{{uint8(oprndtypeYMM), false, actionR}, {uint8(oprndtypeYMM), false, actionW}}},
{opcVPOPCNTW, sffxsclsNIL, 0, isasAVX512BITALG, 3, oprnds{{uint8(oprndtypeM512), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeZMM), false, actionRW}}},
{opcVPOPCNTW, sffxsclsZ, 0, isasAVX512BITALG, 3, oprnds{{uint8(oprndtypeM512), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeZMM), false, actionW}}},
{opcVPOPCNTW, sffxsclsNIL, 0, isasAVX512BITALG, 2, oprnds{{uint8(oprndtypeM512), false, actionR}, {uint8(oprndtypeZMM), false, actionW}}},
{opcVPOPCNTW, sffxsclsNIL, 0, isasAVX512BITALG, 3, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeZMM), false, actionRW}}},
{opcVPOPCNTW, sffxsclsZ, 0, isasAVX512BITALG, 3, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeZMM), false, actionW}}},
{opcVPOPCNTW, sffxsclsNIL, 0, isasAVX512BITALG, 2, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeZMM), false, actionW}}},
{opcVPOR, sffxsclsNIL, 0, isasAVX2, 3, oprnds{{uint8(oprndtypeM256), false, actionR}, {uint8(oprndtypeYMM), false, actionR}, {uint8(oprndtypeYMM), false, actionW}}},
{opcVPOR, sffxsclsNIL, 0, isasAVX2, 3, oprnds{{uint8(oprndtypeYMM), false, actionR}, {uint8(oprndtypeYMM), false, actionR}, {uint8(oprndtypeYMM), false, actionW}}},
{opcVPOR, sffxsclsNIL, 0, isasAVX, 3, oprnds{{uint8(oprndtypeM128), false, actionR}, {uint8(oprndtypeXMM), false, actionR}, {uint8(oprndtypeXMM), false, actionW}}},
@@ -12282,6 +12328,18 @@ var forms = []form{
{opcVPSHUFB, sffxsclsNIL, 0, isasAVX512BW, 4, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeZMM), false, actionRW}}},
{opcVPSHUFB, sffxsclsZ, 0, isasAVX512BW, 4, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeZMM), false, actionW}}},
{opcVPSHUFB, sffxsclsNIL, 0, isasAVX512BW, 3, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeZMM), false, actionW}}},
{opcVPSHUFBITQMB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 4, oprnds{{uint8(oprndtypeM128), false, actionR}, {uint8(oprndtypeXMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeK), false, actionW}}},
{opcVPSHUFBITQMB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeM128), false, actionR}, {uint8(oprndtypeXMM), false, actionR}, {uint8(oprndtypeK), false, actionW}}},
{opcVPSHUFBITQMB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 4, oprnds{{uint8(oprndtypeM256), false, actionR}, {uint8(oprndtypeYMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeK), false, actionW}}},
{opcVPSHUFBITQMB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeM256), false, actionR}, {uint8(oprndtypeYMM), false, actionR}, {uint8(oprndtypeK), false, actionW}}},
{opcVPSHUFBITQMB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 4, oprnds{{uint8(oprndtypeXMM), false, actionR}, {uint8(oprndtypeXMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeK), false, actionW}}},
{opcVPSHUFBITQMB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeXMM), false, actionR}, {uint8(oprndtypeXMM), false, actionR}, {uint8(oprndtypeK), false, actionW}}},
{opcVPSHUFBITQMB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 4, oprnds{{uint8(oprndtypeYMM), false, actionR}, {uint8(oprndtypeYMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeK), false, actionW}}},
{opcVPSHUFBITQMB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeYMM), false, actionR}, {uint8(oprndtypeYMM), false, actionR}, {uint8(oprndtypeK), false, actionW}}},
{opcVPSHUFBITQMB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 4, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeK), false, actionW}}},
{opcVPSHUFBITQMB, sffxsclsNIL, 0, isasAVX512BITALG_AVX512VL, 3, oprnds{{uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeK), false, actionW}}},
{opcVPSHUFBITQMB, sffxsclsNIL, 0, isasAVX512BITALG, 4, oprnds{{uint8(oprndtypeM512), false, actionR}, {uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeK), false, actionR}, {uint8(oprndtypeK), false, actionW}}},
{opcVPSHUFBITQMB, sffxsclsNIL, 0, isasAVX512BITALG, 3, oprnds{{uint8(oprndtypeM512), false, actionR}, {uint8(oprndtypeZMM), false, actionR}, {uint8(oprndtypeK), false, actionW}}},
{opcVPSHUFD, sffxsclsNIL, 0, isasAVX2, 3, oprnds{{uint8(oprndtypeIMM8), false, actionN}, {uint8(oprndtypeM256), false, actionR}, {uint8(oprndtypeYMM), false, actionW}}},
{opcVPSHUFD, sffxsclsNIL, 0, isasAVX2, 3, oprnds{{uint8(oprndtypeIMM8), false, actionN}, {uint8(oprndtypeYMM), false, actionR}, {uint8(oprndtypeYMM), false, actionW}}},
{opcVPSHUFD, sffxsclsNIL, 0, isasAVX, 3, oprnds{{uint8(oprndtypeIMM8), false, actionN}, {uint8(oprndtypeM128), false, actionR}, {uint8(oprndtypeXMM), false, actionW}}},
@@ -15753,166 +15811,169 @@ var opcformstable = [][]form{
forms[8853:8871],
forms[8871:8898],
forms[8898:8925],
forms[8925:8952],
forms[8952:8979],
forms[8979:8983],
forms[8983:9010],
forms[9010:9037],
forms[9037:9064],
forms[9064:9091],
forms[9091:9118],
forms[9118:9145],
forms[9145:9172],
forms[9172:9199],
forms[9199:9226],
forms[9226:9253],
forms[9253:9259],
forms[9259:9262],
forms[9262:9265],
forms[9265:9268],
forms[9268:9271],
forms[9271:9289],
forms[9289:9316],
forms[9316:9334],
forms[9334:9352],
forms[9352:9356],
forms[9356:9360],
forms[9360:9364],
forms[9364:9409],
forms[9409:9415],
forms[9415:9460],
forms[9460:9487],
forms[9487:9514],
forms[9514:9532],
forms[9532:9568],
forms[9568:9613],
forms[9613:9658],
forms[9658:9685],
forms[9685:9712],
forms[9712:9730],
forms[9730:9766],
forms[9766:9811],
forms[9811:9817],
forms[9817:9862],
forms[9862:9889],
forms[9889:9916],
forms[9916:9934],
forms[9934:9970],
forms[9970:9988],
forms[9988:10015],
forms[10015:10042],
forms[10042:10060],
forms[10060:10078],
forms[10078:10096],
forms[10096:10114],
forms[10114:10132],
forms[10132:10159],
forms[10159:10186],
forms[10186:10190],
forms[10190:10202],
forms[10202:10220],
forms[10220:10238],
forms[8925:8943],
forms[8943:8970],
forms[8970:8997],
forms[8997:9015],
forms[9015:9019],
forms[9019:9046],
forms[9046:9073],
forms[9073:9100],
forms[9100:9127],
forms[9127:9154],
forms[9154:9181],
forms[9181:9208],
forms[9208:9235],
forms[9235:9262],
forms[9262:9289],
forms[9289:9295],
forms[9295:9298],
forms[9298:9301],
forms[9301:9304],
forms[9304:9307],
forms[9307:9325],
forms[9325:9337],
forms[9337:9364],
forms[9364:9382],
forms[9382:9400],
forms[9400:9404],
forms[9404:9408],
forms[9408:9412],
forms[9412:9457],
forms[9457:9463],
forms[9463:9508],
forms[9508:9535],
forms[9535:9562],
forms[9562:9580],
forms[9580:9616],
forms[9616:9661],
forms[9661:9706],
forms[9706:9733],
forms[9733:9760],
forms[9760:9778],
forms[9778:9814],
forms[9814:9859],
forms[9859:9865],
forms[9865:9910],
forms[9910:9937],
forms[9937:9964],
forms[9964:9982],
forms[9982:10018],
forms[10018:10036],
forms[10036:10063],
forms[10063:10090],
forms[10090:10108],
forms[10108:10126],
forms[10126:10144],
forms[10144:10162],
forms[10162:10180],
forms[10180:10207],
forms[10207:10234],
forms[10234:10238],
forms[10238:10250],
forms[10250:10262],
forms[10262:10280],
forms[10280:10298],
forms[10250:10268],
forms[10268:10286],
forms[10286:10298],
forms[10298:10310],
forms[10310:10328],
forms[10328:10355],
forms[10355:10382],
forms[10382:10400],
forms[10400:10418],
forms[10418:10445],
forms[10445:10472],
forms[10472:10490],
forms[10490:10494],
forms[10494:10521],
forms[10521:10548],
forms[10548:10578],
forms[10578:10608],
forms[10608:10617],
forms[10617:10626],
forms[10626:10653],
forms[10653:10680],
forms[10680:10686],
forms[10686:10692],
forms[10692:10704],
forms[10704:10716],
forms[10716:10725],
forms[10725:10734],
forms[10734:10738],
forms[10738:10740],
forms[10740:10767],
forms[10767:10794],
forms[10794:10800],
forms[10800:10806],
forms[10806:10836],
forms[10836:10866],
forms[10866:10875],
forms[10875:10884],
forms[10884:10888],
forms[10888:10892],
forms[10892:10894],
forms[10894:10896],
forms[10896:10923],
forms[10923:10950],
forms[10950:10956],
forms[10956:10962],
forms[10962:10974],
forms[10974:10986],
forms[10986:10995],
forms[10995:11004],
forms[11004:11008],
forms[11008:11010],
forms[11010:11040],
forms[11040:11070],
forms[11070:11079],
forms[11079:11088],
forms[11088:11091],
forms[11091:11094],
forms[11094:11097],
forms[11097:11100],
forms[11100:11118],
forms[11118:11136],
forms[11136:11154],
forms[11154:11172],
forms[11172:11199],
forms[11199:11226],
forms[11226:11256],
forms[11256:11286],
forms[11286:11295],
forms[11295:11304],
forms[11304:11305],
forms[11305:11335],
forms[11335:11365],
forms[11365:11374],
forms[11374:11383],
forms[11383:11387],
forms[11387:11391],
forms[11391:11394],
forms[11394:11397],
forms[11397:11424],
forms[11424:11451],
forms[11451:11478],
forms[11478:11505],
forms[11505:11532],
forms[11532:11559],
forms[11559:11560],
forms[11560:11561],
forms[11561:11563],
forms[11563:11565],
forms[11565:11567],
forms[11567:11569],
forms[11569:11572],
forms[11572:11577],
forms[11577:11582],
forms[11582:11587],
forms[11587:11588],
forms[11588:11589],
forms[11589:11595],
forms[11595:11603],
forms[11603:11605],
forms[11605:11607],
forms[11607:11615],
forms[11615:11623],
forms[10328:10346],
forms[10346:10358],
forms[10358:10376],
forms[10376:10403],
forms[10403:10430],
forms[10430:10448],
forms[10448:10466],
forms[10466:10493],
forms[10493:10520],
forms[10520:10538],
forms[10538:10542],
forms[10542:10569],
forms[10569:10596],
forms[10596:10626],
forms[10626:10656],
forms[10656:10665],
forms[10665:10674],
forms[10674:10701],
forms[10701:10728],
forms[10728:10734],
forms[10734:10740],
forms[10740:10752],
forms[10752:10764],
forms[10764:10773],
forms[10773:10782],
forms[10782:10786],
forms[10786:10788],
forms[10788:10815],
forms[10815:10842],
forms[10842:10848],
forms[10848:10854],
forms[10854:10884],
forms[10884:10914],
forms[10914:10923],
forms[10923:10932],
forms[10932:10936],
forms[10936:10940],
forms[10940:10942],
forms[10942:10944],
forms[10944:10971],
forms[10971:10998],
forms[10998:11004],
forms[11004:11010],
forms[11010:11022],
forms[11022:11034],
forms[11034:11043],
forms[11043:11052],
forms[11052:11056],
forms[11056:11058],
forms[11058:11088],
forms[11088:11118],
forms[11118:11127],
forms[11127:11136],
forms[11136:11139],
forms[11139:11142],
forms[11142:11145],
forms[11145:11148],
forms[11148:11166],
forms[11166:11184],
forms[11184:11202],
forms[11202:11220],
forms[11220:11247],
forms[11247:11274],
forms[11274:11304],
forms[11304:11334],
forms[11334:11343],
forms[11343:11352],
forms[11352:11353],
forms[11353:11383],
forms[11383:11413],
forms[11413:11422],
forms[11422:11431],
forms[11431:11435],
forms[11435:11439],
forms[11439:11442],
forms[11442:11445],
forms[11445:11472],
forms[11472:11499],
forms[11499:11526],
forms[11526:11553],
forms[11553:11580],
forms[11580:11607],
forms[11607:11608],
forms[11608:11609],
forms[11609:11611],
forms[11611:11613],
forms[11613:11615],
forms[11615:11617],
forms[11617:11620],
forms[11620:11625],
forms[11625:11630],
forms[11630:11635],
forms[11635:11636],
forms[11636:11637],
forms[11637:11643],
forms[11643:11651],
forms[11651:11653],
forms[11653:11655],
forms[11655:11663],
forms[11663:11671],
}