[llvm-dev] Rewriting LLVM IR intrinsic functions

Dipanjan Das via llvm-dev llvm-dev at lists.llvm.org
Sun Sep 13 22:58:18 PDT 2015


Hi David,

I think you people can help me better if I explain what I am trying to
achieve.

   1. I have compiled gmp with LLVM 2.9
   2. Linked the library statically with a stub program (gmp_demo.bc)
   3. Transformed the bitcode to LLVM IR: llvm-dis gmp_demo.bc -o
   gmp_demo.ll
   4. Trying to convert the IR to high-level C code: llc -march=c
   gmp_demo.ll

Though I know that llc C backend has many issues and has been removed from
LLVM >=3.1, still I am desperate to make it work. The error I receive in
the last step is the following: "LLVM ERROR: Code generator does not
support intrinsic function 'llvm.uadd.with.overflow.i64'!"

I was planning to rewrite LLVM intrinsics not supported by llc to
equivalent LLVM IR supported by llc. Is this approach feasible?

On 10 September 2015 at 17:50, David Chisnall <David.Chisnall at cl.cam.ac.uk>
wrote:

> On 10 Sep 2015, at 10:09, serge guelton via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
> >
> > On Thu, Sep 10, 2015 at 04:20:01PM +0800, Dipanjan Das via llvm-dev
> wrote:
> >> Hello,
> >>
> >> I can see the occurrences of several LLVM intrinsic functions in the
> LLVM
> >> IR generated by llvm-dis disassembler. Is there any means to rewrite
> these
> >> functions reliably using basic LLVM IR statements?
> >
> > You can use `LowerIntrinsicCall` from "llvm/CodeGen/IntrinsicLowering.h"
> > to do so.
>
> This will lower intrinsics to (target-specific) function calls that
> implement the underlying functionality, which is almost certainly not what
> you want to do.
>
> The question doesn’t really make sense.  Intrinsics *are* ‘basic LLVM IR
> statements’.  The distinction between things that are intrinsics and things
> that are instructions is quite fuzzy.  Many intrinsics are intended to be
> operations that map to a single instruction on (at least some) targets and
> are all things that are not (or, at least, not easily) representable with
> LLVM IR instructions.
>
> To answer your question properly, it would help to understand what you’re
> actually trying to do.
>
> David
>
>


-- 

Thanks & Regards,
Dipanjan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150914/96b60353/attachment.html>


More information about the llvm-dev mailing list