• Min Zhou's avatar
    LoongArch: crypto: Add crc32 and crc32c hw acceleration · 2f164822
    Min Zhou authored
    With a blatant copy of some MIPS bits we introduce the crc32 and crc32c
    hw accelerated module to LoongArch.
    
    LoongArch has provided these instructions to calculate crc32 and crc32c:
            * crc.w.b.w    crcc.w.b.w
            * crc.w.h.w    crcc.w.h.w
            * crc.w.w.w    crcc.w.w.w
            * crc.w.d.w    crcc.w.d.w
    
    So we can make use of these instructions to improve the performance of
    calculation for crc32(c) checksums.
    
    As can be seen from the following test results, crc32(c) instructions
    can improve the performance by 58%.
    
                      Software implemention    Hardware acceleration
      Buffer size     time cost (seconds)      time cost (seconds)    Accel.
       100 KB                0.000845                 0.000534        59.1%
         1 MB                0.007758                 0.004836        59.4%
        10 MB                0.076593                 0.047682        59.4%
       100 MB                0.756734                 0.479126        58.5%
      1000 MB                7.563841                 4.778266        58.5%
    Signed-off-by: default avatarMin Zhou <zhoumin@loongson.cn>
    Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
    2f164822
Kconfig 37.1 KB