Re: MMX signed/unsigned saturation help

Тема в разделе "WASM.WIN32", создана пользователем 9ine, 16 ноя 2004.

  1. 9ine

    9ine New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    24
    Адрес:
    Russia
    Имеется два массива в одном только unsigned числа в другом только signed.

    Как их сложить между собой избегая saturation до 255 _mm_adds_pu8() или до 127 в _mm_adds_pi8

    например (из первого)120 + (из второго)(+50) = 127

    для _pi8()

    или (из первого)120 + (из второго)(-1)(0xFF) = 255

    для _pu8()
     
  2. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    9ine

    То есть нужна арифметика по модулю 256? Тогда распаковать в word'ы, сложить, наложить маску и запаковать обратно.
     
  3. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    Black_mirror

    Для арифметики по модулю 256 годится и банальный paddb.



    Вопрос, вероятно, в том, как сложить signed и unsigned. К сожалению, не указано, должен быть результат signed или unsigned. В любом случае вопрос, похоже, не имеет смысла...
     
  4. 9ine

    9ine New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    24
    Адрес:
    Russia
    Результат должен быть всегда unsigned. Как это сделать в байтах без saturation и без использования вордов?