[LLVMdev] Creation of Intrinsics with Pointer Return Types

Dan Gohman gohman at apple.com
Wed May 7 11:28:23 PDT 2008


Hello,

LLVM's intrinsic overloading mechanism does not currently support
overloading on pointer types. Patches to implement this would be
welcome.

Dan

On May 7, 2008, at 9:25 AM, aditya vishnubhotla wrote:

> Hi,
> I tried creating intrinsics which are to be
> placeholders for a  set of instructions (actually a section of a  
> basic block) to be executed elsewhere(for e.g. in HW).
> These intrinsics are to take care of the data dependencies of the  
> set of instructions being replaced by them.
> In the process I created a "migrate_begin" variable argument  
> intrinsic which handles the incoming data dependenices to these set  
> of instructions.
> Entry  in the  Intrinsics.td file:
> def int_migrate_begin : Intrinsic<[llvm_i32_ty,llvm_vararg_ty], 
> [IntrWriteMem],"llvm.migrate_begin">;
>
> I want to replace the instructions from this set , having outgoing  
> data dependencies, with " migrate_end " intrinsic instructions.
> I created two migrate_end intrinsics with return types anyint(iAny  
> Value Type) and any float(fAny Value Type).
> Entries  in the Intrinsics.td file:
> def int_migrate_end_int :  
> Intrinsic<[llvm_anyint_ty,llvm_i32_ty,llvm_i32_ty], 
> [IntrWriteMem],"llvm.migrate_end_int">;
> def int_migrate_end_float :  
> Intrinsic<[llvm_anyfloat_ty,llvm_i32_ty,llvm_i32_ty], 
> [IntrWriteMem],"llvm.migrate_end_float">;
>
> I am not able to handle all of the pointer return type instructions.
>
> I tried using the types such as:
>
> def llvm_vararg_ty     : LLVMType<isVoid>;   // this means vararg here
> def llvm_iPTR_ty       : LLVMType<iPTR>
> def llvm_descriptor_ty : LLVMPointerType<llvm_empty_ty>;
> and adding  types
> def llvm_ptriAny_ty    : LLVMPointerType<llvm_anyint_ty>;
> def llvm_ptrfAny_ty    : LLVMPointerType<llvm_anyfloat_ty>;
>
> but in vain.
> I would be happy to know the type or types required for handling a  
> pointer return type for an LLVM instruction, to create the  
> "migrate_end" intrinsic.
>
> Thank You,
> Aditya
>
>
>
> Be a better friend, newshound, and know-it-all with Yahoo! Mobile.  
> Try it now. _______________________________________________
> 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