Hi Wei,

I defined CRYPTOPP_DISABLE_SSE2 1 in config.h, and I am now able to
step into CPU.cpp. CPU.cpp performs as expected.

g_hasSSE2 = TrySSE2(); // False


Jeff

On 6/11/07, Jeffrey Walton <[EMAIL PROTECTED]> wrote:
> Hi Wei,
>
> The Exception is being raised before execution of CPU.cpp - it looks
> like in static initalizers.
>
> Attached is a screen capture of the call stack. It is still in CRT
> start up code. Sorry about the PNG - the image explains it best.
>
> Jeff
>
> On 6/11/07, Wei Dai <[EMAIL PROTECTED]> wrote:
> > It looks like the CPU feature detection code isn't working correctly, and
> > Crypto++ thinks it's running on a machine with both MMX and SSE2
> > instructions. Can you set a breakpoint at the top of DetectX86Features() in
> > cpu.cpp and step through that code on your Pentium II machine?
> >
> > ----- Original Message -----
> > From: "Jeffrey Walton" <[EMAIL PROTECTED]>
> > To: "Wei Dai" <[EMAIL PROTECTED]>
> > Cc: "Crypto++" <[EMAIL PROTECTED]>
> > Sent: Monday, June 11, 2007 6:38 PM
> > Subject: Re: CryptTest: 0xC000001D: Illegal Instruction (PII 233 Processor)
> >
> > > 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
> > > (pshufd 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?
> > >>
> > >> [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.
-~----------~----~----~----~------~----~------~--~---

Reply via email to