SSE reduction instruction

Тема в разделе "WASM.ASSEMBLER", создана пользователем W4FhLF, 25 фев 2010.

  1. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Приветствую!

    Есть ли в SSE команда, которая суммирует значения в одном регистре xmm? Ну например четыре float'a.

    Что-то я не могу найти и не пойму как это оптимально сделать.
     
  2. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    W4FhLF
    haddps xmm0,xmm0
    haddps xmm0,xmm0
    оно?
     
  3. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Оно, с учётом того, что это SSE3.

    Есть ещё вариант:

    Код (Text):
    1.         pshufd xmm1,xmm0,00110001b ; 1->0, 3->2
    2.         addps xmm0,xmm1 ; 0+1, xx, 2+3, xx
    3.         pshufd xmm1,xmm0,00000010b ; 2->0
    4.         addps xmm0,xmm1
    Он даже должен быть быстрее.
     
  4. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    SSE 4
    Код (Text):
    1. dpps xmm0,xmm1,255
    При условии, что xmm1 содержит 4 единицы