[LLVMdev] Floating Point Register Allocation in X86 backend
Jakob Stoklund Olesen
stoklund at 2pi.dk
Wed May 25 11:28:48 PDT 2011
On May 25, 2011, at 11:09 AM, aparna kotha wrote:
> Hi Guys,
>
> I was working on some floating point intensive benchmarks and realize that the floating point register allocation in llvm assumes that there are only 7 floating point registers in X86, whereas the hardware has 8.
>
> Line number
> 00266 assert(Reg >= X86::FP0 && Reg <= X86::FP6 && "Expected FP register!");
>
> of X86FloatingPoint.cpp.
>
> Is there any reason for only counting from 0 to 6, when there are actually 8 in hardware ?
It has to do with the weird tricks that are needed to generate code for a stack machine.
> Is there an assumption somewhere else, that I am missing.
Yes, the default cpu on Linux is i386 which doesn't have SSE support.
Use SSE if you care about floating point performance. I think -mcpu=... is all you need.
/jakob
More information about the llvm-dev
mailing list