contrib/python-zstandard/zstd/common/bitstream.h
changeset 42937 69de49c4e39c
parent 42070 675775c33ab6
child 43994 de7838053207
equal deleted inserted replaced
42936:2da754532dd3 42937:69de49c4e39c
    55 /*=========================================
    55 /*=========================================
    56 *  Target specific
    56 *  Target specific
    57 =========================================*/
    57 =========================================*/
    58 #if defined(__BMI__) && defined(__GNUC__)
    58 #if defined(__BMI__) && defined(__GNUC__)
    59 #  include <immintrin.h>   /* support for bextr (experimental) */
    59 #  include <immintrin.h>   /* support for bextr (experimental) */
       
    60 #elif defined(__ICCARM__)
       
    61 #  include <intrinsics.h>
    60 #endif
    62 #endif
    61 
    63 
    62 #define STREAM_ACCUMULATOR_MIN_32  25
    64 #define STREAM_ACCUMULATOR_MIN_32  25
    63 #define STREAM_ACCUMULATOR_MIN_64  57
    65 #define STREAM_ACCUMULATOR_MIN_64  57
    64 #define STREAM_ACCUMULATOR_MIN    ((U32)(MEM_32bits() ? STREAM_ACCUMULATOR_MIN_32 : STREAM_ACCUMULATOR_MIN_64))
    66 #define STREAM_ACCUMULATOR_MIN    ((U32)(MEM_32bits() ? STREAM_ACCUMULATOR_MIN_32 : STREAM_ACCUMULATOR_MIN_64))
   161         unsigned long r=0;
   163         unsigned long r=0;
   162         _BitScanReverse ( &r, val );
   164         _BitScanReverse ( &r, val );
   163         return (unsigned) r;
   165         return (unsigned) r;
   164 #   elif defined(__GNUC__) && (__GNUC__ >= 3)   /* Use GCC Intrinsic */
   166 #   elif defined(__GNUC__) && (__GNUC__ >= 3)   /* Use GCC Intrinsic */
   165         return 31 - __builtin_clz (val);
   167         return 31 - __builtin_clz (val);
       
   168 #   elif defined(__ICCARM__)    /* IAR Intrinsic */
       
   169         return 31 - __CLZ(val);
   166 #   else   /* Software version */
   170 #   else   /* Software version */
   167         static const unsigned DeBruijnClz[32] = { 0,  9,  1, 10, 13, 21,  2, 29,
   171         static const unsigned DeBruijnClz[32] = { 0,  9,  1, 10, 13, 21,  2, 29,
   168                                                  11, 14, 16, 18, 22, 25,  3, 30,
   172                                                  11, 14, 16, 18, 22, 25,  3, 30,
   169                                                   8, 12, 20, 28, 15, 17, 24,  7,
   173                                                   8, 12, 20, 28, 15, 17, 24,  7,
   170                                                  19, 27, 23,  6, 26,  5,  4, 31 };
   174                                                  19, 27, 23,  6, 26,  5,  4, 31 };