Displaying 6 results from an estimated 6 matches for "rfp80".
Did you mean:
fp80
2009 Apr 28
1
[LLVMdev] Register class intersection
...joint.
There is a complication, though. A register class is not just a set of
registers - it also holds information about spill size and alignment.
Value types are no longer interesting once the selection DAG has been
destroyed. X86 has the weird examples as usual:
Classes RFP32, RFP64, and RFP80 are identical (FP0-6) except for the
spill size.
The same goes for FR64 and VR128 (XMM0-15).
The coalescer will join these classes as follows:
RFP32 + RFP64 -> RFP64
FR64 + VR128 -> VR128
This seems perfectly reasonable - choose the larger spill size and
avoid losing data.
TableGen th...
2012 Jan 19
2
[LLVMdev] Best way to interface with MSVC _ftol2 runtime function for fptoui?
...definitely don't want to model it as a general call, then. Normal calls clobber lots of registers.
The options are:
1. Use a pseudo-instruction that X86FloatingPoint understands and turns into a call after arranging for the argument to be in ST0.
You should emit:
%ST0 = COPY %vreg13; RFP80:%vreg13
%EAX, %EDX = FTOL2 %ST0<kill>
%vreg16 = COPY %EAX<kill>
%vreg17 = COPY %EDX<kill>
Then teach X86FloatingPoint that FTOL2 pops its argument, like FISTP64m.
2. Use inline asm. Which is pretty gross. You would need to construct a SelectionDAG node identical to t...
2012 Jan 20
0
[LLVMdev] Best way to interface with MSVC _ftol2 runtime function for fptoui?
...model it as a general call, then. Normal calls clobber lots of registers.
>
> The options are:
>
> 1. Use a pseudo-instruction that X86FloatingPoint understands and turns into a call after arranging for the argument to be in ST0.
> You should emit:
>
> %ST0 = COPY %vreg13; RFP80:%vreg13
> %EAX, %EDX = FTOL2 %ST0<kill>
> %vreg16 = COPY %EAX<kill>
> %vreg17 = COPY %EDX<kill>
>
> Then teach X86FloatingPoint that FTOL2 pops its argument, like FISTP64m.
>
> 2. Use inline asm. Which is pretty gross. You would need to construct a Sel...
2012 Jan 19
0
[LLVMdev] Best way to interface with MSVC _ftol2 runtime function for fptoui?
2012/1/19 Jakob Stoklund Olesen <stoklund at 2pi.dk>:
> How many of these libcalls do you need to implement? What exactly is the calling convention? Which registers are clobbered etc.
There is only one (that I know about so far). The MSVCRT `_ftol2`
function implements floating-point-to-unsigned conversion for i386
targets, and LLVM 3.0 calls it with the cdecl calling convention for
2012 Jan 19
2
[LLVMdev] Best way to interface with MSVC _ftol2 runtime function for fptoui?
On Jan 18, 2012, at 8:56 PM, Joe Groff wrote:
> 2012/1/18 Jakob Stoklund Olesen <stoklund at 2pi.dk>:
>> This should work:
>> %1 = call i64 asm "call __ftol2", "=A,{st},~{dirflag},~{fpsr},~{flags},~{st}" (double %x) nounwind
>
> Forgive me for being slow, but what would be the best way to implement
> the equivalent of that inline asm as a custom
2017 Jul 28
3
Purpose of various register classes in X86 target
Hello Matthias,
On 28 July 2017 at 04:13, Matthias Braun <mbraun at apple.com> wrote:
> It's not that hard in principle:
> - A register class is a set of registers.
> - Virtual Registers have a register class assigned.
> - If you have register constraints (like x86 8bit operations only work on
> al,ah,etc.) then you have to create a new register class to express that.