Skip to content
  1. Jul 30, 2012
    • Howard Hinnant's avatar
      Updated the complete by-chapter graph · fe9fe2de
      Howard Hinnant authored
      llvm-svn: 160943
      fe9fe2de
    • Craig Topper's avatar
      Give VCVTTPD2DQ priority over CVTTPD2DQ. · 14eac5dd
      Craig Topper authored
      llvm-svn: 160942
      14eac5dd
    • Craig Topper's avatar
      Fix patterns for CVTTPS2DQ to specify SSE2 instead of SSE1. · f881d385
      Craig Topper authored
      llvm-svn: 160941
      f881d385
    • Howard Hinnant's avatar
      Implement [util.smartptr.shared.atomic]. This is the last unimplemented · d77851e8
      Howard Hinnant authored
      section in libc++.  This requires a recompiled dylib.  Failure to rebuild
      the dylib will result in a link-time error if and only if the functions from
      [util.smartptr.shared.atomic] are used.
      
      The implementation is not lock free.  After considerable thought, I know of no
      way to make the implementation lock free.  Ideas welcome along that front.  But
      changing the ABI of shared_ptr is not on the table at this point.
      
      The mutex used to lock these function is encapsulated by std::__sp_mut.  The
      only thing the client knows about std::__sp_mut is that it has a void* data
      member, can't be constructed, and has lock and unlock members.  Within the
      binary __sp_mut is currently implemented as a pointer to a std::mutex.  That can
      change in the future without disturbing the ABI (as long as sizeof(__sp_mut)
      remains constant.
      
      I specifically did not make __sp_mut a spin lock as I have a pathological
      distrust of spin locks.  Testing on OS X reveals that the use of std::mutex in
      this role is not a large performance penalty as long as the contention for the
      mutex is low (more likely to get the lock than to have to wait).  In the future
      we can still make __sp_mut a spin lock if that is what is desired (without ABI
      damage).
      
      The dylib contains 16 __sp_mut's to be chosen based on the hash of the address
      of the shared_ptr.  The constant 16 is a ball-park reasonable space/time
      tradeoff.
      
      std::hash<T*> was changed to call __murmur2_or_cityhash, instead of the identity
      function.  I had thought we had already done this, but I was mistaken.
      
      All of this is under #if __has_feature(cxx_atomic) even though the
      implementation is not lock free, because the signatures require access to
      std::memory_order, which is currently available only under
      __has_feature(cxx_atomic).
      
      llvm-svn: 160940
      d77851e8
    • Craig Topper's avatar
      Fix up patterns for VCVTSS2SD. Specifically give it priority over SSE form.... · 415b3586
      Craig Topper authored
      Fix up patterns for VCVTSS2SD. Specifically give it priority over SSE form. Add an OptForSpeed to explicitly pair up with an OptForSize that was already on another pattern.
      
      llvm-svn: 160939
      415b3586
    • Craig Topper's avatar
    • Craig Topper's avatar
      b6767f3a
  2. Jul 29, 2012
  3. Jul 28, 2012
  4. Jul 27, 2012
Loading