bmi

    2热度

    1回答

    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;

    2热度

    1回答

    我想使用_bzhi_u32内部函数,但如果运行可执行文件的处理器不支持BMI2指令集,我想恢复为常规的C实现。 我使用GCC 4.8.3,我有以下 static inline uint32_t myfunc_bmi(uint32_t in) { return _bzhi_u32(in, 3); /* as an example */ } static void * resolve_m

    3热度

    1回答

    我有一些依赖于AVX的代码。 在相同的代码库中,我也使用TZCNT。 后者是BMI1的一部分。我知道我可以使用CPUID来测试这条指令,但我很懒,所以我没有真正实现它。 要测试支持,我只需执行AVX指令。如果我得到一个#UD未定义的指令异常,我知道CPU不支持AVX。 但是tzcnt与bsf(或bsr - 我总是忘记哪个是哪个)向后兼容(种类),所以不会触发异常。 如果我有AVX支持,是不是暗示支