nir/opt_access: don't check restrict in can_reorder()
authorRhys Perry <pendingchaos02@gmail.com>
Tue, 1 Dec 2020 14:38:32 +0000 (14:38 +0000)
committerMarge Bot <eric+marge@anholt.net>
Wed, 9 Dec 2020 14:41:38 +0000 (14:41 +0000)
ACCESS_NON_WRITEABLE means that the memory is read-only, not the variable,
so we don't have to check for aliasing.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6483>

src/compiler/nir/nir_opt_access.c

index 2dc2e6e..d170168 100644 (file)
@@ -27,9 +27,8 @@
  *
  * - Infer readonly when it's missing.
  * - Infer ACCESS_CAN_REORDER when the following are true:
- *   - Either there are no writes, or ACCESS_NON_WRITEABLE and ACCESS_RESTRICT
- *     are both set. In either case there are no writes to the underlying
- *     memory.
+ *   - Either there are no writes, or ACCESS_NON_WRITEABLE is set. In either
+ *     case there are no writes to the underlying memory.
  *   - ACCESS_VOLATILE is not set.
  *
  * If these conditions are true, then image and buffer reads may be treated as
@@ -160,11 +159,8 @@ can_reorder(struct access_state *state, enum gl_access_qualifier access,
       state->images_written;
 
    /* Can we guarantee that the underlying memory is never written? */
-   if (!is_any_written ||
-       ((access & ACCESS_NON_WRITEABLE) &&
-        (access & ACCESS_RESTRICT))) {
+   if (!is_any_written || (access & ACCESS_NON_WRITEABLE))
       return !(access & ACCESS_VOLATILE);
-   }
 
    return false;
 }