C - How to access elements of vector using GCC SSE vector extension

前端 未结 3 377
鱼传尺愫
鱼传尺愫 2020-12-15 11:36

Usually I work with 3D vectors using following types:

typedef vec3_t float[3];

initializing vectors using smth. like:

vec3_         


        
3条回答
  •  清歌不尽
    2020-12-15 12:03

    The safe and recommended way to access the elements is with a union, instead of pointer type punning, which fools the aliasing detection mechanisms of the compiler and may lead to unstable code.

    union Vec4 {
        v4sf v;
        float e[4];
    };
    
    Vec4 vec;
    vec.v = (v4sf){0.1f,0.2f,0.3f,0.4f};
    printf("%f %f %f %f\n", vec.e[0], vec.e[1], vec.e[2], vec.e[3]);
    

提交回复
热议问题