[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