agx: Implement barriers
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21062>
This commit is contained in:

committed by
Marge Bot

parent
251f6fb224
commit
f857795e83
@@ -776,6 +776,16 @@ agx_emit_intrinsic(agx_builder *b, nir_intrinsic_instr *instr)
|
|||||||
return agx_load_compute_dimension(
|
return agx_load_compute_dimension(
|
||||||
b, dst, instr, AGX_SR_THREAD_POSITION_IN_THREADGROUP_X);
|
b, dst, instr, AGX_SR_THREAD_POSITION_IN_THREADGROUP_X);
|
||||||
|
|
||||||
|
case nir_intrinsic_memory_barrier_buffer:
|
||||||
|
return agx_memory_barrier(b);
|
||||||
|
|
||||||
|
case nir_intrinsic_control_barrier:
|
||||||
|
return agx_threadgroup_barrier(b);
|
||||||
|
|
||||||
|
case nir_intrinsic_memory_barrier_shared:
|
||||||
|
/* Always seen with a control_barrier */
|
||||||
|
return NULL;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "Unhandled intrinsic %s\n",
|
fprintf(stderr, "Unhandled intrinsic %s\n",
|
||||||
nir_intrinsic_infos[instr->intrinsic].name);
|
nir_intrinsic_infos[instr->intrinsic].name);
|
||||||
|
@@ -308,6 +308,12 @@ op("writeout", (0x48, 0xFF, 4, _), dests = 0, imms = [WRITEOUT], can_eliminate =
|
|||||||
op("block_image_store", (0xB1, 0xFF, 10, _), dests = 0, srcs = 2,
|
op("block_image_store", (0xB1, 0xFF, 10, _), dests = 0, srcs = 2,
|
||||||
imms = [FORMAT, DIM], can_eliminate = False)
|
imms = [FORMAT, DIM], can_eliminate = False)
|
||||||
|
|
||||||
|
# Barriers
|
||||||
|
op("threadgroup_barrier", (0x0068, 0xFFFF, 2, _), dests = 0, srcs = 0,
|
||||||
|
can_eliminate = False)
|
||||||
|
op("memory_barrier", (0x96F5, 0xFFFF, 2, _), dests = 0, srcs = 0,
|
||||||
|
can_eliminate = False)
|
||||||
|
|
||||||
# Convenient aliases.
|
# Convenient aliases.
|
||||||
op("mov", _, srcs = 1)
|
op("mov", _, srcs = 1)
|
||||||
op("not", _, srcs = 1)
|
op("not", _, srcs = 1)
|
||||||
|
Reference in New Issue
Block a user