[LLVMdev] Creation of Intrinsics with Pointer Return Types

aditya vishnubhotla
2008-05-07T16:25:59Z

<table cellspacing='0' cellpadding='0' border='0'
> 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. <a
href="http://us.rd.yahoo.com/evt=51733/*http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
"> Try it now.