[LLVMdev] Intrinsics and external functions

Samuel Antao sfan at sips.inesc-id.pt
Mon Apr 30 09:16:43 PDT 2012


Dear all,

I recently started using LLVM to design a simple compiler and I got 
stuck at the DAG->DAG instruction selection.

Let me describe you the situation:

     - I implemented a simple language and I was successful with 
obtaining the LLVM IR.
     - Most of the operations were calls to external functions.
     - I successful JITed it for the x86 backend.
     - Then, I replaced the function calls by intrinsics so that I can 
take advantage of the LLVM optimization passes. I updated the 
IntrinsicsX86.td and the files concerning constant folding with this 
purpose.
     - The LLVM IR with the intrinsics looks great and benefits from all 
the optimization passes I was using.
     - Now, while Jitting to the x86 backend I got the error message 
"Cannot select: intrinsics %llvm.x86.my.intrinsic.name".

The obtained error makes sense: I did not inserted any information in 
the x86.td files to tell the tool how the intrinsic is supposed to be 
executed.

After looking to the way other intrinsics are implemented for the X86 
backend I could not find any similar example to what I am trying to do: 
treat the calls as intrinsics and JIT them has normal external function 
calls.

Am I trying to do something not possible? Am I missing some simple step? 
Any document to look at as reference?

Any help is more than appreciated,

Regards,
Samuel





More information about the llvm-dev mailing list