diff --git a/plugins/GSdx/stdafx.h b/plugins/GSdx/stdafx.h index be7096a88a..a1e0312e28 100644 --- a/plugins/GSdx/stdafx.h +++ b/plugins/GSdx/stdafx.h @@ -391,11 +391,17 @@ using namespace stdext; // http://svn.reactos.org/svn/reactos/trunk/reactos/include/crt/mingw32/intrin_x86.h?view=markup - __forceinline unsigned char _BitScanForward(unsigned long* const Index, const unsigned long Mask) + __forceinline int _BitScanForward(unsigned long* const Index, const unsigned long Mask) { - __asm__("bsfl %k[Mask], %k[Index]" : [Index] "=r" (*Index) : [Mask] "mr" (Mask)); - +#if defined(__GCC_ASM_FLAG_OUTPUTS__) && 0 + // Need GCC6 to test the code validity + int flag; + __asm__("bsfl %k[Mask], %k[Index]" : [Index] "=r" (*Index), "=@ccz" (flag) : [Mask] "mr" (Mask)); + return flag; +#else + __asm__("bsfl %k[Mask], %k[Index]" : [Index] "=r" (*Index) : [Mask] "mr" (Mask) : "cc"); return Mask ? 1 : 0; +#endif } #ifdef __GNUC__