Поделиться через


_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");
}
  

См. также

Ссылки

__cpuid, __cpuidex

Другие ресурсы

_mm_haddw_epu8

_mm_haddq_epu8

_mm_haddd_epu16

_mm_haddd_epi8

Встроенные объекты XOP, добавленные в Visual Studio 2010 с пакетом обновления 1 (SP1)

Журнал изменений

Дата

Журнал

Причина

Март 2011

Добавлено это содержимое.

Изменение функции SP1.