- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm using Intel compiler 11.1 / 064
I tried to run a code that contains: _mm_extract_epi32 and got "Invalid opcode"
The machine code I got for _mm_extract_epi32 is:
.byte 0x66,0xF,0x3A
_mm_extract_epi16 works fine.
The CPU is Core2Duo.
What is the reason for "Invalid Opcode" ?
Thanks,
Zvika.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
#include
#include
int main ()
{
__m128i a;
const int ndx1 = 1;
const int ndx2 = 2;
a.m128i_i32[0] = 0;
a.m128i_i32[1] = 65535;
a.m128i_i32[2] = -320000000;
a.m128i_i32[3] = 128;
int res = _mm_extract_epi32(a, ndx1);
printf_s("Result res should equal %d: %d\n", a.m128i_i32[ndx1], res);
res = _mm_extract_epi32(a, ndx2);
printf_s("Result res should equal %d: %d\n", a.m128i_i32[ndx2], res);
return 0;
}
c:\>icl tstcase.cpp
Intel C++ Intel 64 Compiler XE for applications running on Intel 64, Version 12.0.1.127 Build 20101116
Copyright (C) 1985-2010 Intel Corporation. All rights reserved.
tstcase.cpp
Microsoft Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
-out:tstcase.exe
tstcase.obj
c:\>tstcase.exe
Result res should equal 65535: 65535
Result res should equal -320000000: -320000000
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page