您好,我正在研究另一个任意精度整数库。我想实现乘法,但是当我没有工作时我被卡住_m_pmulhw
了。关于 MMX 指令的文档<mmintrin.h>
很少。当我测试它时,当我将两个 UINT64_MAX 相乘时,它只会让我胡言乱语。
uint_fast64_t mulH(const uint_fast64_t &a, const uint_fast64_t &b) {
return (uint_fast64_t)_m_pmulhw((__m64)a,(__m64)b);
}
uint_fast64_t mulL(const uint_fast64_t &a, const uint_fast64_t &b) {
return (uint_fast64_t)_m_pmullw((__m64)a,(__m64)b);
}
int main() {
uint64_t a = UINT64_MAX;
uint64_t b = UINT64_MAX;
std::cout << std::bitset<64>(mulH(a,b)) << std::bitset<64>(mulL(a,b));
}
output: 00000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000100000000000000010000000000000001
我不知道为什么它不工作我有一个 A6-4400M APU...
核心信息的输出:MMX * Supports MMX instruction set
所以我想我可以说,它不是不受支持的。如果有人可以给我一些关于如何完成这项工作的提示,谢谢。
编译器:gcc
IDE:视觉工作室代码