MCPcopy Index your code
hub / github.com/tinygrad/tinygrad / release_mem

Method release_mem

tinygrad/runtime/ops_amd.py:110–131  ·  view source on GitHub ↗
(self, address=0x0, value=0, data_sel=0, int_sel=2, ctxid=0, cache_flush=False)

Source from the content-addressed store, hash-verified

108 return self
109
110 def release_mem(self, address=0x0, value=0, data_sel=0, int_sel=2, ctxid=0, cache_flush=False):
111 if self.dev.target[0] != 9:
112 cache_flags_dw = 0 if not cache_flush else (self.pm4.PACKET3_RELEASE_MEM_GCR_GLV_INV | self.pm4.PACKET3_RELEASE_MEM_GCR_GL1_INV \
113 | self.pm4.PACKET3_RELEASE_MEM_GCR_GL2_INV | self.pm4.PACKET3_RELEASE_MEM_GCR_GLM_WB \
114 | self.pm4.PACKET3_RELEASE_MEM_GCR_GLM_INV | self.pm4.PACKET3_RELEASE_MEM_GCR_GL2_WB | self.pm4.PACKET3_RELEASE_MEM_GCR_SEQ)
115
116 event_dw = self.pm4.PACKET3_RELEASE_MEM_EVENT_TYPE(self.pm4.CACHE_FLUSH_AND_INV_TS_EVENT) \
117 | self.pm4.PACKET3_RELEASE_MEM_EVENT_INDEX(self.pm4.event_index__mec_release_mem__end_of_pipe)
118
119 memsel_dw = self.pm4.PACKET3_RELEASE_MEM_DATA_SEL(data_sel) | self.pm4.PACKET3_RELEASE_MEM_INT_SEL(int_sel) \
120 | self.pm4.PACKET3_RELEASE_MEM_DST_SEL(0)
121 else:
122 cache_flags_dw = 0 if not cache_flush else (self.pm4.EOP_TC_WB_ACTION_EN | self.pm4.EOP_TC_NC_ACTION_EN)
123
124 event_dw = self.pm4.EVENT_TYPE(self.pm4.CACHE_FLUSH_AND_INV_TS_EVENT) | self.pm4.EVENT_INDEX(self.pm4.event_index__mec_release_mem__end_of_pipe)
125
126 memsel_dw = self.pm4.DATA_SEL(data_sel) | self.pm4.INT_SEL(int_sel)
127
128 ctxid = 0
129
130 self.pkt3(self.pm4.PACKET3_RELEASE_MEM, event_dw | cache_flags_dw, memsel_dw, *data64_le(address), *data64_le(value), ctxid)
131 return self
132
133 def memory_barrier(self):
134 pf = '0' if self.nbio.version[:2] != (7, 11) else '1'

Callers 3

timestampMethod · 0.95
writeMethod · 0.95
signalMethod · 0.95

Calls 2

pkt3Method · 0.95
data64_leFunction · 0.90

Tested by

no test coverage detected