Fix mapping of acquire/release AMOs to fence operations
AMO.aq should be implemented as AMO;FENCE, whereas AMO.rl should be implemented as FENCE;AMO. These had been swapped. This error does not affect cacheable accesses using the blocking D$, nor does it affect accesses to the data scratchpad, nor does it affect accesses to strongly ordered I/O regions (which is the default). Cacheable accesses using the nonblocking D$ and accesses to weakly ordered I/O regions may manifest memory-ordering violations. For these accesses, the workaround is to use AMO.aqrl whenever AMO.aq or AMO.rl had been used.
parent
95294bbd
Please register or sign in to comment