Я достаточно долго программировал.. слабые места на ассемблере. Но вот MMX и SSE боялся как огня. Теперь встала задача максимально оптимизировать сложные векторные вычисления (4хмерные). Причём если на машине нет SSE, то сделать всё через MMX (там ведь есть операции с плавающей точкой ?)
Собственно вопросы. Какую качественную литературу (для тупых - чтобы всё расжёвано было) по SSE и MMX вы можете посоветовать. Может быть скажете какие-то основы... (нужно присвоение, сложение, вычитание, перевод к интам). Что за shuffle ? Ну и наконец, как на С++ программировать SSE/MMX командами (я имею ввиду... _mm_add_ps, _mm_mul_ps, _mm_cvttps_pi32, ... - и где это искать ?)
С уважением, Дмитрий )
А вообще - вгугл.
DevilDevil
> Причём если на машине нет SSE
Забудь. Машины без хотя бы первого SSE - это ОЧЕНЬ старые машины. Таких и не найти.
И, кстати, как ты собираешься заменять операции SSE с помощью MMX? Они ж разные вещи делают.
Я, лично, SSE трогал по книжке:
Искусство программирования на Ассемблере. Лекции и упражнения. 3-е издание
Голубь Н. Г.
Причем нужно именно третье издание, потому что в первых двух SSE отсутствует.
> Забудь. Машины без хотя бы первого SSE - это ОЧЕНЬ старые машины.
Вообще говоря, путь джедая состоит в написании абстрактного классa SIMDProcessor, от которого наследуются SIMDProcessorGeneric, SIMDProcessorMMX, SIMDProcessorSSE и т.д.
Ghost2
Какого еще класса и зачем??
Затем чтобы софт не падал с диагнозом EXCEPTION_ILLEGAL_INSTRUCTION.
Ghost2
> Затем чтобы софт не падал с диагнозом EXCEPTION_ILLEGAL_INSTRUCTION.
да, было тут такое :)
если рассуждать о совместимости... я и MMX боюсь юзать. Мало ли может на компе его нет )
может я слишком устаревших взглядов )
DevilDevil
> Мало ли может на компе его нет )
Комп без MMX - это Penitum 133
DevilDevil
> Мало ли может на компе его нет )
Тогда остальное тоже не запуститься, можешь не переживать.
@!!ex
batment
ok ) но MMX оставлю )
так он работает с float ?
Нет не работает. Можно конечно фиксед поинт заюзать, но думаю точности не хватит.
DevilDevil
> так он работает с float ?
MMX не работает с float.
SSE работает с float.
MMX для целочисленных данных.
http://ru.wikipedia.org/wiki/MMX
хм
очень прискорбно
а, был такой 3DNow, но завязывать на него думаю неактуально
возможно последний вопрос
как посчитать скалярное произведение на SSE ?
@!!ex
> Забудь. Машины без хотя бы первого SSE - это ОЧЕНЬ старые машины. Таких и не
> найти.
Даже на моей есть.
Тема в архиве.