Displaying 8 results from an estimated 8 matches for "hgreve".
Did you mean:
greve
2020 Jul 16
2
Selection DAG chain question
Yea. I think AMD chains the node they're expanding into, but they don't
chain it into an _existing_ chain. e.g. adding A->B to the DAG is ok. But
adding A->B and next C->D with B->C is the problem. I appreciate the input
On Thu, Jul 16, 2020 at 2:04 PM Matt Arsenault <arsenm2 at gmail.com> wrote:
>
>
> > On Jul 16, 2020, at 17:00, Hendrik Greving
2020 Jul 16
2
Selection DAG chain question
> No, non-sideeffecting operations can be legalized as compiler-rt calls
Right, but not as "regular" nodes with side-effects? I guess you could
search and analyze the DAG manually but that seems hacky. Maybe something
that one day LLVM could support natively.
On Thu, Jul 16, 2020 at 11:55 AM Matt Arsenault <arsenm2 at gmail.com> wrote:
>
>
> On Jul 16, 2020, at
2020 May 19
2
LLVM's loop unroller & llvm.loop.parallel_accesses
Skipping the clang question for now, this had to be a loop pragma of some
kind. One step back: what we really need is a way to express that memory
accesses between iterations can be re-ordered. The code that's being
compiled _is_ noalias, but we don't _have_ to use noalias semantics, e.g.
loop parallel semantics are sufficient. What's missing is a way to express
that past the llvm
2020 May 18
2
LLVM's loop unroller & llvm.loop.parallel_accesses
Would you guys be open to supporting a new hint with the right semantics,
like e.g. llvm.loop.noalias_accesses?! I would need to find support in
clang however and the main point of support would be the loop unroller
behaving as stated in the OP.
On Thu, May 14, 2020 at 3:04 PM Michael Kruse <llvmdev at meinersbur.de> wrote:
> Trivial example:
>
> #pragma clang loop
2020 Jul 16
2
Selection DAG chain question
> Chain doesn't guarantee that operations on parallel chains don't get
interleaved
This would be a sequential chain...
> This is the case for all operations expanded as library calls
I think their originating node already has a chain (i.e. mem operand or
side effect in llvm-ir). My case is a arithmetic node without ordering
constraints (divrem) getting lowered into sth that _does_
2020 Jul 17
2
Selection DAG chain question
newbee here. What's the difference between glue and chain?
Why can't we add chains to any node we want?
On Fri, Jul 17, 2020, 10:25 PM Björn Pettersson A via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> Still sounds to me as Glue might help (as already proposed by Craig), but
> maybe I’ve misunderstood something.
>
>
>
> Another option is to do a simple
2020 May 14
3
LLVM's loop unroller & llvm.loop.parallel_accesses
This is interesting! So are you saying that loop.parallel_accesses strictly
loop parallel, and says nothing about aliasing? I see, I guess we may
have been "abusing" the hint and re-purposed it. But isn't llvm's
vectorizer using loop.parallel_accesses to vectorize loops including
vectorize memory accesses that if you ignore loop-carried dependencies,
usually means effectively
2020 Jul 20
2
Selection DAG chain question
I did it by code preparing into an intrinsic that has side effects. Pseudo
instruction would work as well. I'm not sure if glue would help, since the
nodes A->B, C->D from example above are not necessarily adjacent.
More hooks into the selection DAG builder may be an idea for a LLVM
extension. For example in this case, custom allowing for a node to be built
with an existing chain would