我尝试对使用 64 位加宽乘法的 CBRNG 进行矢量化。
static __inline__ uint64_t mulhilo64(uint64_t a, uint64_t b, uint64_t* hip) {
__uint128_t product = ((__uint128_t)a)*((__uint128_t)b);
*hip = product>>64;
return (uint64_t)product;
}
Run Code Online (Sandbox Code Playgroud)
这样的乘法在 AVX2 中是否以矢量化形式存在?
我在AVX2上工作,需要计算64位x64位 - > 128位加宽乘法,并以最快的方式获得64位高位.由于AVX2没有这样的指令,使用Karatsuba算法提高效率和提高速度是否合理?