Updated transitive dependencies
This commit is contained in:
parent
9c590c9bc6
commit
6fc21236a7
2
go.mod
2
go.mod
|
@ -5,7 +5,7 @@ go 1.21
|
||||||
require (
|
require (
|
||||||
github.com/alecthomas/chroma/v2 v2.12.0
|
github.com/alecthomas/chroma/v2 v2.12.0
|
||||||
github.com/julienschmidt/httprouter v1.3.0
|
github.com/julienschmidt/httprouter v1.3.0
|
||||||
github.com/klauspost/compress v1.17.4
|
github.com/klauspost/compress v1.17.5
|
||||||
github.com/spf13/cobra v1.8.0
|
github.com/spf13/cobra v1.8.0
|
||||||
github.com/yosssi/gohtml v0.0.0-20201013000340-ee4748c638f4
|
github.com/yosssi/gohtml v0.0.0-20201013000340-ee4748c638f4
|
||||||
golang.org/x/image v0.15.0
|
golang.org/x/image v0.15.0
|
||||||
|
|
4
go.sum
4
go.sum
|
@ -13,8 +13,8 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2
|
||||||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||||
github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=
|
github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=
|
||||||
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
|
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
|
||||||
github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4=
|
github.com/klauspost/compress v1.17.5 h1:d4vBd+7CHydUqpFBgUEKkSdtSugf9YFmSkvUYPquI5E=
|
||||||
github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
|
github.com/klauspost/compress v1.17.5/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
|
||||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
|
github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
|
||||||
github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
|
github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
|
||||||
|
|
|
@ -16,6 +16,18 @@ This package provides various compression algorithms.
|
||||||
|
|
||||||
# changelog
|
# changelog
|
||||||
|
|
||||||
|
* Dec 1st, 2023 - [v1.17.4](https://github.com/klauspost/compress/releases/tag/v1.17.4)
|
||||||
|
* huff0: Speed up symbol counting by @greatroar in https://github.com/klauspost/compress/pull/887
|
||||||
|
* huff0: Remove byteReader by @greatroar in https://github.com/klauspost/compress/pull/886
|
||||||
|
* gzhttp: Allow overriding decompression on transport https://github.com/klauspost/compress/pull/892
|
||||||
|
* gzhttp: Clamp compression level https://github.com/klauspost/compress/pull/890
|
||||||
|
* gzip: Error out if reserved bits are set https://github.com/klauspost/compress/pull/891
|
||||||
|
|
||||||
|
* Nov 15th, 2023 - [v1.17.3](https://github.com/klauspost/compress/releases/tag/v1.17.3)
|
||||||
|
* fse: Fix max header size https://github.com/klauspost/compress/pull/881
|
||||||
|
* zstd: Improve better/best compression https://github.com/klauspost/compress/pull/877
|
||||||
|
* gzhttp: Fix missing content type on Close https://github.com/klauspost/compress/pull/883
|
||||||
|
|
||||||
* Oct 22nd, 2023 - [v1.17.2](https://github.com/klauspost/compress/releases/tag/v1.17.2)
|
* Oct 22nd, 2023 - [v1.17.2](https://github.com/klauspost/compress/releases/tag/v1.17.2)
|
||||||
* zstd: Fix rare *CORRUPTION* output in "best" mode. See https://github.com/klauspost/compress/pull/876
|
* zstd: Fix rare *CORRUPTION* output in "best" mode. See https://github.com/klauspost/compress/pull/876
|
||||||
|
|
||||||
|
@ -554,7 +566,7 @@ For direct deflate use, NewStatelessWriter and StatelessDeflate are available. S
|
||||||
|
|
||||||
A `bufio.Writer` can of course be used to control write sizes. For example, to use a 4KB buffer:
|
A `bufio.Writer` can of course be used to control write sizes. For example, to use a 4KB buffer:
|
||||||
|
|
||||||
```
|
```go
|
||||||
// replace 'ioutil.Discard' with your output.
|
// replace 'ioutil.Discard' with your output.
|
||||||
gzw, err := gzip.NewWriterLevel(ioutil.Discard, gzip.StatelessCompression)
|
gzw, err := gzip.NewWriterLevel(ioutil.Discard, gzip.StatelessCompression)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
module github.com/klauspost/compress
|
module github.com/klauspost/compress
|
||||||
|
|
||||||
go 1.16
|
go 1.19
|
||||||
|
|
||||||
|
|
|
@ -95,42 +95,54 @@ type Header struct {
|
||||||
// If there isn't enough input, io.ErrUnexpectedEOF is returned.
|
// If there isn't enough input, io.ErrUnexpectedEOF is returned.
|
||||||
// The FirstBlock.OK will indicate if enough information was available to decode the first block header.
|
// The FirstBlock.OK will indicate if enough information was available to decode the first block header.
|
||||||
func (h *Header) Decode(in []byte) error {
|
func (h *Header) Decode(in []byte) error {
|
||||||
|
_, err := h.DecodeAndStrip(in)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DecodeAndStrip will decode the header from the beginning of the stream
|
||||||
|
// and on success return the remaining bytes.
|
||||||
|
// This will decode the frame header and the first block header if enough bytes are provided.
|
||||||
|
// It is recommended to provide at least HeaderMaxSize bytes.
|
||||||
|
// If the frame header cannot be read an error will be returned.
|
||||||
|
// If there isn't enough input, io.ErrUnexpectedEOF is returned.
|
||||||
|
// The FirstBlock.OK will indicate if enough information was available to decode the first block header.
|
||||||
|
func (h *Header) DecodeAndStrip(in []byte) (remain []byte, err error) {
|
||||||
*h = Header{}
|
*h = Header{}
|
||||||
if len(in) < 4 {
|
if len(in) < 4 {
|
||||||
return io.ErrUnexpectedEOF
|
return nil, io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
h.HeaderSize += 4
|
h.HeaderSize += 4
|
||||||
b, in := in[:4], in[4:]
|
b, in := in[:4], in[4:]
|
||||||
if string(b) != frameMagic {
|
if string(b) != frameMagic {
|
||||||
if string(b[1:4]) != skippableFrameMagic || b[0]&0xf0 != 0x50 {
|
if string(b[1:4]) != skippableFrameMagic || b[0]&0xf0 != 0x50 {
|
||||||
return ErrMagicMismatch
|
return nil, ErrMagicMismatch
|
||||||
}
|
}
|
||||||
if len(in) < 4 {
|
if len(in) < 4 {
|
||||||
return io.ErrUnexpectedEOF
|
return nil, io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
h.HeaderSize += 4
|
h.HeaderSize += 4
|
||||||
h.Skippable = true
|
h.Skippable = true
|
||||||
h.SkippableID = int(b[0] & 0xf)
|
h.SkippableID = int(b[0] & 0xf)
|
||||||
h.SkippableSize = binary.LittleEndian.Uint32(in)
|
h.SkippableSize = binary.LittleEndian.Uint32(in)
|
||||||
return nil
|
return in[4:], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read Window_Descriptor
|
// Read Window_Descriptor
|
||||||
// https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#window_descriptor
|
// https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#window_descriptor
|
||||||
if len(in) < 1 {
|
if len(in) < 1 {
|
||||||
return io.ErrUnexpectedEOF
|
return nil, io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
fhd, in := in[0], in[1:]
|
fhd, in := in[0], in[1:]
|
||||||
h.HeaderSize++
|
h.HeaderSize++
|
||||||
h.SingleSegment = fhd&(1<<5) != 0
|
h.SingleSegment = fhd&(1<<5) != 0
|
||||||
h.HasCheckSum = fhd&(1<<2) != 0
|
h.HasCheckSum = fhd&(1<<2) != 0
|
||||||
if fhd&(1<<3) != 0 {
|
if fhd&(1<<3) != 0 {
|
||||||
return errors.New("reserved bit set on frame header")
|
return nil, errors.New("reserved bit set on frame header")
|
||||||
}
|
}
|
||||||
|
|
||||||
if !h.SingleSegment {
|
if !h.SingleSegment {
|
||||||
if len(in) < 1 {
|
if len(in) < 1 {
|
||||||
return io.ErrUnexpectedEOF
|
return nil, io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
var wd byte
|
var wd byte
|
||||||
wd, in = in[0], in[1:]
|
wd, in = in[0], in[1:]
|
||||||
|
@ -148,7 +160,7 @@ func (h *Header) Decode(in []byte) error {
|
||||||
size = 4
|
size = 4
|
||||||
}
|
}
|
||||||
if len(in) < int(size) {
|
if len(in) < int(size) {
|
||||||
return io.ErrUnexpectedEOF
|
return nil, io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
b, in = in[:size], in[size:]
|
b, in = in[:size], in[size:]
|
||||||
h.HeaderSize += int(size)
|
h.HeaderSize += int(size)
|
||||||
|
@ -178,7 +190,7 @@ func (h *Header) Decode(in []byte) error {
|
||||||
if fcsSize > 0 {
|
if fcsSize > 0 {
|
||||||
h.HasFCS = true
|
h.HasFCS = true
|
||||||
if len(in) < fcsSize {
|
if len(in) < fcsSize {
|
||||||
return io.ErrUnexpectedEOF
|
return nil, io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
b, in = in[:fcsSize], in[fcsSize:]
|
b, in = in[:fcsSize], in[fcsSize:]
|
||||||
h.HeaderSize += int(fcsSize)
|
h.HeaderSize += int(fcsSize)
|
||||||
|
@ -199,7 +211,7 @@ func (h *Header) Decode(in []byte) error {
|
||||||
|
|
||||||
// Frame Header done, we will not fail from now on.
|
// Frame Header done, we will not fail from now on.
|
||||||
if len(in) < 3 {
|
if len(in) < 3 {
|
||||||
return nil
|
return in, nil
|
||||||
}
|
}
|
||||||
tmp := in[:3]
|
tmp := in[:3]
|
||||||
bh := uint32(tmp[0]) | (uint32(tmp[1]) << 8) | (uint32(tmp[2]) << 16)
|
bh := uint32(tmp[0]) | (uint32(tmp[1]) << 8) | (uint32(tmp[2]) << 16)
|
||||||
|
@ -209,7 +221,7 @@ func (h *Header) Decode(in []byte) error {
|
||||||
cSize := int(bh >> 3)
|
cSize := int(bh >> 3)
|
||||||
switch blockType {
|
switch blockType {
|
||||||
case blockTypeReserved:
|
case blockTypeReserved:
|
||||||
return nil
|
return in, nil
|
||||||
case blockTypeRLE:
|
case blockTypeRLE:
|
||||||
h.FirstBlock.Compressed = true
|
h.FirstBlock.Compressed = true
|
||||||
h.FirstBlock.DecompressedSize = cSize
|
h.FirstBlock.DecompressedSize = cSize
|
||||||
|
@ -225,5 +237,25 @@ func (h *Header) Decode(in []byte) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
h.FirstBlock.OK = true
|
h.FirstBlock.OK = true
|
||||||
return nil
|
return in, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// AppendTo will append the encoded header to the dst slice.
|
||||||
|
// There is no error checking performed on the header values.
|
||||||
|
func (h *Header) AppendTo(dst []byte) ([]byte, error) {
|
||||||
|
if h.Skippable {
|
||||||
|
magic := [4]byte{0x50, 0x2a, 0x4d, 0x18}
|
||||||
|
magic[0] |= byte(h.SkippableID & 0xf)
|
||||||
|
dst = append(dst, magic[:]...)
|
||||||
|
f := h.SkippableSize
|
||||||
|
return append(dst, uint8(f), uint8(f>>8), uint8(f>>16), uint8(f>>24)), nil
|
||||||
|
}
|
||||||
|
f := frameHeader{
|
||||||
|
ContentSize: h.FrameContentSize,
|
||||||
|
WindowSize: uint32(h.WindowSize),
|
||||||
|
SingleSegment: h.SingleSegment,
|
||||||
|
Checksum: h.HasCheckSum,
|
||||||
|
DictID: h.DictionaryID,
|
||||||
|
}
|
||||||
|
return f.appendTo(dst), nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,7 +94,7 @@ func WithEncoderConcurrency(n int) EOption {
|
||||||
// The value must be a power of two between MinWindowSize and MaxWindowSize.
|
// The value must be a power of two between MinWindowSize and MaxWindowSize.
|
||||||
// A larger value will enable better compression but allocate more memory and,
|
// A larger value will enable better compression but allocate more memory and,
|
||||||
// for above-default values, take considerably longer.
|
// for above-default values, take considerably longer.
|
||||||
// The default value is determined by the compression level.
|
// The default value is determined by the compression level and max 8MB.
|
||||||
func WithWindowSize(n int) EOption {
|
func WithWindowSize(n int) EOption {
|
||||||
return func(o *encoderOptions) error {
|
return func(o *encoderOptions) error {
|
||||||
switch {
|
switch {
|
||||||
|
@ -232,9 +232,9 @@ func WithEncoderLevel(l EncoderLevel) EOption {
|
||||||
case SpeedDefault:
|
case SpeedDefault:
|
||||||
o.windowSize = 8 << 20
|
o.windowSize = 8 << 20
|
||||||
case SpeedBetterCompression:
|
case SpeedBetterCompression:
|
||||||
o.windowSize = 16 << 20
|
o.windowSize = 8 << 20
|
||||||
case SpeedBestCompression:
|
case SpeedBestCompression:
|
||||||
o.windowSize = 32 << 20
|
o.windowSize = 8 << 20
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !o.customALEntropy {
|
if !o.customALEntropy {
|
||||||
|
|
|
@ -76,7 +76,7 @@ func (f frameHeader) appendTo(dst []byte) []byte {
|
||||||
if f.SingleSegment {
|
if f.SingleSegment {
|
||||||
dst = append(dst, uint8(f.ContentSize))
|
dst = append(dst, uint8(f.ContentSize))
|
||||||
}
|
}
|
||||||
// Unless SingleSegment is set, framessizes < 256 are nto stored.
|
// Unless SingleSegment is set, framessizes < 256 are not stored.
|
||||||
case 1:
|
case 1:
|
||||||
f.ContentSize -= 256
|
f.ContentSize -= 256
|
||||||
dst = append(dst, uint8(f.ContentSize), uint8(f.ContentSize>>8))
|
dst = append(dst, uint8(f.ContentSize), uint8(f.ContentSize>>8))
|
||||||
|
|
|
@ -20,10 +20,9 @@ func (s *fseDecoder) buildDtable() error {
|
||||||
if v == -1 {
|
if v == -1 {
|
||||||
s.dt[highThreshold].setAddBits(uint8(i))
|
s.dt[highThreshold].setAddBits(uint8(i))
|
||||||
highThreshold--
|
highThreshold--
|
||||||
symbolNext[i] = 1
|
v = 1
|
||||||
} else {
|
|
||||||
symbolNext[i] = uint16(v)
|
|
||||||
}
|
}
|
||||||
|
symbolNext[i] = uint16(v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,10 +34,12 @@ func (s *fseDecoder) buildDtable() error {
|
||||||
for ss, v := range s.norm[:s.symbolLen] {
|
for ss, v := range s.norm[:s.symbolLen] {
|
||||||
for i := 0; i < int(v); i++ {
|
for i := 0; i < int(v); i++ {
|
||||||
s.dt[position].setAddBits(uint8(ss))
|
s.dt[position].setAddBits(uint8(ss))
|
||||||
position = (position + step) & tableMask
|
for {
|
||||||
for position > highThreshold {
|
|
||||||
// lowprob area
|
// lowprob area
|
||||||
position = (position + step) & tableMask
|
position = (position + step) & tableMask
|
||||||
|
if position <= highThreshold {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -157,8 +157,7 @@ sequenceDecs_decode_amd64_ll_update_zero:
|
||||||
|
|
||||||
// Update Literal Length State
|
// Update Literal Length State
|
||||||
MOVBQZX DI, R14
|
MOVBQZX DI, R14
|
||||||
SHRQ $0x10, DI
|
SHRL $0x10, DI
|
||||||
MOVWQZX DI, DI
|
|
||||||
LEAQ (BX)(R14*1), CX
|
LEAQ (BX)(R14*1), CX
|
||||||
MOVQ DX, R15
|
MOVQ DX, R15
|
||||||
MOVQ CX, BX
|
MOVQ CX, BX
|
||||||
|
@ -177,8 +176,7 @@ sequenceDecs_decode_amd64_ll_update_zero:
|
||||||
|
|
||||||
// Update Match Length State
|
// Update Match Length State
|
||||||
MOVBQZX R8, R14
|
MOVBQZX R8, R14
|
||||||
SHRQ $0x10, R8
|
SHRL $0x10, R8
|
||||||
MOVWQZX R8, R8
|
|
||||||
LEAQ (BX)(R14*1), CX
|
LEAQ (BX)(R14*1), CX
|
||||||
MOVQ DX, R15
|
MOVQ DX, R15
|
||||||
MOVQ CX, BX
|
MOVQ CX, BX
|
||||||
|
@ -197,8 +195,7 @@ sequenceDecs_decode_amd64_ll_update_zero:
|
||||||
|
|
||||||
// Update Offset State
|
// Update Offset State
|
||||||
MOVBQZX R9, R14
|
MOVBQZX R9, R14
|
||||||
SHRQ $0x10, R9
|
SHRL $0x10, R9
|
||||||
MOVWQZX R9, R9
|
|
||||||
LEAQ (BX)(R14*1), CX
|
LEAQ (BX)(R14*1), CX
|
||||||
MOVQ DX, R15
|
MOVQ DX, R15
|
||||||
MOVQ CX, BX
|
MOVQ CX, BX
|
||||||
|
@ -459,8 +456,7 @@ sequenceDecs_decode_56_amd64_ll_update_zero:
|
||||||
|
|
||||||
// Update Literal Length State
|
// Update Literal Length State
|
||||||
MOVBQZX DI, R14
|
MOVBQZX DI, R14
|
||||||
SHRQ $0x10, DI
|
SHRL $0x10, DI
|
||||||
MOVWQZX DI, DI
|
|
||||||
LEAQ (BX)(R14*1), CX
|
LEAQ (BX)(R14*1), CX
|
||||||
MOVQ DX, R15
|
MOVQ DX, R15
|
||||||
MOVQ CX, BX
|
MOVQ CX, BX
|
||||||
|
@ -479,8 +475,7 @@ sequenceDecs_decode_56_amd64_ll_update_zero:
|
||||||
|
|
||||||
// Update Match Length State
|
// Update Match Length State
|
||||||
MOVBQZX R8, R14
|
MOVBQZX R8, R14
|
||||||
SHRQ $0x10, R8
|
SHRL $0x10, R8
|
||||||
MOVWQZX R8, R8
|
|
||||||
LEAQ (BX)(R14*1), CX
|
LEAQ (BX)(R14*1), CX
|
||||||
MOVQ DX, R15
|
MOVQ DX, R15
|
||||||
MOVQ CX, BX
|
MOVQ CX, BX
|
||||||
|
@ -499,8 +494,7 @@ sequenceDecs_decode_56_amd64_ll_update_zero:
|
||||||
|
|
||||||
// Update Offset State
|
// Update Offset State
|
||||||
MOVBQZX R9, R14
|
MOVBQZX R9, R14
|
||||||
SHRQ $0x10, R9
|
SHRL $0x10, R9
|
||||||
MOVWQZX R9, R9
|
|
||||||
LEAQ (BX)(R14*1), CX
|
LEAQ (BX)(R14*1), CX
|
||||||
MOVQ DX, R15
|
MOVQ DX, R15
|
||||||
MOVQ CX, BX
|
MOVQ CX, BX
|
||||||
|
@ -774,8 +768,7 @@ sequenceDecs_decode_bmi2_fill_2_end:
|
||||||
// Update Offset State
|
// Update Offset State
|
||||||
BZHIQ R8, R15, CX
|
BZHIQ R8, R15, CX
|
||||||
SHRXQ R8, R15, R15
|
SHRXQ R8, R15, R15
|
||||||
MOVQ $0x00001010, R14
|
SHRL $0x10, R8
|
||||||
BEXTRQ R14, R8, R8
|
|
||||||
ADDQ CX, R8
|
ADDQ CX, R8
|
||||||
|
|
||||||
// Load ctx.ofTable
|
// Load ctx.ofTable
|
||||||
|
@ -786,8 +779,7 @@ sequenceDecs_decode_bmi2_fill_2_end:
|
||||||
// Update Match Length State
|
// Update Match Length State
|
||||||
BZHIQ DI, R15, CX
|
BZHIQ DI, R15, CX
|
||||||
SHRXQ DI, R15, R15
|
SHRXQ DI, R15, R15
|
||||||
MOVQ $0x00001010, R14
|
SHRL $0x10, DI
|
||||||
BEXTRQ R14, DI, DI
|
|
||||||
ADDQ CX, DI
|
ADDQ CX, DI
|
||||||
|
|
||||||
// Load ctx.mlTable
|
// Load ctx.mlTable
|
||||||
|
@ -797,8 +789,7 @@ sequenceDecs_decode_bmi2_fill_2_end:
|
||||||
|
|
||||||
// Update Literal Length State
|
// Update Literal Length State
|
||||||
BZHIQ SI, R15, CX
|
BZHIQ SI, R15, CX
|
||||||
MOVQ $0x00001010, R14
|
SHRL $0x10, SI
|
||||||
BEXTRQ R14, SI, SI
|
|
||||||
ADDQ CX, SI
|
ADDQ CX, SI
|
||||||
|
|
||||||
// Load ctx.llTable
|
// Load ctx.llTable
|
||||||
|
@ -1034,8 +1025,7 @@ sequenceDecs_decode_56_bmi2_fill_end:
|
||||||
// Update Offset State
|
// Update Offset State
|
||||||
BZHIQ R8, R15, CX
|
BZHIQ R8, R15, CX
|
||||||
SHRXQ R8, R15, R15
|
SHRXQ R8, R15, R15
|
||||||
MOVQ $0x00001010, R14
|
SHRL $0x10, R8
|
||||||
BEXTRQ R14, R8, R8
|
|
||||||
ADDQ CX, R8
|
ADDQ CX, R8
|
||||||
|
|
||||||
// Load ctx.ofTable
|
// Load ctx.ofTable
|
||||||
|
@ -1046,8 +1036,7 @@ sequenceDecs_decode_56_bmi2_fill_end:
|
||||||
// Update Match Length State
|
// Update Match Length State
|
||||||
BZHIQ DI, R15, CX
|
BZHIQ DI, R15, CX
|
||||||
SHRXQ DI, R15, R15
|
SHRXQ DI, R15, R15
|
||||||
MOVQ $0x00001010, R14
|
SHRL $0x10, DI
|
||||||
BEXTRQ R14, DI, DI
|
|
||||||
ADDQ CX, DI
|
ADDQ CX, DI
|
||||||
|
|
||||||
// Load ctx.mlTable
|
// Load ctx.mlTable
|
||||||
|
@ -1057,8 +1046,7 @@ sequenceDecs_decode_56_bmi2_fill_end:
|
||||||
|
|
||||||
// Update Literal Length State
|
// Update Literal Length State
|
||||||
BZHIQ SI, R15, CX
|
BZHIQ SI, R15, CX
|
||||||
MOVQ $0x00001010, R14
|
SHRL $0x10, SI
|
||||||
BEXTRQ R14, SI, SI
|
|
||||||
ADDQ CX, SI
|
ADDQ CX, SI
|
||||||
|
|
||||||
// Load ctx.llTable
|
// Load ctx.llTable
|
||||||
|
@ -1967,8 +1955,7 @@ sequenceDecs_decodeSync_amd64_ll_update_zero:
|
||||||
|
|
||||||
// Update Literal Length State
|
// Update Literal Length State
|
||||||
MOVBQZX DI, R13
|
MOVBQZX DI, R13
|
||||||
SHRQ $0x10, DI
|
SHRL $0x10, DI
|
||||||
MOVWQZX DI, DI
|
|
||||||
LEAQ (BX)(R13*1), CX
|
LEAQ (BX)(R13*1), CX
|
||||||
MOVQ DX, R14
|
MOVQ DX, R14
|
||||||
MOVQ CX, BX
|
MOVQ CX, BX
|
||||||
|
@ -1987,8 +1974,7 @@ sequenceDecs_decodeSync_amd64_ll_update_zero:
|
||||||
|
|
||||||
// Update Match Length State
|
// Update Match Length State
|
||||||
MOVBQZX R8, R13
|
MOVBQZX R8, R13
|
||||||
SHRQ $0x10, R8
|
SHRL $0x10, R8
|
||||||
MOVWQZX R8, R8
|
|
||||||
LEAQ (BX)(R13*1), CX
|
LEAQ (BX)(R13*1), CX
|
||||||
MOVQ DX, R14
|
MOVQ DX, R14
|
||||||
MOVQ CX, BX
|
MOVQ CX, BX
|
||||||
|
@ -2007,8 +1993,7 @@ sequenceDecs_decodeSync_amd64_ll_update_zero:
|
||||||
|
|
||||||
// Update Offset State
|
// Update Offset State
|
||||||
MOVBQZX R9, R13
|
MOVBQZX R9, R13
|
||||||
SHRQ $0x10, R9
|
SHRL $0x10, R9
|
||||||
MOVWQZX R9, R9
|
|
||||||
LEAQ (BX)(R13*1), CX
|
LEAQ (BX)(R13*1), CX
|
||||||
MOVQ DX, R14
|
MOVQ DX, R14
|
||||||
MOVQ CX, BX
|
MOVQ CX, BX
|
||||||
|
@ -2516,8 +2501,7 @@ sequenceDecs_decodeSync_bmi2_fill_2_end:
|
||||||
// Update Offset State
|
// Update Offset State
|
||||||
BZHIQ R8, R14, CX
|
BZHIQ R8, R14, CX
|
||||||
SHRXQ R8, R14, R14
|
SHRXQ R8, R14, R14
|
||||||
MOVQ $0x00001010, R13
|
SHRL $0x10, R8
|
||||||
BEXTRQ R13, R8, R8
|
|
||||||
ADDQ CX, R8
|
ADDQ CX, R8
|
||||||
|
|
||||||
// Load ctx.ofTable
|
// Load ctx.ofTable
|
||||||
|
@ -2528,8 +2512,7 @@ sequenceDecs_decodeSync_bmi2_fill_2_end:
|
||||||
// Update Match Length State
|
// Update Match Length State
|
||||||
BZHIQ DI, R14, CX
|
BZHIQ DI, R14, CX
|
||||||
SHRXQ DI, R14, R14
|
SHRXQ DI, R14, R14
|
||||||
MOVQ $0x00001010, R13
|
SHRL $0x10, DI
|
||||||
BEXTRQ R13, DI, DI
|
|
||||||
ADDQ CX, DI
|
ADDQ CX, DI
|
||||||
|
|
||||||
// Load ctx.mlTable
|
// Load ctx.mlTable
|
||||||
|
@ -2539,8 +2522,7 @@ sequenceDecs_decodeSync_bmi2_fill_2_end:
|
||||||
|
|
||||||
// Update Literal Length State
|
// Update Literal Length State
|
||||||
BZHIQ SI, R14, CX
|
BZHIQ SI, R14, CX
|
||||||
MOVQ $0x00001010, R13
|
SHRL $0x10, SI
|
||||||
BEXTRQ R13, SI, SI
|
|
||||||
ADDQ CX, SI
|
ADDQ CX, SI
|
||||||
|
|
||||||
// Load ctx.llTable
|
// Load ctx.llTable
|
||||||
|
@ -3055,8 +3037,7 @@ sequenceDecs_decodeSync_safe_amd64_ll_update_zero:
|
||||||
|
|
||||||
// Update Literal Length State
|
// Update Literal Length State
|
||||||
MOVBQZX DI, R13
|
MOVBQZX DI, R13
|
||||||
SHRQ $0x10, DI
|
SHRL $0x10, DI
|
||||||
MOVWQZX DI, DI
|
|
||||||
LEAQ (BX)(R13*1), CX
|
LEAQ (BX)(R13*1), CX
|
||||||
MOVQ DX, R14
|
MOVQ DX, R14
|
||||||
MOVQ CX, BX
|
MOVQ CX, BX
|
||||||
|
@ -3075,8 +3056,7 @@ sequenceDecs_decodeSync_safe_amd64_ll_update_zero:
|
||||||
|
|
||||||
// Update Match Length State
|
// Update Match Length State
|
||||||
MOVBQZX R8, R13
|
MOVBQZX R8, R13
|
||||||
SHRQ $0x10, R8
|
SHRL $0x10, R8
|
||||||
MOVWQZX R8, R8
|
|
||||||
LEAQ (BX)(R13*1), CX
|
LEAQ (BX)(R13*1), CX
|
||||||
MOVQ DX, R14
|
MOVQ DX, R14
|
||||||
MOVQ CX, BX
|
MOVQ CX, BX
|
||||||
|
@ -3095,8 +3075,7 @@ sequenceDecs_decodeSync_safe_amd64_ll_update_zero:
|
||||||
|
|
||||||
// Update Offset State
|
// Update Offset State
|
||||||
MOVBQZX R9, R13
|
MOVBQZX R9, R13
|
||||||
SHRQ $0x10, R9
|
SHRL $0x10, R9
|
||||||
MOVWQZX R9, R9
|
|
||||||
LEAQ (BX)(R13*1), CX
|
LEAQ (BX)(R13*1), CX
|
||||||
MOVQ DX, R14
|
MOVQ DX, R14
|
||||||
MOVQ CX, BX
|
MOVQ CX, BX
|
||||||
|
@ -3706,8 +3685,7 @@ sequenceDecs_decodeSync_safe_bmi2_fill_2_end:
|
||||||
// Update Offset State
|
// Update Offset State
|
||||||
BZHIQ R8, R14, CX
|
BZHIQ R8, R14, CX
|
||||||
SHRXQ R8, R14, R14
|
SHRXQ R8, R14, R14
|
||||||
MOVQ $0x00001010, R13
|
SHRL $0x10, R8
|
||||||
BEXTRQ R13, R8, R8
|
|
||||||
ADDQ CX, R8
|
ADDQ CX, R8
|
||||||
|
|
||||||
// Load ctx.ofTable
|
// Load ctx.ofTable
|
||||||
|
@ -3718,8 +3696,7 @@ sequenceDecs_decodeSync_safe_bmi2_fill_2_end:
|
||||||
// Update Match Length State
|
// Update Match Length State
|
||||||
BZHIQ DI, R14, CX
|
BZHIQ DI, R14, CX
|
||||||
SHRXQ DI, R14, R14
|
SHRXQ DI, R14, R14
|
||||||
MOVQ $0x00001010, R13
|
SHRL $0x10, DI
|
||||||
BEXTRQ R13, DI, DI
|
|
||||||
ADDQ CX, DI
|
ADDQ CX, DI
|
||||||
|
|
||||||
// Load ctx.mlTable
|
// Load ctx.mlTable
|
||||||
|
@ -3729,8 +3706,7 @@ sequenceDecs_decodeSync_safe_bmi2_fill_2_end:
|
||||||
|
|
||||||
// Update Literal Length State
|
// Update Literal Length State
|
||||||
BZHIQ SI, R14, CX
|
BZHIQ SI, R14, CX
|
||||||
MOVQ $0x00001010, R13
|
SHRL $0x10, SI
|
||||||
BEXTRQ R13, SI, SI
|
|
||||||
ADDQ CX, SI
|
ADDQ CX, SI
|
||||||
|
|
||||||
// Load ctx.llTable
|
// Load ctx.llTable
|
||||||
|
|
|
@ -14,7 +14,7 @@ github.com/inconshreveable/mousetrap
|
||||||
# github.com/julienschmidt/httprouter v1.3.0
|
# github.com/julienschmidt/httprouter v1.3.0
|
||||||
## explicit; go 1.7
|
## explicit; go 1.7
|
||||||
github.com/julienschmidt/httprouter
|
github.com/julienschmidt/httprouter
|
||||||
# github.com/klauspost/compress v1.17.4
|
# github.com/klauspost/compress v1.17.5
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
github.com/klauspost/compress
|
github.com/klauspost/compress
|
||||||
github.com/klauspost/compress/fse
|
github.com/klauspost/compress/fse
|
||||||
|
|
Loading…
Reference in New Issue