[LLVMdev] SoftenSetCCOpernads in LegalizeFloatTypes.cpp

Duncan Sands baldrick at free.fr
Tue Sep 29 05:09:25 PDT 2009


Hi Sanjiv, I think a lot of the softening code assumes you are dealing
with float (32 bits).  So it's not just a matter of changing the libcall
return type.

> While generating a libcall from floating point comparison, it always 
> assumes that the return type of those libcalls is i32.
> Why not allow Targets to provide the correct return type?
> 
> EVT RetVT = MVT::i32;       // <-- here
> 
> 
>   SDValue Ops[2] = { LHSInt, RHSInt };
>   NewLHS = MakeLibCall(LC1, RetVT, Ops, 2, false/*sign irrelevant*/, dl);
>   NewRHS = DAG.getConstant(0, RetVT);
>   CCCode = TLI.getCmpLibcallCC(LC1);
> 
> 
> I suggest to have a hook TLI.getCmpLibcallRT() on the lines of 
> TLI.getCmpLibcallCC()
> 
> Does that sound okay?

I think it should just use a scheme like GetFPLibCall.

Ciao,

Duncan.






More information about the llvm-dev mailing list