[LLVMdev] fp_round libcall

Evan Cheng evan.cheng at apple.com
Mon Jul 7 13:09:13 PDT 2008


On Jul 7, 2008, at 11:20 AM, Bruno Cardoso Lopes wrote:

> Hi,
>
> I'm trying to emit FP_ROUND f64 -> f32 considering a mips target that
> only supports single
> float point operations. The problem is that f32 is considered legal  
> on this
> target but f64 doesn't and the only way I can codegen this  
> instruction is using
> setConvertAction(MVT::f64, MVT::f32, Expand), which issues a  
> EmitStackConvert.
> What if I want a libcall instead? What should I do? The libcall  
> FROUND_F64_F32
> is there, but it seems that it cannot be reached without hacking. What
> should I do
> to support this? Am I missing something?

There really isn't an easy way to achieve this without modifying  
legalizer. You should add the support in legalizer. By default it  
would call EmitStackConvert unless the corresponding libcall name is  
not null. So if the target want to expand it to a libcall, it can  
issue setLibcallName(RTLIB::FP_ROUND, "__foo").

Evan

>
>
> Thanks,
>
> -- 
> Bruno Cardoso Lopes
> http://www.brunocardoso.cc
> "When faced with untenable alternatives, you
> should consider your imperative."
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list