GaloisInc/halvm-ghc — pull request #2 by TomMD (2014-06-05 00:32:09+00:00)
Title: Add skeleton intrinsics (sse3, sse2, aes).

The AES and PCLMUL should be complete. SSE3, SSE2 exist but only suffice
for a particular use - users will find seemingly arbitrary functions to
be missing.

A note on testing:

1) Things compiled.
2) We can successfully encrypt and decrypt significant amounts of data.
3) Various factors frustrated testing:

* IVC rendezvous fails without a longer threadDelay. See issue #27 on HaLVM.
* Using IVC to transmit bytestrings (no AES involved) causes dead lock, frustrating testing. This is issue #28 on HaLVM.
* Using IVC to encrypt and transmit bytestrings causes one of the domains to segfault (eventually). HOWEVER, this is unrelated to the intrinsics included in this pull request - we can trigger the same segfault using AES without any AES NI intrinsics, SSE, etc. I have yet to file a bug report related to this behavior.