which would make those optimizations useful.</dd>
<dt>Notes for code generation</dt>
<dd>Code generation is essentially the same as that for unordered for loads
- and stores. No fences is required. <code>cmpxchg</code> and
+ and stores. No fences are required. <code>cmpxchg</code> and
<code>atomicrmw</code> are required to appear as a single operation.</dd>
</dl>
SequentiallyConsistent operations may not be reordered.</dd>
<dt>Notes for code generation</dt>
<dd>SequentiallyConsistent loads minimally require the same barriers
- as Acquire operations and SequeuentiallyConsistent stores require
+ as Acquire operations and SequentiallyConsistent stores require
Release barriers. Additionally, the code generator must enforce
- ordering between SequeuentiallyConsistent stores followed by
- SequeuentiallyConsistent loads. This is usually done by emitting
+ ordering between SequentiallyConsistent stores followed by
+ SequentiallyConsistent loads. This is usually done by emitting
either a full fence before the loads or a full fence after the
stores; which is preferred varies by architecture.</dd>
</dl>