- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I'm trying to compile a project with Intel C++ Compiler which compiles very well with Microsoft VS 2005 Compiler.
with Intel C++ Compiler 9.1 this inline code:
__asm movaps xmm6, qword ptr [g_vifRow1]
produces this error: __asm 'movaps' Bad memvx128 qualifier
if i remove the 'qword ptr' operator on this line
__asm movaps xmm6, [g_vifRow1] compiles very well but i'm sure it does something different (sorry i'm not much into asm)
what does the errormessage mean?
I'm trying to compile a project with Intel C++ Compiler which compiles very well with Microsoft VS 2005 Compiler.
with Intel C++ Compiler 9.1 this inline code:
__asm movaps xmm6, qword ptr [g_vifRow1]
produces this error: __asm 'movaps' Bad memvx128 qualifier
if i remove the 'qword ptr' operator on this line
__asm movaps xmm6, [g_vifRow1] compiles very well but i'm sure it does something different (sorry i'm not much into asm)
what does the errormessage mean?
Link Copied
5 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
One of our engineers has this comment:
"The memory reference in the movaps instruction is 128 bits.You should use XMMWORD instead of QWORD."
-Rick
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, the problem is not in assembly syntax but in datatype. You shouldn't use
movaps xmm6, qword ptr [g_vifRow1]
because "qword ptr" means pointer to quadword ((sizeof(word) * 4) bytes). You should use pointer to xmmword ((it is a new datatype comming with SSE) 16 bytes) if you use XMM registers
movaps xmm6, xmmword ptr [g_vifRow1]
But in generaly it is not needed to write "xmmword ptr" because the compiler knows what datatype to load into register. So it is enough to write
movaps xmm6, [g_vifRow1]
movaps xmm6, qword ptr [g_vifRow1]
because "qword ptr" means pointer to quadword ((sizeof(word) * 4) bytes). You should use pointer to xmmword ((it is a new datatype comming with SSE) 16 bytes) if you use XMM registers
movaps xmm6, xmmword ptr [g_vifRow1]
But in generaly it is not needed to write "xmmword ptr" because the compiler knows what datatype to load into register. So it is enough to write
movaps xmm6, [g_vifRow1]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, the problem is not in assembly syntax but in datatype. You shouldn't use
movaps xmm6, qword ptr [g_vifRow1]
because "qword ptr" means pointer to quadword ((sizeof(word) * 4) bytes). You should use pointer to xmmword ((it is a new datatype comming with SSE) 16 bytes) if you use XMM registers
movaps xmm6, xmmword ptr [g_vifRow1]
But in generaly it is not needed to write "xmmword ptr" because the compiler knows what datatype to load into register. So it is enough to write
movaps xmm6, [g_vifRow1]
movaps xmm6, qword ptr [g_vifRow1]
because "qword ptr" means pointer to quadword ((sizeof(word) * 4) bytes). You should use pointer to xmmword ((it is a new datatype comming with SSE) 16 bytes) if you use XMM registers
movaps xmm6, xmmword ptr [g_vifRow1]
But in generaly it is not needed to write "xmmword ptr" because the compiler knows what datatype to load into register. So it is enough to write
movaps xmm6, [g_vifRow1]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, the problem is not in assembly syntax but in datatype. You shouldn't use
movaps xmm6, qword ptr [g_vifRow1]
because "qword ptr" means pointer to quadword ((sizeof(word) * 4) bytes). You should use pointer to xmmword ((it is a new datatype comming with SSE) 16 bytes) if you use XMM registers
movaps xmm6, xmmword ptr [g_vifRow1]
But in generaly it is not needed to write "xmmword ptr" because the compiler knows what datatype to load into register. So it is enough to write
movaps xmm6, [g_vifRow1]
movaps xmm6, qword ptr [g_vifRow1]
because "qword ptr" means pointer to quadword ((sizeof(word) * 4) bytes). You should use pointer to xmmword ((it is a new datatype comming with SSE) 16 bytes) if you use XMM registers
movaps xmm6, xmmword ptr [g_vifRow1]
But in generaly it is not needed to write "xmmword ptr" because the compiler knows what datatype to load into register. So it is enough to write
movaps xmm6, [g_vifRow1]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, the problem is not in assembly syntax but in datatype. You shouldn't use
movaps xmm6, qword ptr [g_vifRow1]
because "qword ptr" means pointer to quadword ((sizeof(word) * 4) bytes). You should use pointer to xmmword ((it is a new datatype comming with SSE) 16 bytes) if you use XMM registers
movaps xmm6, xmmword ptr [g_vifRow1]
But in generaly it is not needed to write "xmmword ptr" because the compiler knows what datatype to load into register. So it is enough to write
movaps xmm6, [g_vifRow1]
movaps xmm6, qword ptr [g_vifRow1]
because "qword ptr" means pointer to quadword ((sizeof(word) * 4) bytes). You should use pointer to xmmword ((it is a new datatype comming with SSE) 16 bytes) if you use XMM registers
movaps xmm6, xmmword ptr [g_vifRow1]
But in generaly it is not needed to write "xmmword ptr" because the compiler knows what datatype to load into register. So it is enough to write
movaps xmm6, [g_vifRow1]
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page