У меня вопрос по инструкции SSE.
Я надеюсь, что это правильное место, чтобы задать такой вопрос, если нет, пожалуйста, дайте мне знать, и я сниму этот вопрос.
Моя цельиспользовать инструкции SSE для параллельного выполнения вычислений по 3 символам.
У меня есть структура typedef, которая имеет атрибут, который упакован
typedef struct
{
unsigned char x;
unsigned char y;
unsigned char z;
} __attribute__((packed)) Number;
Для каждого символа, который я должен пройтиопределенный расчет.
В качестве примера:
((Number[0].x * 20) / 256);
Я должен сделать небольшой расчет для каждого символа и затем сложить их вместе.
Поскольку я должен написать код на ассемблере, я уже провел некоторое исследование и наткнулся на эту инструкцию:
__m128i _mm_add_epi8 (__m128i a, __m128i b)
Насколько мне известно, это должно добавить два значения (которые имеюткаждый размером 8 байт) вместе и сохраните результат.
По крайней мере, я так понимаю: По этой ссылке
Но так как мы добавляем только два значения вместеэто сводит на нет всю цель выполнения нескольких инструкций одновременно.
Любая помощь будет очень узкой.С уважением!