Кто-нибудь знает метод достижения функциональности vec_msum для вектора значений с плавающей запятой?
Я довольно новичок в SIMD, и хотя я думаю Я начинаю понимать это - есть еще несколько загадок.
Моя конечная цельсостоит в том, чтобы переписать функцию "convolve_altivec" (как найдено в принятом ответе на этот вопрос) так, чтобы она принимала входные параметры как значения с плавающей запятой вместо коротких.
То есть прототипдолжно быть
float convolve_altivec(const float *a, const float *b, int n)
Я пытаюсь соответствовать функциональности, предоставленной исходной неоптимизированной функцией ниже:
float convolve(const float *a, const float *b, int n)
{
float out = 0.f;
while (n --)
out += (*(a ++)) * (*(b ++));
return out;
}
В моих первых попытках я пытался портировать существующую SSEверсия этой же функции для инструкций altivec.