fix code block rendering
authorJacob Lifshay <programmerjake@gmail.com>
Fri, 8 Jul 2022 06:14:32 +0000 (23:14 -0700)
committerJacob Lifshay <programmerjake@gmail.com>
Fri, 8 Jul 2022 06:14:32 +0000 (23:14 -0700)
openpower/atomics.mdwn

index cde1ff525bb577deb88b8e8c164b1dd4d175dfca..79ee04f26542a9c0ccf105fe0fa3afde9f02892c 100644 (file)
@@ -12,6 +12,7 @@ Implementations have a hard time recognizing existing atomic operations via macr
 There is also the issue that PowerISA's memory fences are unnecessarily strong, particularly `isync` which is used for a lot of `acquire` and stronger fences. `isync` forces the cpu to do a full pipeline flush, which is unnecessary when all that is needed is a memory barrier.
 
 `atomic_fetch_add_seq_cst` is 6 instructions including a loop:
+
 ```
 # address in r4, addend in r5
     sync
@@ -25,6 +26,7 @@ loop:
 ```
 
 `atomic_load_seq_cst` is 5 instructions, including a branch, and an unnecessarily-strong memory fence:
+
 ```
 # address in r3
     sync
@@ -37,6 +39,7 @@ skip:
 ```
 
 `atomic_compare_exchange_strong_seq_cst` is 7 instructions, including a loop with 2 branches, and an unnecessarily-strong memory fence:
+
 ```
 # address in r4, compared-to value in r5, replacement value in r6
     sync
@@ -52,6 +55,7 @@ not_eq:
 ```
 
 `atomic_load_acquire` is 4 instructions, including a branch and an unnecessarily-strong memory fence:
+
 ```
     ld 3, 0(3)
     cmpw 0, 3, 3