|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 10, 2004 18:36:15 Как использовать команды SSE (SSE2/3DNow) в VC++ 6.0 ? |
|
|
Дата: Июн 10, 2004 18:38:59 processor pack надо поставить(брать с сайта microsoft) |
|
|
Дата: Июн 10, 2004 18:42:26 Thanks! Сейчас попробую... |
|
|
Дата: Июн 10, 2004 19:10:52 Зашибись!!! Все пошло - и SSE, и 3DNow... |
|
|
Дата: Июн 10, 2004 19:15:40 Придётся шаманить, потому что компилятор сам до применения этих команд не догадается. Кажется в интеловском компиляторе есть специальные прагмы на этот счёт, но я их не знаю. А для VC++ насколько я знаю только так: void Mult4x4_4x4_SSE( const float *src1, const float *src2, float *dst)
{
__asm {
mov edx, src1
mov eax, dst
mov ecx, src2
PIII_movss0(PIII_XMM0, PIII_EDX)
PIII_movups0(PIII_XMM1, PIII_ECX)
..............
где
enum {
PIII_EAX= 0, PIII_XMM0= 0,
PIII_ECX= 1, PIII_XMM1= 1,
PIII_EDX= 2, PIII_XMM2= 2,
PIII_EBX= 3, PIII_XMM3= 3,
PIII_ESP= 4, PIII_XMM4= 4,
PIII_EBP= 5, PIII_XMM5= 5,
PIII_ESI= 6, PIII_XMM6= 6,
PIII_EDI= 7, PIII_XMM7= 7
};
#define PIII_movss0(xmmreg,reg) PIII_emit4( 0xF3, 0x0F, 0x10, PIII_rm0(xmmreg,reg) )
#define PIII_rm0(reg1,ireg2) PIII_modrm(reg1,ireg2,0x00)
#define PIII_modrm(mod, rm, hi) (((mod)<<3)|(rm)|(hi))
#define PIII_emit1(b1) __asm { __asm _emit (b1) }
#define PIII_emit2(b1, b2) __asm { PIII_emit1((b1)) PIII_emit1((b2)) }
#define PIII_emit3(b1, b2, b3) __asm { PIII_emit2((b1),(b2)) PIII_emit1((b3)) }
#define PIII_emit4(b1, b2, b3, b4) __asm { PIII_emit3((b1),(b2),(b3)) PIII_emit1((b4)) }
|
|
|
Дата: Июн 10, 2004 19:33:20 · Поправил: InsidePro_ Да мне и не надо, чтобы компилятор кодил на SSE, мне нужно, чтобы в секциях __asm { ... } я САМ мог использовать нужные мне команды. Дык, все уже разобрался - еще раз спасибо за совет с Processor Pack'ом. |
|
|
Дата: Июн 10, 2004 19:35:37 Тю. Догадается и еще как. Ты можешь их использовать в VC 7.1 либо как intrinsic, либо в inline-асме, либо при соответствующих опциях оптимизации. Читаем о части возможностей тут: http://www.codeproject.com/cpp/sseintro.asp?df=100&forumid=16168&exp=0&select=558629 |
|
|
Дата: Июн 10, 2004 19:44:37 · Поправил: InsidePro_ Ок, только мне VC 7.1 не очень понравился - я использую MFC, и столкнулся с тем, что mfc70.dll есть ДАЛЕКО не у всех юзеров, а делая статическую компоновку, получаю файл размером 400-500 кБ, что не есть good. Поэтому мне и нужна возможность самому юзать SSE/3DNow именно в VC6.0, а в VC7 можно и безо всяких PPack'ов юзать эти команды, да и выставлять P-III в качестве целевого проца, но разговор не о VC7. |
|
|
Дата: Июн 10, 2004 19:46:24 volodya Не знал. Спасибо, пригодится на будущее, а то такой фарш приходилось в программе устраивать. |
|
|
Дата: Июн 10, 2004 19:46:37 Ну... Мона таскать с собой... А для Vc 6.0 только PPack... |
|
|
Дата: Июн 10, 2004 19:49:35 Насчет фарша - вот именно! А теперь - пишешь ... #include "amd3dx.h" #include "fpieee.h" ... и юзаешь: __asm { addss xmm0,xmm2 xorps xmm7,xmm4 } Ляпота-а-а! :) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.079 |