On 27/06/2014 12:23, Johan Tibell wrote:
On Fri, Jun 27, 2014 at 1:14 PM, Simon Marlow <marlo...@gmail.com> wrote:
The problem is that this instruction requires three separate registers, but
cmpxchgl already reads and writes %eax leaving only two free registers (%ecx
and %edx).

You'll need to arrange to not use the complicated addressing modes with
cmpxchg on i386, and keep the number of free regs required <= 2.

Where's the best place to arrange for that? If I switch from using
getAmode to computing the address into a temp register in StgCmmPrim
will that ensure that the address is simple, or could some
optimization replace my temp register computation with a complex
address again?

There aren't any optimisations that happen on the instructions after codegen, and if there were, they would have to respect the same rule. So using a register is the right thing, yes.

Cheers,
Simon

_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs

Reply via email to