相关疑难解决方法(0)

在x86上做水平浮点矢量和的最快方法

你有一个三(或四)个浮点数的向量.总结它们的最快方法是什么?

SSE(movaps,shuffle,add,movd)总是比x87快吗?SSE4.2中的水平加法说明值得吗?移动到FPU的成本是多少,然后是faddp,faddp?什么是最快的特定指令序列?

"尝试安排事情,这样你可以一次总结四个向量"将不被接受作为答案.:-)

floating-point optimization x86 assembly sse

41
推荐指数
4
解决办法
2万
查看次数

通过索引获取__m128的成员?

我有一些代码,最初是由MSVC工作人员给我的,我正试图让它在Clang上工作.这是我遇到麻烦的功能:

float vectorGetByIndex( __m128 V, unsigned int i )
{
    assert( i <= 3 );
    return V.m128_f32[i];
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下:

Member reference has base type '__m128' is not a structure or union.
Run Code Online (Sandbox Code Playgroud)

我环顾四周,发现Clang(也许是GCC)在将__m128视为结构或联合时遇到了问题.但是我还没有找到一个直接的答案,我怎么能得到这些价值.我已经尝试过使用下标运算符而无法做到这一点,我已经浏览了大量的SSE内在函数列表并且尚未找到合适的函数.

c++ sse simd clang intrinsics

25
推荐指数
3
解决办法
1万
查看次数

打印__m128i变量

我正在尝试学习使用内在函数进行编码,下面是一个添加代码的代码

compiler used: icc

#include<stdio.h>
#include<emmintrin.h>
int main()
{
        __m128i a = _mm_set_epi32(1,2,3,4);
        __m128i b = _mm_set_epi32(1,2,3,4);
        __m128i c;
        c = _mm_add_epi32(a,b);
        printf("%d\n",c[2]);
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到以下错误:

test.c(9): error: expression must have pointer-to-object type
        printf("%d\n",c[2]);
Run Code Online (Sandbox Code Playgroud)

如何在c类型变量中打印值__m128i

c assembly sse simd intrinsics

21
推荐指数
3
解决办法
2万
查看次数

英特尔SSE:为什么`_mm_extract_ps`返回`int`而不是`float`?

为什么_mm_extract_ps返回int而不是float

float从C中的XMM寄存器读取单个数据的正确方法是什么?

或者更确切地说,一种不同的方式是:_mm_set_ps指令相反的是什么?

c sse simd

9
推荐指数
3
解决办法
4911
查看次数

标签 统计

sse ×4

simd ×3

assembly ×2

c ×2

intrinsics ×2

c++ ×1

clang ×1

floating-point ×1

optimization ×1

x86 ×1