similar to: [RFC] Coroutine and pthread_self

Displaying 20 results from an estimated 100 matches similar to: "[RFC] Coroutine and pthread_self"

2016 Jul 15
2
RFC: Coroutine Optimization Passes
Hi all: I've included below a brief description of coroutine related optimization passes and some questions/thoughts related to them. Looking forward to your feedback, comments and questions. Thank you! Roadmap: ======== 1) Get agreement on coroutine representation and overall direction. .. repeat 1) until happy http://lists.llvm.org/pipermail/llvm-dev/2016-June/100838.html (Initial)
2016 Jun 09
2
[RFC] LLVM Coroutines
On Thu, Jun 9, 2016 at 1:49 PM, Eli Friedman <eli.friedman at gmail.com> wrote: >> Right... but that doesn't mean the call to the suspend intrinsic has to be >> the last non-terminator instruction in the basic block before you run >> CoroSplit. You can split the basic block in CoroSplit so any instructions >> after the suspend call are part of a different basic
2016 Jun 15
2
[RFC] LLVM Coroutines
Hi Sanjoy, >> I'm not familiar with fiber-type APIs, but I assume fiber_fork is like >> setjmp, in that it can "return twice"? Yes, user-mode stack switching API are somewhat similar to setjmp. Here are links to a doc page and implementation, just in case you are curious: http://www.boost.org/doc/libs/1_59_0/libs/context/doc/html/context/context.html
2016 Jun 12
2
[RFC] LLVM Coroutines
Hi Eli: >> Block1: >> %0 = call i8 coro.suspend() >> switch i8 %0, label suspend1 [i8 0 %return] ; or icmp + br i1 >> Suspend1: >> switch i8 %0, label %resume1 [i8 1 %destroy1] ; or icmp + br i1 >> >> This doesn't look right: intuitively the suspend happens after the return >> block runs. Perhaps, but, that is not the intended
2018 Feb 28
1
coro transformations insert unreachable in destroy fn?
I have this input IR in the final cleanup block of my coroutine: // call the free function call fastcc void %22(%Allocator* %20, %"[]u8"* byval %4), !dbg !244 // based on whether this is an early return or a normal return, we want to // either return to the caller, or resume the handle of the awaiter br i1 %19, label %Resume, label %Return, !dbg !244 Resume:
2018 Mar 29
0
workaround for CoroSplit not spilling alloca?
My frontend is emitting an array (here called %error_return_trace_addresses). You can see we take the address of the first element and store it ; Function Attrs: nobuiltin noinline nounwind optnone define internal fastcc i8* @failing(%StackTrace* nonnull, %Allocator*, i16*) unnamed_addr #3 !dbg !273 { Entry: %error_return_trace_addresses = alloca [1 x i64], align 8 %error_return_trace =
2016 Jun 09
2
Fwd: [RFC] LLVM Coroutines
Hi Eli: Thank you very much for your comments! >> If you need some sort of unusual control flow construct, make it a >> proper terminator instruction I would love to. I was going by the advice in "docs/ExtendingLLVM.rst": "WARNING: Adding instructions changes the bitcode format, and it will take some effort to maintain compatibility with the previous
2017 Apr 15
1
[PATCH] ringtest: fix an assert statement
There is an || vs && typo so the assert can never be triggered. Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com> diff --git a/tools/virtio/ringtest/main.c b/tools/virtio/ringtest/main.c index 022ae95a06bd..453ca3c21193 100644 --- a/tools/virtio/ringtest/main.c +++ b/tools/virtio/ringtest/main.c @@ -87,7 +87,7 @@ void set_affinity(const char *arg) cpu = strtol(arg,
2017 Apr 15
1
[PATCH] ringtest: fix an assert statement
There is an || vs && typo so the assert can never be triggered. Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com> diff --git a/tools/virtio/ringtest/main.c b/tools/virtio/ringtest/main.c index 022ae95a06bd..453ca3c21193 100644 --- a/tools/virtio/ringtest/main.c +++ b/tools/virtio/ringtest/main.c @@ -87,7 +87,7 @@ void set_affinity(const char *arg) cpu = strtol(arg,
2016 Jun 11
4
[RFC] LLVM Coroutines
On Fri, Jun 10, 2016 at 5:25 PM, Gor Nishanov <gornishanov at gmail.com> wrote: > Hi Eli: > > >> Naively, you would expect that it would be legal to hoist the store... > >> but that breaks your coroutine semantics because the global could be > mutated > >> between the first return and the resume. > > Hmmm... I don't see the problem. I think
2018 Feb 08
0
llvm.coro.size - why can't we call it from outside the coroutine?
http://llvm.org/docs/Coroutines.html#llvm-coro-size-intrinsic The @llvm.coro.size intrinsic returns a value which lowers to a constant representing the number of bytes needed for the coroutine frame of the current function. This would presumably be used to call malloc with the return value. I noticed, however, that the example code does not check for the return value of malloc being NULL. It is
2016 Jul 21
2
RFC: LLVM Coroutine Representation, Round 2
cc llvm-dev On Thu, Jul 21, 2016 at 9:57 AM, Vadim Chugunov <vadimcn at gmail.com> wrote: > Hi Gor, > Does you design support resumption with parameter(s)? (such as Python's > generator.send(x)). I suppose the "promise" could be used for passing data > both ways, but if that's the plan, please mention this explicitly in the > design doc. > Also, how is
2010 Nov 21
0
StarCraft II, low CPU/GPU usage
Hi all, I'm trying to properly understand why SC2 doesn't use CPU/GPU at 100%, sleeps all the time. I've managed to instrument SleepEx function, and I found out that the game spawns a lot of threads which are put to sleep by themselves 95% of the time if not more. This should definitely be on of the (if not main) reason why SC2 doesn't use the CPU/GPU at 100% and both are set to
2020 Apr 07
0
why virConnectDomainEventRegisterAny can't alway trigger the callback ,how can i get a stable callback ?
hi, all: I create a vm with six nic, after the vm start, i delete tree nics. all the three nic delete logic will happen in a thread , every nic delete has the following process: int vnf_control_del_network(void *arg) { 。。。。。 call_id = virConnectDomainEventRegisterAny(conn, dom, VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED, VIR_DOMAIN_EVENT_CALLBACK(vnf_control_del_network_cb), cb_para,
2015 Apr 09
2
[LLVMdev] __sync_add_and_fetch in objc block for global variable on ARM
Hi Tim ---------------------------------------- > Date: Wed, 8 Apr 2015 06:53:44 -0700 > Subject: Re: [LLVMdev] __sync_add_and_fetch in objc block for global variable on ARM > From: t.p.northover at gmail.com > To: alexey.perevalov at hotmail.com > CC: llvmdev at cs.uiuc.edu > >> in disas I see dmb ish instruction, but I don't know is it enough. > > There should
2016 Jun 12
2
[RFC] LLVM Coroutines
(Dropped llvm-dev by accident. Putting it back) HI Eli: >> coro.barrier() doesn't work: if the address of the alloca doesn't escape, >> alias analysis will assume the barrier can't read or write the value of >> the alloca, so the barrier doesn't actually block code movement. Got it. I am new to this and learning a lot over the course of this thread. Thank you
2020 Feb 06
2
Why is lldb telling me "variable not available"?
Hi all, I’m working on improving the debugging experience for C++20 coroutines when compiled with LLVM/Clang, and I could use some help from someone who understands debug information and DWARF (knowledge of coroutines isn't necessary, I don't think). Specifically, I’m trying to improve lldb’s behavior when showing variables in the current stack frame, when that frame corresponds to a
2001 Jul 11
1
Porting MS Structured Exception Handling to Linux.
Hello all, I am trying to port some more code from windows 2000 to linux. The specific functionality I would like to port is called "Structured Exception Handling" and it works like so: 1. Define a function which based upons a signal throws an exceptoion. For example: void translateException(unsigned int u, EXCEPTION_POINTERS* pExp) { switch (u) { case (unsigned
2016 Jun 13
3
[RFC] LLVM Coroutines
Hi Sanjoy: >> Now in the above CFG %val can be folded to 10, but in reality you need >> a PHI of 10 and 20 Quick answer: folding %val to 10 is OK, but, I would prefer it to be 'undef' or even catch it in the verifier as it is a programmer/frontend error. Details are in the second half of my reply. I would like to start with the thought experiment you suggested, as it might
2018 Mar 02
1
is it allowed to use musttail on llvm.coro.resume?
It makes sense that you would be able to do this: %save1 = llvm.coro.save() %unused = musttail call llvm.coro.resume(%some_handle) %x = llvm.coro.suspend() ... But the docs for musttail say: > The call must immediately precede a ret instruction, or a pointer bitcast followed by a ret instruction. Should this be amended to allow a musttail to be followed by llvm.coro.suspend() ? Regards,