c++ - 如何让 __m256i AVX 容器覆盖 8 位整数数组?
问题描述
AVX 中有一条指令_mm256_set1_epi8
可以将容器内的 32 个 8 位整数设置_m256i
为特定值。
如果我有一个所述 8 位整数的数组,我怎样才能使操作__m256i
产生_mm256_set1_epi8
的容器覆盖char[32]
容器?
我没有在 SSEx 或 AVX 中找到任何与 Epi8(8 位有符号整数)相关的加载或移动指令。我想必须有一种方法可以实现这一点,因为它的计算似乎并不复杂,但我找不到应该使用哪条指令来实现这一点。
如果使用 无法实现__m256i
,是否可以使用 a 实现类似的功能__m128i
?
代码示例来说明上述情况:
int _tmain(int argc, _TCHAR* argv[])
{
// This is an array of 8-bit signed integers
char charArray[32] = { 0, 1, 2, 3, 4, /*[...],*/ 30, 31 };
// This is the value I want to set in the array at some point
char valueToSet = 4;
// This instruction makes it possible to set 32 8-bit signed integers at once
__m256i eightBitIntegersRegistry = _mm256_set1_epi8(valueToSet);
// How can I make it affect the charArray array?
// In the end I would want the content of charArray to be { 4, 4, 4, [...] 4, 4, 4 }
return 0;
}
解决方案
推荐阅读
- android - 如何在 Android 上的 Xamarin.Forms 中的 NavigationBar 左侧添加 ToolbarItem?
- html - html2canvas:错误未捕获(承诺):[object undefined] angular 6
- unity3d - 如何频繁生成和移动预制对象?
- jquery - 如何使用jQuery获取字符串中的值?
- google-cloud-kms - 无法使用@google-cloud/kms nodejs 模块解密秘密
- ios - 在 Swift 上以编程方式将应用程序置于前台
- python - 为什么 table 以 NoneType 的形式出现?
- javascript - 如何将图像的一部分从父元素传输到子元素
- c# - 为什么我会收到指定的 LINQ 表达式包含对与不同上下文关联的查询的引用?
- java - 有没有办法在 Android Studio 中以编程方式对线性布局进行排序?