Page MenuHomePhabricator

Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline

__simt__ (Olivier Giroux)
User

Projects

User does not belong to any projects.

User Details

User Since
Dec 10 2018, 1:57 PM (260 w, 3 d)

Recent Activity

Oct 14 2022

__simt__ added inline comments to D68480: Implementation of C++20's P1135R6 for libcxx.
Oct 14 2022, 12:44 PM · Restricted Project, Restricted Project

Jan 21 2022

__simt__ added a comment to D117811: [libc++] Make _VSTD and alias for std.

I've mentioned this before, but NVIDIA defines _VSTD to something else in our product branch. This diff, here, implies that we will need a matching & opposite diff to further separate us from upstream.

Jan 21 2022, 9:47 AM · Restricted Project

Nov 22 2021

__simt__ added a comment to D114119: [libcxx] Fix potential lost wake-up in counting semaphore.

I've just read up the backstory of this.

Nov 22 2021, 11:40 AM · Restricted Project, Restricted Project

Oct 20 2021

__simt__ added a comment to D110110: [libc++] [ABI BREAK] Remove non-atomic "platform" semaphore implementations..

Hmm. I lost track of how/when this constructor got defined as constexpr. It doesn't mean that it's unimplementable with platform semaphores, but to do so would make the implementation a lot more complicated, slower, and the object even larger than it already is.

Oct 20 2021, 4:01 PM · Restricted Project

Mar 10 2021

__simt__ added inline comments to D98334: [libcxx] Fix hang in try_acquire with __atomic_semaphore_base.
Mar 10 2021, 7:40 AM · Restricted Project

Jan 19 2021

__simt__ accepted D90968: Fix for the Bug 41784.

This change looks good to me, thanks!

Jan 19 2021, 9:36 AM · Restricted Project

Dec 10 2020

__simt__ added a comment to D93025: [libc++] Remove invalid use of `#if _LIBCPP_STD_VER >= 11`, as `_LIBCPP_STD_VER` can never be less than 11..

I'm drawing a blank. Proceed.

Dec 10 2020, 8:57 AM · Restricted Project

Dec 7 2020

__simt__ added a comment to D87974: [Builtin] Add __builtin_zero_non_value_bits..

I think Jonathan is asking whether there is a match in the gray areas.

Dec 7 2020, 7:35 PM · Restricted Project, Restricted Project

Nov 23 2020

__simt__ added a comment to D91992: [libc++] Add an extension to allow constructing std::thread from native handles.

I'm not sold on this but I'm not deeply opposed either.

Nov 23 2020, 2:28 PM · Restricted Project

Nov 20 2020

__simt__ added a comment to D87974: [Builtin] Add __builtin_zero_non_value_bits..

I've resumed looking at the library code.

Nov 20 2020, 2:42 PM · Restricted Project, Restricted Project

Sep 16 2020

__simt__ added inline comments to D72240: Implement C++20 std::atomic_ref and test.
Sep 16 2020, 4:28 PM · Restricted Project, Restricted Project

Sep 14 2020

__simt__ added a comment to D72240: Implement C++20 std::atomic_ref and test.

We're looking at this patch in the context of the libcudacxx fork. I don't have more feedback right now but we probably will get there soon.

Sep 14 2020, 12:29 PM · Restricted Project, Restricted Project

Sep 11 2020

__simt__ committed rG59fc86779038: Re-split integral & pointer overloads. Add tests. (authored by __simt__).
Re-split integral & pointer overloads. Add tests.
Sep 11 2020, 12:14 PM
__simt__ added a comment to rGfc4bff0cd37f: Update atomic feature macros, synopsis, signatures to match C++20. Improve test….

Also adding a test case.

Sep 11 2020, 10:04 AM
__simt__ added a comment to rGfc4bff0cd37f: Update atomic feature macros, synopsis, signatures to match C++20. Improve test….

I will revert this part immediately, thanks for the heads up!

Sep 11 2020, 9:40 AM

Sep 9 2020

__simt__ committed rG11352fa83bcb: Revert a test using padding bits in atomics (authored by __simt__).
Revert a test using padding bits in atomics
Sep 9 2020, 12:15 PM
__simt__ committed rGfc4bff0cd37f: Update atomic feature macros, synopsis, signatures to match C++20. Improve test… (authored by __simt__).
Update atomic feature macros, synopsis, signatures to match C++20. Improve test…
Sep 9 2020, 10:00 AM

Sep 8 2020

__simt__ updated the diff for D87323: Bring atomic header closer to C++20.

This version is now clean on Mac and Linux

Sep 8 2020, 3:10 PM · Restricted Project
__simt__ updated the diff for D87323: Bring atomic header closer to C++20.

Removed spurious whitespace changes

Sep 8 2020, 1:16 PM · Restricted Project
__simt__ added inline comments to D87323: Bring atomic header closer to C++20.
Sep 8 2020, 1:12 PM · Restricted Project
__simt__ added inline comments to D87323: Bring atomic header closer to C++20.
Sep 8 2020, 1:11 PM · Restricted Project
__simt__ updated the diff for D87323: Bring atomic header closer to C++20.
Sep 8 2020, 1:10 PM · Restricted Project
__simt__ updated the diff for D87323: Bring atomic header closer to C++20.

I figured out I could abandon most of the noisy changes. Dropping them out.

Sep 8 2020, 12:53 PM · Restricted Project
__simt__ requested review of D87323: Bring atomic header closer to C++20.
Sep 8 2020, 12:42 PM · Restricted Project

Jun 4 2020

__simt__ added a comment to D81190: [libc++] Link against libatomic when it is found.

I'm not an expert in the details but this looks right to me.

Jun 4 2020, 1:51 PM · Restricted Project

Jun 1 2020

__simt__ committed rG06aaf0b3431f: Updated synopsis of <atomic> to match what is implemented (authored by __simt__).
Updated synopsis of <atomic> to match what is implemented
Jun 1 2020, 2:40 PM

Apr 7 2020

__simt__ added a comment to D77673: [libc++] Update the documentation for running Lit to reflect reality.

Yes! I can attest that the old text wasted a bunch of my time and the new text is what works.

Apr 7 2020, 6:00 PM · Restricted Project

Mar 23 2020

__simt__ added a comment to D76632: [libc++] Do not use futex if LIBCXX_HAS_MUSL_LIBC is ON.

What does the Linux syscall have to do with MUSL?

Mar 23 2020, 12:00 PM · Restricted Project

Mar 18 2020

__simt__ added inline comments to D68480: Implementation of C++20's P1135R6 for libcxx.
Mar 18 2020, 3:13 PM · Restricted Project, Restricted Project

Feb 28 2020

__simt__ added a comment to D74918: Add method to TargetInfo to get CPU cache line size.

If these values are part of the C++ target platform ABI, it seems to me the values for std::hardware_{constructive,destructive}_interference_size should be set by whoever has the authority to decide C++ platform ABI for specific platforms.
Assuming my thought in the previous sentence is correct; discussions on which values to chose for std::hardware_{constructive,destructive}_interference_size should happen in whichever forums decide C++ platform ABI for the various platforms? (Maybe for some platforms that forum might be clang-related fora like reviews.llvm.org, but probably not for all platforms).
With my (probably limited) understanding of the requirements, it seems like deriving std::hardware_{constructive,destructive}_interference_size from actual cache line size on a specific micro-architecture doesn't seem to be the right approach?

Feb 28 2020, 8:24 AM · Restricted Project

Feb 27 2020

__simt__ added a comment to D74918: Add method to TargetInfo to get CPU cache line size.

(I assume I'm not seeing a code review being used to veto a C++ Standard feature, but actually the other points are the reason for the red flag.)

Feb 27 2020, 4:02 PM · Restricted Project

Feb 25 2020

__simt__ created D75156: Some fixes for open breaks on MacOS and UBSan.
Feb 25 2020, 10:07 PM

Feb 17 2020

__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

This revision addresses the outstanding comments, and incorporates Louis' recommended macros for ulock detection.

Feb 17 2020, 4:25 PM · Restricted Project, Restricted Project

Feb 14 2020

__simt__ added a comment to D68480: Implementation of C++20's P1135R6 for libcxx.

Replies. Also noting that I will include an update to the implementation status HTML page.

Feb 14 2020, 8:41 AM · Restricted Project, Restricted Project

Jan 27 2020

__simt__ added a comment to D68480: Implementation of C++20's P1135R6 for libcxx.

Thanks Zoe!

Jan 27 2020, 1:02 PM · Restricted Project, Restricted Project

Jan 25 2020

__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

A lot of changes in this patch, mostly simplifications based on the areas that got feedback about complexity.

Jan 25 2020, 10:35 AM · Restricted Project, Restricted Project

Jan 9 2020

__simt__ added a comment to D68480: Implementation of C++20's P1135R6 for libcxx.

No problem. I just want to know what I need to do in the next patch in order to move forward.

Jan 9 2020, 2:00 PM · Restricted Project, Restricted Project

Jan 6 2020

__simt__ added a comment to D72240: Implement C++20 std::atomic_ref and test.

That's a creative use of __cxx_atomic_impl that I hadn't foreseen. Seems to work. Ok.

Jan 6 2020, 7:57 AM · Restricted Project, Restricted Project

Jan 2 2020

__simt__ added a comment to D71726: Let clang atomic builtins fetch add/sub support floating point types.
In D71726#1791904, @jfb wrote:

This generally seems fine. Does it work on most backends? I want to make sure it doesn't fail in backends :)

For x86_64, amdgcn, aarch64, armv7, mips64, it is translated to cmpxchg by AtomicExpandPass and backends did codegen successfully.

For hexagon, riscv32, it is translated to call of __atomic_fetch_add_4 for fadd float. This is concerning. Probably we need to add __atomic_fetch_{add|sub}_{f16|f32|f64} ?

Jan 2 2020, 8:14 AM · Restricted Project

Nov 18 2019

__simt__ added inline comments to D68480: Implementation of C++20's P1135R6 for libcxx.
Nov 18 2019, 8:23 PM · Restricted Project, Restricted Project

Nov 13 2019

__simt__ added a comment to D68480: Implementation of C++20's P1135R6 for libcxx.

Hi guys. Could I get some action items or other movement on this review? Would you like me to make it possible to merge it as disabled or as experimental, and send me DRs to fix afterwards?

Nov 13 2019, 10:02 AM · Restricted Project, Restricted Project

Oct 29 2019

__simt__ added a comment to D68480: Implementation of C++20's P1135R6 for libcxx.

Closing out some obsolete comments after changes and/or testing.

Oct 29 2019, 4:53 PM · Restricted Project, Restricted Project
__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

This revision enables cross-ABI compatibility for building the dylib and the user application with different combinations of these options:

Oct 29 2019, 4:36 PM · Restricted Project, Restricted Project

Oct 26 2019

__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

In this version I moved the tree barrier's core algorithm into the dylib so that any functional or performance issue found in it later could still be fixed without breaking ABI. By the same fact it narrows the visibility of the definition of the thread_local symbol it uses.

Oct 26 2019, 11:15 AM · Restricted Project, Restricted Project

Oct 24 2019

__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

In this update I repaired the usefulness of <atomic> in C++03 mode. Other headers won't be supported there, but I'm avoiding regression to <atomic>.

Oct 24 2019, 9:59 PM · Restricted Project, Restricted Project

Oct 20 2019

__simt__ added inline comments to D68480: Implementation of C++20's P1135R6 for libcxx.
Oct 20 2019, 10:05 AM · Restricted Project, Restricted Project

Oct 18 2019

__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

Oof, didn't attach the patch.

Oct 18 2019, 11:16 AM · Restricted Project, Restricted Project
__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

Added some documentation for the semaphore and barrier algorithms as comments.

Oct 18 2019, 11:16 AM · Restricted Project, Restricted Project
__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

Fixed an incompatibility between the _Atomic(T) backend of <atomic> and the Futex function SFINAE in <__threading_support>.

Oct 18 2019, 9:34 AM · Restricted Project, Restricted Project
__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

Simplified how the contention state is conditionally-used.

Oct 18 2019, 7:32 AM · Restricted Project, Restricted Project

Oct 17 2019

__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

Refactored the semaphores into layers that each do one clear thing, and dispensed with a lot of #ifdefs. Moved as much semaphore code as possible out of the header and into the dylib.

Oct 17 2019, 7:43 PM · Restricted Project, Restricted Project

Oct 10 2019

__simt__ added a comment to D68480: Implementation of C++20's P1135R6 for libcxx.

Are the lock free algorithms used by this implementation published somewhere? That would give me a lot more confidence in their correctness.

Oct 10 2019, 8:25 PM · Restricted Project, Restricted Project
__simt__ added inline comments to D68480: Implementation of C++20's P1135R6 for libcxx.
Oct 10 2019, 2:53 PM · Restricted Project, Restricted Project

Oct 9 2019

__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

Was missing an edit to the header CMakeLists to install the new headers.

Oct 9 2019, 12:13 PM · Restricted Project, Restricted Project

Oct 8 2019

__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

Sorry for the delay posting the updated patch that addressed the recent comments, but I ran into some build issues.

Oct 8 2019, 9:59 PM · Restricted Project, Restricted Project
__simt__ added a comment to D68480: Implementation of C++20's P1135R6 for libcxx.

I've processed a number of issues for my next patch.

Oct 8 2019, 3:45 PM · Restricted Project, Restricted Project

Oct 6 2019

__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

My Mac tests didn't catch some Linux issues when I added __ almost everywhere.

Oct 6 2019, 4:36 PM · Restricted Project, Restricted Project
__simt__ added a comment to D68480: Implementation of C++20's P1135R6 for libcxx.

Closed some of the comments that have been addressed.

Oct 6 2019, 10:43 AM · Restricted Project, Restricted Project
__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

This new patch has more context, more __, fewer escapes from the CUDA port.

Oct 6 2019, 10:41 AM · Restricted Project, Restricted Project

Oct 5 2019

__simt__ added a comment to D68480: Implementation of C++20's P1135R6 for libcxx.

Urg, sorry for struggling with UX here.

Oct 5 2019, 9:08 AM · Restricted Project, Restricted Project
__simt__ added inline comments to D68480: Implementation of C++20's P1135R6 for libcxx.
Oct 5 2019, 9:06 AM · Restricted Project, Restricted Project

Oct 4 2019

__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

Cleaned up a dead macro

Oct 4 2019, 1:40 PM · Restricted Project, Restricted Project
__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

Removed some mentions of CUDA that slipped by

Oct 4 2019, 1:26 PM · Restricted Project, Restricted Project
__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

More cleaning

Oct 4 2019, 1:26 PM · Restricted Project, Restricted Project
__simt__ updated the diff for D68480: Implementation of C++20's P1135R6 for libcxx.

Cleaned up the patch a bit.

Oct 4 2019, 1:22 PM · Restricted Project, Restricted Project
__simt__ created D68480: Implementation of C++20's P1135R6 for libcxx.
Oct 4 2019, 1:13 PM · Restricted Project, Restricted Project

Jul 26 2019

__simt__ added a comment to D65348: enable <atomic> header on systems without thread-support.

I think we want people to use -ffreestanding more for things like this, so the part where this is circumvented isn't clearly the right choice. The rest seems fine, and is exactly the reason why I created _LIBCPP_ATOMIC_ONLY_USE_BUILTINS.

Jul 26 2019, 2:03 PM · Restricted Project

Jun 13 2019

__simt__ added a comment to D62393: [OPENMP][NVPTX]Mark parallel level counter as volatile..
In D62393#1542042, @tra wrote:

C++ volatile will give you that. You also rely on atomicity. C++ volatile does not guarantee that, even if NVPTX does happen to. It's a mere coincidence. What if next PTX revision provides a better way to implement C++ volatile without providing atomicity? Then your code will all of a sudden break in new and exciting ways.

Jun 13 2019, 10:26 AM · Restricted Project
__simt__ added a comment to D62393: [OPENMP][NVPTX]Mark parallel level counter as volatile..

No, I'm not relying on the non-optimization of atomics. I need both, volatile semantics and atomic. So, the compiler could not optimize out memory accesses and the access would be atomic.

Jun 13 2019, 10:16 AM · Restricted Project
__simt__ added a comment to D62393: [OPENMP][NVPTX]Mark parallel level counter as volatile..
In D62393#1541969, @tra wrote:

@reames , @tra , @Hahnfeld , @jlebar , @chandlerc, I see that this was discussed in D50391 (in terms of using PTX's volatile to provide atomic lowering), but it's not clear to me that using volatile with atomic semantics in LLVM is something we guarantee will work (even in CUDA mode). I imagine that we'd need to lower these in terms of relaxed atomics in Clang for this to really be guaranteed to work correctly.

Do I understand it correctly that the argument is about using C++ volatile with the assumption that those will map to ld.volatile/st.volatile, which happen to provide sufficiently strong guarantees to be equivalent of LLVM's atomic monotonic operations?

If that's the case, then I would agree that it's an implementation detail one should not be relying on. If atomicity is needed, we should figure out a way to express that in C++.

In practice, the standard C++ library support in cuda is somewhat limited. I don't think atomic<> works, so volatile might be a 'happens to work' short-term workaround. If that's the case, then there should a comment describing what's going on here and TODO to fix it when better support for atomics on GPU is available.

Another option would be to use atomic*() functions provided by CUDA, but those do have limited functionality on older GPUs.

Yet another alternative is to explicitly use ld.volatile/st.volatile from inline assembly. I don't think we have it plumbed as clang builtin.

Artem, thanks for your comment. But we need not only atomicity, bht also we need to command the ptxas compiler to not optimize accesses to parallelLevel. According to several comments, (like this one https://stackoverflow.com/a/1533115) it is recommended to use volatile modifier in Cuda in such cases. If clang does not provide the required level of support for Cuda volatile, I think this is an incompatibility with nvcc.
Also, I already thought about using PTX instructions directly. Probably, you're right that it would be better to use them if you're sure that there is a difference between nvcc and clang.

Jun 13 2019, 9:47 AM · Restricted Project

Jun 11 2019

__simt__ added a comment to D62393: [OPENMP][NVPTX]Mark parallel level counter as volatile..

I know some things about CUDA, volatile and C++. Let's see if I can understand the part of the proposed change that involves these. I don't understand the part about the test but I don't need to, I'll ignore that.

The gist of the issue is that parallelLevel table should really be atomic<> because of data-races on it (that was a bug prior to this, maybe there are more such bugs lying around), except there's a problem with the obvious fix: atomic<> is not available in CUDA (yet) so it's not an option to fix this issue. The next best thing we have instead is volatile.

Now, volatile in PTX (e.g. asm("ld.volatile...[x];")) and volatile (e.g. "volatile ...x;") in C++ source like this, are not exactly the same thing. When CUDA says that volatile is equivalent memory_order_relaxed, it's saying something clear (I think) about the PTX level code but it's still being pretty vague about CUDA C++ level code. OTOH it's entirely possible for Clang to do something with either atomic<> or volatile that isn't valid for the other -- and that's a different can of worms than, say, NVCC which does {whatever NVCC does, it's not the compiler you're using}.

However, since people do use CUDA C++ volatile this way a lot already, you can't really have a good CUDA toolchain unless it is the case (including, by accident) that it works for this purpose. In other words, it's probably reasonable to assume this in your code because every other code would be on fire otherwise, and it's not on fire, so far as we can tell.

It might be worth it to prepare your code for the eventual arrival of atomic<> on CUDA. That is, maybe create a template alias on T with some helper functions, just enough for your use. It might make this code more self-documenting and make it easy to make it 100% legit later on.

Hi Olivier, thanks for your comments. You're absolutely right. Actually, we're using both compilers, nvcc and clang (under different conditions, though). Marking the variable volatile does not break it in the LLVM level. Maybe, it is by accident, but I rather doubt in this.
Do you suggest to create a template function that will provide the access to the parallelLevel variable? Amd when the atomic<> is supported by Cuda change the type of this variable to atomic<> so the compiler could automatically instantiate this template function with the proper type, right? Or you have something different in mind? If so, could provide a small example of your idea?

Jun 11 2019, 2:37 PM · Restricted Project
__simt__ added a comment to D62393: [OPENMP][NVPTX]Mark parallel level counter as volatile..

I know some things about CUDA, volatile and C++. Let's see if I can understand the part of the proposed change that involves these. I don't understand the part about the test but I don't need to, I'll ignore that.

Jun 11 2019, 1:56 PM · Restricted Project

Mar 4 2019

__simt__ added a comment to D56913: decoupling Freestanding atomic<T> from libatomic.a.

This commit broke the atomic lldb data formatter.

http://lab.llvm.org:8080/green/view/LLDB/job/lldb-cmake/21037/

@shafik @jingham

Mar 4 2019, 11:10 AM · Restricted Project

Mar 3 2019

__simt__ added inline comments to D56913: decoupling Freestanding atomic<T> from libatomic.a.
Mar 3 2019, 9:37 AM · Restricted Project

Feb 25 2019

__simt__ added a comment to D56913: decoupling Freestanding atomic<T> from libatomic.a.

Hey guys, can I get additional feedback or else proceed with this patch?

Feb 25 2019, 2:29 PM · Restricted Project

Feb 14 2019

__simt__ added a comment to D56913: decoupling Freestanding atomic<T> from libatomic.a.

Dear other reviewers, what else needs to happen here?

Feb 14 2019, 9:13 AM · Restricted Project

Feb 12 2019

__simt__ updated the diff for D56913: decoupling Freestanding atomic<T> from libatomic.a.

This version addresses the preceding comments and passes libcxx tests across c++03, 11, 14 and 17 modes.

Feb 12 2019, 10:19 AM · Restricted Project

Feb 11 2019

__simt__ added a comment to D56913: decoupling Freestanding atomic<T> from libatomic.a.

Would it make sense to decide whether we want to use GCC's non-lockfree atomics or not based on a configuration macro that's not _LIBCPP_FREESTANDING?

Feb 11 2019, 11:52 AM · Restricted Project

Feb 8 2019

__simt__ updated the diff for D56913: decoupling Freestanding atomic<T> from libatomic.a.

This version passes libcxx tests with each combination of path that can be used (force GCC, force C11, force freestanding+non-lock-free). There were quite a few problems around volatile that I had not addressed yet, apologies.

Feb 8 2019, 2:59 PM · Restricted Project

Feb 7 2019

__simt__ added a comment to D56913: decoupling Freestanding atomic<T> from libatomic.a.

I need to test the GCC path better, it still has some bugs. Be right back.

Feb 7 2019, 9:21 AM · Restricted Project

Feb 6 2019

__simt__ updated the diff for D56913: decoupling Freestanding atomic<T> from libatomic.a.

In this version:

Feb 6 2019, 9:15 PM · Restricted Project

Feb 5 2019

__simt__ added a comment to D56913: decoupling Freestanding atomic<T> from libatomic.a.

I will come back with another patch that addresses these comments.

Feb 5 2019, 9:28 PM · Restricted Project

Feb 4 2019

__simt__ updated the diff for D56913: decoupling Freestanding atomic<T> from libatomic.a.

In this version I've restored the __cxx_atomic_... layer to which both the GCC and C11 backends map. This addresses the comment about introducing more functions named __c11_atomic... which are not part of the C11 builtin set. I do not introduce any new versions of _Atomic anymore.

Feb 4 2019, 5:37 PM · Restricted Project
__simt__ added a comment to D56913: decoupling Freestanding atomic<T> from libatomic.a.

Thanks for the comments, Louis, responses below.

Feb 4 2019, 9:26 AM · Restricted Project

Jan 31 2019

__simt__ added a comment to D56913: decoupling Freestanding atomic<T> from libatomic.a.
In D56913#1379046, @jfb wrote:

Should all these macros be in __config?

Jan 31 2019, 12:18 PM · Restricted Project
__simt__ updated the diff for D56913: decoupling Freestanding atomic<T> from libatomic.a.

Removed an inadvertent #define left in there for testing.

Jan 31 2019, 9:02 AM · Restricted Project
__simt__ updated the diff for D56913: decoupling Freestanding atomic<T> from libatomic.a.

Would be better if it passed the libcxx tests with the feature turned on. Like now.

Jan 31 2019, 8:56 AM · Restricted Project
__simt__ updated the diff for D56913: decoupling Freestanding atomic<T> from libatomic.a.

Fixed some spurious whitespace changes I didn't intend.

Jan 31 2019, 7:34 AM · Restricted Project
__simt__ updated the diff for D56913: decoupling Freestanding atomic<T> from libatomic.a.

Simplified the changes significantly. By switching my back-end to slide under the C11 side instead of the GCC/Clang side, I can live without the new interposer layer.

Jan 31 2019, 7:31 AM · Restricted Project

Jan 30 2019

__simt__ added a comment to D56913: decoupling Freestanding atomic<T> from libatomic.a.

Quick update before a longer update: I have a simpler patch on the way.

Jan 30 2019, 10:16 PM · Restricted Project

Jan 18 2019

__simt__ added a comment to D56913: decoupling Freestanding atomic<T> from libatomic.a.
In D56913#1363801, @jfb wrote:

One downside to forwarding layers is that if you don't have an always inline attribute, some build might not inline. This leads to code bloat and crappy codegen because the memory_order attribute is no longer a known constexpr value. Maybe we should have always inline?

You don't define LIBCXX_FREESTANDING yet, right?

I think at a high level this looks fine.

Jan 18 2019, 5:27 PM · Restricted Project
__simt__ updated the diff for D56913: decoupling Freestanding atomic<T> from libatomic.a.

Updated the patch with a bit higher-quality and better-tested code than what I originally showed.

Jan 18 2019, 5:14 PM · Restricted Project
__simt__ added a comment to D56534: [Verifier] Add verification of unaligned atomic load/store.

With apologies, I would just like to tack a note into this thread that the entire *field* of formal memory model proofs involving partially-overlapping atomics is a single paper (last I knew, https://www.cl.cam.ac.uk/~pes20/popl17/mixed-size.pdf). The paper says mixed-size, but the key point is not-perfectly-overlapping.

Jan 18 2019, 3:42 PM
__simt__ added a comment to D56913: decoupling Freestanding atomic<T> from libatomic.a.

Just a clarification - please evaluate the design aspects first. There are nits that I know are wrong and am still working on.

Jan 18 2019, 1:24 PM · Restricted Project
__simt__ created D56913: decoupling Freestanding atomic<T> from libatomic.a.
Jan 18 2019, 7:59 AM · Restricted Project

Dec 10 2018

__simt__ added a comment to D55517: Remove `_VSTD`.

Hello Eric, everyone else,

Dec 10 2018, 2:16 PM