[Haskell-cafe] llvm is generating invalid instructions (problem with autovectorization?)
carter.schonwald at gmail.com
Thu May 22 01:57:47 UTC 2014
Is this on a Mac that is using gcc4.2? The older GCC assembler stuff
doesn't understand simd.
On Wednesday, May 21, 2014, Geoffrey Mainland <mainland at apeiron.net> wrote:
> Perhaps your installed version of binutils does not support the sarxq
> You can ask GHC to pass flags to llc and friends:
> On 05/21/2014 06:50 PM, Mike Izbicki wrote:
> > I have some code* that is causing llvm to throw a fit. In particular,
> > I get (compiling with GHC 7.8 and llvm 3.4):
> > /tmp/ghc1685_0/ghc1685_5.bc:150324:0:
> > Error: no such instruction: `sarxq %rax,%rbx,%r14'
> > Similar errors get repeated several thousand times, and it's always a
> > sarxq instruction. Now, my code doesn't use any of the simd primops,
> > so the sarxq must be coming from llvm's autovectorization. Is it
> > possible that somehow GHC's output bytecode could be responsible, or
> > is the problem more likely with llvm proper? Is there any way I can
> > force GHC to pass flags to llvm so I can experiment with different
> > settings?
> > Another clue that the cause might be in llvm's autovectorization is
> > that when I compile with llvm 3.0 (which does not support
> > autovectorization), there are no error messages.
> > * I suspect my code is far too complicated for it to shed any light on
> > this question, but it's available at:
> > If need be, I can create a minimal sample of code that causes the
> > error, but I don't want to go through the trouble if it's not needed.
> Haskell-Cafe mailing list
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe