如何在"unsigned char"阵列上存储_m128 SSE 寄存器数据?
How do I store _m128 SSE register data on an "unsigned char" array?
我是SSE的新手,到目前为止,我已经设法从无符号字符数组加载,但我不知道如何将结果存储回来。请帮助我。
void calculate_borders_parallel( unsigned char *src, unsigned char *dst, int width, int height )
{
// TO DO
__m128i sourceUp;
__m128i sourceDown;
__m128i destiny;
#pragma omp parallel for
for (int j = 1; j<height; j++)
{
for (int i = 0; i<width; i+=4)
{
sourceUp = _mm_loadu_si128( (const __m128i*)&src[(j-1)*width+i] );
sourceDown = _mm_loadu_si128( (const __m128i*)&src[(j+1)*width+i] );
destiny = _mm_subs_epu8(sourceDown, sourceUp);
_mm_store_si128( &dst[(j+0)*width+i], destiny ); // <----- ERROR HERE .. cannot convert from __m128i to unsigned char
}
}
您必须执行以下操作:
*(__m128i *)&dst[idx]
取消引用已转换为向量数组的地址。
你只是缺少一个演员表:
_mm_store_si128( (__m128 *)&dst[(j+0)*width+i], destiny );
相关文章:
- C++ SSE 内部函数:将结果存储在变量中
- Constexpr and SSE intrinsics
- 如何使用SSE将__m128i注册乘以浮点因子?
- 使用SSE内部函数复制少量数据时出现问题
- 可以在 macOS 上启用的最低支持的 SSE 标志是什么?
- SSE 标志应该如何与现代 CMake 一起添加?
- 快速 SSE 射线 - 4 三角形交叉点
- 使用 SSE 以最快的速度缩小 8 位灰度图像
- 如何用SSE优化矩阵3乘3乘法与点?
- 使用双精度运算的快速 SSE 低精度指数
- 手动矢量化/SSE 用于 C++ 中的复杂问题
- 单精度矩阵运算的特征性能 AVX 与 SSE 没有区别?
- 编写 std::copysign 的可移植 SSE/AVX 版本
- SSE 内联汇编和可能的 g++ 优化错误
- SSE 整数 2^n 的 2 次方,对于没有 AVX2 的 32 位整数
- 带有SSE的有条件陈述
- SSE和iostream:浮点类型的错误输出
- 使用 SSE/AVX 获取存储在__m256d中的值的总和
- 如何使用 sse 将无符号字符转换为无符号短字符
- 在SSE矢量M128中找到最大浮点