digest-blake3 0.22.1 → 1.2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/ext/digest/blake3/blake3.c +42 -20
- data/ext/digest/blake3/blake3.h +8 -3
- data/ext/digest/blake3/blake3_avx2_x86-64_unix.S +15 -0
- data/ext/digest/blake3/blake3_avx512_x86-64_unix.S +34 -18
- data/ext/digest/blake3/blake3_avx512_x86-64_windows_gnu.S +17 -17
- data/ext/digest/blake3/blake3_avx512_x86-64_windows_msvc.asm +17 -17
- data/ext/digest/blake3/blake3_dispatch.c +35 -71
- data/ext/digest/blake3/blake3_impl.h +117 -2
- data/ext/digest/blake3/blake3_neon.c +6 -1
- data/ext/digest/blake3/blake3_portable.c +1 -9
- data/ext/digest/blake3/blake3_sse2.c +565 -0
- data/ext/digest/blake3/blake3_sse2_x86-64_unix.S +2291 -0
- data/ext/digest/blake3/blake3_sse2_x86-64_windows_gnu.S +2332 -0
- data/ext/digest/blake3/blake3_sse2_x86-64_windows_msvc.asm +2350 -0
- data/ext/digest/blake3/blake3_sse41_x86-64_unix.S +17 -0
- data/ext/digest/blake3/blake3_sse41_x86-64_windows_gnu.S +19 -7
- data/ext/digest/blake3/blake3_sse41_x86-64_windows_msvc.asm +23 -11
- data/ext/digest/blake3/extconf.rb +4 -3
- data/lib/digest/blake3/version.rb +1 -1
- metadata +10 -7
@@ -1,3 +1,17 @@
|
|
1
|
+
#if defined(__ELF__) && defined(__linux__)
|
2
|
+
.section .note.GNU-stack,"",%progbits
|
3
|
+
#endif
|
4
|
+
|
5
|
+
#if defined(__ELF__) && defined(__CET__) && defined(__has_include)
|
6
|
+
#if __has_include(<cet.h>)
|
7
|
+
#include <cet.h>
|
8
|
+
#endif
|
9
|
+
#endif
|
10
|
+
|
11
|
+
#if !defined(_CET_ENDBR)
|
12
|
+
#define _CET_ENDBR
|
13
|
+
#endif
|
14
|
+
|
1
15
|
.intel_syntax noprefix
|
2
16
|
.global blake3_hash_many_sse41
|
3
17
|
.global _blake3_hash_many_sse41
|
@@ -13,6 +27,7 @@
|
|
13
27
|
.p2align 6
|
14
28
|
_blake3_hash_many_sse41:
|
15
29
|
blake3_hash_many_sse41:
|
30
|
+
_CET_ENDBR
|
16
31
|
push r15
|
17
32
|
push r14
|
18
33
|
push r13
|
@@ -1774,6 +1789,7 @@ blake3_hash_many_sse41:
|
|
1774
1789
|
.p2align 6
|
1775
1790
|
blake3_compress_in_place_sse41:
|
1776
1791
|
_blake3_compress_in_place_sse41:
|
1792
|
+
_CET_ENDBR
|
1777
1793
|
movups xmm0, xmmword ptr [rdi]
|
1778
1794
|
movups xmm1, xmmword ptr [rdi+0x10]
|
1779
1795
|
movaps xmm2, xmmword ptr [BLAKE3_IV+rip]
|
@@ -1874,6 +1890,7 @@ _blake3_compress_in_place_sse41:
|
|
1874
1890
|
.p2align 6
|
1875
1891
|
blake3_compress_xof_sse41:
|
1876
1892
|
_blake3_compress_xof_sse41:
|
1893
|
+
_CET_ENDBR
|
1877
1894
|
movups xmm0, xmmword ptr [rdi]
|
1878
1895
|
movups xmm1, xmmword ptr [rdi+0x10]
|
1879
1896
|
movaps xmm2, xmmword ptr [BLAKE3_IV+rip]
|
@@ -1800,15 +1800,18 @@ blake3_hash_many_sse41:
|
|
1800
1800
|
.p2align 6
|
1801
1801
|
blake3_compress_in_place_sse41:
|
1802
1802
|
_blake3_compress_in_place_sse41:
|
1803
|
-
sub rsp,
|
1803
|
+
sub rsp, 120
|
1804
1804
|
movdqa xmmword ptr [rsp], xmm6
|
1805
1805
|
movdqa xmmword ptr [rsp+0x10], xmm7
|
1806
1806
|
movdqa xmmword ptr [rsp+0x20], xmm8
|
1807
1807
|
movdqa xmmword ptr [rsp+0x30], xmm9
|
1808
|
+
movdqa xmmword ptr [rsp+0x40], xmm11
|
1809
|
+
movdqa xmmword ptr [rsp+0x50], xmm14
|
1810
|
+
movdqa xmmword ptr [rsp+0x60], xmm15
|
1808
1811
|
movups xmm0, xmmword ptr [rcx]
|
1809
1812
|
movups xmm1, xmmword ptr [rcx+0x10]
|
1810
1813
|
movaps xmm2, xmmword ptr [BLAKE3_IV+rip]
|
1811
|
-
movzx eax, byte ptr [rsp+
|
1814
|
+
movzx eax, byte ptr [rsp+0xA0]
|
1812
1815
|
movzx r8d, r8b
|
1813
1816
|
shl rax, 32
|
1814
1817
|
add r8, rax
|
@@ -1906,24 +1909,30 @@ _blake3_compress_in_place_sse41:
|
|
1906
1909
|
movdqa xmm7, xmmword ptr [rsp+0x10]
|
1907
1910
|
movdqa xmm8, xmmword ptr [rsp+0x20]
|
1908
1911
|
movdqa xmm9, xmmword ptr [rsp+0x30]
|
1909
|
-
|
1912
|
+
movdqa xmm11, xmmword ptr [rsp+0x40]
|
1913
|
+
movdqa xmm14, xmmword ptr [rsp+0x50]
|
1914
|
+
movdqa xmm15, xmmword ptr [rsp+0x60]
|
1915
|
+
add rsp, 120
|
1910
1916
|
ret
|
1911
1917
|
|
1912
1918
|
|
1913
1919
|
.p2align 6
|
1914
1920
|
_blake3_compress_xof_sse41:
|
1915
1921
|
blake3_compress_xof_sse41:
|
1916
|
-
sub rsp,
|
1922
|
+
sub rsp, 120
|
1917
1923
|
movdqa xmmword ptr [rsp], xmm6
|
1918
1924
|
movdqa xmmword ptr [rsp+0x10], xmm7
|
1919
1925
|
movdqa xmmword ptr [rsp+0x20], xmm8
|
1920
1926
|
movdqa xmmword ptr [rsp+0x30], xmm9
|
1927
|
+
movdqa xmmword ptr [rsp+0x40], xmm11
|
1928
|
+
movdqa xmmword ptr [rsp+0x50], xmm14
|
1929
|
+
movdqa xmmword ptr [rsp+0x60], xmm15
|
1921
1930
|
movups xmm0, xmmword ptr [rcx]
|
1922
1931
|
movups xmm1, xmmword ptr [rcx+0x10]
|
1923
1932
|
movaps xmm2, xmmword ptr [BLAKE3_IV+rip]
|
1924
|
-
movzx eax, byte ptr [rsp+
|
1933
|
+
movzx eax, byte ptr [rsp+0xA0]
|
1925
1934
|
movzx r8d, r8b
|
1926
|
-
mov r10, qword ptr [rsp+
|
1935
|
+
mov r10, qword ptr [rsp+0xA8]
|
1927
1936
|
shl rax, 32
|
1928
1937
|
add r8, rax
|
1929
1938
|
movq xmm3, r9
|
@@ -2026,7 +2035,10 @@ blake3_compress_xof_sse41:
|
|
2026
2035
|
movdqa xmm7, xmmword ptr [rsp+0x10]
|
2027
2036
|
movdqa xmm8, xmmword ptr [rsp+0x20]
|
2028
2037
|
movdqa xmm9, xmmword ptr [rsp+0x30]
|
2029
|
-
|
2038
|
+
movdqa xmm11, xmmword ptr [rsp+0x40]
|
2039
|
+
movdqa xmm14, xmmword ptr [rsp+0x50]
|
2040
|
+
movdqa xmm15, xmmword ptr [rsp+0x60]
|
2041
|
+
add rsp, 120
|
2030
2042
|
ret
|
2031
2043
|
|
2032
2044
|
|
@@ -1802,20 +1802,23 @@ blake3_hash_many_sse41 ENDP
|
|
1802
1802
|
|
1803
1803
|
blake3_compress_in_place_sse41 PROC
|
1804
1804
|
_blake3_compress_in_place_sse41 PROC
|
1805
|
-
sub rsp,
|
1805
|
+
sub rsp, 120
|
1806
1806
|
movdqa xmmword ptr [rsp], xmm6
|
1807
1807
|
movdqa xmmword ptr [rsp+10H], xmm7
|
1808
1808
|
movdqa xmmword ptr [rsp+20H], xmm8
|
1809
1809
|
movdqa xmmword ptr [rsp+30H], xmm9
|
1810
|
+
movdqa xmmword ptr [rsp+40H], xmm11
|
1811
|
+
movdqa xmmword ptr [rsp+50H], xmm14
|
1812
|
+
movdqa xmmword ptr [rsp+60H], xmm15
|
1810
1813
|
movups xmm0, xmmword ptr [rcx]
|
1811
1814
|
movups xmm1, xmmword ptr [rcx+10H]
|
1812
1815
|
movaps xmm2, xmmword ptr [BLAKE3_IV]
|
1813
|
-
movzx eax, byte ptr [rsp+
|
1816
|
+
movzx eax, byte ptr [rsp+0A0H]
|
1814
1817
|
movzx r8d, r8b
|
1815
1818
|
shl rax, 32
|
1816
1819
|
add r8, rax
|
1817
|
-
|
1818
|
-
|
1820
|
+
movd xmm3, r9
|
1821
|
+
movd xmm4, r8
|
1819
1822
|
punpcklqdq xmm3, xmm4
|
1820
1823
|
movups xmm4, xmmword ptr [rdx]
|
1821
1824
|
movups xmm5, xmmword ptr [rdx+10H]
|
@@ -1908,7 +1911,10 @@ _blake3_compress_in_place_sse41 PROC
|
|
1908
1911
|
movdqa xmm7, xmmword ptr [rsp+10H]
|
1909
1912
|
movdqa xmm8, xmmword ptr [rsp+20H]
|
1910
1913
|
movdqa xmm9, xmmword ptr [rsp+30H]
|
1911
|
-
|
1914
|
+
movdqa xmm11, xmmword ptr [rsp+40H]
|
1915
|
+
movdqa xmm14, xmmword ptr [rsp+50H]
|
1916
|
+
movdqa xmm15, xmmword ptr [rsp+60H]
|
1917
|
+
add rsp, 120
|
1912
1918
|
ret
|
1913
1919
|
_blake3_compress_in_place_sse41 ENDP
|
1914
1920
|
blake3_compress_in_place_sse41 ENDP
|
@@ -1916,21 +1922,24 @@ blake3_compress_in_place_sse41 ENDP
|
|
1916
1922
|
ALIGN 16
|
1917
1923
|
blake3_compress_xof_sse41 PROC
|
1918
1924
|
_blake3_compress_xof_sse41 PROC
|
1919
|
-
sub rsp,
|
1925
|
+
sub rsp, 120
|
1920
1926
|
movdqa xmmword ptr [rsp], xmm6
|
1921
1927
|
movdqa xmmword ptr [rsp+10H], xmm7
|
1922
1928
|
movdqa xmmword ptr [rsp+20H], xmm8
|
1923
1929
|
movdqa xmmword ptr [rsp+30H], xmm9
|
1930
|
+
movdqa xmmword ptr [rsp+40H], xmm11
|
1931
|
+
movdqa xmmword ptr [rsp+50H], xmm14
|
1932
|
+
movdqa xmmword ptr [rsp+60H], xmm15
|
1924
1933
|
movups xmm0, xmmword ptr [rcx]
|
1925
1934
|
movups xmm1, xmmword ptr [rcx+10H]
|
1926
1935
|
movaps xmm2, xmmword ptr [BLAKE3_IV]
|
1927
|
-
movzx eax, byte ptr [rsp+
|
1936
|
+
movzx eax, byte ptr [rsp+0A0H]
|
1928
1937
|
movzx r8d, r8b
|
1929
|
-
mov r10, qword ptr [rsp+
|
1938
|
+
mov r10, qword ptr [rsp+0A8H]
|
1930
1939
|
shl rax, 32
|
1931
1940
|
add r8, rax
|
1932
|
-
|
1933
|
-
|
1941
|
+
movd xmm3, r9
|
1942
|
+
movd xmm4, r8
|
1934
1943
|
punpcklqdq xmm3, xmm4
|
1935
1944
|
movups xmm4, xmmword ptr [rdx]
|
1936
1945
|
movups xmm5, xmmword ptr [rdx+10H]
|
@@ -2029,7 +2038,10 @@ _blake3_compress_xof_sse41 PROC
|
|
2029
2038
|
movdqa xmm7, xmmword ptr [rsp+10H]
|
2030
2039
|
movdqa xmm8, xmmword ptr [rsp+20H]
|
2031
2040
|
movdqa xmm9, xmmword ptr [rsp+30H]
|
2032
|
-
|
2041
|
+
movdqa xmm11, xmmword ptr [rsp+40H]
|
2042
|
+
movdqa xmm14, xmmword ptr [rsp+50H]
|
2043
|
+
movdqa xmm15, xmmword ptr [rsp+60H]
|
2044
|
+
add rsp, 120
|
2033
2045
|
ret
|
2034
2046
|
_blake3_compress_xof_sse41 ENDP
|
2035
2047
|
blake3_compress_xof_sse41 ENDP
|
@@ -34,9 +34,10 @@ def check_supported_flags(flags, obj_if_enabled, def_if_disabled)
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
check_supported_flags("-
|
38
|
-
check_supported_flags("-
|
39
|
-
check_supported_flags("-
|
37
|
+
check_supported_flags("-msse2", "blake3_sse2.o", "-DBLAKE3_NO_SSE2")
|
38
|
+
check_supported_flags("-msse4.1", "blake3_sse41.o", "-DBLAKE3_NO_SSE41")
|
39
|
+
check_supported_flags("-mavx2", "blake3_avx2.o", "-DBLAKE3_NO_AVX2")
|
40
|
+
check_supported_flags("-mavx512f -mavx512vl -mavx512bw", "blake3_avx512.o", "-DBLAKE3_NO_AVX512")
|
40
41
|
|
41
42
|
if have_header("arm_neon.h")
|
42
43
|
$objs << "blake3_neon.o"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: digest-blake3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Will Bryant
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -85,6 +85,10 @@ files:
|
|
85
85
|
- ext/digest/blake3/blake3_neon.c
|
86
86
|
- ext/digest/blake3/blake3_portable.c
|
87
87
|
- ext/digest/blake3/blake3_ruby.c
|
88
|
+
- ext/digest/blake3/blake3_sse2.c
|
89
|
+
- ext/digest/blake3/blake3_sse2_x86-64_unix.S
|
90
|
+
- ext/digest/blake3/blake3_sse2_x86-64_windows_gnu.S
|
91
|
+
- ext/digest/blake3/blake3_sse2_x86-64_windows_msvc.asm
|
88
92
|
- ext/digest/blake3/blake3_sse41.c
|
89
93
|
- ext/digest/blake3/blake3_sse41_x86-64_unix.S
|
90
94
|
- ext/digest/blake3/blake3_sse41_x86-64_windows_gnu.S
|
@@ -96,7 +100,7 @@ homepage: https://github.com/willbryant/digest-blake3
|
|
96
100
|
licenses:
|
97
101
|
- MIT
|
98
102
|
metadata: {}
|
99
|
-
post_install_message:
|
103
|
+
post_install_message:
|
100
104
|
rdoc_options: []
|
101
105
|
require_paths:
|
102
106
|
- lib
|
@@ -112,9 +116,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
116
|
- !ruby/object:Gem::Version
|
113
117
|
version: '0'
|
114
118
|
requirements: []
|
115
|
-
|
116
|
-
|
117
|
-
signing_key:
|
119
|
+
rubygems_version: 3.0.3
|
120
|
+
signing_key:
|
118
121
|
specification_version: 4
|
119
122
|
summary: BLAKE3 for Ruby
|
120
123
|
test_files: []
|