Здрасти здрасти люди добрые… ой не то :D
Короче есть такая инструкция blendpd
два SRC
и DEST
128
битных регистра содержащие каждый по два double float
значения и 8
битная какашечка imm
с флагами в младших битах 0
и 1
в зависимости от флагов данные тасуются туда сюда копированием. Ну так вот, вот ссылка на подробное объяснение
Всё ладно, (хотя мне и так тяжело и тяжко), но там есть псевдокод. Приведу тут его для удобства.
IF (IMM8[0] = 0)THEN DEST[63:0]←DEST[63:0] # <<< это
ELSE DEST [63:0]←SRC[63:0] FI
IF (IMM8[1] = 0) THEN DEST[127:64]←DEST[127:64]
ELSE DEST [127:64]←SRC[127:64] FI
DEST[MAXVL-1:128] (Unmodified)
Самая первая строчка, если самый младший бит равен 0
то мы копируем из регистра DEST биты с 0 по 63 включительно в DEST в 0 по 63 включительно эмммммм, чё? Я вот тут нипонял…
Грубо говоря в сишке этот кусочек будет выглядеть так
double x[2] = { 0.1, 0.2 }; /*просто для наглядности*/
x[0] = x[0]; /* какой в этом смысл?*/
Я дебилушка опять или куда? Объясните юродивому как эта инструкция работает, всё расписано вроде, но вот не верю я что тупо идёт копирование бесполезное.
Штирлиц начал что-то подозревать, но не понимал что именно… -_-