Траблы с распаковкой SSE2

Тема в разделе "WASM.A&O", создана пользователем persicum, 9 мар 2010.

  1. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Была у меня коммандочка
    punpckldq mm0,mm1
    Служила мне верой и правдой, кидала младший дабл из mm1 в старший дабл mm0.
    Так вот, решил я это дело углубить и ускорить и написал
    punpckldq xmm0,xmm1
    и тут пошли косяки, пол дыня ловил пошагово, чуть не сдох...
    Логика пересылок совершенно меняется...
    Что же мне теперь делать?
     
  2. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Ну так что, как мне на SSe2 получить из
    abcd и efgh
    получить
    fbhd ?

    Пока делаю так
    pshufd xmm0, xmm0, 11011000
    pshufd xmm1, xmm1, 11011000
    punpckldq xmm0, xmm1
     
  3. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    может
    Код (Text):
    1. psllq     xmm1,32
    2. blendps   xmm0,xmm1,1010b
    но это уже SSE 4.1
     
  4. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Мда, за несколько комманд можно и так =)))
    psllq xmm0,32
    psrlq xmm0,32
    psllq xmm1,32
    por xmm0,xmm1

    а одной какойнить командочкой по типу shufpd чтобы брала из двух регистров сразу по маске никак низя?
     
  5. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    murder
    согласен, БЛЕНДы из sse4 прикольная штука, особенно с третьим регистром. Кста, помнишь я тебя спрашивал про бабочку плюс-минус в SIMD?
    Оказывается в SSE3 сделали paddsubd.
    Тока, это... Хороша ложка к обеду, этим парням из интель нужно было сразу продумать частые полезные команды, теперь их ценность минимальна оттого что они не входят в стандартный SSE2
     
  6. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Благодаря тебе узнал что SSE4a не включает в себя SSE4.1.
     
  7. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    murder
    в Вики еще не то можно прочитать, например 256-битные регистры будут называться YMM, а в SSE5 будет чтото вроде параллельного XLAT что сильно ускорит шифрование и кодирование.
     
  8. Maratyszcza

    Maratyszcza New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    32
    Сделать быстрее, чем есть, не получится. Твой код и так имеет latency 2 такта на Nehalem.

    А параллельный XLAT уже есть. Он называется pshufb
     
  9. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    За pshufb спасибо!
    Хотя для его нужен SSSE3, вероятно у меня оно есть в core2duo.