Идеальное выравнивание (SSE SIMD)

226
03 ноября 2017, 11:09

Как можно сделать идеальное выравнивание ? К примеру

 int AlignA = (int)Source & 15; // = 4
 int AlignB = (int)Dest & 15; // = 3

Что бы Source и Dest выровнялись до X & 15 == 0 и можно было конечный результат проверить потом

Пишу свой Move с использованием SSE. По этому задался таким вопросом.

Вот код который получился на данный момент https://github.com/NyaSik/TestNove/blob/master/MoveSSE.c

 int AlignSS = (int)Source & 15;
    if(AlignSS == ((int)dest & 15)) {
        if(AlignSS) {
            AlignSS = 16 - AlignSS;
            switch(AlignSS)  {
                MoveSSE(16 * 0 + 1, 0, 1, dest, Source);
            }
            dest += AlignSS;
            Source += AlignSS;
            len -= AlignSS;
        }
        MoveLen(dest, Source, len, 1);
     } else {
         MoveLen(dest, Source, len, 0);
 }
READ ALSO
Смещение мировых координат в OpenGL

Смещение мировых координат в OpenGL

Всем доброго времени сутокОтлавливаю клики мыши, затем преобразую каждый клик, который является центром примитива, в некоторый набор точек

360
напишите мне пожалуйста програмку [требует правки]

напишите мне пожалуйста програмку [требует правки]

Описать структуру ABITURIENT со следующими полями:

279
Ввод строки в c++

Ввод строки в c++

Подскажите пожалуйста, правильно ли я реализовал ввод строки?

348