================
@@ -443,8 +443,8 @@ static const MemoryMapParams Linux_I386_MemoryMapParams = {
 static const MemoryMapParams Linux_X86_64_MemoryMapParams = {
     0,              // AndMask (not used)
     0x500000000000, // XorMask
-    0,              // ShadowBase (not used)
-    0x100000000000, // OriginBase
+    0x200000,       // ShadowBase (== kShadowOffset)
----------------
thurstond wrote:

@Camsyn Thanks, good point!

@azat The machine code is longer if a non-zero immediate is needed:

```
48 c7 80 00 00 20 00 00 00 00 00 mov    QWORD PTR [rax+0x200000],0x0
vs.
48 c7 00 00 00 00 00             mov    QWORD PTR [rax],0x0

c6 80 00 00 20 00 00             mov    BYTE PTR [rax+0x200000],0x0
vs.
19: c6 00 00                     mov    BYTE PTR [rax],0x0
```

Even if the CPU could execute both forms at the same speed, on the same 
execution ports, it is still increasing code size, icache pressure, etc.

Although it's probably not a huge impact, it would still be hard to justify 
making codegen worse for all x86 targets when the upside is only for a subset 
of Zen processors.

I do want MSan to work well for Zen as well, so how about a compile-time macro 
(when compiling MSan itself, not the target app) that enables the 2MB offset?

https://github.com/llvm/llvm-project/pull/171993
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to