LINUX.ORG.RU

Инструкция BLENDPD в SSE4.1 Чё за...?

 , , , ,


0

2

Здрасти здрасти люди добрые… ой не то :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];  /* какой в этом смысл?*/

Я дебилушка опять или куда? Объясните юродивому как эта инструкция работает, всё расписано вроде, но вот не верю я что тупо идёт копирование бесполезное.
Штирлиц начал что-то подозревать, но не понимал что именно… -_-

Ответ на: комментарий от luke

Да, меня просто эта форма подачи где прям всё явно сбила с толку. Ну и подумалось что может какой для меня неявный нюанс есть. Я помню по другой теме рыл, но тоже с инструкциями и там тоже псевдокод, ну так вот там было что-то вида a{4:0} = a{4:0:0} и потом оказалось что это подразумевало то что что в правой стороне это младшие биты, а в левой до = это старшие одного и того же блока памяти и происходит операция копирования 4х младших бит в старшие с установкой в 0 младших, мне когда объяснили я в осадок выпал. То есть левое 0 перед равно это нулевое смещение от правого a{4, Ну бред же. Я сейчас не найду уже где это было, но что-то про ASIC/FPGA и прочее, давно было вот я и подумал вдруг тут тоже нечто похожее где смысл можно понять только из контекста. Порой не всё так очевидно, а порой в очевидном не видишь из за этого суть которая на блюдечке и неприкрытая ничем. Вот я и запутался и засомневался решив спросить.

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)