Может кто-нибудь знает, что VC подразумевает под SSE??? При включении данной опции проги постоянно вылетают с ошибкой "неправильная инструкция". SSE есть, это точно и я даже писал с помощью этих команд на асме. Насколько я помню инструкция типа cvt(p)*.... У vc какой-то свой, особенный, взгляд на SSE?
Весело. Раз уж заявлено SSE, то будьте добры учитывать все "редакции". А как с SSE у интелловского компилерра? Всё хочу скачать, да руки не доходят. Да и места знать надо откуда качать....
Когда уже будут примеры кода или хотя бы бинарник и опции компиляции? Если у тебя что-то не работает - 99.9999% что ошибка у тебя в коде или просто ты не понимаешь что делаешь.
У студии всё в порядке с SSE, у меня множество приложения для data processing используют SSE, вплоть до новейших инструкций. В новой студии 2010 у компилятора С\С++ вообще есть поддержка AVX инструкций, хотя этих камней на рынке даже нет. У компилятора интел с SSE тоже порядок. У него правда побольше ума по части "оптимизации", но тут важно понимать, что ты пишешь и как это будет "видеть" компилятор. Скажем так, если подать ICC правильный с т.з. оптимизатора код, то он автовекторизует всё так, что в разы будет быстрее работать на новых процах. Я с таким сталкивался последний раз, когда реализовывал свёртку матрицы с ядром. Везде была включена поддержка SSE2. Если прощённо, результаты примерно такие. VS 2008 Vista x32: D:\R&D\conv>conv Size of data: 512 8192 Size of kernel: 257 Classic: 6906.86 Effective cache: 4247.55 Effective cache + OpenMP: 2126.3 ICC 11.1 linux x32: Size of data: 512 8192 Size of kernel: 257 Classic: 4364.9 Effective cache: 646.442 Effective cache + OpenMP: 333.378 Невероятно, но факт. Сборка для ICC шла под linux. Но существенно это ничего не меняет.
0xc000001d - тип ошибки 0x00493c5a - адрес ошибки Код (Text): CPU Disasm 1033: tr.overbrightBits = Com_Clamp( 0, (glConfig.colorBits > 16) ? 2 : 1, r_overBrightBits->integer ); 00493C43 mov ecx,dword ptr [r_overBrightBits (0BB7A84h)] 00493C49 movd xmm0,dword ptr [ecx+20h] 00493C4E xorps xmm2,xmm2 00493C51 xor eax,eax 00493C53 cmp dword ptr ds:[0BBA710h],10h 00493C5A cvtdq2ps xmm0,xmm0 <============================================(1) 00493C5D setg al 00493C60 xorps xmm1,xmm1 00493C63 movss dword ptr [esp],xmm0 00493C68 inc eax 00493C69 comiss xmm2,xmm0 00493C6C cvtsi2ss xmm1,eax 00493C70 movss dword ptr [esp+4],xmm1 00493C76 jbe R_SetColorMappings+3Dh (493C7Dh) 00493C78 movaps xmm0,xmm2 00493C7B jmp R_SetColorMappings+4Dh (493C8Dh) 00493C7D fld dword ptr [esp+4] 00493C81 fld dword ptr [esp] 00493C84 fcomip st,st(1) 00493C86 fstp st(0) 00493C88 jbe R_SetColorMappings+4Dh (493C8Dh) 00493C8A movaps xmm0,xmm1 1) В опция стоит только SSE, но инструкция принадлежит SSE2. Как такое может быть???!!! Картинка с опциями и куском кода, где возникло исключение