Я пытаюсь поиграть с внутренними особенностями SSE. Я сделал тестовую программу, которая просто добавляет два вектора с четырьмя 16-битными элементами вместе.
#include <xmmintrin.h>
#include <iostream>
using namespace std;
void test_vec_add(){
const int length = 4;
float product[128*4] __attribute__ ((aligned(16)));
_m128 x = _mm_set_ps(1.0f,2.0f,3.0f,4.0f);
_m128 y = _mm_set_ps(1.0f,2.0f,3.0f,4.0f);
_m128 z = _mm_add_ps(x,y);
_mm_store_ps(product,z);
}
int main(){
test_vec_add();
}
Я компилирую этот код с
g++ -msse3 test_sse.cpp
Тем не менее, я получаю следующую ошибку усложнения
test_sse.cpp: In function ‘void test_vec_add()’:
test_sse.cpp:7:3: error: ‘_m128’ was not declared in this scope
test_sse.cpp:7:9: error: expected ‘;’ before ‘x’
test_sse.cpp:8:9: error: expected ‘;’ before ‘y’
test_sse.cpp:9:9: error: expected ‘;’ before ‘z’
test_sse.cpp:10:24: error: ‘z’ was not declared in this scope
test_sse.cpp: In function ‘int main()’:
test_sse.cpp:15:20: error: ‘test_vec_add’ was not declared in this scope
Вероятно, это действительно глупая ошибка, но я не могу понять, где она. Любая помощь будет принята с благодарностью.
Это простая опечатка.
Типы, такие как __m128
начинается с двух подчеркиваний. Функции, такие как _mm_store_ps
начинать только с одного подчеркивания.
Других решений пока нет …