summaryrefslogtreecommitdiff
path: root/vendor/github.com/klauspost
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/klauspost')
-rw-r--r--vendor/github.com/klauspost/compress/flate/deflate.go5
-rw-r--r--vendor/github.com/klauspost/compress/flate/huffman_bit_writer.go5
-rw-r--r--vendor/github.com/klauspost/compress/flate/huffman_sortByFreq.go19
-rw-r--r--vendor/github.com/klauspost/compress/s2/encode_all.go1
-rw-r--r--vendor/github.com/klauspost/compress/s2/encode_better.go44
-rw-r--r--vendor/github.com/klauspost/compress/s2/encodeblock_amd64.s655
-rw-r--r--vendor/github.com/klauspost/compress/s2/reader.go7
-rw-r--r--vendor/github.com/klauspost/compress/s2/writer.go2
-rw-r--r--vendor/github.com/klauspost/cpuid/v2/README.md1
-rw-r--r--vendor/github.com/klauspost/cpuid/v2/cpuid.go20
-rw-r--r--vendor/github.com/klauspost/cpuid/v2/featureid_string.go99
11 files changed, 420 insertions, 438 deletions
diff --git a/vendor/github.com/klauspost/compress/flate/deflate.go b/vendor/github.com/klauspost/compress/flate/deflate.go
index 82882961a..5faea0b2b 100644
--- a/vendor/github.com/klauspost/compress/flate/deflate.go
+++ b/vendor/github.com/klauspost/compress/flate/deflate.go
@@ -90,9 +90,8 @@ type advancedState struct {
ii uint16 // position of last match, intended to overflow to reset.
// input window: unprocessed data is window[index:windowEnd]
- index int
- estBitsPerByte int
- hashMatch [maxMatchLength + minMatchLength]uint32
+ index int
+ hashMatch [maxMatchLength + minMatchLength]uint32
// Input hash chains
// hashHead[hashValue] contains the largest inputIndex with the specified hash value
diff --git a/vendor/github.com/klauspost/compress/flate/huffman_bit_writer.go b/vendor/github.com/klauspost/compress/flate/huffman_bit_writer.go
index 89a5dd89f..f70594c34 100644
--- a/vendor/github.com/klauspost/compress/flate/huffman_bit_writer.go
+++ b/vendor/github.com/klauspost/compress/flate/huffman_bit_writer.go
@@ -34,11 +34,6 @@ const (
// Should preferably be a multiple of 6, since
// we accumulate 6 bytes between writes to the buffer.
bufferFlushSize = 246
-
- // bufferSize is the actual output byte buffer size.
- // It must have additional headroom for a flush
- // which can contain up to 8 bytes.
- bufferSize = bufferFlushSize + 8
)
// Minimum length code that emits bits.
diff --git a/vendor/github.com/klauspost/compress/flate/huffman_sortByFreq.go b/vendor/github.com/klauspost/compress/flate/huffman_sortByFreq.go
index 207780299..6c05ba8c1 100644
--- a/vendor/github.com/klauspost/compress/flate/huffman_sortByFreq.go
+++ b/vendor/github.com/klauspost/compress/flate/huffman_sortByFreq.go
@@ -42,25 +42,6 @@ func quickSortByFreq(data []literalNode, a, b, maxDepth int) {
}
}
-// siftDownByFreq implements the heap property on data[lo, hi).
-// first is an offset into the array where the root of the heap lies.
-func siftDownByFreq(data []literalNode, lo, hi, first int) {
- root := lo
- for {
- child := 2*root + 1
- if child >= hi {
- break
- }
- if child+1 < hi && (data[first+child].freq == data[first+child+1].freq && data[first+child].literal < data[first+child+1].literal || data[first+child].freq < data[first+child+1].freq) {
- child++
- }
- if data[first+root].freq == data[first+child].freq && data[first+root].literal > data[first+child].literal || data[first+root].freq > data[first+child].freq {
- return
- }
- data[first+root], data[first+child] = data[first+child], data[first+root]
- root = child
- }
-}
func doPivotByFreq(data []literalNode, lo, hi int) (midlo, midhi int) {
m := int(uint(lo+hi) >> 1) // Written like this to avoid integer overflow.
if hi-lo > 40 {
diff --git a/vendor/github.com/klauspost/compress/s2/encode_all.go b/vendor/github.com/klauspost/compress/s2/encode_all.go
index 11657f094..5e57995d4 100644
--- a/vendor/github.com/klauspost/compress/s2/encode_all.go
+++ b/vendor/github.com/klauspost/compress/s2/encode_all.go
@@ -742,7 +742,6 @@ searchDict:
x := load64(src, s-2)
m2Hash := hash6(x, tableBits)
currHash := hash6(x>>8, tableBits)
- candidate = int(table[currHash])
table[m2Hash] = uint32(s - 2)
table[currHash] = uint32(s - 1)
cv = load64(src, s)
diff --git a/vendor/github.com/klauspost/compress/s2/encode_better.go b/vendor/github.com/klauspost/compress/s2/encode_better.go
index f46adb411..544cb1e17 100644
--- a/vendor/github.com/klauspost/compress/s2/encode_better.go
+++ b/vendor/github.com/klauspost/compress/s2/encode_better.go
@@ -157,7 +157,6 @@ func encodeBlockBetterGo(dst, src []byte) (d int) {
index0 := base + 1
index1 := s - 2
- cv = load64(src, s)
for index0 < index1 {
cv0 := load64(src, index0)
cv1 := load64(src, index1)
@@ -269,18 +268,21 @@ func encodeBlockBetterGo(dst, src []byte) (d int) {
lTable[hash7(cv0, lTableBits)] = uint32(index0)
sTable[hash4(cv0>>8, sTableBits)] = uint32(index0 + 1)
+ // lTable could be postponed, but very minor difference.
lTable[hash7(cv1, lTableBits)] = uint32(index1)
sTable[hash4(cv1>>8, sTableBits)] = uint32(index1 + 1)
index0 += 1
index1 -= 1
cv = load64(src, s)
- // index every second long in between.
- for index0 < index1 {
+ // Index large values sparsely in between.
+ // We do two starting from different offsets for speed.
+ index2 := (index0 + index1 + 1) >> 1
+ for index2 < index1 {
lTable[hash7(load64(src, index0), lTableBits)] = uint32(index0)
- lTable[hash7(load64(src, index1), lTableBits)] = uint32(index1)
+ lTable[hash7(load64(src, index2), lTableBits)] = uint32(index2)
index0 += 2
- index1 -= 2
+ index2 += 2
}
}
@@ -459,12 +461,14 @@ func encodeBlockBetterSnappyGo(dst, src []byte) (d int) {
index1 -= 1
cv = load64(src, s)
- // index every second long in between.
- for index0 < index1 {
+ // Index large values sparsely in between.
+ // We do two starting from different offsets for speed.
+ index2 := (index0 + index1 + 1) >> 1
+ for index2 < index1 {
lTable[hash7(load64(src, index0), lTableBits)] = uint32(index0)
- lTable[hash7(load64(src, index1), lTableBits)] = uint32(index1)
+ lTable[hash7(load64(src, index2), lTableBits)] = uint32(index2)
index0 += 2
- index1 -= 2
+ index2 += 2
}
}
@@ -599,7 +603,6 @@ searchDict:
if s >= sLimit {
break searchDict
}
- cv = load64(src, s)
// Index in-between
index0 := base + 1
index1 := s - 2
@@ -865,12 +868,14 @@ searchDict:
index1 -= 1
cv = load64(src, s)
- // index every second long in between.
- for index0 < index1 {
+ // Index large values sparsely in between.
+ // We do two starting from different offsets for speed.
+ index2 := (index0 + index1 + 1) >> 1
+ for index2 < index1 {
lTable[hash7(load64(src, index0), lTableBits)] = uint32(index0)
- lTable[hash7(load64(src, index1), lTableBits)] = uint32(index1)
+ lTable[hash7(load64(src, index2), lTableBits)] = uint32(index2)
index0 += 2
- index1 -= 2
+ index2 += 2
}
}
@@ -961,7 +966,6 @@ searchDict:
index0 := base + 1
index1 := s - 2
- cv = load64(src, s)
for index0 < index1 {
cv0 := load64(src, index0)
cv1 := load64(src, index1)
@@ -1079,12 +1083,14 @@ searchDict:
index1 -= 1
cv = load64(src, s)
- // index every second long in between.
- for index0 < index1 {
+ // Index large values sparsely in between.
+ // We do two starting from different offsets for speed.
+ index2 := (index0 + index1 + 1) >> 1
+ for index2 < index1 {
lTable[hash7(load64(src, index0), lTableBits)] = uint32(index0)
- lTable[hash7(load64(src, index1), lTableBits)] = uint32(index1)
+ lTable[hash7(load64(src, index2), lTableBits)] = uint32(index2)
index0 += 2
- index1 -= 2
+ index2 += 2
}
}
diff --git a/vendor/github.com/klauspost/compress/s2/encodeblock_amd64.s b/vendor/github.com/klauspost/compress/s2/encodeblock_amd64.s
index 9222d179c..54031aa31 100644
--- a/vendor/github.com/klauspost/compress/s2/encodeblock_amd64.s
+++ b/vendor/github.com/klauspost/compress/s2/encodeblock_amd64.s
@@ -274,7 +274,6 @@ matchlen_loop_repeat_extend_encodeBlockAsm:
LEAL 8(R11), R11
CMPL R8, $0x08
JAE matchlen_loopback_repeat_extend_encodeBlockAsm
- JZ repeat_extend_forward_end_encodeBlockAsm
matchlen_match4_repeat_extend_encodeBlockAsm:
CMPL R8, $0x04
@@ -282,21 +281,21 @@ matchlen_match4_repeat_extend_encodeBlockAsm:
MOVL (R9)(R11*1), R10
CMPL (BX)(R11*1), R10
JNE matchlen_match2_repeat_extend_encodeBlockAsm
- SUBL $0x04, R8
+ LEAL -4(R8), R8
LEAL 4(R11), R11
matchlen_match2_repeat_extend_encodeBlockAsm:
- CMPL R8, $0x02
- JB matchlen_match1_repeat_extend_encodeBlockAsm
+ CMPL R8, $0x01
+ JE matchlen_match1_repeat_extend_encodeBlockAsm
+ JB repeat_extend_forward_end_encodeBlockAsm
MOVW (R9)(R11*1), R10
CMPW (BX)(R11*1), R10
JNE matchlen_match1_repeat_extend_encodeBlockAsm
- SUBL $0x02, R8
LEAL 2(R11), R11
+ SUBL $0x02, R8
+ JZ repeat_extend_forward_end_encodeBlockAsm
matchlen_match1_repeat_extend_encodeBlockAsm:
- CMPL R8, $0x01
- JB repeat_extend_forward_end_encodeBlockAsm
MOVB (R9)(R11*1), R10
CMPB (BX)(R11*1), R10
JNE repeat_extend_forward_end_encodeBlockAsm
@@ -877,7 +876,6 @@ matchlen_loop_match_nolit_encodeBlockAsm:
LEAL 8(R9), R9
CMPL SI, $0x08
JAE matchlen_loopback_match_nolit_encodeBlockAsm
- JZ match_nolit_end_encodeBlockAsm
matchlen_match4_match_nolit_encodeBlockAsm:
CMPL SI, $0x04
@@ -885,21 +883,21 @@ matchlen_match4_match_nolit_encodeBlockAsm:
MOVL (DI)(R9*1), R8
CMPL (BX)(R9*1), R8
JNE matchlen_match2_match_nolit_encodeBlockAsm
- SUBL $0x04, SI
+ LEAL -4(SI), SI
LEAL 4(R9), R9
matchlen_match2_match_nolit_encodeBlockAsm:
- CMPL SI, $0x02
- JB matchlen_match1_match_nolit_encodeBlockAsm
+ CMPL SI, $0x01
+ JE matchlen_match1_match_nolit_encodeBlockAsm
+ JB match_nolit_end_encodeBlockAsm
MOVW (DI)(R9*1), R8
CMPW (BX)(R9*1), R8
JNE matchlen_match1_match_nolit_encodeBlockAsm
- SUBL $0x02, SI
LEAL 2(R9), R9
+ SUBL $0x02, SI
+ JZ match_nolit_end_encodeBlockAsm
matchlen_match1_match_nolit_encodeBlockAsm:
- CMPL SI, $0x01
- JB match_nolit_end_encodeBlockAsm
MOVB (DI)(R9*1), R8
CMPB (BX)(R9*1), R8
JNE match_nolit_end_encodeBlockAsm
@@ -1637,7 +1635,6 @@ matchlen_loop_repeat_extend_encodeBlockAsm4MB:
LEAL 8(R11), R11
CMPL R8, $0x08
JAE matchlen_loopback_repeat_extend_encodeBlockAsm4MB
- JZ repeat_extend_forward_end_encodeBlockAsm4MB
matchlen_match4_repeat_extend_encodeBlockAsm4MB:
CMPL R8, $0x04
@@ -1645,21 +1642,21 @@ matchlen_match4_repeat_extend_encodeBlockAsm4MB:
MOVL (R9)(R11*1), R10
CMPL (BX)(R11*1), R10
JNE matchlen_match2_repeat_extend_encodeBlockAsm4MB
- SUBL $0x04, R8
+ LEAL -4(R8), R8
LEAL 4(R11), R11
matchlen_match2_repeat_extend_encodeBlockAsm4MB:
- CMPL R8, $0x02
- JB matchlen_match1_repeat_extend_encodeBlockAsm4MB
+ CMPL R8, $0x01
+ JE matchlen_match1_repeat_extend_encodeBlockAsm4MB
+ JB repeat_extend_forward_end_encodeBlockAsm4MB
MOVW (R9)(R11*1), R10
CMPW (BX)(R11*1), R10
JNE matchlen_match1_repeat_extend_encodeBlockAsm4MB
- SUBL $0x02, R8
LEAL 2(R11), R11
+ SUBL $0x02, R8
+ JZ repeat_extend_forward_end_encodeBlockAsm4MB
matchlen_match1_repeat_extend_encodeBlockAsm4MB:
- CMPL R8, $0x01
- JB repeat_extend_forward_end_encodeBlockAsm4MB
MOVB (R9)(R11*1), R10
CMPB (BX)(R11*1), R10
JNE repeat_extend_forward_end_encodeBlockAsm4MB
@@ -2190,7 +2187,6 @@ matchlen_loop_match_nolit_encodeBlockAsm4MB:
LEAL 8(R9), R9
CMPL SI, $0x08
JAE matchlen_loopback_match_nolit_encodeBlockAsm4MB
- JZ match_nolit_end_encodeBlockAsm4MB
matchlen_match4_match_nolit_encodeBlockAsm4MB:
CMPL SI, $0x04
@@ -2198,21 +2194,21 @@ matchlen_match4_match_nolit_encodeBlockAsm4MB:
MOVL (DI)(R9*1), R8
CMPL (BX)(R9*1), R8
JNE matchlen_match2_match_nolit_encodeBlockAsm4MB
- SUBL $0x04, SI
+ LEAL -4(SI), SI
LEAL 4(R9), R9
matchlen_match2_match_nolit_encodeBlockAsm4MB:
- CMPL SI, $0x02
- JB matchlen_match1_match_nolit_encodeBlockAsm4MB
+ CMPL SI, $0x01
+ JE matchlen_match1_match_nolit_encodeBlockAsm4MB
+ JB match_nolit_end_encodeBlockAsm4MB
MOVW (DI)(R9*1), R8
CMPW (BX)(R9*1), R8
JNE matchlen_match1_match_nolit_encodeBlockAsm4MB
- SUBL $0x02, SI
LEAL 2(R9), R9
+ SUBL $0x02, SI
+ JZ match_nolit_end_encodeBlockAsm4MB
matchlen_match1_match_nolit_encodeBlockAsm4MB:
- CMPL SI, $0x01
- JB match_nolit_end_encodeBlockAsm4MB
MOVB (DI)(R9*1), R8
CMPB (BX)(R9*1), R8
JNE match_nolit_end_encodeBlockAsm4MB
@@ -2902,7 +2898,6 @@ matchlen_loop_repeat_extend_encodeBlockAsm12B:
LEAL 8(R11), R11
CMPL R8, $0x08
JAE matchlen_loopback_repeat_extend_encodeBlockAsm12B
- JZ repeat_extend_forward_end_encodeBlockAsm12B
matchlen_match4_repeat_extend_encodeBlockAsm12B:
CMPL R8, $0x04
@@ -2910,21 +2905,21 @@ matchlen_match4_repeat_extend_encodeBlockAsm12B:
MOVL (R9)(R11*1), R10
CMPL (BX)(R11*1), R10
JNE matchlen_match2_repeat_extend_encodeBlockAsm12B
- SUBL $0x04, R8
+ LEAL -4(R8), R8
LEAL 4(R11), R11
matchlen_match2_repeat_extend_encodeBlockAsm12B:
- CMPL R8, $0x02
- JB matchlen_match1_repeat_extend_encodeBlockAsm12B
+ CMPL R8, $0x01
+ JE matchlen_match1_repeat_extend_encodeBlockAsm12B
+ JB repeat_extend_forward_end_encodeBlockAsm12B
MOVW (R9)(R11*1), R10
CMPW (BX)(R11*1), R10
JNE matchlen_match1_repeat_extend_encodeBlockAsm12B
- SUBL $0x02, R8
LEAL 2(R11), R11
+ SUBL $0x02, R8
+ JZ repeat_extend_forward_end_encodeBlockAsm12B
matchlen_match1_repeat_extend_encodeBlockAsm12B:
- CMPL R8, $0x01
- JB repeat_extend_forward_end_encodeBlockAsm12B
MOVB (R9)(R11*1), R10
CMPB (BX)(R11*1), R10
JNE repeat_extend_forward_end_encodeBlockAsm12B
@@ -3333,7 +3328,6 @@ matchlen_loop_match_nolit_encodeBlockAsm12B:
LEAL 8(R9), R9
CMPL SI, $0x08
JAE matchlen_loopback_match_nolit_encodeBlockAsm12B
- JZ match_nolit_end_encodeBlockAsm12B
matchlen_match4_match_nolit_encodeBlockAsm12B:
CMPL SI, $0x04
@@ -3341,21 +3335,21 @@ matchlen_match4_match_nolit_encodeBlockAsm12B:
MOVL (DI)(R9*1), R8
CMPL (BX)(R9*1), R8
JNE matchlen_match2_match_nolit_encodeBlockAsm12B
- SUBL $0x04, SI
+ LEAL -4(SI), SI
LEAL 4(R9), R9
matchlen_match2_match_nolit_encodeBlockAsm12B:
- CMPL SI, $0x02
- JB matchlen_match1_match_nolit_encodeBlockAsm12B
+ CMPL SI, $0x01
+ JE matchlen_match1_match_nolit_encodeBlockAsm12B
+ JB match_nolit_end_encodeBlockAsm12B
MOVW (DI)(R9*1), R8
CMPW (BX)(R9*1), R8
JNE matchlen_match1_match_nolit_encodeBlockAsm12B
- SUBL $0x02, SI
LEAL 2(R9), R9
+ SUBL $0x02, SI
+ JZ match_nolit_end_encodeBlockAsm12B
matchlen_match1_match_nolit_encodeBlockAsm12B:
- CMPL SI, $0x01
- JB match_nolit_end_encodeBlockAsm12B
MOVB (DI)(R9*1), R8
CMPB (BX)(R9*1), R8
JNE match_nolit_end_encodeBlockAsm12B
@@ -3935,7 +3929,6 @@ matchlen_loop_repeat_extend_encodeBlockAsm10B:
LEAL 8(R11), R11
CMPL R8, $0x08
JAE matchlen_loopback_repeat_extend_encodeBlockAsm10B
- JZ repeat_extend_forward_end_encodeBlockAsm10B
matchlen_match4_repeat_extend_encodeBlockAsm10B:
CMPL R8, $0x04
@@ -3943,21 +3936,21 @@ matchlen_match4_repeat_extend_encodeBlockAsm10B:
MOVL (R9)(R11*1), R10
CMPL (BX)(R11*1), R10
JNE matchlen_match2_repeat_extend_encodeBlockAsm10B
- SUBL $0x04, R8
+ LEAL -4(R8), R8
LEAL 4(R11), R11
matchlen_match2_repeat_extend_encodeBlockAsm10B:
- CMPL R8, $0x02
- JB matchlen_match1_repeat_extend_encodeBlockAsm10B
+ CMPL R8, $0x01
+ JE matchlen_match1_repeat_extend_encodeBlockAsm10B
+ JB repeat_extend_forward_end_encodeBlockAsm10B
MOVW (R9)(R11*1), R10
CMPW (BX)(R11*1), R10
JNE matchlen_match1_repeat_extend_encodeBlockAsm10B
- SUBL $0x02, R8
LEAL 2(R11), R11
+ SUBL $0x02, R8
+ JZ repeat_extend_forward_end_encodeBlockAsm10B
matchlen_match1_repeat_extend_encodeBlockAsm10B:
- CMPL R8, $0x01
- JB repeat_extend_forward_end_encodeBlockAsm10B
MOVB (R9)(R11*1), R10
CMPB (BX)(R11*1), R10
JNE repeat_extend_forward_end_encodeBlockAsm10B
@@ -4366,7 +4359,6 @@ matchlen_loop_match_nolit_encodeBlockAsm10B:
LEAL 8(R9), R9
CMPL SI, $0x08
JAE matchlen_loopback_match_nolit_encodeBlockAsm10B
- JZ match_nolit_end_encodeBlockAsm10B
matchlen_match4_match_nolit_encodeBlockAsm10B:
CMPL SI, $0x04
@@ -4374,21 +4366,21 @@ matchlen_match4_match_nolit_encodeBlockAsm10B:
MOVL (DI)(R9*1), R8
CMPL (BX)(R9*1), R8
JNE matchlen_match2_match_nolit_encodeBlockAsm10B
- SUBL $0x04, SI
+ LEAL -4(SI), SI
LEAL 4(R9), R9
matchlen_match2_match_nolit_encodeBlockAsm10B:
- CMPL SI, $0x02
- JB matchlen_match1_match_nolit_encodeBlockAsm10B
+ CMPL SI, $0x01
+ JE matchlen_match1_match_nolit_encodeBlockAsm10B
+ JB match_nolit_end_encodeBlockAsm10B
MOVW (DI)(R9*1), R8
CMPW (BX)(R9*1), R8
JNE matchlen_match1_match_nolit_encodeBlockAsm10B
- SUBL $0x02, SI
LEAL 2(R9), R9
+ SUBL $0x02, SI
+ JZ match_nolit_end_encodeBlockAsm10B
matchlen_match1_match_nolit_encodeBlockAsm10B:
- CMPL SI, $0x01
- JB match_nolit_end_encodeBlockAsm10B
MOVB (DI)(R9*1), R8
CMPB (BX)(R9*1), R8
JNE match_nolit_end_encodeBlockAsm10B
@@ -4968,7 +4960,6 @@ matchlen_loop_repeat_extend_encodeBlockAsm8B:
LEAL 8(R11), R11
CMPL R8, $0x08
JAE matchlen_loopback_repeat_extend_encodeBlockAsm8B
- JZ repeat_extend_forward_end_encodeBlockAsm8B
matchlen_match4_repeat_extend_encodeBlockAsm8B:
CMPL R8, $0x04
@@ -4976,21 +4967,21 @@ matchlen_match4_repeat_extend_encodeBlockAsm8B:
MOVL (R9)(R11*1), R10
CMPL (BX)(R11*1), R10
JNE matchlen_match2_repeat_extend_encodeBlockAsm8B
- SUBL $0x04, R8
+ LEAL -4(R8), R8
LEAL 4(R11), R11
matchlen_match2_repeat_extend_encodeBlockAsm8B:
- CMPL R8, $0x02
- JB matchlen_match1_repeat_extend_encodeBlockAsm8B
+ CMPL R8, $0x01
+ JE matchlen_match1_repeat_extend_encodeBlockAsm8B
+ JB repeat_extend_forward_end_encodeBlockAsm8B
MOVW (R9)(R11*1), R10
CMPW (BX)(R11*1), R10
JNE matchlen_match1_repeat_extend_encodeBlockAsm8B
- SUBL $0x02, R8
LEAL 2(R11), R11
+ SUBL $0x02, R8
+ JZ repeat_extend_forward_end_encodeBlockAsm8B
matchlen_match1_repeat_extend_encodeBlockAsm8B:
- CMPL R8, $0x01
- JB repeat_extend_forward_end_encodeBlockAsm8B
MOVB (R9)(R11*1), R10
CMPB (BX)(R11*1), R10
JNE repeat_extend_forward_end_encodeBlockAsm8B
@@ -5385,7 +5376,6 @@ matchlen_loop_match_nolit_encodeBlockAsm8B:
LEAL 8(R9), R9
CMPL SI, $0x08
JAE matchlen_loopback_match_nolit_encodeBlockAsm8B
- JZ match_nolit_end_encodeBlockAsm8B
matchlen_match4_match_nolit_encodeBlockAsm8B:
CMPL SI, $0x04
@@ -5393,21 +5383,21 @@ matchlen_match4_match_nolit_encodeBlockAsm8B:
MOVL (DI)(R9*1), R8
CMPL (BX)(R9*1), R8
JNE matchlen_match2_match_nolit_encodeBlockAsm8B
- SUBL $0x04, SI
+ LEAL -4(SI), SI
LEAL 4(R9), R9
matchlen_match2_match_nolit_encodeBlockAsm8B:
- CMPL SI, $0x02
- JB matchlen_match1_match_nolit_encodeBlockAsm8B
+ CMPL SI, $0x01
+ JE matchlen_match1_match_nolit_encodeBlockAsm8B
+ JB match_nolit_end_encodeBlockAsm8B
MOVW (DI)(R9*1), R8
CMPW (BX)(R9*1), R8
JNE matchlen_match1_match_nolit_encodeBlockAsm8B
- SUBL $0x02, SI
LEAL 2(R9), R9
+ SUBL $0x02, SI
+ JZ match_nolit_end_encodeBlockAsm8B
matchlen_match1_match_nolit_encodeBlockAsm8B:
- CMPL SI, $0x01
- JB match_nolit_end_encodeBlockAsm8B
MOVB (DI)(R9*1), R8
CMPB (BX)(R9*1), R8
JNE match_nolit_end_encodeBlockAsm8B
@@ -5889,7 +5879,6 @@ matchlen_loop_match_nolit_encodeBetterBlockAsm:
LEAL 8(R11), R11
CMPL DI, $0x08
JAE matchlen_loopback_match_nolit_encodeBetterBlockAsm
- JZ match_nolit_end_encodeBetterBlockAsm
matchlen_match4_match_nolit_encodeBetterBlockAsm:
CMPL DI, $0x04
@@ -5897,21 +5886,21 @@ matchlen_match4_match_nolit_encodeBetterBlockAsm:
MOVL (R8)(R11*1), R10
CMPL (R9)(R11*1), R10
JNE matchlen_match2_match_nolit_encodeBetterBlockAsm
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R11), R11
matchlen_match2_match_nolit_encodeBetterBlockAsm:
- CMPL DI, $0x02
- JB matchlen_match1_match_nolit_encodeBetterBlockAsm
+ CMPL DI, $0x01
+ JE matchlen_match1_match_nolit_encodeBetterBlockAsm
+ JB match_nolit_end_encodeBetterBlockAsm
MOVW (R8)(R11*1), R10
CMPW (R9)(R11*1), R10
JNE matchlen_match1_match_nolit_encodeBetterBlockAsm
- SUBL $0x02, DI
LEAL 2(R11), R11
+ SUBL $0x02, DI
+ JZ match_nolit_end_encodeBetterBlockAsm
matchlen_match1_match_nolit_encodeBetterBlockAsm:
- CMPL DI, $0x01
- JB match_nolit_end_encodeBetterBlockAsm
MOVB (R8)(R11*1), R10
CMPB (R9)(R11*1), R10
JNE match_nolit_end_encodeBetterBlockAsm
@@ -6607,24 +6596,26 @@ match_nolit_dst_ok_encodeBetterBlockAsm:
MOVL R8, 24(SP)(R11*4)
MOVL DI, 524312(SP)(R10*4)
MOVL R13, 524312(SP)(R12*4)
+ LEAQ 1(R8)(SI*1), DI
+ SHRQ $0x01, DI
ADDQ $0x01, SI
SUBQ $0x01, R8
index_loop_encodeBetterBlockAsm:
- CMPQ SI, R8
+ CMPQ DI, R8
JAE search_loop_encodeBetterBlockAsm
- MOVQ (DX)(SI*1), DI
- MOVQ (DX)(R8*1), R9
- SHLQ $0x08, DI
- IMULQ BX, DI
- SHRQ $0x2f, DI
+ MOVQ (DX)(SI*1), R9
+ MOVQ (DX)(DI*1), R10
SHLQ $0x08, R9
IMULQ BX, R9
SHRQ $0x2f, R9
- MOVL SI, 24(SP)(DI*4)
- MOVL R8, 24(SP)(R9*4)
+ SHLQ $0x08, R10
+ IMULQ BX, R10
+ SHRQ $0x2f, R10
+ MOVL SI, 24(SP)(R9*4)
+ MOVL DI, 24(SP)(R10*4)
ADDQ $0x02, SI
- SUBQ $0x02, R8
+ ADDQ $0x02, DI
JMP index_loop_encodeBetterBlockAsm
emit_remainder_encodeBetterBlockAsm:
@@ -6960,7 +6951,6 @@ matchlen_loop_match_nolit_encodeBetterBlockAsm4MB:
LEAL 8(R11), R11
CMPL DI, $0x08
JAE matchlen_loopback_match_nolit_encodeBetterBlockAsm4MB
- JZ match_nolit_end_encodeBetterBlockAsm4MB
matchlen_match4_match_nolit_encodeBetterBlockAsm4MB:
CMPL DI, $0x04
@@ -6968,21 +6958,21 @@ matchlen_match4_match_nolit_encodeBetterBlockAsm4MB:
MOVL (R8)(R11*1), R10
CMPL (R9)(R11*1), R10
JNE matchlen_match2_match_nolit_encodeBetterBlockAsm4MB
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R11), R11
matchlen_match2_match_nolit_encodeBetterBlockAsm4MB:
- CMPL DI, $0x02
- JB matchlen_match1_match_nolit_encodeBetterBlockAsm4MB
+ CMPL DI, $0x01
+ JE matchlen_match1_match_nolit_encodeBetterBlockAsm4MB
+ JB match_nolit_end_encodeBetterBlockAsm4MB
MOVW (R8)(R11*1), R10
CMPW (R9)(R11*1), R10
JNE matchlen_match1_match_nolit_encodeBetterBlockAsm4MB
- SUBL $0x02, DI
LEAL 2(R11), R11
+ SUBL $0x02, DI
+ JZ match_nolit_end_encodeBetterBlockAsm4MB
matchlen_match1_match_nolit_encodeBetterBlockAsm4MB:
- CMPL DI, $0x01
- JB match_nolit_end_encodeBetterBlockAsm4MB
MOVB (R8)(R11*1), R10
CMPB (R9)(R11*1), R10
JNE match_nolit_end_encodeBetterBlockAsm4MB
@@ -7620,24 +7610,26 @@ match_nolit_dst_ok_encodeBetterBlockAsm4MB:
MOVL R8, 24(SP)(R11*4)
MOVL DI, 524312(SP)(R10*4)
MOVL R13, 524312(SP)(R12*4)
+ LEAQ 1(R8)(SI*1), DI
+ SHRQ $0x01, DI
ADDQ $0x01, SI
SUBQ $0x01, R8
index_loop_encodeBetterBlockAsm4MB:
- CMPQ SI, R8
+ CMPQ DI, R8
JAE search_loop_encodeBetterBlockAsm4MB
- MOVQ (DX)(SI*1), DI
- MOVQ (DX)(R8*1), R9
- SHLQ $0x08, DI
- IMULQ BX, DI
- SHRQ $0x2f, DI
+ MOVQ (DX)(SI*1), R9
+ MOVQ (DX)(DI*1), R10
SHLQ $0x08, R9
IMULQ BX, R9
SHRQ $0x2f, R9
- MOVL SI, 24(SP)(DI*4)
- MOVL R8, 24(SP)(R9*4)
+ SHLQ $0x08, R10
+ IMULQ BX, R10
+ SHRQ $0x2f, R10
+ MOVL SI, 24(SP)(R9*4)
+ MOVL DI, 24(SP)(R10*4)
ADDQ $0x02, SI
- SUBQ $0x02, R8
+ ADDQ $0x02, DI
JMP index_loop_encodeBetterBlockAsm4MB
emit_remainder_encodeBetterBlockAsm4MB:
@@ -7957,7 +7949,6 @@ matchlen_loop_match_nolit_encodeBetterBlockAsm12B:
LEAL 8(R11), R11
CMPL DI, $0x08
JAE matchlen_loopback_match_nolit_encodeBetterBlockAsm12B
- JZ match_nolit_end_encodeBetterBlockAsm12B
matchlen_match4_match_nolit_encodeBetterBlockAsm12B:
CMPL DI, $0x04
@@ -7965,21 +7956,21 @@ matchlen_match4_match_nolit_encodeBetterBlockAsm12B:
MOVL (R8)(R11*1), R10
CMPL (R9)(R11*1), R10
JNE matchlen_match2_match_nolit_encodeBetterBlockAsm12B
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R11), R11
matchlen_match2_match_nolit_encodeBetterBlockAsm12B:
- CMPL DI, $0x02
- JB matchlen_match1_match_nolit_encodeBetterBlockAsm12B
+ CMPL DI, $0x01
+ JE matchlen_match1_match_nolit_encodeBetterBlockAsm12B
+ JB match_nolit_end_encodeBetterBlockAsm12B
MOVW (R8)(R11*1), R10
CMPW (R9)(R11*1), R10
JNE matchlen_match1_match_nolit_encodeBetterBlockAsm12B
- SUBL $0x02, DI
LEAL 2(R11), R11
+ SUBL $0x02, DI
+ JZ match_nolit_end_encodeBetterBlockAsm12B
matchlen_match1_match_nolit_encodeBetterBlockAsm12B:
- CMPL DI, $0x01
- JB match_nolit_end_encodeBetterBlockAsm12B
MOVB (R8)(R11*1), R10
CMPB (R9)(R11*1), R10
JNE match_nolit_end_encodeBetterBlockAsm12B
@@ -8478,24 +8469,26 @@ match_nolit_dst_ok_encodeBetterBlockAsm12B:
MOVL R8, 24(SP)(R11*4)
MOVL DI, 65560(SP)(R10*4)
MOVL R13, 65560(SP)(R12*4)
+ LEAQ 1(R8)(SI*1), DI
+ SHRQ $0x01, DI
ADDQ $0x01, SI
SUBQ $0x01, R8
index_loop_encodeBetterBlockAsm12B:
- CMPQ SI, R8
+ CMPQ DI, R8
JAE search_loop_encodeBetterBlockAsm12B
- MOVQ (DX)(SI*1), DI
- MOVQ (DX)(R8*1), R9
- SHLQ $0x10, DI
- IMULQ BX, DI
- SHRQ $0x32, DI
+ MOVQ (DX)(SI*1), R9
+ MOVQ (DX)(DI*1), R10
SHLQ $0x10, R9
IMULQ BX, R9
SHRQ $0x32, R9
- MOVL SI, 24(SP)(DI*4)
- MOVL R8, 24(SP)(R9*4)
+ SHLQ $0x10, R10
+ IMULQ BX, R10
+ SHRQ $0x32, R10
+ MOVL SI, 24(SP)(R9*4)
+ MOVL DI, 24(SP)(R10*4)
ADDQ $0x02, SI
- SUBQ $0x02, R8
+ ADDQ $0x02, DI
JMP index_loop_encodeBetterBlockAsm12B
emit_remainder_encodeBetterBlockAsm12B:
@@ -8807,7 +8800,6 @@ matchlen_loop_match_nolit_encodeBetterBlockAsm10B:
LEAL 8(R11), R11
CMPL DI, $0x08
JAE matchlen_loopback_match_nolit_encodeBetterBlockAsm10B
- JZ match_nolit_end_encodeBetterBlockAsm10B
matchlen_match4_match_nolit_encodeBetterBlockAsm10B:
CMPL DI, $0x04
@@ -8815,21 +8807,21 @@ matchlen_match4_match_nolit_encodeBetterBlockAsm10B:
MOVL (R8)(R11*1), R10
CMPL (R9)(R11*1), R10
JNE matchlen_match2_match_nolit_encodeBetterBlockAsm10B
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R11), R11
matchlen_match2_match_nolit_encodeBetterBlockAsm10B:
- CMPL DI, $0x02
- JB matchlen_match1_match_nolit_encodeBetterBlockAsm10B
+ CMPL DI, $0x01
+ JE matchlen_match1_match_nolit_encodeBetterBlockAsm10B
+ JB match_nolit_end_encodeBetterBlockAsm10B
MOVW (R8)(R11*1), R10
CMPW (R9)(R11*1), R10
JNE matchlen_match1_match_nolit_encodeBetterBlockAsm10B
- SUBL $0x02, DI
LEAL 2(R11), R11
+ SUBL $0x02, DI
+ JZ match_nolit_end_encodeBetterBlockAsm10B
matchlen_match1_match_nolit_encodeBetterBlockAsm10B:
- CMPL DI, $0x01
- JB match_nolit_end_encodeBetterBlockAsm10B
MOVB (R8)(R11*1), R10
CMPB (R9)(R11*1), R10
JNE match_nolit_end_encodeBetterBlockAsm10B
@@ -9328,24 +9320,26 @@ match_nolit_dst_ok_encodeBetterBlockAsm10B:
MOVL R8, 24(SP)(R11*4)
MOVL DI, 16408(SP)(R10*4)
MOVL R13, 16408(SP)(R12*4)
+ LEAQ 1(R8)(SI*1), DI
+ SHRQ $0x01, DI
ADDQ $0x01, SI
SUBQ $0x01, R8
index_loop_encodeBetterBlockAsm10B:
- CMPQ SI, R8
+ CMPQ DI, R8
JAE search_loop_encodeBetterBlockAsm10B
- MOVQ (DX)(SI*1), DI
- MOVQ (DX)(R8*1), R9
- SHLQ $0x10, DI
- IMULQ BX, DI
- SHRQ $0x34, DI
+ MOVQ (DX)(SI*1), R9
+ MOVQ (DX)(DI*1), R10
SHLQ $0x10, R9
IMULQ BX, R9
SHRQ $0x34, R9
- MOVL SI, 24(SP)(DI*4)
- MOVL R8, 24(SP)(R9*4)
+ SHLQ $0x10, R10
+ IMULQ BX, R10
+ SHRQ $0x34, R10
+ MOVL SI, 24(SP)(R9*4)
+ MOVL DI, 24(SP)(R10*4)
ADDQ $0x02, SI
- SUBQ $0x02, R8
+ ADDQ $0x02, DI
JMP index_loop_encodeBetterBlockAsm10B
emit_remainder_encodeBetterBlockAsm10B:
@@ -9657,7 +9651,6 @@ matchlen_loop_match_nolit_encodeBetterBlockAsm8B:
LEAL 8(R11), R11
CMPL DI, $0x08
JAE matchlen_loopback_match_nolit_encodeBetterBlockAsm8B
- JZ match_nolit_end_encodeBetterBlockAsm8B
matchlen_match4_match_nolit_encodeBetterBlockAsm8B:
CMPL DI, $0x04
@@ -9665,21 +9658,21 @@ matchlen_match4_match_nolit_encodeBetterBlockAsm8B:
MOVL (R8)(R11*1), R10
CMPL (R9)(R11*1), R10
JNE matchlen_match2_match_nolit_encodeBetterBlockAsm8B
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R11), R11
matchlen_match2_match_nolit_encodeBetterBlockAsm8B:
- CMPL DI, $0x02
- JB matchlen_match1_match_nolit_encodeBetterBlockAsm8B
+ CMPL DI, $0x01
+ JE matchlen_match1_match_nolit_encodeBetterBlockAsm8B
+ JB match_nolit_end_encodeBetterBlockAsm8B
MOVW (R8)(R11*1), R10
CMPW (R9)(R11*1), R10
JNE matchlen_match1_match_nolit_encodeBetterBlockAsm8B
- SUBL $0x02, DI
LEAL 2(R11), R11
+ SUBL $0x02, DI
+ JZ match_nolit_end_encodeBetterBlockAsm8B
matchlen_match1_match_nolit_encodeBetterBlockAsm8B:
- CMPL DI, $0x01
- JB match_nolit_end_encodeBetterBlockAsm8B
MOVB (R8)(R11*1), R10
CMPB (R9)(R11*1), R10
JNE match_nolit_end_encodeBetterBlockAsm8B
@@ -10164,24 +10157,26 @@ match_nolit_dst_ok_encodeBetterBlockAsm8B:
MOVL R8, 24(SP)(R11*4)
MOVL DI, 4120(SP)(R10*4)
MOVL R13, 4120(SP)(R12*4)
+ LEAQ 1(R8)(SI*1), DI
+ SHRQ $0x01, DI
ADDQ $0x01, SI
SUBQ $0x01, R8
index_loop_encodeBetterBlockAsm8B:
- CMPQ SI, R8
+ CMPQ DI, R8
JAE search_loop_encodeBetterBlockAsm8B
- MOVQ (DX)(SI*1), DI
- MOVQ (DX)(R8*1), R9
- SHLQ $0x10, DI
- IMULQ BX, DI
- SHRQ $0x36, DI
+ MOVQ (DX)(SI*1), R9
+ MOVQ (DX)(DI*1), R10
SHLQ $0x10, R9
IMULQ BX, R9
SHRQ $0x36, R9
- MOVL SI, 24(SP)(DI*4)
- MOVL R8, 24(SP)(R9*4)
+ SHLQ $0x10, R10
+ IMULQ BX, R10
+ SHRQ $0x36, R10
+ MOVL SI, 24(SP)(R9*4)
+ MOVL DI, 24(SP)(R10*4)
ADDQ $0x02, SI
- SUBQ $0x02, R8
+ ADDQ $0x02, DI
JMP index_loop_encodeBetterBlockAsm8B
emit_remainder_encodeBetterBlockAsm8B:
@@ -10605,7 +10600,6 @@ matchlen_loop_repeat_extend_encodeSnappyBlockAsm:
LEAL 8(R10), R10
CMPL DI, $0x08
JAE matchlen_loopback_repeat_extend_encodeSnappyBlockAsm
- JZ repeat_extend_forward_end_encodeSnappyBlockAsm
matchlen_match4_repeat_extend_encodeSnappyBlockAsm:
CMPL DI, $0x04
@@ -10613,21 +10607,21 @@ matchlen_match4_repeat_extend_encodeSnappyBlockAsm:
MOVL (R8)(R10*1), R9
CMPL (BX)(R10*1), R9
JNE matchlen_match2_repeat_extend_encodeSnappyBlockAsm
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R10), R10
matchlen_match2_repeat_extend_encodeSnappyBlockAsm:
- CMPL DI, $0x02
- JB matchlen_match1_repeat_extend_encodeSnappyBlockAsm
+ CMPL DI, $0x01
+ JE matchlen_match1_repeat_extend_encodeSnappyBlockAsm
+ JB repeat_extend_forward_end_encodeSnappyBlockAsm
MOVW (R8)(R10*1), R9
CMPW (BX)(R10*1), R9
JNE matchlen_match1_repeat_extend_encodeSnappyBlockAsm
- SUBL $0x02, DI
LEAL 2(R10), R10
+ SUBL $0x02, DI
+ JZ repeat_extend_forward_end_encodeSnappyBlockAsm
matchlen_match1_repeat_extend_encodeSnappyBlockAsm:
- CMPL DI, $0x01
- JB repeat_extend_forward_end_encodeSnappyBlockAsm
MOVB (R8)(R10*1), R9
CMPB (BX)(R10*1), R9
JNE repeat_extend_forward_end_encodeSnappyBlockAsm
@@ -10928,7 +10922,6 @@ matchlen_loop_match_nolit_encodeSnappyBlockAsm:
LEAL 8(R9), R9
CMPL SI, $0x08
JAE matchlen_loopback_match_nolit_encodeSnappyBlockAsm
- JZ match_nolit_end_encodeSnappyBlockAsm
matchlen_match4_match_nolit_encodeSnappyBlockAsm:
CMPL SI, $0x04
@@ -10936,21 +10929,21 @@ matchlen_match4_match_nolit_encodeSnappyBlockAsm:
MOVL (DI)(R9*1), R8
CMPL (BX)(R9*1), R8
JNE matchlen_match2_match_nolit_encodeSnappyBlockAsm
- SUBL $0x04, SI
+ LEAL -4(SI), SI
LEAL 4(R9), R9
matchlen_match2_match_nolit_encodeSnappyBlockAsm:
- CMPL SI, $0x02
- JB matchlen_match1_match_nolit_encodeSnappyBlockAsm
+ CMPL SI, $0x01
+ JE matchlen_match1_match_nolit_encodeSnappyBlockAsm
+ JB match_nolit_end_encodeSnappyBlockAsm
MOVW (DI)(R9*1), R8
CMPW (BX)(R9*1), R8
JNE matchlen_match1_match_nolit_encodeSnappyBlockAsm
- SUBL $0x02, SI
LEAL 2(R9), R9
+ SUBL $0x02, SI
+ JZ match_nolit_end_encodeSnappyBlockAsm
matchlen_match1_match_nolit_encodeSnappyBlockAsm:
- CMPL SI, $0x01
- JB match_nolit_end_encodeSnappyBlockAsm
MOVB (DI)(R9*1), R8
CMPB (BX)(R9*1), R8
JNE match_nolit_end_encodeSnappyBlockAsm
@@ -11469,7 +11462,6 @@ matchlen_loop_repeat_extend_encodeSnappyBlockAsm64K:
LEAL 8(R10), R10
CMPL DI, $0x08
JAE matchlen_loopback_repeat_extend_encodeSnappyBlockAsm64K
- JZ repeat_extend_forward_end_encodeSnappyBlockAsm64K
matchlen_match4_repeat_extend_encodeSnappyBlockAsm64K:
CMPL DI, $0x04
@@ -11477,21 +11469,21 @@ matchlen_match4_repeat_extend_encodeSnappyBlockAsm64K:
MOVL (R8)(R10*1), R9
CMPL (BX)(R10*1), R9
JNE matchlen_match2_repeat_extend_encodeSnappyBlockAsm64K
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R10), R10
matchlen_match2_repeat_extend_encodeSnappyBlockAsm64K:
- CMPL DI, $0x02
- JB matchlen_match1_repeat_extend_encodeSnappyBlockAsm64K
+ CMPL DI, $0x01
+ JE matchlen_match1_repeat_extend_encodeSnappyBlockAsm64K
+ JB repeat_extend_forward_end_encodeSnappyBlockAsm64K
MOVW (R8)(R10*1), R9
CMPW (BX)(R10*1), R9
JNE matchlen_match1_repeat_extend_encodeSnappyBlockAsm64K
- SUBL $0x02, DI
LEAL 2(R10), R10
+ SUBL $0x02, DI
+ JZ repeat_extend_forward_end_encodeSnappyBlockAsm64K
matchlen_match1_repeat_extend_encodeSnappyBlockAsm64K:
- CMPL DI, $0x01
- JB repeat_extend_forward_end_encodeSnappyBlockAsm64K
MOVB (R8)(R10*1), R9
CMPB (BX)(R10*1), R9
JNE repeat_extend_forward_end_encodeSnappyBlockAsm64K
@@ -11752,7 +11744,6 @@ matchlen_loop_match_nolit_encodeSnappyBlockAsm64K:
LEAL 8(R9), R9
CMPL SI, $0x08
JAE matchlen_loopback_match_nolit_encodeSnappyBlockAsm64K
- JZ match_nolit_end_encodeSnappyBlockAsm64K
matchlen_match4_match_nolit_encodeSnappyBlockAsm64K:
CMPL SI, $0x04
@@ -11760,21 +11751,21 @@ matchlen_match4_match_nolit_encodeSnappyBlockAsm64K:
MOVL (DI)(R9*1), R8
CMPL (BX)(R9*1), R8
JNE matchlen_match2_match_nolit_encodeSnappyBlockAsm64K
- SUBL $0x04, SI
+ LEAL -4(SI), SI
LEAL 4(R9), R9
matchlen_match2_match_nolit_encodeSnappyBlockAsm64K:
- CMPL SI, $0x02
- JB matchlen_match1_match_nolit_encodeSnappyBlockAsm64K
+ CMPL SI, $0x01
+ JE matchlen_match1_match_nolit_encodeSnappyBlockAsm64K
+ JB match_nolit_end_encodeSnappyBlockAsm64K
MOVW (DI)(R9*1), R8
CMPW (BX)(R9*1), R8
JNE matchlen_match1_match_nolit_encodeSnappyBlockAsm64K
- SUBL $0x02, SI
LEAL 2(R9), R9
+ SUBL $0x02, SI
+ JZ match_nolit_end_encodeSnappyBlockAsm64K
matchlen_match1_match_nolit_encodeSnappyBlockAsm64K:
- CMPL SI, $0x01
- JB match_nolit_end_encodeSnappyBlockAsm64K
MOVB (DI)(R9*1), R8
CMPB (BX)(R9*1), R8
JNE match_nolit_end_encodeSnappyBlockAsm64K
@@ -12253,7 +12244,6 @@ matchlen_loop_repeat_extend_encodeSnappyBlockAsm12B:
LEAL 8(R10), R10
CMPL DI, $0x08
JAE matchlen_loopback_repeat_extend_encodeSnappyBlockAsm12B
- JZ repeat_extend_forward_end_encodeSnappyBlockAsm12B
matchlen_match4_repeat_extend_encodeSnappyBlockAsm12B:
CMPL DI, $0x04
@@ -12261,21 +12251,21 @@ matchlen_match4_repeat_extend_encodeSnappyBlockAsm12B:
MOVL (R8)(R10*1), R9
CMPL (BX)(R10*1), R9
JNE matchlen_match2_repeat_extend_encodeSnappyBlockAsm12B
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R10), R10
matchlen_match2_repeat_extend_encodeSnappyBlockAsm12B:
- CMPL DI, $0x02
- JB matchlen_match1_repeat_extend_encodeSnappyBlockAsm12B
+ CMPL DI, $0x01
+ JE matchlen_match1_repeat_extend_encodeSnappyBlockAsm12B
+ JB repeat_extend_forward_end_encodeSnappyBlockAsm12B
MOVW (R8)(R10*1), R9
CMPW (BX)(R10*1), R9
JNE matchlen_match1_repeat_extend_encodeSnappyBlockAsm12B
- SUBL $0x02, DI
LEAL 2(R10), R10
+ SUBL $0x02, DI
+ JZ repeat_extend_forward_end_encodeSnappyBlockAsm12B
matchlen_match1_repeat_extend_encodeSnappyBlockAsm12B:
- CMPL DI, $0x01
- JB repeat_extend_forward_end_encodeSnappyBlockAsm12B
MOVB (R8)(R10*1), R9
CMPB (BX)(R10*1), R9
JNE repeat_extend_forward_end_encodeSnappyBlockAsm12B
@@ -12536,7 +12526,6 @@ matchlen_loop_match_nolit_encodeSnappyBlockAsm12B:
LEAL 8(R9), R9
CMPL SI, $0x08
JAE matchlen_loopback_match_nolit_encodeSnappyBlockAsm12B
- JZ match_nolit_end_encodeSnappyBlockAsm12B
matchlen_match4_match_nolit_encodeSnappyBlockAsm12B:
CMPL SI, $0x04
@@ -12544,21 +12533,21 @@ matchlen_match4_match_nolit_encodeSnappyBlockAsm12B:
MOVL (DI)(R9*1), R8
CMPL (BX)(R9*1), R8
JNE matchlen_match2_match_nolit_encodeSnappyBlockAsm12B
- SUBL $0x04, SI
+ LEAL -4(SI), SI
LEAL 4(R9), R9
matchlen_match2_match_nolit_encodeSnappyBlockAsm12B:
- CMPL SI, $0x02
- JB matchlen_match1_match_nolit_encodeSnappyBlockAsm12B
+ CMPL SI, $0x01
+ JE matchlen_match1_match_nolit_encodeSnappyBlockAsm12B
+ JB match_nolit_end_encodeSnappyBlockAsm12B
MOVW (DI)(R9*1), R8
CMPW (BX)(R9*1), R8
JNE matchlen_match1_match_nolit_encodeSnappyBlockAsm12B
- SUBL $0x02, SI
LEAL 2(R9), R9
+ SUBL $0x02, SI
+ JZ match_nolit_end_encodeSnappyBlockAsm12B
matchlen_match1_match_nolit_encodeSnappyBlockAsm12B:
- CMPL SI, $0x01
- JB match_nolit_end_encodeSnappyBlockAsm12B
MOVB (DI)(R9*1), R8
CMPB (BX)(R9*1), R8
JNE match_nolit_end_encodeSnappyBlockAsm12B
@@ -13037,7 +13026,6 @@ matchlen_loop_repeat_extend_encodeSnappyBlockAsm10B:
LEAL 8(R10), R10
CMPL DI, $0x08
JAE matchlen_loopback_repeat_extend_encodeSnappyBlockAsm10B
- JZ repeat_extend_forward_end_encodeSnappyBlockAsm10B
matchlen_match4_repeat_extend_encodeSnappyBlockAsm10B:
CMPL DI, $0x04
@@ -13045,21 +13033,21 @@ matchlen_match4_repeat_extend_encodeSnappyBlockAsm10B:
MOVL (R8)(R10*1), R9
CMPL (BX)(R10*1), R9
JNE matchlen_match2_repeat_extend_encodeSnappyBlockAsm10B
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R10), R10
matchlen_match2_repeat_extend_encodeSnappyBlockAsm10B:
- CMPL DI, $0x02
- JB matchlen_match1_repeat_extend_encodeSnappyBlockAsm10B
+ CMPL DI, $0x01
+ JE matchlen_match1_repeat_extend_encodeSnappyBlockAsm10B
+ JB repeat_extend_forward_end_encodeSnappyBlockAsm10B
MOVW (R8)(R10*1), R9
CMPW (BX)(R10*1), R9
JNE matchlen_match1_repeat_extend_encodeSnappyBlockAsm10B
- SUBL $0x02, DI
LEAL 2(R10), R10
+ SUBL $0x02, DI
+ JZ repeat_extend_forward_end_encodeSnappyBlockAsm10B
matchlen_match1_repeat_extend_encodeSnappyBlockAsm10B:
- CMPL DI, $0x01
- JB repeat_extend_forward_end_encodeSnappyBlockAsm10B
MOVB (R8)(R10*1), R9
CMPB (BX)(R10*1), R9
JNE repeat_extend_forward_end_encodeSnappyBlockAsm10B
@@ -13320,7 +13308,6 @@ matchlen_loop_match_nolit_encodeSnappyBlockAsm10B:
LEAL 8(R9), R9
CMPL SI, $0x08
JAE matchlen_loopback_match_nolit_encodeSnappyBlockAsm10B
- JZ match_nolit_end_encodeSnappyBlockAsm10B
matchlen_match4_match_nolit_encodeSnappyBlockAsm10B:
CMPL SI, $0x04
@@ -13328,21 +13315,21 @@ matchlen_match4_match_nolit_encodeSnappyBlockAsm10B:
MOVL (DI)(R9*1), R8
CMPL (BX)(R9*1), R8
JNE matchlen_match2_match_nolit_encodeSnappyBlockAsm10B
- SUBL $0x04, SI
+ LEAL -4(SI), SI
LEAL 4(R9), R9
matchlen_match2_match_nolit_encodeSnappyBlockAsm10B:
- CMPL SI, $0x02
- JB matchlen_match1_match_nolit_encodeSnappyBlockAsm10B
+ CMPL SI, $0x01
+ JE matchlen_match1_match_nolit_encodeSnappyBlockAsm10B
+ JB match_nolit_end_encodeSnappyBlockAsm10B
MOVW (DI)(R9*1), R8
CMPW (BX)(R9*1), R8
JNE matchlen_match1_match_nolit_encodeSnappyBlockAsm10B
- SUBL $0x02, SI
LEAL 2(R9), R9
+ SUBL $0x02, SI
+ JZ match_nolit_end_encodeSnappyBlockAsm10B
matchlen_match1_match_nolit_encodeSnappyBlockAsm10B:
- CMPL SI, $0x01
- JB match_nolit_end_encodeSnappyBlockAsm10B
MOVB (DI)(R9*1), R8
CMPB (BX)(R9*1), R8
JNE match_nolit_end_encodeSnappyBlockAsm10B
@@ -13821,7 +13808,6 @@ matchlen_loop_repeat_extend_encodeSnappyBlockAsm8B:
LEAL 8(R10), R10
CMPL DI, $0x08
JAE matchlen_loopback_repeat_extend_encodeSnappyBlockAsm8B
- JZ repeat_extend_forward_end_encodeSnappyBlockAsm8B
matchlen_match4_repeat_extend_encodeSnappyBlockAsm8B:
CMPL DI, $0x04
@@ -13829,21 +13815,21 @@ matchlen_match4_repeat_extend_encodeSnappyBlockAsm8B:
MOVL (R8)(R10*1), R9
CMPL (BX)(R10*1), R9
JNE matchlen_match2_repeat_extend_encodeSnappyBlockAsm8B
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R10), R10
matchlen_match2_repeat_extend_encodeSnappyBlockAsm8B:
- CMPL DI, $0x02
- JB matchlen_match1_repeat_extend_encodeSnappyBlockAsm8B
+ CMPL DI, $0x01
+ JE matchlen_match1_repeat_extend_encodeSnappyBlockAsm8B
+ JB repeat_extend_forward_end_encodeSnappyBlockAsm8B
MOVW (R8)(R10*1), R9
CMPW (BX)(R10*1), R9
JNE matchlen_match1_repeat_extend_encodeSnappyBlockAsm8B
- SUBL $0x02, DI
LEAL 2(R10), R10
+ SUBL $0x02, DI
+ JZ repeat_extend_forward_end_encodeSnappyBlockAsm8B
matchlen_match1_repeat_extend_encodeSnappyBlockAsm8B:
- CMPL DI, $0x01
- JB repeat_extend_forward_end_encodeSnappyBlockAsm8B
MOVB (R8)(R10*1), R9
CMPB (BX)(R10*1), R9
JNE repeat_extend_forward_end_encodeSnappyBlockAsm8B
@@ -14102,7 +14088,6 @@ matchlen_loop_match_nolit_encodeSnappyBlockAsm8B:
LEAL 8(R9), R9
CMPL SI, $0x08
JAE matchlen_loopback_match_nolit_encodeSnappyBlockAsm8B
- JZ match_nolit_end_encodeSnappyBlockAsm8B
matchlen_match4_match_nolit_encodeSnappyBlockAsm8B:
CMPL SI, $0x04
@@ -14110,21 +14095,21 @@ matchlen_match4_match_nolit_encodeSnappyBlockAsm8B:
MOVL (DI)(R9*1), R8
CMPL (BX)(R9*1), R8
JNE matchlen_match2_match_nolit_encodeSnappyBlockAsm8B
- SUBL $0x04, SI
+ LEAL -4(SI), SI
LEAL 4(R9), R9
matchlen_match2_match_nolit_encodeSnappyBlockAsm8B:
- CMPL SI, $0x02
- JB matchlen_match1_match_nolit_encodeSnappyBlockAsm8B
+ CMPL SI, $0x01
+ JE matchlen_match1_match_nolit_encodeSnappyBlockAsm8B
+ JB match_nolit_end_encodeSnappyBlockAsm8B
MOVW (DI)(R9*1), R8
CMPW (BX)(R9*1), R8
JNE matchlen_match1_match_nolit_encodeSnappyBlockAsm8B
- SUBL $0x02, SI
LEAL 2(R9), R9
+ SUBL $0x02, SI
+ JZ match_nolit_end_encodeSnappyBlockAsm8B
matchlen_match1_match_nolit_encodeSnappyBlockAsm8B:
- CMPL SI, $0x01
- JB match_nolit_end_encodeSnappyBlockAsm8B
MOVB (DI)(R9*1), R8
CMPB (BX)(R9*1), R8
JNE match_nolit_end_encodeSnappyBlockAsm8B
@@ -14513,7 +14498,6 @@ matchlen_loop_match_nolit_encodeSnappyBetterBlockAsm:
LEAL 8(R11), R11
CMPL DI, $0x08
JAE matchlen_loopback_match_nolit_encodeSnappyBetterBlockAsm
- JZ match_nolit_end_encodeSnappyBetterBlockAsm
matchlen_match4_match_nolit_encodeSnappyBetterBlockAsm:
CMPL DI, $0x04
@@ -14521,21 +14505,21 @@ matchlen_match4_match_nolit_encodeSnappyBetterBlockAsm:
MOVL (R8)(R11*1), R10
CMPL (R9)(R11*1), R10
JNE matchlen_match2_match_nolit_encodeSnappyBetterBlockAsm
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R11), R11
matchlen_match2_match_nolit_encodeSnappyBetterBlockAsm:
- CMPL DI, $0x02
- JB matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm
+ CMPL DI, $0x01
+ JE matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm
+ JB match_nolit_end_encodeSnappyBetterBlockAsm
MOVW (R8)(R11*1), R10
CMPW (R9)(R11*1), R10
JNE matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm
- SUBL $0x02, DI
LEAL 2(R11), R11
+ SUBL $0x02, DI
+ JZ match_nolit_end_encodeSnappyBetterBlockAsm
matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm:
- CMPL DI, $0x01
- JB match_nolit_end_encodeSnappyBetterBlockAsm
MOVB (R8)(R11*1), R10
CMPB (R9)(R11*1), R10
JNE match_nolit_end_encodeSnappyBetterBlockAsm
@@ -14790,24 +14774,26 @@ match_nolit_dst_ok_encodeSnappyBetterBlockAsm:
MOVL R8, 24(SP)(R11*4)
MOVL DI, 524312(SP)(R10*4)
MOVL R13, 524312(SP)(R12*4)
+ LEAQ 1(R8)(SI*1), DI
+ SHRQ $0x01, DI
ADDQ $0x01, SI
SUBQ $0x01, R8
index_loop_encodeSnappyBetterBlockAsm:
- CMPQ SI, R8
+ CMPQ DI, R8
JAE search_loop_encodeSnappyBetterBlockAsm
- MOVQ (DX)(SI*1), DI
- MOVQ (DX)(R8*1), R9
- SHLQ $0x08, DI
- IMULQ BX, DI
- SHRQ $0x2f, DI
+ MOVQ (DX)(SI*1), R9
+ MOVQ (DX)(DI*1), R10
SHLQ $0x08, R9
IMULQ BX, R9
SHRQ $0x2f, R9
- MOVL SI, 24(SP)(DI*4)
- MOVL R8, 24(SP)(R9*4)
+ SHLQ $0x08, R10
+ IMULQ BX, R10
+ SHRQ $0x2f, R10
+ MOVL SI, 24(SP)(R9*4)
+ MOVL DI, 24(SP)(R10*4)
ADDQ $0x02, SI
- SUBQ $0x02, R8
+ ADDQ $0x02, DI
JMP index_loop_encodeSnappyBetterBlockAsm
emit_remainder_encodeSnappyBetterBlockAsm:
@@ -15135,7 +15121,6 @@ matchlen_loop_match_nolit_encodeSnappyBetterBlockAsm64K:
LEAL 8(R11), R11
CMPL DI, $0x08
JAE matchlen_loopback_match_nolit_encodeSnappyBetterBlockAsm64K
- JZ match_nolit_end_encodeSnappyBetterBlockAsm64K
matchlen_match4_match_nolit_encodeSnappyBetterBlockAsm64K:
CMPL DI, $0x04
@@ -15143,21 +15128,21 @@ matchlen_match4_match_nolit_encodeSnappyBetterBlockAsm64K:
MOVL (R8)(R11*1), R10
CMPL (R9)(R11*1), R10
JNE matchlen_match2_match_nolit_encodeSnappyBetterBlockAsm64K
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R11), R11
matchlen_match2_match_nolit_encodeSnappyBetterBlockAsm64K:
- CMPL DI, $0x02
- JB matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm64K
+ CMPL DI, $0x01
+ JE matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm64K
+ JB match_nolit_end_encodeSnappyBetterBlockAsm64K
MOVW (R8)(R11*1), R10
CMPW (R9)(R11*1), R10
JNE matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm64K
- SUBL $0x02, DI
LEAL 2(R11), R11
+ SUBL $0x02, DI
+ JZ match_nolit_end_encodeSnappyBetterBlockAsm64K
matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm64K:
- CMPL DI, $0x01
- JB match_nolit_end_encodeSnappyBetterBlockAsm64K
MOVB (R8)(R11*1), R10
CMPB (R9)(R11*1), R10
JNE match_nolit_end_encodeSnappyBetterBlockAsm64K
@@ -15363,24 +15348,26 @@ match_nolit_dst_ok_encodeSnappyBetterBlockAsm64K:
MOVL R8, 24(SP)(R11*4)
MOVL DI, 262168(SP)(R10*4)
MOVL R13, 262168(SP)(R12*4)
+ LEAQ 1(R8)(SI*1), DI
+ SHRQ $0x01, DI
ADDQ $0x01, SI
SUBQ $0x01, R8
index_loop_encodeSnappyBetterBlockAsm64K:
- CMPQ SI, R8
+ CMPQ DI, R8
JAE search_loop_encodeSnappyBetterBlockAsm64K
- MOVQ (DX)(SI*1), DI
- MOVQ (DX)(R8*1), R9
- SHLQ $0x08, DI
- IMULQ BX, DI
- SHRQ $0x30, DI
+ MOVQ (DX)(SI*1), R9
+ MOVQ (DX)(DI*1), R10
SHLQ $0x08, R9
IMULQ BX, R9
SHRQ $0x30, R9
- MOVL SI, 24(SP)(DI*4)
- MOVL R8, 24(SP)(R9*4)
+ SHLQ $0x08, R10
+ IMULQ BX, R10
+ SHRQ $0x30, R10
+ MOVL SI, 24(SP)(R9*4)
+ MOVL DI, 24(SP)(R10*4)
ADDQ $0x02, SI
- SUBQ $0x02, R8
+ ADDQ $0x02, DI
JMP index_loop_encodeSnappyBetterBlockAsm64K
emit_remainder_encodeSnappyBetterBlockAsm64K:
@@ -15692,7 +15679,6 @@ matchlen_loop_match_nolit_encodeSnappyBetterBlockAsm12B:
LEAL 8(R11), R11
CMPL DI, $0x08
JAE matchlen_loopback_match_nolit_encodeSnappyBetterBlockAsm12B
- JZ match_nolit_end_encodeSnappyBetterBlockAsm12B
matchlen_match4_match_nolit_encodeSnappyBetterBlockAsm12B:
CMPL DI, $0x04
@@ -15700,21 +15686,21 @@ matchlen_match4_match_nolit_encodeSnappyBetterBlockAsm12B:
MOVL (R8)(R11*1), R10
CMPL (R9)(R11*1), R10
JNE matchlen_match2_match_nolit_encodeSnappyBetterBlockAsm12B
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R11), R11
matchlen_match2_match_nolit_encodeSnappyBetterBlockAsm12B:
- CMPL DI, $0x02
- JB matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm12B
+ CMPL DI, $0x01
+ JE matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm12B
+ JB match_nolit_end_encodeSnappyBetterBlockAsm12B
MOVW (R8)(R11*1), R10
CMPW (R9)(R11*1), R10
JNE matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm12B
- SUBL $0x02, DI
LEAL 2(R11), R11
+ SUBL $0x02, DI
+ JZ match_nolit_end_encodeSnappyBetterBlockAsm12B
matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm12B:
- CMPL DI, $0x01
- JB match_nolit_end_encodeSnappyBetterBlockAsm12B
MOVB (R8)(R11*1), R10
CMPB (R9)(R11*1), R10
JNE match_nolit_end_encodeSnappyBetterBlockAsm12B
@@ -15920,24 +15906,26 @@ match_nolit_dst_ok_encodeSnappyBetterBlockAsm12B:
MOVL R8, 24(SP)(R11*4)
MOVL DI, 65560(SP)(R10*4)
MOVL R13, 65560(SP)(R12*4)
+ LEAQ 1(R8)(SI*1), DI
+ SHRQ $0x01, DI
ADDQ $0x01, SI
SUBQ $0x01, R8
index_loop_encodeSnappyBetterBlockAsm12B:
- CMPQ SI, R8
+ CMPQ DI, R8
JAE search_loop_encodeSnappyBetterBlockAsm12B
- MOVQ (DX)(SI*1), DI
- MOVQ (DX)(R8*1), R9
- SHLQ $0x10, DI
- IMULQ BX, DI
- SHRQ $0x32, DI
+ MOVQ (DX)(SI*1), R9
+ MOVQ (DX)(DI*1), R10
SHLQ $0x10, R9
IMULQ BX, R9
SHRQ $0x32, R9
- MOVL SI, 24(SP)(DI*4)
- MOVL R8, 24(SP)(R9*4)
+ SHLQ $0x10, R10
+ IMULQ BX, R10
+ SHRQ $0x32, R10
+ MOVL SI, 24(SP)(R9*4)
+ MOVL DI, 24(SP)(R10*4)
ADDQ $0x02, SI
- SUBQ $0x02, R8
+ ADDQ $0x02, DI
JMP index_loop_encodeSnappyBetterBlockAsm12B
emit_remainder_encodeSnappyBetterBlockAsm12B:
@@ -16249,7 +16237,6 @@ matchlen_loop_match_nolit_encodeSnappyBetterBlockAsm10B:
LEAL 8(R11), R11
CMPL DI, $0x08
JAE matchlen_loopback_match_nolit_encodeSnappyBetterBlockAsm10B
- JZ match_nolit_end_encodeSnappyBetterBlockAsm10B
matchlen_match4_match_nolit_encodeSnappyBetterBlockAsm10B:
CMPL DI, $0x04
@@ -16257,21 +16244,21 @@ matchlen_match4_match_nolit_encodeSnappyBetterBlockAsm10B:
MOVL (R8)(R11*1), R10
CMPL (R9)(R11*1), R10
JNE matchlen_match2_match_nolit_encodeSnappyBetterBlockAsm10B
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R11), R11
matchlen_match2_match_nolit_encodeSnappyBetterBlockAsm10B:
- CMPL DI, $0x02
- JB matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm10B
+ CMPL DI, $0x01
+ JE matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm10B
+ JB match_nolit_end_encodeSnappyBetterBlockAsm10B
MOVW (R8)(R11*1), R10
CMPW (R9)(R11*1), R10
JNE matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm10B
- SUBL $0x02, DI
LEAL 2(R11), R11
+ SUBL $0x02, DI
+ JZ match_nolit_end_encodeSnappyBetterBlockAsm10B
matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm10B:
- CMPL DI, $0x01
- JB match_nolit_end_encodeSnappyBetterBlockAsm10B
MOVB (R8)(R11*1), R10
CMPB (R9)(R11*1), R10
JNE match_nolit_end_encodeSnappyBetterBlockAsm10B
@@ -16477,24 +16464,26 @@ match_nolit_dst_ok_encodeSnappyBetterBlockAsm10B:
MOVL R8, 24(SP)(R11*4)
MOVL DI, 16408(SP)(R10*4)
MOVL R13, 16408(SP)(R12*4)
+ LEAQ 1(R8)(SI*1), DI
+ SHRQ $0x01, DI
ADDQ $0x01, SI
SUBQ $0x01, R8
index_loop_encodeSnappyBetterBlockAsm10B:
- CMPQ SI, R8
+ CMPQ DI, R8
JAE search_loop_encodeSnappyBetterBlockAsm10B
- MOVQ (DX)(SI*1), DI
- MOVQ (DX)(R8*1), R9
- SHLQ $0x10, DI
- IMULQ BX, DI
- SHRQ $0x34, DI
+ MOVQ (DX)(SI*1), R9
+ MOVQ (DX)(DI*1), R10
SHLQ $0x10, R9
IMULQ BX, R9
SHRQ $0x34, R9
- MOVL SI, 24(SP)(DI*4)
- MOVL R8, 24(SP)(R9*4)
+ SHLQ $0x10, R10
+ IMULQ BX, R10
+ SHRQ $0x34, R10
+ MOVL SI, 24(SP)(R9*4)
+ MOVL DI, 24(SP)(R10*4)
ADDQ $0x02, SI
- SUBQ $0x02, R8
+ ADDQ $0x02, DI
JMP index_loop_encodeSnappyBetterBlockAsm10B
emit_remainder_encodeSnappyBetterBlockAsm10B:
@@ -16806,7 +16795,6 @@ matchlen_loop_match_nolit_encodeSnappyBetterBlockAsm8B:
LEAL 8(R11), R11
CMPL DI, $0x08
JAE matchlen_loopback_match_nolit_encodeSnappyBetterBlockAsm8B
- JZ match_nolit_end_encodeSnappyBetterBlockAsm8B
matchlen_match4_match_nolit_encodeSnappyBetterBlockAsm8B:
CMPL DI, $0x04
@@ -16814,21 +16802,21 @@ matchlen_match4_match_nolit_encodeSnappyBetterBlockAsm8B:
MOVL (R8)(R11*1), R10
CMPL (R9)(R11*1), R10
JNE matchlen_match2_match_nolit_encodeSnappyBetterBlockAsm8B
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R11), R11
matchlen_match2_match_nolit_encodeSnappyBetterBlockAsm8B:
- CMPL DI, $0x02
- JB matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm8B
+ CMPL DI, $0x01
+ JE matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm8B
+ JB match_nolit_end_encodeSnappyBetterBlockAsm8B
MOVW (R8)(R11*1), R10
CMPW (R9)(R11*1), R10
JNE matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm8B
- SUBL $0x02, DI
LEAL 2(R11), R11
+ SUBL $0x02, DI
+ JZ match_nolit_end_encodeSnappyBetterBlockAsm8B
matchlen_match1_match_nolit_encodeSnappyBetterBlockAsm8B:
- CMPL DI, $0x01
- JB match_nolit_end_encodeSnappyBetterBlockAsm8B
MOVB (R8)(R11*1), R10
CMPB (R9)(R11*1), R10
JNE match_nolit_end_encodeSnappyBetterBlockAsm8B
@@ -17032,24 +17020,26 @@ match_nolit_dst_ok_encodeSnappyBetterBlockAsm8B:
MOVL R8, 24(SP)(R11*4)
MOVL DI, 4120(SP)(R10*4)
MOVL R13, 4120(SP)(R12*4)
+ LEAQ 1(R8)(SI*1), DI
+ SHRQ $0x01, DI
ADDQ $0x01, SI
SUBQ $0x01, R8
index_loop_encodeSnappyBetterBlockAsm8B:
- CMPQ SI, R8
+ CMPQ DI, R8
JAE search_loop_encodeSnappyBetterBlockAsm8B
- MOVQ (DX)(SI*1), DI
- MOVQ (DX)(R8*1), R9
- SHLQ $0x10, DI
- IMULQ BX, DI
- SHRQ $0x36, DI
+ MOVQ (DX)(SI*1), R9
+ MOVQ (DX)(DI*1), R10
SHLQ $0x10, R9
IMULQ BX, R9
SHRQ $0x36, R9
- MOVL SI, 24(SP)(DI*4)
- MOVL R8, 24(SP)(R9*4)
+ SHLQ $0x10, R10
+ IMULQ BX, R10
+ SHRQ $0x36, R10
+ MOVL SI, 24(SP)(R9*4)
+ MOVL DI, 24(SP)(R10*4)
ADDQ $0x02, SI
- SUBQ $0x02, R8
+ ADDQ $0x02, DI
JMP index_loop_encodeSnappyBetterBlockAsm8B
emit_remainder_encodeSnappyBetterBlockAsm8B:
@@ -17378,7 +17368,6 @@ matchlen_loop_repeat_extend_calcBlockSize:
LEAL 8(R10), R10
CMPL DI, $0x08
JAE matchlen_loopback_repeat_extend_calcBlockSize
- JZ repeat_extend_forward_end_calcBlockSize
matchlen_match4_repeat_extend_calcBlockSize:
CMPL DI, $0x04
@@ -17386,21 +17375,21 @@ matchlen_match4_repeat_extend_calcBlockSize:
MOVL (R8)(R10*1), R9
CMPL (BX)(R10*1), R9
JNE matchlen_match2_repeat_extend_calcBlockSize
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R10), R10
matchlen_match2_repeat_extend_calcBlockSize:
- CMPL DI, $0x02
- JB matchlen_match1_repeat_extend_calcBlockSize
+ CMPL DI, $0x01
+ JE matchlen_match1_repeat_extend_calcBlockSize
+ JB repeat_extend_forward_end_calcBlockSize
MOVW (R8)(R10*1), R9
CMPW (BX)(R10*1), R9
JNE matchlen_match1_repeat_extend_calcBlockSize
- SUBL $0x02, DI
LEAL 2(R10), R10
+ SUBL $0x02, DI
+ JZ repeat_extend_forward_end_calcBlockSize
matchlen_match1_repeat_extend_calcBlockSize:
- CMPL DI, $0x01
- JB repeat_extend_forward_end_calcBlockSize
MOVB (R8)(R10*1), R9
CMPB (BX)(R10*1), R9
JNE repeat_extend_forward_end_calcBlockSize
@@ -17590,7 +17579,6 @@ matchlen_loop_match_nolit_calcBlockSize:
LEAL 8(R9), R9
CMPL SI, $0x08
JAE matchlen_loopback_match_nolit_calcBlockSize
- JZ match_nolit_end_calcBlockSize
matchlen_match4_match_nolit_calcBlockSize:
CMPL SI, $0x04
@@ -17598,21 +17586,21 @@ matchlen_match4_match_nolit_calcBlockSize:
MOVL (DI)(R9*1), R8
CMPL (BX)(R9*1), R8
JNE matchlen_match2_match_nolit_calcBlockSize
- SUBL $0x04, SI
+ LEAL -4(SI), SI
LEAL 4(R9), R9
matchlen_match2_match_nolit_calcBlockSize:
- CMPL SI, $0x02
- JB matchlen_match1_match_nolit_calcBlockSize
+ CMPL SI, $0x01
+ JE matchlen_match1_match_nolit_calcBlockSize
+ JB match_nolit_end_calcBlockSize
MOVW (DI)(R9*1), R8
CMPW (BX)(R9*1), R8
JNE matchlen_match1_match_nolit_calcBlockSize
- SUBL $0x02, SI
LEAL 2(R9), R9
+ SUBL $0x02, SI
+ JZ match_nolit_end_calcBlockSize
matchlen_match1_match_nolit_calcBlockSize:
- CMPL SI, $0x01
- JB match_nolit_end_calcBlockSize
MOVB (DI)(R9*1), R8
CMPB (BX)(R9*1), R8
JNE match_nolit_end_calcBlockSize
@@ -17909,7 +17897,6 @@ matchlen_loop_repeat_extend_calcBlockSizeSmall:
LEAL 8(R10), R10
CMPL DI, $0x08
JAE matchlen_loopback_repeat_extend_calcBlockSizeSmall
- JZ repeat_extend_forward_end_calcBlockSizeSmall
matchlen_match4_repeat_extend_calcBlockSizeSmall:
CMPL DI, $0x04
@@ -17917,21 +17904,21 @@ matchlen_match4_repeat_extend_calcBlockSizeSmall:
MOVL (R8)(R10*1), R9
CMPL (BX)(R10*1), R9
JNE matchlen_match2_repeat_extend_calcBlockSizeSmall
- SUBL $0x04, DI
+ LEAL -4(DI), DI
LEAL 4(R10), R10
matchlen_match2_repeat_extend_calcBlockSizeSmall:
- CMPL DI, $0x02
- JB matchlen_match1_repeat_extend_calcBlockSizeSmall
+ CMPL DI, $0x01
+ JE matchlen_match1_repeat_extend_calcBlockSizeSmall
+ JB repeat_extend_forward_end_calcBlockSizeSmall
MOVW (R8)(R10*1), R9
CMPW (BX)(R10*1), R9
JNE matchlen_match1_repeat_extend_calcBlockSizeSmall
- SUBL $0x02, DI
LEAL 2(R10), R10
+ SUBL $0x02, DI
+ JZ repeat_extend_forward_end_calcBlockSizeSmall
matchlen_match1_repeat_extend_calcBlockSizeSmall:
- CMPL DI, $0x01
- JB repeat_extend_forward_end_calcBlockSizeSmall
MOVB (R8)(R10*1), R9
CMPB (BX)(R10*1), R9
JNE repeat_extend_forward_end_calcBlockSizeSmall
@@ -18091,7 +18078,6 @@ matchlen_loop_match_nolit_calcBlockSizeSmall:
LEAL 8(R9), R9
CMPL SI, $0x08
JAE matchlen_loopback_match_nolit_calcBlockSizeSmall
- JZ match_nolit_end_calcBlockSizeSmall
matchlen_match4_match_nolit_calcBlockSizeSmall:
CMPL SI, $0x04
@@ -18099,21 +18085,21 @@ matchlen_match4_match_nolit_calcBlockSizeSmall:
MOVL (DI)(R9*1), R8
CMPL (BX)(R9*1), R8
JNE matchlen_match2_match_nolit_calcBlockSizeSmall
- SUBL $0x04, SI
+ LEAL -4(SI), SI
LEAL 4(R9), R9
matchlen_match2_match_nolit_calcBlockSizeSmall:
- CMPL SI, $0x02
- JB matchlen_match1_match_nolit_calcBlockSizeSmall
+ CMPL SI, $0x01
+ JE matchlen_match1_match_nolit_calcBlockSizeSmall
+ JB match_nolit_end_calcBlockSizeSmall
MOVW (DI)(R9*1), R8
CMPW (BX)(R9*1), R8
JNE matchlen_match1_match_nolit_calcBlockSizeSmall
- SUBL $0x02, SI
LEAL 2(R9), R9
+ SUBL $0x02, SI
+ JZ match_nolit_end_calcBlockSizeSmall
matchlen_match1_match_nolit_calcBlockSizeSmall:
- CMPL SI, $0x01
- JB match_nolit_end_calcBlockSizeSmall
MOVB (DI)(R9*1), R8
CMPB (BX)(R9*1), R8
JNE match_nolit_end_calcBlockSizeSmall
@@ -18879,7 +18865,6 @@ matchlen_loop_standalone:
LEAL 8(SI), SI
CMPL DX, $0x08
JAE matchlen_loopback_standalone
- JZ gen_match_len_end
matchlen_match4_standalone:
CMPL DX, $0x04
@@ -18887,21 +18872,21 @@ matchlen_match4_standalone:
MOVL (AX)(SI*1), BX
CMPL (CX)(SI*1), BX
JNE matchlen_match2_standalone
- SUBL $0x04, DX
+ LEAL -4(DX), DX
LEAL 4(SI), SI
matchlen_match2_standalone:
- CMPL DX, $0x02
- JB matchlen_match1_standalone
+ CMPL DX, $0x01
+ JE matchlen_match1_standalone
+ JB gen_match_len_end
MOVW (AX)(SI*1), BX
CMPW (CX)(SI*1), BX
JNE matchlen_match1_standalone
- SUBL $0x02, DX
LEAL 2(SI), SI
+ SUBL $0x02, DX
+ JZ gen_match_len_end
matchlen_match1_standalone:
- CMPL DX, $0x01
- JB gen_match_len_end
MOVB (AX)(SI*1), BL
CMPB (CX)(SI*1), BL
JNE gen_match_len_end
diff --git a/vendor/github.com/klauspost/compress/s2/reader.go b/vendor/github.com/klauspost/compress/s2/reader.go
index 8b84baa6d..2f01a3987 100644
--- a/vendor/github.com/klauspost/compress/s2/reader.go
+++ b/vendor/github.com/klauspost/compress/s2/reader.go
@@ -147,6 +147,13 @@ type Reader struct {
ignoreCRC bool
}
+// GetBufferCapacity returns the capacity of the internal buffer.
+// This might be useful to know when reusing the same reader in combination
+// with the lazy buffer option.
+func (r *Reader) GetBufferCapacity() int {
+ return cap(r.buf)
+}
+
// ensureBufferSize will ensure that the buffer can take at least n bytes.
// If false is returned the buffer exceeds maximum allowed size.
func (r *Reader) ensureBufferSize(n int) bool {
diff --git a/vendor/github.com/klauspost/compress/s2/writer.go b/vendor/github.com/klauspost/compress/s2/writer.go
index 5a944068c..089cd36d8 100644
--- a/vendor/github.com/klauspost/compress/s2/writer.go
+++ b/vendor/github.com/klauspost/compress/s2/writer.go
@@ -771,7 +771,7 @@ func (w *Writer) closeIndex(idx bool) ([]byte, error) {
}
var index []byte
- if w.err(nil) == nil && w.writer != nil {
+ if w.err(err) == nil && w.writer != nil {
// Create index.
if idx {
compSize := int64(-1)
diff --git a/vendor/github.com/klauspost/cpuid/v2/README.md b/vendor/github.com/klauspost/cpuid/v2/README.md
index 37b5167d2..accd7abaf 100644
--- a/vendor/github.com/klauspost/cpuid/v2/README.md
+++ b/vendor/github.com/klauspost/cpuid/v2/README.md
@@ -435,6 +435,7 @@ Exit Code 1
| SYSCALL | System-Call Extension (SCE): SYSCALL and SYSRET instructions. |
| SYSEE | SYSENTER and SYSEXIT instructions |
| TBM | AMD Trailing Bit Manipulation |
+| TDX_GUEST | Intel Trust Domain Extensions Guest |
| TLB_FLUSH_NESTED | AMD: Flushing includes all the nested translations for guest translations |
| TME | Intel Total Memory Encryption. The following MSRs are supported: IA32_TME_CAPABILITY, IA32_TME_ACTIVATE, IA32_TME_EXCLUDE_MASK, and IA32_TME_EXCLUDE_BASE. |
| TOPEXT | TopologyExtensions: topology extensions support. Indicates support for CPUID Fn8000_001D_EAX_x[N:0]-CPUID Fn8000_001E_EDX. |
diff --git a/vendor/github.com/klauspost/cpuid/v2/cpuid.go b/vendor/github.com/klauspost/cpuid/v2/cpuid.go
index 89a861d4f..d015c744e 100644
--- a/vendor/github.com/klauspost/cpuid/v2/cpuid.go
+++ b/vendor/github.com/klauspost/cpuid/v2/cpuid.go
@@ -226,6 +226,7 @@ const (
SYSCALL // System-Call Extension (SCE): SYSCALL and SYSRET instructions.
SYSEE // SYSENTER and SYSEXIT instructions
TBM // AMD Trailing Bit Manipulation
+ TDX_GUEST // Intel Trust Domain Extensions Guest
TLB_FLUSH_NESTED // AMD: Flushing includes all the nested translations for guest translations
TME // Intel Total Memory Encryption. The following MSRs are supported: IA32_TME_CAPABILITY, IA32_TME_ACTIVATE, IA32_TME_EXCLUDE_MASK, and IA32_TME_EXCLUDE_BASE.
TOPEXT // TopologyExtensions: topology extensions support. Indicates support for CPUID Fn8000_001D_EAX_x[N:0]-CPUID Fn8000_001E_EDX.
@@ -1186,13 +1187,8 @@ func support() flagSet {
fs.setIf(edx&(1<<30) != 0, IA32_CORE_CAP)
fs.setIf(edx&(1<<31) != 0, SPEC_CTRL_SSBD)
- // CPUID.(EAX=7, ECX=1).EDX
- fs.setIf(edx&(1<<4) != 0, AVXVNNIINT8)
- fs.setIf(edx&(1<<5) != 0, AVXNECONVERT)
- fs.setIf(edx&(1<<14) != 0, PREFETCHI)
-
// CPUID.(EAX=7, ECX=1).EAX
- eax1, _, _, _ := cpuidex(7, 1)
+ eax1, _, _, edx1 := cpuidex(7, 1)
fs.setIf(fs.inSet(AVX) && eax1&(1<<4) != 0, AVXVNNI)
fs.setIf(eax1&(1<<7) != 0, CMPCCXADD)
fs.setIf(eax1&(1<<10) != 0, MOVSB_ZL)
@@ -1202,6 +1198,11 @@ func support() flagSet {
fs.setIf(eax1&(1<<23) != 0, AVXIFMA)
fs.setIf(eax1&(1<<26) != 0, LAM)
+ // CPUID.(EAX=7, ECX=1).EDX
+ fs.setIf(edx1&(1<<4) != 0, AVXVNNIINT8)
+ fs.setIf(edx1&(1<<5) != 0, AVXNECONVERT)
+ fs.setIf(edx1&(1<<14) != 0, PREFETCHI)
+
// Only detect AVX-512 features if XGETBV is supported
if c&((1<<26)|(1<<27)) == (1<<26)|(1<<27) {
// Check for OS support
@@ -1393,6 +1394,13 @@ func support() flagSet {
fs.setIf((a>>24)&1 == 1, VMSA_REGPROT)
}
+ if mfi >= 0x21 {
+ // Intel Trusted Domain Extensions Guests have their own cpuid leaf (0x21).
+ _, ebx, ecx, edx := cpuid(0x21)
+ identity := string(valAsString(ebx, edx, ecx))
+ fs.setIf(identity == "IntelTDX ", TDX_GUEST)
+ }
+
return fs
}
diff --git a/vendor/github.com/klauspost/cpuid/v2/featureid_string.go b/vendor/github.com/klauspost/cpuid/v2/featureid_string.go
index 2a27f44d3..024c706af 100644
--- a/vendor/github.com/klauspost/cpuid/v2/featureid_string.go
+++ b/vendor/github.com/klauspost/cpuid/v2/featureid_string.go
@@ -166,59 +166,60 @@ func _() {
_ = x[SYSCALL-156]
_ = x[SYSEE-157]
_ = x[TBM-158]
- _ = x[TLB_FLUSH_NESTED-159]
- _ = x[TME-160]
- _ = x[TOPEXT-161]
- _ = x[TSCRATEMSR-162]
- _ = x[TSXLDTRK-163]
- _ = x[VAES-164]
- _ = x[VMCBCLEAN-165]
- _ = x[VMPL-166]
- _ = x[VMSA_REGPROT-167]
- _ = x[VMX-168]
- _ = x[VPCLMULQDQ-169]
- _ = x[VTE-170]
- _ = x[WAITPKG-171]
- _ = x[WBNOINVD-172]
- _ = x[WRMSRNS-173]
- _ = x[X87-174]
- _ = x[XGETBV1-175]
- _ = x[XOP-176]
- _ = x[XSAVE-177]
- _ = x[XSAVEC-178]
- _ = x[XSAVEOPT-179]
- _ = x[XSAVES-180]
- _ = x[AESARM-181]
- _ = x[ARMCPUID-182]
- _ = x[ASIMD-183]
- _ = x[ASIMDDP-184]
- _ = x[ASIMDHP-185]
- _ = x[ASIMDRDM-186]
- _ = x[ATOMICS-187]
- _ = x[CRC32-188]
- _ = x[DCPOP-189]
- _ = x[EVTSTRM-190]
- _ = x[FCMA-191]
- _ = x[FP-192]
- _ = x[FPHP-193]
- _ = x[GPA-194]
- _ = x[JSCVT-195]
- _ = x[LRCPC-196]
- _ = x[PMULL-197]
- _ = x[SHA1-198]
- _ = x[SHA2-199]
- _ = x[SHA3-200]
- _ = x[SHA512-201]
- _ = x[SM3-202]
- _ = x[SM4-203]
- _ = x[SVE-204]
- _ = x[lastID-205]
+ _ = x[TDX_GUEST-159]
+ _ = x[TLB_FLUSH_NESTED-160]
+ _ = x[TME-161]
+ _ = x[TOPEXT-162]
+ _ = x[TSCRATEMSR-163]
+ _ = x[TSXLDTRK-164]
+ _ = x[VAES-165]
+ _ = x[VMCBCLEAN-166]
+ _ = x[VMPL-167]
+ _ = x[VMSA_REGPROT-168]
+ _ = x[VMX-169]
+ _ = x[VPCLMULQDQ-170]
+ _ = x[VTE-171]
+ _ = x[WAITPKG-172]
+ _ = x[WBNOINVD-173]
+ _ = x[WRMSRNS-174]
+ _ = x[X87-175]
+ _ = x[XGETBV1-176]
+ _ = x[XOP-177]
+ _ = x[XSAVE-178]
+ _ = x[XSAVEC-179]
+ _ = x[XSAVEOPT-180]
+ _ = x[XSAVES-181]
+ _ = x[AESARM-182]
+ _ = x[ARMCPUID-183]
+ _ = x[ASIMD-184]
+ _ = x[ASIMDDP-185]
+ _ = x[ASIMDHP-186]
+ _ = x[ASIMDRDM-187]
+ _ = x[ATOMICS-188]
+ _ = x[CRC32-189]
+ _ = x[DCPOP-190]
+ _ = x[EVTSTRM-191]
+ _ = x[FCMA-192]
+ _ = x[FP-193]
+ _ = x[FPHP-194]
+ _ = x[GPA-195]
+ _ = x[JSCVT-196]
+ _ = x[LRCPC-197]
+ _ = x[PMULL-198]
+ _ = x[SHA1-199]
+ _ = x[SHA2-200]
+ _ = x[SHA3-201]
+ _ = x[SHA512-202]
+ _ = x[SM3-203]
+ _ = x[SM4-204]
+ _ = x[SVE-205]
+ _ = x[lastID-206]
_ = x[firstID-0]
}
-const _FeatureID_name = "firstIDADXAESNIAMD3DNOWAMD3DNOWEXTAMXBF16AMXFP16AMXINT8AMXTILEAVXAVX2AVX512BF16AVX512BITALGAVX512BWAVX512CDAVX512DQAVX512ERAVX512FAVX512FP16AVX512IFMAAVX512PFAVX512VBMIAVX512VBMI2AVX512VLAVX512VNNIAVX512VP2INTERSECTAVX512VPOPCNTDQAVXIFMAAVXNECONVERTAVXSLOWAVXVNNIAVXVNNIINT8BHI_CTRLBMI1BMI2CETIBTCETSSCLDEMOTECLMULCLZEROCMOVCMPCCXADDCMPSB_SCADBS_SHORTCMPXCHG8CPBOOSTCPPCCX16EFER_LMSLE_UNSENQCMDERMSF16CFLUSH_L1DFMA3FMA4FP128FP256FSRMFXSRFXSROPTGFNIHLEHRESETHTTHWAHYBRID_CPUHYPERVISORIA32_ARCH_CAPIA32_CORE_CAPIBPBIBRSIBRS_PREFERREDIBRS_PROVIDES_SMPIBSIBSBRNTRGTIBSFETCHSAMIBSFFVIBSOPCNTIBSOPCNTEXTIBSOPSAMIBSRDWROPCNTIBSRIPINVALIDCHKIBS_FETCH_CTLXIBS_OPDATA4IBS_OPFUSEIBS_PREVENTHOSTIBS_ZEN4IDPRED_CTRLINT_WBINVDINVLPGBLAHFLAMLBRVIRTLZCNTMCAOVERFLOWMCDT_NOMCOMMITMD_CLEARMMXMMXEXTMOVBEMOVDIR64BMOVDIRIMOVSB_ZLMOVUMPXMSRIRCMSRLISTMSR_PAGEFLUSHNRIPSNXOSXSAVEPCONFIGPOPCNTPPINPREFETCHIPSFDRDPRURDRANDRDSEEDRDTSCPRRSBA_CTRLRTMRTM_ALWAYS_ABORTSERIALIZESEVSEV_64BITSEV_ALTERNATIVESEV_DEBUGSWAPSEV_ESSEV_RESTRICTEDSEV_SNPSGXSGXLCSHASMESME_COHERENTSPEC_CTRL_SSBDSRBDS_CTRLSSESSE2SSE3SSE4SSE42SSE4ASSSE3STIBPSTIBP_ALWAYSONSTOSB_SHORTSUCCORSVMSVMDASVMFBASIDSVMLSVMNPSVMPFSVMPFTSYSCALLSYSEETBMTLB_FLUSH_NESTEDTMETOPEXTTSCRATEMSRTSXLDTRKVAESVMCBCLEANVMPLVMSA_REGPROTVMXVPCLMULQDQVTEWAITPKGWBNOINVDWRMSRNSX87XGETBV1XOPXSAVEXSAVECXSAVEOPTXSAVESAESARMARMCPUIDASIMDASIMDDPASIMDHPASIMDRDMATOMICSCRC32DCPOPEVTSTRMFCMAFPFPHPGPAJSCVTLRCPCPMULLSHA1SHA2SHA3SHA512SM3SM4SVElastID"
+const _FeatureID_name = "firstIDADXAESNIAMD3DNOWAMD3DNOWEXTAMXBF16AMXFP16AMXINT8AMXTILEAVXAVX2AVX512BF16AVX512BITALGAVX512BWAVX512CDAVX512DQAVX512ERAVX512FAVX512FP16AVX512IFMAAVX512PFAVX512VBMIAVX512VBMI2AVX512VLAVX512VNNIAVX512VP2INTERSECTAVX512VPOPCNTDQAVXIFMAAVXNECONVERTAVXSLOWAVXVNNIAVXVNNIINT8BHI_CTRLBMI1BMI2CETIBTCETSSCLDEMOTECLMULCLZEROCMOVCMPCCXADDCMPSB_SCADBS_SHORTCMPXCHG8CPBOOSTCPPCCX16EFER_LMSLE_UNSENQCMDERMSF16CFLUSH_L1DFMA3FMA4FP128FP256FSRMFXSRFXSROPTGFNIHLEHRESETHTTHWAHYBRID_CPUHYPERVISORIA32_ARCH_CAPIA32_CORE_CAPIBPBIBRSIBRS_PREFERREDIBRS_PROVIDES_SMPIBSIBSBRNTRGTIBSFETCHSAMIBSFFVIBSOPCNTIBSOPCNTEXTIBSOPSAMIBSRDWROPCNTIBSRIPINVALIDCHKIBS_FETCH_CTLXIBS_OPDATA4IBS_OPFUSEIBS_PREVENTHOSTIBS_ZEN4IDPRED_CTRLINT_WBINVDINVLPGBLAHFLAMLBRVIRTLZCNTMCAOVERFLOWMCDT_NOMCOMMITMD_CLEARMMXMMXEXTMOVBEMOVDIR64BMOVDIRIMOVSB_ZLMOVUMPXMSRIRCMSRLISTMSR_PAGEFLUSHNRIPSNXOSXSAVEPCONFIGPOPCNTPPINPREFETCHIPSFDRDPRURDRANDRDSEEDRDTSCPRRSBA_CTRLRTMRTM_ALWAYS_ABORTSERIALIZESEVSEV_64BITSEV_ALTERNATIVESEV_DEBUGSWAPSEV_ESSEV_RESTRICTEDSEV_SNPSGXSGXLCSHASMESME_COHERENTSPEC_CTRL_SSBDSRBDS_CTRLSSESSE2SSE3SSE4SSE42SSE4ASSSE3STIBPSTIBP_ALWAYSONSTOSB_SHORTSUCCORSVMSVMDASVMFBASIDSVMLSVMNPSVMPFSVMPFTSYSCALLSYSEETBMTDX_GUESTTLB_FLUSH_NESTEDTMETOPEXTTSCRATEMSRTSXLDTRKVAESVMCBCLEANVMPLVMSA_REGPROTVMXVPCLMULQDQVTEWAITPKGWBNOINVDWRMSRNSX87XGETBV1XOPXSAVEXSAVECXSAVEOPTXSAVESAESARMARMCPUIDASIMDASIMDDPASIMDHPASIMDRDMATOMICSCRC32DCPOPEVTSTRMFCMAFPFPHPGPAJSCVTLRCPCPMULLSHA1SHA2SHA3SHA512SM3SM4SVElastID"
-var _FeatureID_index = [...]uint16{0, 7, 10, 15, 23, 34, 41, 48, 55, 62, 65, 69, 79, 91, 99, 107, 115, 123, 130, 140, 150, 158, 168, 179, 187, 197, 215, 230, 237, 249, 256, 263, 274, 282, 286, 290, 296, 301, 309, 314, 320, 324, 333, 351, 359, 366, 370, 374, 388, 394, 398, 402, 411, 415, 419, 424, 429, 433, 437, 444, 448, 451, 457, 460, 463, 473, 483, 496, 509, 513, 517, 531, 548, 551, 561, 572, 578, 586, 597, 605, 617, 633, 647, 658, 668, 683, 691, 702, 712, 719, 723, 726, 733, 738, 749, 756, 763, 771, 774, 780, 785, 794, 801, 809, 813, 816, 822, 829, 842, 847, 849, 856, 863, 869, 873, 882, 886, 891, 897, 903, 909, 919, 922, 938, 947, 950, 959, 974, 987, 993, 1007, 1014, 1017, 1022, 1025, 1028, 1040, 1054, 1064, 1067, 1071, 1075, 1079, 1084, 1089, 1094, 1099, 1113, 1124, 1130, 1133, 1138, 1147, 1151, 1156, 1161, 1167, 1174, 1179, 1182, 1198, 1201, 1207, 1217, 1225, 1229, 1238, 1242, 1254, 1257, 1267, 1270, 1277, 1285, 1292, 1295, 1302, 1305, 1310, 1316, 1324, 1330, 1336, 1344, 1349, 1356, 1363, 1371, 1378, 1383, 1388, 1395, 1399, 1401, 1405, 1408, 1413, 1418, 1423, 1427, 1431, 1435, 1441, 1444, 1447, 1450, 1456}
+var _FeatureID_index = [...]uint16{0, 7, 10, 15, 23, 34, 41, 48, 55, 62, 65, 69, 79, 91, 99, 107, 115, 123, 130, 140, 150, 158, 168, 179, 187, 197, 215, 230, 237, 249, 256, 263, 274, 282, 286, 290, 296, 301, 309, 314, 320, 324, 333, 351, 359, 366, 370, 374, 388, 394, 398, 402, 411, 415, 419, 424, 429, 433, 437, 444, 448, 451, 457, 460, 463, 473, 483, 496, 509, 513, 517, 531, 548, 551, 561, 572, 578, 586, 597, 605, 617, 633, 647, 658, 668, 683, 691, 702, 712, 719, 723, 726, 733, 738, 749, 756, 763, 771, 774, 780, 785, 794, 801, 809, 813, 816, 822, 829, 842, 847, 849, 856, 863, 869, 873, 882, 886, 891, 897, 903, 909, 919, 922, 938, 947, 950, 959, 974, 987, 993, 1007, 1014, 1017, 1022, 1025, 1028, 1040, 1054, 1064, 1067, 1071, 1075, 1079, 1084, 1089, 1094, 1099, 1113, 1124, 1130, 1133, 1138, 1147, 1151, 1156, 1161, 1167, 1174, 1179, 1182, 1191, 1207, 1210, 1216, 1226, 1234, 1238, 1247, 1251, 1263, 1266, 1276, 1279, 1286, 1294, 1301, 1304, 1311, 1314, 1319, 1325, 1333, 1339, 1345, 1353, 1358, 1365, 1372, 1380, 1387, 1392, 1397, 1404, 1408, 1410, 1414, 1417, 1422, 1427, 1432, 1436, 1440, 1444, 1450, 1453, 1456, 1459, 1465}
func (i FeatureID) String() string {
if i < 0 || i >= FeatureID(len(_FeatureID_index)-1) {