_mm_haddd_epu8
Требуется Visual Studio 2010 с пакетом обновления 1 (SP1).
Только для систем Microsoft
Формирует инструкцию XOP vphaddubd для выполнения операции горизонтального сложения целых чисел без знака над своим источником.
__m128i _mm_haddd_epu8 (
__m128i src
);
Параметры
- [входящий] src
128-битный параметр, содержащий шестнадцать 8-битных целых чисел без знака.
Возвращаемое значение
128-битный результат r, содержащий четыре 32-битных целых числа без знака.
r[i] := src[4*i] + src[4*i+1] + src[4*i+2] + src[4*i+3];
Требования
Встроенный объект |
Архитектура |
---|---|
_mm_haddd_epu8 |
XOP |
Файл заголовка <intrin.h>
Заметки
Каждая из четырех групп по четыре 8-битных целочисленных значения без знака в параметре src складывается для получения 32-битного целочисленного результата без знака, который сохраняется в виде соответствующего значения в целевом объекте. В данной инструкции не допускается переполнение.
Инструкция vphaddubd входит в состав семейства инструкций XOP. Прежде чем использовать эту встроенную инструкцию, необходимо убедиться, что процессор ее поддерживает. Чтобы определить, имеется ли аппаратная поддержка этой инструкции, вызовите встроенную инструкцию __cpuid с InfoType = 0x80000001 и проверьте бит 11 в CPUInfo[2] (ECX). Этот бит равен 1, если инструкция поддерживается, и 0 в противном случае.
Пример
#include <stdio.h>
#include <intrin.h>
int main()
{
__m128i a, d;
int i;
for (i = 0; i < 4; i++) {
a.m128i_i8[i] = -128;
a.m128i_i8[i+4] = i-128;
a.m128i_i8[i+8] = 10*i;
a.m128i_i8[i+12] = 127;
}
// Note that this intrinsic treats negative values as unsigned
// So, e.g., -128 becomes +128
d = _mm_haddd_epu8(a);
for (i = 0; i < 4; i++) printf_s(" %u", d.m128i_u32[i]);
printf_s("\n");
}
См. также
Ссылки
Другие ресурсы
Встроенные объекты XOP, добавленные в Visual Studio 2010 с пакетом обновления 1 (SP1)
Журнал изменений
Дата |
Журнал |
Причина |
---|---|---|
Март 2011 |
Добавлено это содержимое. |
Изменение функции SP1. |