PICCA Frédéric-Emmanuel <frederic-emmanuel.picca@xxxxxxxxxxxxxxxxxxxxx> writes: >> Note that you're going to need to tell gcc that you're clobbering %rax, >> as described in the extended asm documentation. > > ok so I added > : : "rax" > >> Use %%rax. > > ok but... > > now > > jpeg_color_mmx.cpp: In function ‘void jpeg_yh2v2_to_rgb32_mmx(unsigned char*, long int, unsigned char*)’: > jpeg_color_mmx.cpp:474: error: can't find a register in class ‘AREG’ while reloading ‘asm’ > jpeg_color_mmx.cpp:474: error: ‘asm’ operand has impossible constraints > > so it seems that there is not enought register for this operation. I am right ? > > must I use another register or do a push rax ... pop rax to solve this problem That's not the issue. If you want a definite answer you need to show us the real test case, ideally simplified, but from the above it looks like you are missing a colon. It looks like "rax" is in the output operand list, not the clobber list. Ian