[PATCH] D26348: Allow convergent attribute for function arguments

Nicolai Hähnle via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 16 15:04:09 PST 2016


nhaehnle updated this revision to Diff 78270.
nhaehnle added a comment.

@mehdi_amini: I changed Intrinsics.td like I suggested, so that only LangRef
should matter.

In LangRef, I removed the 'source of divergence' part and instead made the
definition of compatibility with two runs as discussed in the sub-thread
with @jlebar more explicit. I don't know if that's more to your taste, at
least I couldn't find anything clearly wrong with it yet.

@hfinkel: I'm not sure what you were replying to exactly. The current
version does not talk about control-dependencies anymore at all, because
that language does not make it obvious what should happen with Mehdi's
example, i.e. you're not allowed to eliminate the branches in:

  if (cond) {
    Tmp1 = Foo(v [convergent])
  } else {
    Tmp2 = Foo(v [convergent])
  }
  Tmp3 = phi [Tmp1, Tmp2]

"Control-dependencies on a value" doesn't really capture that.  Unless you
understand that the control-dependencies of a value depend on which basic
block you're reading the value in.  But that's not how people would
generally understand it, right?


https://reviews.llvm.org/D26348

Files:
  docs/LangRef.rst
  include/llvm/IR/Instructions.h
  include/llvm/IR/Intrinsics.td
  include/llvm/IR/IntrinsicsAMDGPU.td
  lib/AsmParser/LLParser.cpp
  lib/IR/Verifier.cpp
  lib/Transforms/Scalar/GVNHoist.cpp
  lib/Transforms/Utils/SimplifyCFG.cpp
  test/Bitcode/attributes.ll
  test/Transforms/GVNHoist/hoist-convergent.ll
  test/Transforms/InstCombine/select-call.ll
  test/Transforms/SimplifyCFG/convergent.ll
  utils/TableGen/CodeGenIntrinsics.h
  utils/TableGen/CodeGenTarget.cpp
  utils/TableGen/IntrinsicEmitter.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D26348.78270.patch
Type: text/x-patch
Size: 15792 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161116/f2df12ad/attachment.bin>


More information about the llvm-commits mailing list