@@ -17,65 +17,65 @@ package sha256
17
17
18
18
// True when SIMD instructions are available.
19
19
var avx512 bool
20
- var avx2 bool
21
- var avx bool
22
- var sse bool
23
- var sse2 bool
24
- var sse3 bool
25
- var ssse3 bool
26
- var sse41 bool
27
- var sse42 bool
20
+ var avx2 bool
21
+ var avx bool
22
+ var sse bool
23
+ var sse2 bool
24
+ var sse3 bool
25
+ var ssse3 bool
26
+ var sse41 bool
27
+ var sse42 bool
28
28
var popcnt bool
29
- var sha bool
30
- var armSha bool = haveArmSha ()
29
+ var sha bool
30
+ var armSha = haveArmSha ()
31
31
32
32
func init () {
33
- var _xsave bool
34
- var _osxsave bool
35
- var _avx bool
36
- var _avx2 bool
37
- var _avx512f bool
38
- var _avx512dq bool
39
- // var _avx512pf bool
40
- // var _avx512er bool
41
- // var _avx512cd bool
42
- var _avx512bw bool
43
- var _avx512vl bool
44
- var _sse_state bool
45
- var _avx_state bool
46
- var _opmask_state bool
47
- var _zmm_hi256_state bool
48
- var _hi16_zmm_state bool
33
+ var _xsave bool
34
+ var _osxsave bool
35
+ var _avx bool
36
+ var _avx2 bool
37
+ var _avx512f bool
38
+ var _avx512dq bool
39
+ // var _avx512pf bool
40
+ // var _avx512er bool
41
+ // var _avx512cd bool
42
+ var _avx512bw bool
43
+ var _avx512vl bool
44
+ var _sseState bool
45
+ var _avxState bool
46
+ var _opmaskState bool
47
+ var _zmmHI256State bool
48
+ var _hi16ZmmState bool
49
49
50
50
mfi , _ , _ , _ := cpuid (0 )
51
51
52
52
if mfi >= 1 {
53
53
_ , _ , c , d := cpuid (1 )
54
54
55
- sse = (d & (1 << 25 )) != 0
56
- sse2 = (d & (1 << 26 )) != 0
57
- sse3 = (c & (1 << 0 )) != 0
58
- ssse3 = (c & (1 << 9 )) != 0
59
- sse41 = (c & (1 << 19 )) != 0
60
- sse42 = (c & (1 << 20 )) != 0
61
- popcnt = (c & (1 << 23 )) != 0
62
- _xsave = (c & (1 << 26 )) != 0
55
+ sse = (d & (1 << 25 )) != 0
56
+ sse2 = (d & (1 << 26 )) != 0
57
+ sse3 = (c & (1 << 0 )) != 0
58
+ ssse3 = (c & (1 << 9 )) != 0
59
+ sse41 = (c & (1 << 19 )) != 0
60
+ sse42 = (c & (1 << 20 )) != 0
61
+ popcnt = (c & (1 << 23 )) != 0
62
+ _xsave = (c & (1 << 26 )) != 0
63
63
_osxsave = (c & (1 << 27 )) != 0
64
- _avx = (c & (1 << 28 )) != 0
64
+ _avx = (c & (1 << 28 )) != 0
65
65
}
66
66
67
67
if mfi >= 7 {
68
68
_ , b , _ , _ := cpuid (7 )
69
69
70
- _avx2 = (b & (1 << 5 )) != 0
71
- _avx512f = (b & (1 << 16 )) != 0
70
+ _avx2 = (b & (1 << 5 )) != 0
71
+ _avx512f = (b & (1 << 16 )) != 0
72
72
_avx512dq = (b & (1 << 17 )) != 0
73
- // _avx512pf = (b & (1 << 26)) != 0
74
- // _avx512er = (b & (1 << 27)) != 0
75
- // _avx512cd = (b & (1 << 28)) != 0
73
+ // _avx512pf = (b & (1 << 26)) != 0
74
+ // _avx512er = (b & (1 << 27)) != 0
75
+ // _avx512cd = (b & (1 << 28)) != 0
76
76
_avx512bw = (b & (1 << 30 )) != 0
77
77
_avx512vl = (b & (1 << 31 )) != 0
78
- sha = (b & (1 << 29 )) != 0
78
+ sha = (b & (1 << 29 )) != 0
79
79
}
80
80
81
81
// Stop here if XSAVE unsupported or not enabled
@@ -86,34 +86,34 @@ func init() {
86
86
if _xsave && _osxsave {
87
87
a , _ := xgetbv (0 )
88
88
89
- _sse_state = (a & (1 << 1 )) != 0
90
- _avx_state = (a & (1 << 2 )) != 0
91
- _opmask_state = (a & (1 << 5 )) != 0
92
- _zmm_hi256_state = (a & (1 << 6 )) != 0
93
- _hi16_zmm_state = (a & (1 << 7 )) != 0
89
+ _sseState = (a & (1 << 1 )) != 0
90
+ _avxState = (a & (1 << 2 )) != 0
91
+ _opmaskState = (a & (1 << 5 )) != 0
92
+ _zmmHI256State = (a & (1 << 6 )) != 0
93
+ _hi16ZmmState = (a & (1 << 7 )) != 0
94
94
} else {
95
- _sse_state = true
95
+ _sseState = true
96
96
}
97
97
98
98
// Very unlikely that OS would enable XSAVE and then disable SSE
99
- if ! _sse_state {
100
- sse = false
101
- sse2 = false
102
- sse3 = false
103
- ssse3 = false
104
- sse41 = false
105
- sse42 = false
99
+ if ! _sseState {
100
+ sse = false
101
+ sse2 = false
102
+ sse3 = false
103
+ ssse3 = false
104
+ sse41 = false
105
+ sse42 = false
106
106
}
107
107
108
- if _avx_state {
109
- avx = _avx
110
- avx2 = _avx2
108
+ if _avxState {
109
+ avx = _avx
110
+ avx2 = _avx2
111
111
}
112
112
113
- if _opmask_state && _zmm_hi256_state && _hi16_zmm_state {
114
- avx512 = (_avx512f &&
115
- _avx512dq &&
116
- _avx512bw &&
117
- _avx512vl )
113
+ if _opmaskState && _zmmHI256State && _hi16ZmmState {
114
+ avx512 = (_avx512f &&
115
+ _avx512dq &&
116
+ _avx512bw &&
117
+ _avx512vl )
118
118
}
119
119
}
0 commit comments