aboutsummaryrefslogtreecommitdiff
path: root/sys/conf/files.i386
diff options
context:
space:
mode:
authorConrad Meyer <cem@FreeBSD.org>2017-01-31 03:26:32 +0000
committerConrad Meyer <cem@FreeBSD.org>2017-01-31 03:26:32 +0000
commit6be2ff7d3ec49fec22db8a092faa89a8d7f9bd44 (patch)
tree8f08ceee7a488096ed31e1ebca59bf1cc9fc8260 /sys/conf/files.i386
parentd9dbd70bca767f5f8604840f72d5904408e62064 (diff)
downloadsrc-6be2ff7d3ec49fec22db8a092faa89a8d7f9bd44.tar.gz
src-6be2ff7d3ec49fec22db8a092faa89a8d7f9bd44.zip
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
Notes
Notes: svn path=/head/; revision=313006
Diffstat (limited to 'sys/conf/files.i386')
-rw-r--r--sys/conf/files.i3865
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/conf/files.i386 b/sys/conf/files.i386
index c0b75d7e1894..467218215f9e 100644
--- a/sys/conf/files.i386
+++ b/sys/conf/files.i386
@@ -554,6 +554,11 @@ kern/kern_clocksource.c standard
kern/imgact_aout.c optional compat_aout
kern/imgact_gzip.c optional gzip
kern/subr_sfbuf.c standard
+crc32_sse42.o standard \
+ dependency "$S/libkern/x86/crc32_sse42.c" \
+ compile-with "${CC} -c ${CFLAGS:N-nostdinc} ${WERROR} ${PROF} -msse4 ${.IMPSRC}" \
+ no-implicit-rule \
+ clean "crc32_sse42.o"
libkern/divdi3.c standard
libkern/ffsll.c standard
libkern/flsll.c standard