freebsd-skq/sys
cem c4b27423f5 calculate_crc32c: Add SSE4.2 implementation on x86
Derived from an implementation by Mark Adler.

The fast loop performs three simultaneous CRCs over subsets of the data
before composing them.  This takes advantage of certain properties of
the CRC32 implementation in Intel hardware.  (The CRC instruction takes 1
cycle but has 2-3 cycles of latency.)

The CRC32 instruction does not manipulate FPU state.

i386 does not have the crc32q instruction, so avoid it there.  Otherwise
the implementation is identical to amd64.

Add basic userland tests to verify correctness on a variety of inputs.

PR:		216467
Reported by:	Ben RUBSON <ben.rubson at gmail.com>
Reviewed by:	kib@, markj@ (earlier version)
Sponsored by:	Dell EMC Isilon
Differential Revision:	https://reviews.freebsd.org/D9342
2017-01-31 03:26:32 +00:00
..
amd64 Replace sys_ftruncate() with kern_ftruncate() in various compats. 2017-01-30 11:50:54 +00:00
arm Correct the IT instruction in atomic_fcmpset_64(). 2017-01-29 13:31:56 +00:00
arm64 Implement atomic_fcmpset_* for arm and arm64. 2017-01-28 16:24:06 +00:00
boot Remove "-Xassembler -G0" from CFLAGS. 2017-01-29 11:52:36 +00:00
bsm
cam Revert crap accidentally committed 2017-01-28 16:31:23 +00:00
cddl Revert crap accidentally committed 2017-01-28 16:31:23 +00:00
compat Add kern_listen(), kern_shutdown(), and kern_socket(), and use them 2017-01-30 12:57:22 +00:00
conf calculate_crc32c: Add SSE4.2 implementation on x86 2017-01-31 03:26:32 +00:00
contrib Revert crap accidentally committed 2017-01-28 16:31:23 +00:00
crypto Remove pc98 support completely. 2017-01-28 02:22:15 +00:00
ddb Revert crap accidentally committed 2017-01-28 16:31:23 +00:00
dev Initialize a stack variable in mprsas_get_sas_address_for_sata_disk 2017-01-30 19:49:08 +00:00
fs Revert crap accidentally committed 2017-01-28 16:31:23 +00:00
gdb
geom Remove pc98 support completely. 2017-01-28 02:22:15 +00:00
gnu Add Ingenic X1000 DTS files (unofficial). 2016-11-19 15:03:49 +00:00
i386 Replace sys_ftruncate() with kern_ftruncate() in various compats. 2017-01-30 11:50:54 +00:00
isa Remove pc98 support completely. 2017-01-28 02:22:15 +00:00
kern put very expensive sanity checks of advisory locks under DIAGNOSTIC 2017-01-30 15:20:13 +00:00
kgssapi
libkern calculate_crc32c: Add SSE4.2 implementation on x86 2017-01-31 03:26:32 +00:00
mips As with GENERIC on other architectures, include COMPAT_FREEBSD10 and 2017-01-28 11:38:51 +00:00
modules Update CFLAGS for clang compatibility 2017-01-31 01:55:29 +00:00
net Do not update the lagg link layer address when destroying a lagg clone. 2017-01-30 03:04:33 +00:00
net80211 [net80211] address seqno allocation for group addressed frames 2017-01-30 01:11:30 +00:00
netgraph mppc - Finish pluging NETGRAPH_MPPC_COMPRESSION. 2017-01-20 00:02:11 +00:00
netinet Correct comment grammar and make it easier to understand. 2017-01-30 04:51:18 +00:00
netinet6 Garbage collect IFT_IEEE80211 (but leave the define for possible reuse) 2017-01-28 17:08:40 +00:00
netipsec Add direction argument to ipsec_setspidx_inpcb() function. 2017-01-08 12:40:07 +00:00
netnatm
netpfil Fix indentantion in pf_purge_thread(). No functional change. 2017-01-30 22:47:48 +00:00
netsmb
nfs
nfsclient
nfsserver
nlm
ofed Move the ConnectX-3 and ConnectX-2 driver from sys/ofed into sys/dev/mlx4 2016-09-30 08:23:06 +00:00
opencrypto Add support for the fpu_kern(9) KPI on arm64. It hooks into the existing 2016-10-20 09:22:10 +00:00
powerpc Drop the __GNUCLIKE_ASM guards around most atomic inlines. 2017-01-30 02:52:15 +00:00
riscv Add RISC-V support for truss(1) 2017-01-24 09:41:44 +00:00
rpc
security Audit 'fd' and 'cmd' arguments to fcntl(2), and when generating BSM, 2016-11-22 00:41:24 +00:00
sparc64 Trim a few comments on platforms that did not implement mmap of /dev/kmem. 2017-01-13 21:52:53 +00:00
sys calculate_crc32c: Add SSE4.2 implementation on x86 2017-01-31 03:26:32 +00:00
teken
tests
tools Replace using of objdump with elfdump 2017-01-10 18:46:40 +00:00
ufs ffs_vnops: Simplify extattr access 2017-01-19 16:46:05 +00:00
vm Avoid page lookups in the top-level object in vm_object_madvise(). 2017-01-30 18:51:43 +00:00
x86 Remove pc98 support completely. 2017-01-28 02:22:15 +00:00
xdr
xen "Buses" is the preferred plural of "bus" 2017-01-15 17:54:01 +00:00
Makefile Remove pc98 support completely. 2017-01-28 02:22:15 +00:00