@@ -93,10 +93,23 @@ class FunctionBuilder {
9393 // matching barrier phases.
9494 void createCheckAllActiveWaitingCall (ImplicitLocOpBuilder &b, int activeMask,
9595 Value pred, Operation *insertPoint);
96+ // verifyBarrierCanInit: ensure the barrier is currently invalidated before
97+ // initializing it again.
98+ void createVerifyBarrierCanInitCall (ImplicitLocOpBuilder &b, Value mbar,
99+ Operation *insertPoint);
100+ // verifyBarrierInitialized: ensure the barrier has been initialized and not
101+ // invalidated before it is used.
102+ void createVerifyBarrierInitializedCall (ImplicitLocOpBuilder &b, Value mbar,
103+ Value pred, Operation *insertPoint);
96104 // initBarrierState: Initialize the tracked barrier state to phase 0 and set
97- // both the initial and current arrival counts.
105+ // both the initial and current arrival counts. A zero state denotes an
106+ // invalidated/uninitialized barrier.
98107 void createInitBarrierStateCall (ImplicitLocOpBuilder &b, Value mbar,
99108 int count, Operation *insertPoint);
109+ // invalidateBarrierState: clear the tracked barrier lifecycle state and any
110+ // waiting bits for the barrier.
111+ void createInvalidateBarrierStateCall (ImplicitLocOpBuilder &b, Value mbar,
112+ Operation *insertPoint);
100113 // verifyBarrierArrive: Check that applying the arrive count would not drive
101114 // the tracked current count negative. Triggers an assertion on failure.
102115 void createVerifyBarrierArriveCall (ImplicitLocOpBuilder &b, Value mbar,
@@ -145,6 +158,16 @@ class FunctionBuilder {
145158 void createTrackVisibleReadsCall (ImplicitLocOpBuilder &b, Value mbar,
146159 int thread, Value pred, MemType memType,
147160 Operation *insertPoint);
161+ // clearBarrierWriteTracking: clear all write tracking associated with the
162+ // given barrier row.
163+ void createClearBarrierWriteTrackingCall (ImplicitLocOpBuilder &b, Value mbar,
164+ Value pred, MemType memType,
165+ Operation *insertPoint);
166+ // clearBarrierReadTracking: clear all read tracking associated with the
167+ // given barrier row.
168+ void createClearBarrierReadTrackingCall (ImplicitLocOpBuilder &b, Value mbar,
169+ Value pred, MemType memType,
170+ Operation *insertPoint);
148171 // transferVisibleWrites: transfer write visibility tracked by a barrier to
149172 // all threads in threadMask.
150173 void createTransferVisibleWritesCall (ImplicitLocOpBuilder &b, Value mbar,
0 commit comments