gpt4 book ai didi

x86 - 使用内在的未处理异常

转载 作者:行者123 更新时间:2023-12-05 01:13:49 24 4
gpt4 key购买 nike

我有一个使用 VC++ 创建的应用程序,我想通过向量化一些操作来探索优化机会。

首先,我正在尝试以下代码:

__m128i p1;

p1.m128i_u32[0] = 1;
p1.m128i_u32[1] = 2;
p1.m128i_u32[2] = 3;
p1.m128i_u32[3] = 4;

__m128i p2;

p2.m128i_u32[0] = 1;
p2.m128i_u32[1] = 2;
p2.m128i_u32[2] = 3;
p2.m128i_u32[3] = 4;

__m128i res2= _mm_mul_epi32(p1,p2);

但是,当执行_mm_mul_epi32 时出现未处理的异常或非法操作错误,我不知道为什么会发生。有人可以告诉我出了什么问题吗?

最佳答案

_mm_mul_epi32 映射到 PMULDQ 指令,该指令仅在 SSE4 和 AVX 中可用。您需要有一个相当新的 Intel CPU 才能拥有 SSE4 或 AVX,例如Nehalem,Sandy Bridge(酷睿 i5、i7)。

另请注意,您可能会发现使用内在函数来初始化 SIMD 向量更容易、更简洁,例如

__m128i p1 = _mm_set_epi32(1, 2, 3, 4);
__m128i p2 = _mm_set_epi32(1, 2, 3, 4);
__m128i res2 = _mm_mul_epi32(p1, p2);

关于x86 - 使用内在的未处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5452343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com