summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2012-04-24 16:27:35 +0200
committerQt by Nokia <qt-info@nokia.com>2012-04-25 14:58:36 +0200
commite75b0e8c72008f800704828cd4f1eae97b523848 (patch)
treeddbdf8fa815d083a18b258c9761161827cc81fc0 /src/corelib/tools
parentdc6d1c6c3f877ea7f3fd0fde35a5916964093d5c (diff)
Replace the x86 XGETBV instruction with its opcode bytes
This is a new instruction, present on the SandyBridge architecture and later. Some older assemblers do not support it and produce: {standard input}:225:no such instruction: `xgetbv' The use of this instruction is protected by a CPUID check (function 1, ECX bit 27), so we only run it in processors that do support it. Change-Id: Ife7500c0deaab9539074835a4511e8c19602608e Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Diffstat (limited to 'src/corelib/tools')
-rw-r--r--src/corelib/tools/qsimd.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp
index 6a790a432d..5d95d7c232 100644
--- a/src/corelib/tools/qsimd.cpp
+++ b/src/corelib/tools/qsimd.cpp
@@ -244,7 +244,7 @@ static void xgetbv(int in, uint &eax, uint &edx)
eax = result;
edx = result >> 32;
#elif defined(Q_CC_GNU)
- asm ("xgetbv"
+ asm (".byte 0x0F, 0x01, 0xD0" // xgetbv instruction
: "=a" (eax), "=d" (edx)
: "c" (in));
#endif