Intel® Integrated Performance Primitives
Community support and discussions relating to developing high-performance vision, signal, security, and storage applications.
Announcements
The Intel sign-in experience is changing in February to support enhanced security controls. If you sign in, click here for more information.
6656 Discussions

ILLEGAL INSTRUCTION : ippiDCT8x8Inv_16s_C1I

andybc
Beginner
242 Views
hello there.
im just a newbie with these cool libraries. im just wondering what could be possibly wrong when i encounter the above illegal instruction. im using the trial version of ipp v.5 and trying to run the application in pentium3 under wince .net 4.2.
any comments will be appreciated.
cheers!
andy
0 Kudos
5 Replies
abuatnext04
Beginner
242 Views
have you use an aligned memory buffer to push your dct data into the ipp function ...

try to use aligned memory on 16-byte boundary with all optimized function ipp or other mmx/sse/sse2 optimized function,

it could be solve your issue
Vladimir_Dudnik
Employee
242 Views

Could you please provide simple test case to demostrate this wrong behaviour?

Regards,
Vladimir

andybc
Beginner
242 Views

thanks for the comments. but the 16-bit allignment did not solve the problem. originally the code is bit alligned as it runs with other platforms. the same source code runs perfectly with a pentium 3 stepping 8 (can anybody tell me what is meant by this stepping nomenclature. :smileyhappy:) but with a pentium 3 stepping 3, it does not. both have the same os. wince .net 4.2.

the following is the dissassembly code in which the illegal instruction occurs. it stops at pshufw instruction. hope this helps to furtherly analyze the problem.

_a6_dct_8x8_inv_16s:
1E03C920 mov ecx,dword ptr [esp+4]
1E03C924 mov edx,dword ptr [esp+8]
1E03C928 movq mm0,mmword ptr [ecx]
1E03C92B movq mm1,mmword ptr [ecx+8]
1E03C92F movq mm2,mm0
1E03C932 movq mm3,mmword ptr ds:[67CE0h]
1E03C939 pshufw mm0,mm0,88h

thanks in advance.

andybc
Beginner
242 Views
please accept my apologies.sorry for taking your time for this thread. i've just discovered that the cpu is a via!!!#$#%&!
i've trusted eMbedded C++ tool which says that the CPU is a PIII, but when i used cpuid, it revealed that it was not. :smileymad:
fortunately, this via cpu supports mmx and hopefully i can use a "mmx-only" ipp library for my dct calls.
does v5.0 supports mmx-only? if yes, which specific library should be used? if not, which version does?
thanks again.
Vladimir_Dudnik
Employee
242 Views

Hi,

You need to use PX libraries, if your cpu is not 100% Intel compatible. Note, IPP dispatcher chooses PX libraries automatically in such cases, but seems you linked directly with A6 code, which is Pentium III specific.

Regards,
Vladimir

Reply