mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-23 21:01:08 +00:00
Bug 1883866: Remove unnecessary memory barriers in generated atomic operations. r=jandem
Remove unnecessary memory barriers to match JIT generated code. x86: - Load: No barriers are needed before and after loads. - Store: No barrier needed before stores. arm32 and arm64: - Load: No barrier needed before loads. Differential Revision: https://phabricator.services.mozilla.com/D203737
This commit is contained in:
parent
218bedbc1b
commit
d3f99dc218
@ -50,8 +50,6 @@ def gen_load(fun_name, cpp_type, size, barrier):
|
||||
# - MacroAssembler::wasmLoad
|
||||
if cpu_arch in ("x86", "x86_64"):
|
||||
insns = ""
|
||||
if barrier:
|
||||
insns += fmt_insn("mfence")
|
||||
if size == 8:
|
||||
insns += fmt_insn("movb (%[arg]), %[res]")
|
||||
elif size == 16:
|
||||
@ -61,8 +59,6 @@ def gen_load(fun_name, cpp_type, size, barrier):
|
||||
else:
|
||||
assert size == 64
|
||||
insns += fmt_insn("movq (%[arg]), %[res]")
|
||||
if barrier:
|
||||
insns += fmt_insn("mfence")
|
||||
return """
|
||||
INLINE_ATTR %(cpp_type)s %(fun_name)s(const %(cpp_type)s* arg) {
|
||||
%(cpp_type)s res;
|
||||
@ -78,8 +74,6 @@ def gen_load(fun_name, cpp_type, size, barrier):
|
||||
}
|
||||
if cpu_arch == "aarch64":
|
||||
insns = ""
|
||||
if barrier:
|
||||
insns += fmt_insn("dmb ish")
|
||||
if size == 8:
|
||||
insns += fmt_insn("ldrb %w[res], [%x[arg]]")
|
||||
elif size == 16:
|
||||
@ -106,8 +100,6 @@ def gen_load(fun_name, cpp_type, size, barrier):
|
||||
}
|
||||
if cpu_arch == "arm":
|
||||
insns = ""
|
||||
if barrier:
|
||||
insns += fmt_insn("dmb sy")
|
||||
if size == 8:
|
||||
insns += fmt_insn("ldrb %[res], [%[arg]]")
|
||||
elif size == 16:
|
||||
@ -141,8 +133,6 @@ def gen_store(fun_name, cpp_type, size, barrier):
|
||||
# - MacroAssembler::wasmStore
|
||||
if cpu_arch in ("x86", "x86_64"):
|
||||
insns = ""
|
||||
if barrier:
|
||||
insns += fmt_insn("mfence")
|
||||
if size == 8:
|
||||
insns += fmt_insn("movb %[val], (%[addr])")
|
||||
elif size == 16:
|
||||
|
Loading…
Reference in New Issue
Block a user