次のようなコードが表示されます。
#include "stdio.h"
#define VECTOR_SIZE 4
typedef float v4sf __attribute__ ((vector_size(sizeof(float)*VECTOR_SIZE)));
// vector of four single floats
typedef union f4vector
{
v4sf v;
float f[VECTOR_SIZE];
} f4vector;
void print_vector (f4vector *v)
{
printf("%f,%f,%f,%f\n", v->f[0], v->f[1], v->f[2], v->f[3]);
}
int main()
{
union f4vector a, b, c;
a.v = (v4sf){1.2, 2.3, 3.4, 4.5};
b.v = (v4sf){5., 6., 7., 8.};
c.v = a.v + b.v;
print_vector(&a);
print_vector(&b);
print_vector(&c);
}
このコードは正常にビルドされ、gcc を使用して期待どおりに動作します (これは組み込みの SSE / MMX 拡張機能とベクトル データ型です。このコードは、4 つの単一浮動小数点数を使用して SIMD ベクトル加算を行っています。
このtypedef行の各キーワード/関数呼び出しが何を意味し、何をするのかを詳細に理解したい:
typedef float v4sf __attribute__ ((vector_size(sizeof(float)*VECTOR_SIZE)));
vector_size() 関数の戻り値は何ですか。
何の__attribute__
ためのキーワードか
vfsf 型に型定義されている float データ型は次のとおりです。
残りの部分は理解しています。
ありがとう、
-広告