Subversion Repositories Kolibri OS

Rev

Rev 4358 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4358 Rev 5063
Line 440... Line 440...
440
 * Return 0 if no bits set.
440
 * Return 0 if no bits set.
441
 */
441
 */
442
#ifndef FFS_DEFINED
442
#ifndef FFS_DEFINED
443
#define FFS_DEFINED 1
443
#define FFS_DEFINED 1
Line 444... Line -...
444
 
-
 
445
#if defined(_MSC_VER) && _MSC_VER >= 1300 && (_M_IX86 || _M_AMD64 || _M_IA64)
-
 
446
unsigned char _BitScanForward(unsigned long* Index, unsigned long Mask);
-
 
447
#pragma intrinsic(_BitScanForward)
-
 
448
static INLINE
-
 
449
unsigned long ffs( unsigned long u )
-
 
450
{
-
 
451
   unsigned long i;
-
 
452
   if (_BitScanForward(&i, u))
-
 
453
      return i + 1;
-
 
454
   else
-
 
455
      return 0;
-
 
456
}
-
 
457
#elif defined(PIPE_CC_MSVC) && defined(PIPE_ARCH_X86)
-
 
458
static INLINE
-
 
459
unsigned ffs( unsigned u )
-
 
460
{
-
 
461
   unsigned i;
-
 
462
 
-
 
463
   if (u == 0) {
-
 
464
      return 0;
-
 
465
   }
-
 
466
 
-
 
467
   __asm bsf eax, [u]
-
 
468
   __asm inc eax
-
 
469
   __asm mov [i], eax
-
 
470
 
-
 
471
   return i;
-
 
472
}
-
 
473
#elif defined(__MINGW32__) || defined(PIPE_OS_ANDROID)
444
 
474
#define ffs __builtin_ffs
-
 
Line 475... Line 445...
475
#endif
445
#define ffs __builtin_ffs
Line 476... Line 446...
476
 
446
 
477
#endif /* FFS_DEFINED */
447
#endif /* FFS_DEFINED */