Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

utf8: AVX2 implementation of Valid #58

Merged
merged 67 commits into from
Jan 11, 2022
Merged
Show file tree
Hide file tree
Changes from 65 commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
8781351
utf8: AVX2 implementation of valid
pelletier Oct 14, 2021
1bc60e4
Rewrite with Avo
pelletier Oct 29, 2021
60ebe9c
Add missing build file
pelletier Oct 29, 2021
e6101cf
Scratch space should be 32 bytes
pelletier Oct 29, 2021
b43dff7
Remove setting the Unroll field
pelletier Oct 29, 2021
4a869a0
Slow implementation passes all the tests
pelletier Nov 23, 2021
4025b79
Do some benchmarking
pelletier Nov 23, 2021
70ac67a
Set cutoff to 128 bytes
pelletier Nov 23, 2021
f23287e
Generate tables from human description
pelletier Nov 23, 2021
0841d55
Check for AVX2 support
pelletier Nov 23, 2021
d3f76ab
Add missing file
pelletier Nov 23, 2021
41fa615
Default to stdlib for non-amd64 platforms
pelletier Nov 23, 2021
710631a
Remove copy for remaining bytes
pelletier Nov 23, 2021
740f972
Add +build to default
pelletier Nov 23, 2021
fc4dbc6
More tests
pelletier Nov 23, 2021
83df272
Revert table generation
pelletier Nov 23, 2021
ba68474
Fix table generation
pelletier Nov 23, 2021
c08cbf9
Found some bugs!
pelletier Nov 24, 2021
5ffccde
Add fuzzing harness for go1.18
pelletier Nov 24, 2021
350ebaa
VZEROUPPER before returning
pelletier Dec 1, 2021
5bab350
Regen
pelletier Dec 1, 2021
3ce819f
Fix continuationMaskData comment
pelletier Jan 3, 2022
cc2e8be
Fix condition before jumping to the stdlib implm
pelletier Jan 3, 2022
23f1e31
Rename nibbleMask to lowerNibbleMask
pelletier Jan 3, 2022
c9a092c
Try skipping the exhaustive test
pelletier Jan 3, 2022
d38306f
Fix tags of utf8/valid_amd64.go
pelletier Jan 3, 2022
7a5d877
Revert "Fix tags of utf8/valid_amd64.go"
pelletier Jan 3, 2022
635952b
Fix constraint expression for utf8/valid
pelletier Jan 3, 2022
3932872
Revert "Try skipping the exhaustive test"
pelletier Jan 3, 2022
a71eb92
Revert "Revert "Try skipping the exhaustive test""
pelletier Jan 3, 2022
3e2a4d8
Exit at 32B boundary any error already occurred
pelletier Jan 3, 2022
6d8d533
Add previous bug found by fuzzing
pelletier Jan 3, 2022
0b28eff
Trying to make the small inputs version faster
pelletier Jan 3, 2022
7e46a50
Remove some branches
pelletier Jan 3, 2022
cdd5fac
Remove magic numbers
pelletier Jan 3, 2022
ffb05ac
Re-comment out exhaustive tests
pelletier Jan 3, 2022
79dc2f0
Don't set nextD if not necessary
pelletier Jan 3, 2022
a85ba22
Remove extra CMP of byte 2 check
pelletier Jan 3, 2022
f43d04d
Don't xor x register
pelletier Jan 3, 2022
561943e
Switch to AVX for inputs of 32 bytes or more
pelletier Jan 4, 2022
16e6738
Remove scratch space
pelletier Jan 4, 2022
5852227
Experiment with copying small inputs to memory
pelletier Jan 4, 2022
8c4915d
Revert "Experiment with copying small inputs to memory"
pelletier Jan 4, 2022
76523ef
Change the exhaustive test to check only bounds
pelletier Jan 4, 2022
c383a6f
Consolidated tests
pelletier Jan 4, 2022
bfadc07
Introduce Validate function
pelletier Jan 4, 2022
b05fa38
Change import names for fallback code
pelletier Jan 4, 2022
e960768
Check for ASCII validation in fuzzer
pelletier Jan 4, 2022
fc094cd
Fuzzer found new bug
pelletier Jan 4, 2022
7667e0f
Fix leading zero bits count
pelletier Jan 4, 2022
f02d3bc
Bring back copy for leftovers
pelletier Jan 4, 2022
4a7bb03
Use the actual stdlib
pelletier Jan 4, 2022
71f4c92
Don't run ascii.Valid
pelletier Jan 4, 2022
aaba3a8
Rename packages and return values
pelletier Jan 4, 2022
9a2449b
Change signature of Validate
pelletier Jan 5, 2022
ed0e17b
Remove unused imports
pelletier Jan 5, 2022
0814fd8
Move MSB mask loading out of hot path
pelletier Jan 5, 2022
e7c8a9e
Reuse intermediate vector for pushN operations
pelletier Jan 5, 2022
aa912a4
Load last block near page boundary
pelletier Jan 6, 2022
e4da37d
Fix invalid offset for large tail load
pelletier Jan 6, 2022
0f3e231
Add tail benchmarks
pelletier Jan 6, 2022
473f5ac
Fix API change in fuzzer
pelletier Jan 6, 2022
f802637
Add valid command line
pelletier Jan 8, 2022
e603701
Remove prompt
pelletier Jan 8, 2022
f02a719
Add test for page boundary loads
pelletier Jan 8, 2022
1835aa3
Move cmd/valid to utf8/cmd/valid
pelletier Jan 9, 2022
a9b7485
Perform non-AVX2 fallback in go
pelletier Jan 9, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions build/ascii/valid_asm.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
//go:build ignore
// +build ignore

package main
Expand Down
Loading