mirror of
https://github.com/yasm/yasm
synced 2026-08-26 22:26:05 -04:00
Merge [2069], [2070], [2071], and [2072] from trunk to 0.7.x branch.
svn path=/branches/yasm-0.7.x/; revision=2073
This commit is contained in:
parent
01ef04cee1
commit
1ed090be23
7 changed files with 312 additions and 252 deletions
|
|
@ -4131,7 +4131,7 @@ add_insn("subss", "xmm_xmm32", modifiers=[0xF3, 0x5C])
|
|||
add_insn("ucomiss", "xmm_xmm32", modifiers=[0, 0x2E])
|
||||
|
||||
add_insn("vaddss", "xmm_xmm32", modifiers=[0xF3, 0x58, VEXL0], avx=True)
|
||||
add_insn("vcomiss", "xmm_xmm32", modifiers=[0, 0x2F, VEXL0], avx=True)
|
||||
# vcomiss and vucomiss are only two operand
|
||||
add_insn("vdivss", "xmm_xmm32", modifiers=[0xF3, 0x5E, VEXL0], avx=True)
|
||||
add_insn("vmaxss", "xmm_xmm32", modifiers=[0xF3, 0x5F, VEXL0], avx=True)
|
||||
add_insn("vminss", "xmm_xmm32", modifiers=[0xF3, 0x5D, VEXL0], avx=True)
|
||||
|
|
@ -4140,7 +4140,6 @@ add_insn("vrcpss", "xmm_xmm32", modifiers=[0xF3, 0x53, VEXL0], avx=True)
|
|||
add_insn("vrsqrtss", "xmm_xmm32", modifiers=[0xF3, 0x52, VEXL0], avx=True)
|
||||
add_insn("vsqrtss", "xmm_xmm32", modifiers=[0xF3, 0x51, VEXL0], avx=True)
|
||||
add_insn("vsubss", "xmm_xmm32", modifiers=[0xF3, 0x5C, VEXL0], avx=True)
|
||||
add_insn("vucomiss", "xmm_xmm32", modifiers=[0, 0x2E, VEXL0], avx=True)
|
||||
|
||||
add_group("ssecmp_128",
|
||||
cpu=["SSE"],
|
||||
|
|
@ -4790,7 +4789,7 @@ add_insn("sqrtsd", "xmm_xmm64", modifiers=[0xF2, 0x51])
|
|||
add_insn("ucomisd", "xmm_xmm64", modifiers=[0x66, 0x2E])
|
||||
|
||||
add_insn("vaddsd", "xmm_xmm64", modifiers=[0xF2, 0x58, VEXL0], avx=True)
|
||||
add_insn("vcomisd", "xmm_xmm64", modifiers=[0x66, 0x2F, VEXL0], avx=True)
|
||||
# vcomisd and vucomisd are only two operand
|
||||
# vcvtdq2pd and vcvtps2pd can take ymm, xmm version
|
||||
add_insn("vcvtsd2ss", "xmm_xmm64", modifiers=[0xF2, 0x5A, VEXL0], avx=True)
|
||||
add_insn("vdivsd", "xmm_xmm64", modifiers=[0xF2, 0x5E, VEXL0], avx=True)
|
||||
|
|
@ -4799,7 +4798,6 @@ add_insn("vminsd", "xmm_xmm64", modifiers=[0xF2, 0x5D, VEXL0], avx=True)
|
|||
add_insn("vmulsd", "xmm_xmm64", modifiers=[0xF2, 0x59, VEXL0], avx=True)
|
||||
add_insn("vsubsd", "xmm_xmm64", modifiers=[0xF2, 0x5C, VEXL0], avx=True)
|
||||
add_insn("vsqrtsd", "xmm_xmm64", modifiers=[0xF2, 0x51, VEXL0], avx=True)
|
||||
add_insn("vucomisd", "xmm_xmm64", modifiers=[0x66, 0x2E, VEXL0], avx=True)
|
||||
|
||||
add_insn("addpd", "xmm_xmm128", modifiers=[0x66, 0x58], cpu=["SSE2"])
|
||||
add_insn("andnpd", "xmm_xmm128", modifiers=[0x66, 0x55], cpu=["SSE2"])
|
||||
|
|
@ -5277,9 +5275,7 @@ add_insn("vpsignb", "ssse3", modifiers=[0x08, VEXL0], avx=True)
|
|||
add_insn("vpsignw", "ssse3", modifiers=[0x09, VEXL0], avx=True)
|
||||
add_insn("vpsignd", "ssse3", modifiers=[0x0A, VEXL0], avx=True)
|
||||
add_insn("vpmulhrsw", "ssse3", modifiers=[0x0B, VEXL0], avx=True)
|
||||
add_insn("vpabsb", "ssse3", modifiers=[0x1C, VEXL0], avx=True)
|
||||
add_insn("vpabsw", "ssse3", modifiers=[0x1D, VEXL0], avx=True)
|
||||
add_insn("vpabsd", "ssse3", modifiers=[0x1E, VEXL0], avx=True)
|
||||
# vpabsb/vpabsw/vpabsd are 2 operand only
|
||||
|
||||
add_group("ssse3imm",
|
||||
cpu=["SSSE3"],
|
||||
|
|
@ -5340,7 +5336,7 @@ add_insn("ptest", "sse4", modifiers=[0x17])
|
|||
add_insn("vpackusdw", "ssse3", modifiers=[0x2B, VEXL0], avx=True)
|
||||
add_insn("vpcmpeqq", "ssse3", modifiers=[0x29, VEXL0], avx=True)
|
||||
add_insn("vpcmpgtq", "ssse3", modifiers=[0x37, VEXL0], avx=True)
|
||||
add_insn("vphminposuw", "ssse3", modifiers=[0x41, VEXL0], avx=True)
|
||||
# vphminposuw is 2 operand only
|
||||
add_insn("vpmaxsb", "ssse3", modifiers=[0x3C, VEXL0], avx=True)
|
||||
add_insn("vpmaxsd", "ssse3", modifiers=[0x3D, VEXL0], avx=True)
|
||||
add_insn("vpmaxud", "ssse3", modifiers=[0x3F, VEXL0], avx=True)
|
||||
|
|
@ -5351,7 +5347,7 @@ add_insn("vpminud", "ssse3", modifiers=[0x3B, VEXL0], avx=True)
|
|||
add_insn("vpminuw", "ssse3", modifiers=[0x3A, VEXL0], avx=True)
|
||||
add_insn("vpmuldq", "ssse3", modifiers=[0x28, VEXL0], avx=True)
|
||||
add_insn("vpmulld", "ssse3", modifiers=[0x40, VEXL0], avx=True)
|
||||
# vptest, however, uses SSE4 style (2 operand only)
|
||||
# vptest uses SSE4 style (2 operand only), and takes 256-bit operands
|
||||
add_insn("vptest", "sse4", modifiers=[0x17, VEXL0], avx=True)
|
||||
|
||||
add_group("sse4imm_256",
|
||||
|
|
@ -5910,7 +5906,7 @@ add_group("avx_sse4imm",
|
|||
vex=128,
|
||||
prefix=0x66,
|
||||
opcode=[0x0F, 0x3A, 0x00],
|
||||
operands=[Operand(type="SIMDReg", size=128, dest="SpareVEX"),
|
||||
operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
|
||||
Operand(type="SIMDRM", size=128, relaxed=True, dest="EA"),
|
||||
Operand(type="Imm", size=8, relaxed=True, dest="Imm")])
|
||||
add_group("avx_sse4imm",
|
||||
|
|
@ -5941,7 +5937,7 @@ add_group("vmovddup",
|
|||
vex=128,
|
||||
prefix=0x00,
|
||||
opcode=[0x0F, 0x00],
|
||||
operands=[Operand(type="SIMDReg", size=128, dest="SpareVEX"),
|
||||
operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
|
||||
Operand(type="SIMDReg", size=128, dest="EA")])
|
||||
add_group("vmovddup",
|
||||
cpu=["AVX"],
|
||||
|
|
@ -5949,7 +5945,7 @@ add_group("vmovddup",
|
|||
vex=128,
|
||||
prefix=0x00,
|
||||
opcode=[0x0F, 0x00],
|
||||
operands=[Operand(type="SIMDReg", size=128, dest="SpareVEX"),
|
||||
operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
|
||||
Operand(type="Mem", size=64, relaxed=True, dest="EA")])
|
||||
add_group("vmovddup",
|
||||
cpu=["AVX"],
|
||||
|
|
@ -5962,6 +5958,50 @@ add_group("vmovddup",
|
|||
|
||||
add_insn("vmovddup", "vmovddup", modifiers=[0xF2, 0x12])
|
||||
|
||||
# Some xmm_xmm64 combinations only take two operands in AVX
|
||||
# (VEX.vvvv must be 1111b)
|
||||
add_group("avx_xmm_xmm64",
|
||||
cpu=["SSE2"],
|
||||
modifiers=["PreAdd", "Op1Add"],
|
||||
vex=128,
|
||||
prefix=0x00,
|
||||
opcode=[0x0F, 0x00],
|
||||
operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
|
||||
Operand(type="SIMDReg", size=128, dest="EA")])
|
||||
add_group("avx_xmm_xmm64",
|
||||
cpu=["SSE2"],
|
||||
modifiers=["PreAdd", "Op1Add"],
|
||||
vex=128,
|
||||
prefix=0x00,
|
||||
opcode=[0x0F, 0x00],
|
||||
operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
|
||||
Operand(type="Mem", size=64, relaxed=True, dest="EA")])
|
||||
|
||||
add_insn("vcomisd", "avx_xmm_xmm64", modifiers=[0x66, 0x2F], avx=True)
|
||||
add_insn("vucomisd", "avx_xmm_xmm64", modifiers=[0x66, 0x2E], avx=True)
|
||||
|
||||
# Some xmm_xmm64 combinations only take two operands in AVX
|
||||
# (VEX.vvvv must be 1111b)
|
||||
add_group("avx_xmm_xmm32",
|
||||
cpu=["SSE"],
|
||||
modifiers=["PreAdd", "Op1Add"],
|
||||
vex=128,
|
||||
prefix=0x00,
|
||||
opcode=[0x0F, 0x00],
|
||||
operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
|
||||
Operand(type="SIMDReg", size=128, dest="EA")])
|
||||
add_group("avx_xmm_xmm32",
|
||||
cpu=["SSE"],
|
||||
modifiers=["PreAdd", "Op1Add"],
|
||||
vex=128,
|
||||
prefix=0x00,
|
||||
opcode=[0x0F, 0x00],
|
||||
operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
|
||||
Operand(type="Mem", size=32, relaxed=True, dest="EA")])
|
||||
|
||||
add_insn("vcomiss", "avx_xmm_xmm32", modifiers=[0, 0x2F], avx=True)
|
||||
add_insn("vucomiss", "avx_xmm_xmm32", modifiers=[0, 0x2E], avx=True)
|
||||
|
||||
# Some conversion functions take ymm, xmm combination
|
||||
add_group("avx_cvt_xmm64",
|
||||
cpu=["AVX"],
|
||||
|
|
@ -5991,6 +6031,22 @@ add_group("avx_cvt_xmm64",
|
|||
add_insn("vcvtdq2pd", "avx_cvt_xmm64", modifiers=[0xF3, 0xE6])
|
||||
add_insn("vcvtps2pd", "avx_cvt_xmm64", modifiers=[0, 0x5A])
|
||||
|
||||
# Some SSE3 opcodes are only two operand in AVX
|
||||
# (VEX.vvvv must be 1111b)
|
||||
add_group("avx_ssse3_2op",
|
||||
cpu=["AVX"],
|
||||
modifiers=["Op2Add"],
|
||||
vex=128,
|
||||
prefix=0x66,
|
||||
opcode=[0x0F, 0x38, 0x00],
|
||||
operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
|
||||
Operand(type="SIMDRM", size=128, relaxed=True, dest="EA")])
|
||||
|
||||
add_insn("vpabsb", "avx_ssse3_2op", modifiers=[0x1C], avx=True)
|
||||
add_insn("vpabsw", "avx_ssse3_2op", modifiers=[0x1D], avx=True)
|
||||
add_insn("vpabsd", "avx_ssse3_2op", modifiers=[0x1E], avx=True)
|
||||
add_insn("vphminposuw", "avx_ssse3_2op", modifiers=[0x41], avx=True)
|
||||
|
||||
# Some conversion functions take xmm, ymm combination
|
||||
# Need separate x and y versions for gas mode
|
||||
add_group("avx_cvt_xmm128_x",
|
||||
|
|
@ -6040,8 +6096,8 @@ add_insn("vcvttpd2dqy", "avx_cvt_xmm128_y", modifiers=[0x66, 0xE6], parser="gas"
|
|||
add_insn("vcvttpd2dq", "avx_cvt_xmm128", modifiers=[0x66, 0xE6])
|
||||
|
||||
# Instructions new to AVX
|
||||
add_insn("vptestps", "sse4", modifiers=[0x0E, VEXL0], avx=True)
|
||||
add_insn("vptestpd", "sse4", modifiers=[0x0F, VEXL0], avx=True)
|
||||
add_insn("vtestps", "sse4", modifiers=[0x0E, VEXL0], avx=True)
|
||||
add_insn("vtestpd", "sse4", modifiers=[0x0F, VEXL0], avx=True)
|
||||
|
||||
add_group("vbroadcastss",
|
||||
cpu=["AVX"],
|
||||
|
|
@ -6318,9 +6374,9 @@ add_group("fma_128_256",
|
|||
prefix=0x66,
|
||||
opcode=[0x0F, 0x3A, 0x00],
|
||||
operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
|
||||
Operand(type="SIMDReg", size=128, dest="VEX"),
|
||||
Operand(type="SIMDReg", size=128, dest="VEXImmSrc"),
|
||||
Operand(type="SIMDRM", size=128, relaxed=True, dest="EA"),
|
||||
Operand(type="SIMDReg", size=128, dest="VEXImmSrc")])
|
||||
Operand(type="SIMDReg", size=128, dest="VEX")])
|
||||
add_group("fma_128_256",
|
||||
cpu=["FMA"],
|
||||
modifiers=["Op2Add"],
|
||||
|
|
@ -6329,8 +6385,8 @@ add_group("fma_128_256",
|
|||
prefix=0x66,
|
||||
opcode=[0x0F, 0x3A, 0x00],
|
||||
operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
|
||||
Operand(type="SIMDReg", size=128, dest="VEX"),
|
||||
Operand(type="SIMDReg", size=128, dest="VEXImmSrc"),
|
||||
Operand(type="SIMDReg", size=128, dest="VEX"),
|
||||
Operand(type="SIMDRM", size=128, relaxed=True, dest="EA")])
|
||||
add_group("fma_128_256",
|
||||
cpu=["FMA"],
|
||||
|
|
@ -6340,9 +6396,9 @@ add_group("fma_128_256",
|
|||
prefix=0x66,
|
||||
opcode=[0x0F, 0x3A, 0x00],
|
||||
operands=[Operand(type="SIMDReg", size=256, dest="Spare"),
|
||||
Operand(type="SIMDReg", size=256, dest="VEX"),
|
||||
Operand(type="SIMDReg", size=256, dest="VEXImmSrc"),
|
||||
Operand(type="SIMDRM", size=256, relaxed=True, dest="EA"),
|
||||
Operand(type="SIMDReg", size=256, dest="VEXImmSrc")])
|
||||
Operand(type="SIMDReg", size=256, dest="VEX")])
|
||||
add_group("fma_128_256",
|
||||
cpu=["FMA"],
|
||||
modifiers=["Op2Add"],
|
||||
|
|
@ -6351,8 +6407,8 @@ add_group("fma_128_256",
|
|||
prefix=0x66,
|
||||
opcode=[0x0F, 0x3A, 0x00],
|
||||
operands=[Operand(type="SIMDReg", size=256, dest="Spare"),
|
||||
Operand(type="SIMDReg", size=256, dest="VEX"),
|
||||
Operand(type="SIMDReg", size=256, dest="VEXImmSrc"),
|
||||
Operand(type="SIMDReg", size=256, dest="VEX"),
|
||||
Operand(type="SIMDRM", size=256, relaxed=True, dest="EA")])
|
||||
|
||||
add_insn("vfmaddpd", "fma_128_256", modifiers=[0x69])
|
||||
|
|
@ -6377,9 +6433,9 @@ for sz in [32, 64]:
|
|||
prefix=0x66,
|
||||
opcode=[0x0F, 0x3A, 0x00],
|
||||
operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
|
||||
Operand(type="SIMDReg", size=128, dest="VEX"),
|
||||
Operand(type="SIMDReg", size=128, dest="VEXImmSrc"),
|
||||
Operand(type="SIMDReg", size=128, dest="EA"),
|
||||
Operand(type="SIMDReg", size=128, dest="VEXImmSrc")])
|
||||
Operand(type="SIMDReg", size=128, dest="VEX")])
|
||||
add_group("fma_128_m%d" % sz,
|
||||
cpu=["FMA"],
|
||||
modifiers=["Op2Add"],
|
||||
|
|
@ -6388,9 +6444,9 @@ for sz in [32, 64]:
|
|||
prefix=0x66,
|
||||
opcode=[0x0F, 0x3A, 0x00],
|
||||
operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
|
||||
Operand(type="SIMDReg", size=128, dest="VEX"),
|
||||
Operand(type="SIMDReg", size=128, dest="VEXImmSrc"),
|
||||
Operand(type="Mem", size=sz, relaxed=True, dest="EA"),
|
||||
Operand(type="SIMDReg", size=128, dest="VEXImmSrc")])
|
||||
Operand(type="SIMDReg", size=128, dest="VEX")])
|
||||
add_group("fma_128_m%d" % sz,
|
||||
cpu=["FMA"],
|
||||
modifiers=["Op2Add"],
|
||||
|
|
@ -6399,8 +6455,8 @@ for sz in [32, 64]:
|
|||
prefix=0x66,
|
||||
opcode=[0x0F, 0x3A, 0x00],
|
||||
operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
|
||||
Operand(type="SIMDReg", size=128, dest="VEX"),
|
||||
Operand(type="SIMDReg", size=128, dest="VEXImmSrc"),
|
||||
Operand(type="SIMDReg", size=128, dest="VEX"),
|
||||
Operand(type="Mem", size=sz, relaxed=True, dest="EA")])
|
||||
|
||||
add_insn("vfmaddsd", "fma_128_m64", modifiers=[0x6B])
|
||||
|
|
|
|||
|
|
@ -2154,19 +2154,19 @@ vptest ymm1, ymm2
|
|||
vptest ymm1, [rax]
|
||||
vptest ymm1, yword [rax]
|
||||
|
||||
vptestps xmm1, xmm2
|
||||
vptestps xmm1, [rax]
|
||||
vptestps xmm1, dqword [rax]
|
||||
vptestps ymm1, ymm2
|
||||
vptestps ymm1, [rax]
|
||||
vptestps ymm1, yword [rax]
|
||||
vtestps xmm1, xmm2
|
||||
vtestps xmm1, [rax]
|
||||
vtestps xmm1, dqword [rax]
|
||||
vtestps ymm1, ymm2
|
||||
vtestps ymm1, [rax]
|
||||
vtestps ymm1, yword [rax]
|
||||
|
||||
vptestpd xmm1, xmm2
|
||||
vptestpd xmm1, [rax]
|
||||
vptestpd xmm1, dqword [rax]
|
||||
vptestpd ymm1, ymm2
|
||||
vptestpd ymm1, [rax]
|
||||
vptestpd ymm1, yword [rax]
|
||||
vtestpd xmm1, xmm2
|
||||
vtestpd xmm1, [rax]
|
||||
vtestpd xmm1, dqword [rax]
|
||||
vtestpd ymm1, ymm2
|
||||
vtestpd ymm1, [rax]
|
||||
vtestpd ymm1, yword [rax]
|
||||
|
||||
psubb xmm1, xmm2
|
||||
psubb xmm1, [rax]
|
||||
|
|
|
|||
|
|
@ -1049,15 +1049,15 @@ ca
|
|||
2f
|
||||
08
|
||||
c5
|
||||
f1
|
||||
f9
|
||||
2f
|
||||
ca
|
||||
c5
|
||||
f1
|
||||
f9
|
||||
2f
|
||||
08
|
||||
c5
|
||||
f1
|
||||
f9
|
||||
2f
|
||||
08
|
||||
0f
|
||||
|
|
@ -1070,15 +1070,15 @@ ca
|
|||
2f
|
||||
08
|
||||
c5
|
||||
f0
|
||||
f8
|
||||
2f
|
||||
ca
|
||||
c5
|
||||
f0
|
||||
f8
|
||||
2f
|
||||
08
|
||||
c5
|
||||
f0
|
||||
f8
|
||||
2f
|
||||
08
|
||||
f3
|
||||
|
|
@ -3081,15 +3081,15 @@ f2
|
|||
12
|
||||
08
|
||||
c5
|
||||
f3
|
||||
fb
|
||||
12
|
||||
ca
|
||||
c5
|
||||
f3
|
||||
fb
|
||||
12
|
||||
08
|
||||
c5
|
||||
f3
|
||||
fb
|
||||
12
|
||||
08
|
||||
c5
|
||||
|
|
@ -4120,17 +4120,17 @@ ca
|
|||
08
|
||||
c4
|
||||
e2
|
||||
71
|
||||
79
|
||||
1c
|
||||
ca
|
||||
c4
|
||||
e2
|
||||
71
|
||||
79
|
||||
1c
|
||||
08
|
||||
c4
|
||||
e2
|
||||
71
|
||||
79
|
||||
1c
|
||||
08
|
||||
66
|
||||
|
|
@ -4150,17 +4150,17 @@ ca
|
|||
08
|
||||
c4
|
||||
e2
|
||||
71
|
||||
79
|
||||
1d
|
||||
ca
|
||||
c4
|
||||
e2
|
||||
71
|
||||
79
|
||||
1d
|
||||
08
|
||||
c4
|
||||
e2
|
||||
71
|
||||
79
|
||||
1d
|
||||
08
|
||||
66
|
||||
|
|
@ -4180,17 +4180,17 @@ ca
|
|||
08
|
||||
c4
|
||||
e2
|
||||
71
|
||||
79
|
||||
1e
|
||||
ca
|
||||
c4
|
||||
e2
|
||||
71
|
||||
79
|
||||
1e
|
||||
08
|
||||
c4
|
||||
e2
|
||||
71
|
||||
79
|
||||
1e
|
||||
08
|
||||
66
|
||||
|
|
@ -6024,17 +6024,17 @@ ca
|
|||
08
|
||||
c4
|
||||
e2
|
||||
71
|
||||
79
|
||||
41
|
||||
ca
|
||||
c4
|
||||
e2
|
||||
71
|
||||
79
|
||||
41
|
||||
08
|
||||
c4
|
||||
e2
|
||||
71
|
||||
79
|
||||
41
|
||||
08
|
||||
66
|
||||
|
|
@ -9465,19 +9465,19 @@ ca
|
|||
05
|
||||
c4
|
||||
e3
|
||||
71
|
||||
79
|
||||
09
|
||||
ca
|
||||
05
|
||||
c4
|
||||
e3
|
||||
71
|
||||
79
|
||||
09
|
||||
08
|
||||
05
|
||||
c4
|
||||
e3
|
||||
71
|
||||
79
|
||||
09
|
||||
08
|
||||
05
|
||||
|
|
@ -9519,19 +9519,19 @@ ca
|
|||
05
|
||||
c4
|
||||
e3
|
||||
71
|
||||
79
|
||||
08
|
||||
ca
|
||||
05
|
||||
c4
|
||||
e3
|
||||
71
|
||||
79
|
||||
08
|
||||
08
|
||||
05
|
||||
c4
|
||||
e3
|
||||
71
|
||||
79
|
||||
08
|
||||
08
|
||||
05
|
||||
|
|
@ -10111,15 +10111,15 @@ ca
|
|||
2e
|
||||
08
|
||||
c5
|
||||
f1
|
||||
f9
|
||||
2e
|
||||
ca
|
||||
c5
|
||||
f1
|
||||
f9
|
||||
2e
|
||||
08
|
||||
c5
|
||||
f1
|
||||
f9
|
||||
2e
|
||||
08
|
||||
0f
|
||||
|
|
@ -10132,15 +10132,15 @@ ca
|
|||
2e
|
||||
08
|
||||
c5
|
||||
f0
|
||||
f8
|
||||
2e
|
||||
ca
|
||||
c5
|
||||
f0
|
||||
f8
|
||||
2e
|
||||
08
|
||||
c5
|
||||
f0
|
||||
f8
|
||||
2e
|
||||
08
|
||||
66
|
||||
|
|
|
|||
|
|
@ -1,540 +1,540 @@
|
|||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
69
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
69
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
69
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
69
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
69
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
69
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
69
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
69
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f5
|
||||
ed
|
||||
69
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f5
|
||||
ed
|
||||
69
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
68
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
68
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
68
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
68
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
68
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f5
|
||||
ed
|
||||
68
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
6b
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
6b
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
6b
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
6b
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
6b
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
6a
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
6a
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
6a
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
5d
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
5d
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
5d
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
5d
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
5d
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f5
|
||||
ed
|
||||
5d
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
5c
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
5c
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
5c
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
5c
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
5c
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f5
|
||||
ed
|
||||
5c
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
6d
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
6d
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
6d
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
6d
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
6d
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f5
|
||||
ed
|
||||
6d
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
6c
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
6c
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
6c
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
6c
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
6c
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f5
|
||||
ed
|
||||
6c
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
6f
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
6f
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
6f
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
6e
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
6e
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
6e
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
79
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
79
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
79
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
79
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
79
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f5
|
||||
ed
|
||||
79
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
78
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
78
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
78
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
78
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
78
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f5
|
||||
ed
|
||||
78
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
7b
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
7b
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
7b
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
7a
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
7a
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
7a
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
7d
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
7d
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
7d
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
7d
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
7d
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f5
|
||||
ed
|
||||
7d
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
7c
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
7c
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
7c
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
7c
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
75
|
||||
65
|
||||
7c
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f5
|
||||
ed
|
||||
7c
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
7f
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
7f
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
7f
|
||||
00
|
||||
20
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
7e
|
||||
c2
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
71
|
||||
61
|
||||
7e
|
||||
00
|
||||
30
|
||||
10
|
||||
c4
|
||||
e3
|
||||
f1
|
||||
e9
|
||||
7e
|
||||
00
|
||||
20
|
||||
10
|
||||
|
|
|
|||
|
|
@ -76,10 +76,14 @@ State *
|
|||
State_new(void)
|
||||
{
|
||||
State *s = malloc(sizeof(State));
|
||||
s->label = 0;
|
||||
s->rule = NULL;
|
||||
s->next = NULL;
|
||||
s->link = NULL;
|
||||
s->depth = 0;
|
||||
s->kCount = 0;
|
||||
s->kernel = NULL;
|
||||
s->isBase = 0;
|
||||
s->action = NULL;
|
||||
s->go.nSpans = 0;
|
||||
s->go.span = NULL;
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ fill(Scanner *s, unsigned char *cursor)
|
|||
s->lim -= cnt;
|
||||
}
|
||||
if((s->top - s->lim) < BSIZE){
|
||||
unsigned char *buf = malloc(((s->lim - s->bot) + BSIZE));
|
||||
unsigned char *buf = malloc(((s->lim - s->bot) + BSIZE) + 1);
|
||||
memcpy(buf, s->tok, s->lim - s->tok);
|
||||
s->tok = buf;
|
||||
s->ptr = &buf[s->ptr - s->bot];
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ fill(Scanner *s, unsigned char *cursor)
|
|||
s->lim -= cnt;
|
||||
}
|
||||
if((s->top - s->lim) < BSIZE){
|
||||
unsigned char *buf = malloc(((s->lim - s->bot) + BSIZE));
|
||||
unsigned char *buf = malloc(((s->lim - s->bot) + BSIZE) + 1);
|
||||
memcpy(buf, s->tok, s->lim - s->tok);
|
||||
s->tok = buf;
|
||||
s->ptr = &buf[s->ptr - s->bot];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue