SIMD/SSE support & alignment

Geoffrey Mainland mainland at
Tue Mar 12 16:00:29 CET 2013

On 03/12/2013 02:52 PM, Austin Seipp wrote:
> On Tue, Mar 12, 2013 at 9:09 AM, Geoffrey Mainland <mainland at> wrote:
>> On 03/10/2013 09:52 PM, Nicolas Trangez wrote:
>>> ... snip ...
>> ...
>> 1) Get LLVM 3.2 working with GHC's LLVM back end.
> This should work fine in HEAD on OS X and Linux at least. David sorted
> it out after I filed a lot of bugs and a few patches to fix it.
> However, I believe at one point or another (before SIMD landed) I
> tried the new loop and basic block vectorizer in 3.2 with HEAD. I used
> a simple loop like the one Nicholas posted - with the new code
> generator, the resulting Cmm is very compact, so I figured it ideal
> for vectorization. But I believe it made things slower. I don't
> remember the details, but I'll have a copy of HEAD worth testing
> soon...

My stage2 compiler fails with LLVM 3.2 on Ubuntu 12.04 64-bit. If you
know how to fix that, please tell me how.

>> 2) Fix the stack alignment issue with LLVM. This will likely require a
>> patch to LLVM.
>> 3) Add support for aligned move primops.
>> 4) Extend the current SIMD fusion framework to handle transitioning to
>> aligned move instructions. As an alternative, only use aligned move
>> instructions on memory that we know is aligned.
>> These are all on my todo list, but my plate is quite full at the moment.
>> Geoff

More information about the ghc-devs mailing list