Drop specialized MMX and ISSE support

6 views
Skip to first unread message

Jeffrey Walton

unread,
Aug 1, 2017, 12:57:02 AM8/1/17
to Crypto++ Users
Hi Everyone,

I was looking at MMX and ISSE support in the library:

  $ grep HasISSE *.h *.cpp
  cpu.h:inline bool HasISSE()
  validat1.cpp:   bool hasISSE = HasISSE();
  whrlpool.cpp:   if (HasISSE())

  $ grep HasMMX *.h *.cpp
  cpu.h:inline bool HasMMX()
  validat1.cpp:   bool hasMMX = HasMMX();

Machines with only MMX are kind of rare. They date back to the mid-1990s, like the old Pentiums with MMX running at 200 or 233 MHz. For those who can remember that far back, we're talking VX or TX chipsets.

I was thinking we could nuke MMX and ISSE, and make Whirlpool's minimum SSE2.

Any objections?

Jeff


Marcel Raad

unread,
Aug 1, 2017, 1:12:28 AM8/1/17
to Jeffrey Walton, Crypto++ Users
Hi,


Am 01.08.2017 6:57 vorm. schrieb "Jeffrey Walton" <nolo...@gmail.com>:
I was thinking we could nuke MMX and ISSE, and make Whirlpool's minimum SSE2.

Any objections?

if this is only about Whirlpool, I don't have any objections. But we still have to support Pentium II at work unfortunately, which has MMX and Pentium Pro extensions, but no ISSE (this is the same as SSE1, right?). Visual C++ also still supports targeting Pentium II as a minimum.

Marcel

Jeffrey Walton

unread,
Aug 1, 2017, 1:28:16 AM8/1/17
to Marcel Raad, Crypto++ Users
On Tue, Aug 1, 2017 at 1:12 AM, Marcel Raad <marc...@gmail.com> wrote:
> Hi,
>
> Am 01.08.2017 6:57 vorm. schrieb "Jeffrey Walton" <nolo...@gmail.com>:
>
> I was thinking we could nuke MMX and ISSE, and make Whirlpool's minimum
> SSE2.
>
> Any objections?
>
> if this is only about Whirlpool, I don't have any objections.

Yes, it looks like it affects only whirlpool.

> But we still
> have to support Pentium II at work unfortunately, which has MMX and Pentium
> Pro extensions, but no ISSE (this is the same as SSE1, right?). Visual C++
> also still supports targeting Pentium II as a minimum.

I think ISSE was the precursor to SSE2. I don't know if its considered SSE1.

Looking at Whirlpool, this is the guard:

#if CRYPTOPP_BOOL_SSE2_ASM_AVAILABLE
if (HasISSE())
{
...
}
#endif

If targeting a machine with only MMX and ISSE, then you were probably
never getting the specialized implementation. You likely only got the
C++ implementation.

Jeff
Reply all
Reply to author
Forward
0 new messages