[PATCH] D17471: [NVPTX] Annotate param loads/stores as mayLoad/mayStore.

Justin Lebar via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 1 11:21:02 PST 2016


jlebar added a comment.

In http://reviews.llvm.org/D17471#365176, @jholewinski wrote:

> I'm not sure I understand the relation to non-param loads/stores.  Param loads/stores will never alias another address space, so arbitrary reordering with other loads/stores should be legal.  Can you show an example of what you're seeing?


I looked more closely at the thing we were looking at, and you're right, it's unrelated.

However, param loads/stores *can* alias with the global address space, yes?  So given something like

  a = ld.global [A]
  st.param [B]
  if (...) {
    // use a
  }

we cannot safely sink the load of 'a' into the branch:

  st.param [B]
  if (...) {
    a = ld.global [A]
    // use a
  }

because A and B may alias.

Or, even if that's not possible, then one could conceive of a situation where we somehow have a param pointer aliasing another param:

  param i32 A;
  param i32* B = &A;
  // now we have the same problem.

Anyway I agree this is mostly academic, given the kind of code we (currently) generate.


http://reviews.llvm.org/D17471





More information about the llvm-commits mailing list