These macros are also defined when the compilation target is ARM.
I'd use #if defined(__i386__) || defined(_M_IX86) instead.
Updated used guarding macros to cut-off ARM and ARM64 architectures as @tatyana-krasnukha mentioned
Macros __x86_64__ and _M_X64 are more common than AMD-branded, though there is no functional difference (unless using old versions of the Intel compiler).
A few typos remained after copy-pasting
@tatyana-krasnukha Can you commit this please because I have no commit access