summaryrefslogtreecommitdiff
path: root/compiler/nativeGen/X86/Instr.hs
diff options
context:
space:
mode:
authorJohan Tibell <johan.tibell@gmail.com>2014-07-23 13:12:10 +0200
committerJohan Tibell <johan.tibell@gmail.com>2014-07-23 21:03:03 +0200
commitfc53ed5da1a2455b0da2f8ef3ec317e1a96ed83d (patch)
tree2e4a49bea45586334e51551a6392dd42b1800391 /compiler/nativeGen/X86/Instr.hs
parentc11b35f5c5efe8f11039583c493e245bb6bcb33c (diff)
downloadhaskell-fc53ed5da1a2455b0da2f8ef3ec317e1a96ed83d.tar.gz
Add missing memory fence to atomicWriteIntArray#
Diffstat (limited to 'compiler/nativeGen/X86/Instr.hs')
-rw-r--r--compiler/nativeGen/X86/Instr.hs3
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/nativeGen/X86/Instr.hs b/compiler/nativeGen/X86/Instr.hs
index 82e52df1e5..172ce93f50 100644
--- a/compiler/nativeGen/X86/Instr.hs
+++ b/compiler/nativeGen/X86/Instr.hs
@@ -330,6 +330,7 @@ data Instr
| LOCK Instr -- lock prefix
| XADD Size Operand Operand -- src (r), dst (r/m)
| CMPXCHG Size Operand Operand -- src (r), dst (r/m), eax implicit
+ | MFENCE
data PrefetchVariant = NTA | Lvl0 | Lvl1 | Lvl2
@@ -437,6 +438,7 @@ x86_regUsageOfInstr platform instr
LOCK i -> x86_regUsageOfInstr platform i
XADD _ src dst -> usageMM src dst
CMPXCHG _ src dst -> usageRMM src dst (OpReg eax)
+ MFENCE -> noUsage
_other -> panic "regUsage: unrecognised instr"
where
@@ -606,6 +608,7 @@ x86_patchRegsOfInstr instr env
LOCK i -> LOCK (x86_patchRegsOfInstr i env)
XADD sz src dst -> patch2 (XADD sz) src dst
CMPXCHG sz src dst -> patch2 (CMPXCHG sz) src dst
+ MFENCE -> instr
_other -> panic "patchRegs: unrecognised instr"