1 个不稳定版本
使用旧的 Rust 2015
0.0.0 | 2016 年 5 月 31 日 |
---|
#21 在 #版权
115KB
1.5K SLoC
[](此文件是 crc32c-sse42 的一部分。它受顶级目录中 COPYRIGHT 文件中的许可条款约束,并可在 https://raw.githubusercontent.com/lemonrock/crc32c-sse42/master/COPYRIGHT 中找到。crc32c-sse42 的任何部分(包括此文件),不得复制、修改、传播或分发,除非根据 COPYRIGHT 文件中的条款进行。) [](版权 © 2016 crc32c-sse42 的开发者。有关详细信息,请参阅顶级目录中的 COPYRIGHT 文件和 https://raw.githubusercontent.com/lemonrock/crc32c-sse42/master/COPYRIGHT。)
crc32c-sse42
crc32c-sse42 是一个 Rust crate,尽可能提供硬件优化的支持(使用 SSE4.2 和 CLMUL 指令集(特别是 PCLMULQDQ
))。由于 SSE 4.2 在 2016 年并不普遍,因此还提供了一个非硬件优化的版本。 wherever possible,使用汇编器变体。这只适用于 64 位 X86-64 Linux 和 Windows。其次使用了一个稍微不太优化的解决方案,该方案适用于 64 位和 32 位(包括 x32 x86-64)的 x86,并且可以在任何主要操作系统上运行。最后的回退逻辑是在软件中完成所有操作。
出于兴趣,还包括了一个 32 位和 64 位实现,它使用 SSE 4.2 但不使用 CLMUL,但未构建(src/build.sse42_rjc.c
)。
编译和安装
- 默认情况下已设置功能标志
sse42
;如果要在缺少 SSE4.2 的 x86 平台上安装,请禁用它。 - 如果设置了功能标志
sse42
,则在构建时必须存在程序yasm
。
未来优化
- 通过使用 SourceForge 上的 Intel Slicing-by-8 代码,可以引入用于缺少 SSE 4.2 但具有 CLMUL 指令集的 64 位和 32 位 X86 CPU 的回退优化。
许可证
本项目的许可证为 MIT,但某些代码的许可证兼容:
- 文件
src/crc_iscsi_v_pcl.asm
由 Intel 分别授权,最初可在 GitHub 存储库 crc32c 中找到。 - 文件
src/build.software.c
来自 Mark Adler 和 Robert Važan 在 StackOverflow 上的帖子。