SmallInteger.st
changeset 18948 cab22236fc65
parent 18947 1d8cd5b315b2
child 18949 41f0cd5dc0ad
child 19050 5ad22f274ac6
equal deleted inserted replaced
18947:1d8cd5b315b2 18948:cab22236fc65
  1081     _v2 = _v2 - ((_v2 >> 1) & 0x55555555);
  1081     _v2 = _v2 - ((_v2 >> 1) & 0x55555555);
  1082     _v2 = (_v2 & 0x33333333) + ((_v2 >> 2) & 0x33333333);
  1082     _v2 = (_v2 & 0x33333333) + ((_v2 >> 2) & 0x33333333);
  1083     _v2 = ((_v2 + (_v2 >> 4)) & 0x0F0F0F0F);
  1083     _v2 = ((_v2 + (_v2 >> 4)) & 0x0F0F0F0F);
  1084 
  1084 
  1085     _cnt = ((_v1 * 0x01010101) >> 24) + ((_v2 * 0x01010101) >> 24);
  1085     _cnt = ((_v1 * 0x01010101) >> 24) + ((_v2 * 0x01010101) >> 24);
  1086     return __c__._RETURN( STInteger._qnew( _cnt ) );
  1086     return __c__._RETURN( STInteger._qnew( (byte)(_cnt) ) );
  1087 #else
  1087 #else
  1088     unsigned int _cnt;
  1088     unsigned int _cnt;
  1089 
  1089 
  1090     // popcnt is slower
  1090     // popcnt is slower
  1091 # if 0 // defined(__GNUC__) && (defined(__x86__) || defined(__x86_64__))
  1091 # if 0 // defined(__GNUC__) && (defined(__x86__) || defined(__x86_64__))