1 个不稳定版本

使用旧的 Rust 2015

0.0.0 2016 年 5 月 31 日

#21#版权

MIT 许可证

115KB
1.5K SLoC

C 863 SLoC // 0.1% comments Assembly 316 SLoC // 0.2% comments Rust 76 SLoC // 0.1% comments

[](此文件是 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 上的帖子。

依赖关系