+++ /dev/null
---- XIMEA-1.04/examples/vaViewer/acquisition.cpp.orig 2011-11-29 22:53:23.000000000 +0100
-+++ XIMEA-1.04/examples/vaViewer/acquisition.cpp 2012-02-01 18:16:03.439775467 +0100
-@@ -204,23 +204,24 @@
- char * byte_data = surface_p+surface_image.offsets[0]+i*surface_image.pitches[0];
- int bitshift = lps->sgf.curBPP - 8;
- int cnt = (lps->sgf.curCX * sizeof(WORD)) / 32;
-- _asm{
-- mov esi, [data] ;
-- mov edi, [byte_data] ;
-- movd xmm2, [bitshift] ;
--t00:
-- movdqa xmm0, [esi] ;
-- movdqa xmm1, [esi+16] ;
-- psrlw xmm0, xmm2 ;
-- psrlw xmm1, xmm2 ;
-- packuswb xmm0, xmm1 ;
-- movntdq [edi], xmm0 ;
-- add edi, 16 ;
-- add esi, 32 ;
--
-- sub [cnt], 1 ;
-- ja t00 ;
-- }
-+ __asm__(
-+ "movl (%1), %%esi\n" // mov esi, [data]
-+ "movl (%2), %%edi\n" // mov edi, [byte_data]
-+ "movd (%3), %%xmm2\n" // movd xmm2, [bitshift]
-+ "1: movdqa (%%esi), %%xmm0\n" // movdqa xmm0, [esi]
-+ "movdqa $16(%%esi), %%xmm1\n" // movdqa xmm1, [esi+16]
-+ "psrlw %%xmm2, %%xmm0\n" // psrlw xmm0, xmm2
-+ "psrlw %%xmm2, %%xmm1\n" // psrlw xmm1, xmm2
-+ "packuswb %%xmm1, %%xmm0\n" // packuswb xmm0, xmm1
-+ "movntdq %%xmm0, (%%edi)\n" // movntdq [edi], xmm0
-+ "addl $16, %%edi\n" // add edi, 16
-+ "addl $32, %%esi\n" // add esi, 32
-+ "sub $1, (%0)\n" // sub [cnt], 1
-+ "ja 1b\n"
-+ : "=&r"(cnt)
-+ : "mr"(data), "mr"(byte_data), "mr"(bitshift)
-+ : "memory", "cc", "esi", "edi"
-+ );
- } else {
- memcpy(surface_p+surface_image.offsets[0]+i*surface_image.pitches[0], (char*)lps->sgf.bp+i*surface_width, surface_width);
- }