Hi Wei, Cryptest.exe triggers in Debug (I did not run Release).
The offending code is in Salsa.cpp, line 76: static const __m128i s_maskLo32 = _mm_shuffle_epi32(_mm_cvtsi32_si128(-1), _MM_SHUFFLE(1, 0, 1, 0)); This is part of a larger #define: #if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE static const __m128i s_maskLo32 = _mm_shuffle_epi32(_mm_cvtsi32_si128(-1), _MM_SHUFFLE(1, 0, 1, 0)); static const __m128i s_maskHi32 = _mm_slli_epi64(s_maskLo32, 32); #endif Disassembly follows, with the offending instruction at 00933C76 (pushfd xmm0,xmm0,44h) Jeff #if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE static const __m128i s_maskLo32 = _mm_shuffle_epi32(_mm_cvtsi32_si128(-1), _MM_SHUFFLE(1, 0, 1, 0)); 00933C40 push ebx 00933C41 mov ebx,esp 00933C43 sub esp,8 00933C46 and esp,0FFFFFFF0h 00933C49 add esp,4 00933C4C push ebp 00933C4D mov ebp,dword ptr [ebx+4] 00933C50 mov dword ptr [esp+4],ebp 00933C54 mov ebp,esp 00933C56 sub esp,78h 00933C59 mov eax,dword ptr [___security_cookie (0A59CF4h)] 00933C5E xor eax,ebp 00933C60 mov dword ptr [ebp-4],eax 00933C63 push esi 00933C64 push edi 00933C65 or eax,0FFFFFFFFh 00933C68 movd xmm0,eax 00933C6C movdqa xmmword ptr [ebp-70h],xmm0 00933C71 movdqa xmm0,xmmword ptr [ebp-70h] 00933C76 pshufd xmm0,xmm0,44h 00933C7B movdqa xmmword ptr [ebp-60h],xmm0 00933C80 movdqa xmm0,xmmword ptr [ebp-60h] 00933C85 movdqa xmmword ptr [s_maskLo32 (0A5D8C0h)],xmm0 00933C8D pop edi 00933C8E pop esi 00933C8F mov ecx,dword ptr [ebp-4] 00933C92 xor ecx,ebp 00933C94 call @ILT+67130(@[EMAIL PROTECTED]) (5C063Fh) 00933C99 mov esp,ebp 00933C9B pop ebp 00933C9C mov esp,ebx 00933C9E pop ebx 00933C9F ret On 6/11/07, Wei Dai <[EMAIL PROTECTED]> wrote: > Crypto++ is supposed to detect the necessary instruction set at run time. > For example, the assembly version of Whirlpool uses MMX instructions, and > there is an "if (HasMMX())" at line 394 of whrlpool.cpp that selects the > assembly version if MMX is available. Apparently the assembly code must be > using some instruction that's not available on the PII, even though it has > MMX. Can you look at the disassembly in the debugger and tell me which > instruction is triggering the error? > > ----- Original Message ----- > From: "Jeffrey Walton" <[EMAIL PROTECTED]> > To: "Crypto++" <[EMAIL PROTECTED]> > Sent: Monday, June 11, 2007 5:41 PM > Subject: CryptTest: 0xC000001D: Illegal Instruction (PII 233 Processor) > > > > Hi All, > > > > Is there a #define to instruct Crypto++ to generate code for a PII > > processor (and above)? Nothing jumps out at me in config.h. > > > > [ SNIP ] --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the "Crypto++ Users" Google Group. To unsubscribe, send an email to [EMAIL PROTECTED] More information about Crypto++ and this group is available at http://www.cryptopp.com. -~----------~----~----~----~------~----~------~--~---
