mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
Expose most of the IRBuilder functionality to ocaml.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79161 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
56b22697d8
commit
e0f8bf6cbe
@ -649,6 +649,8 @@ let position_at_end bb = position_builder (At_end bb)
|
||||
(*--... Terminators ........................................................--*)
|
||||
external build_ret_void : llbuilder -> llvalue = "llvm_build_ret_void"
|
||||
external build_ret : llvalue -> llbuilder -> llvalue = "llvm_build_ret"
|
||||
external build_aggregate_ret : llvalue array -> llbuilder -> llvalue
|
||||
= "llvm_build_aggregate_ret"
|
||||
external build_br : llbasicblock -> llbuilder -> llvalue = "llvm_build_br"
|
||||
external build_cond_br : llvalue -> llbasicblock -> llbasicblock -> llbuilder ->
|
||||
llvalue = "llvm_build_cond_br"
|
||||
@ -665,14 +667,24 @@ external build_unreachable : llbuilder -> llvalue = "llvm_build_unreachable"
|
||||
(*--... Arithmetic .........................................................--*)
|
||||
external build_add : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_add"
|
||||
external build_nsw_add : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_nsw_add"
|
||||
external build_fadd : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_fadd"
|
||||
external build_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_sub"
|
||||
external build_fsub : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_fsub"
|
||||
external build_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_mul"
|
||||
external build_fmul : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_fmul"
|
||||
external build_udiv : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_udiv"
|
||||
external build_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_sdiv"
|
||||
external build_exact_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_exact_sdiv"
|
||||
external build_fdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_fdiv"
|
||||
external build_urem : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
@ -714,6 +726,15 @@ external build_store : llvalue -> llvalue -> llbuilder -> llvalue
|
||||
= "llvm_build_store"
|
||||
external build_gep : llvalue -> llvalue array -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_gep"
|
||||
external build_in_bounds_gep : llvalue -> llvalue array -> string ->
|
||||
llbuilder -> llvalue = "llvm_build_in_bounds_gep"
|
||||
external build_struct_gep : llvalue -> int -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_struct_gep"
|
||||
|
||||
external build_global_string : string -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_global_string"
|
||||
external build_global_stringptr : string -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_global_stringptr"
|
||||
|
||||
(*--... Casts ..............................................................--*)
|
||||
external build_trunc : llvalue -> lltype -> string -> llbuilder -> llvalue
|
||||
@ -740,6 +761,18 @@ external build_inttoptr : llvalue -> lltype -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_inttoptr"
|
||||
external build_bitcast : llvalue -> lltype -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_bitcast"
|
||||
external build_zext_or_bitcast : llvalue -> lltype -> string -> llbuilder ->
|
||||
llvalue = "llvm_build_zext_or_bitcast"
|
||||
external build_sext_or_bitcast : llvalue -> lltype -> string -> llbuilder ->
|
||||
llvalue = "llvm_build_sext_or_bitcast"
|
||||
external build_trunc_or_bitcast : llvalue -> lltype -> string -> llbuilder ->
|
||||
llvalue = "llvm_build_trunc_or_bitcast"
|
||||
external build_pointercast : llvalue -> lltype -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_pointercast"
|
||||
external build_intcast : llvalue -> lltype -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_intcast"
|
||||
external build_fpcast : llvalue -> lltype -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_fpcast"
|
||||
|
||||
(*--... Comparisons ........................................................--*)
|
||||
external build_icmp : Icmp.t -> llvalue -> llvalue -> string ->
|
||||
@ -762,7 +795,17 @@ external build_insertelement : llvalue -> llvalue -> llvalue -> string ->
|
||||
llbuilder -> llvalue = "llvm_build_insertelement"
|
||||
external build_shufflevector : llvalue -> llvalue -> llvalue -> string ->
|
||||
llbuilder -> llvalue = "llvm_build_shufflevector"
|
||||
external build_extractvalue : llvalue -> int -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_extractvalue"
|
||||
external build_insertvalue : llvalue -> llvalue -> int -> string -> llbuilder ->
|
||||
llvalue = "llvm_build_insertvalue"
|
||||
|
||||
external build_is_null : llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_is_null"
|
||||
external build_is_not_null : llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_is_not_null"
|
||||
external build_ptrdiff : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_ptrdiff"
|
||||
|
||||
(*===-- Module providers --------------------------------------------------===*)
|
||||
|
||||
|
@ -1259,6 +1259,13 @@ external build_ret_void : llbuilder -> llvalue = "llvm_build_ret_void"
|
||||
See the method [llvm::LLVMBuilder::CreateRet]. *)
|
||||
external build_ret : llvalue -> llbuilder -> llvalue = "llvm_build_ret"
|
||||
|
||||
(** [build_aggregate_ret vs b] creates a
|
||||
[ret {...} { %v1, %v2, ... } ]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateAggregateRet]. *)
|
||||
external build_aggregate_ret : llvalue array -> llbuilder -> llvalue
|
||||
= "llvm_build_aggregate_ret"
|
||||
|
||||
(** [build_br bb b] creates a
|
||||
[b %bb]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
@ -1316,6 +1323,20 @@ external build_unreachable : llbuilder -> llvalue = "llvm_build_unreachable"
|
||||
external build_add : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_add"
|
||||
|
||||
(** [build_nswadd x y name b] creates a
|
||||
[%name = nsw add %x, %y]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateNSWAdd]. *)
|
||||
external build_nsw_add : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_nsw_add"
|
||||
|
||||
(** [build_fadd x y name b] creates a
|
||||
[%name = fadd %x, %y]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateFAdd]. *)
|
||||
external build_fadd : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_fadd"
|
||||
|
||||
(** [build_sub x y name b] creates a
|
||||
[%name = sub %x, %y]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
@ -1323,6 +1344,13 @@ external build_add : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
external build_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_sub"
|
||||
|
||||
(** [build_fsub x y name b] creates a
|
||||
[%name = fsub %x, %y]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateFSub]. *)
|
||||
external build_fsub : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_fsub"
|
||||
|
||||
(** [build_mul x y name b] creates a
|
||||
[%name = mul %x, %y]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
@ -1330,6 +1358,13 @@ external build_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
external build_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_mul"
|
||||
|
||||
(** [build_fmul x y name b] creates a
|
||||
[%name = fmul %x, %y]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateFMul]. *)
|
||||
external build_fmul : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_fmul"
|
||||
|
||||
(** [build_udiv x y name b] creates a
|
||||
[%name = udiv %x, %y]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
@ -1344,6 +1379,13 @@ external build_udiv : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
external build_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_sdiv"
|
||||
|
||||
(** [build_exact_sdiv x y name b] creates a
|
||||
[%name = exact sdiv %x, %y]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateExactSDiv]. *)
|
||||
external build_exact_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_exact_sdiv"
|
||||
|
||||
(** [build_fdiv x y name b] creates a
|
||||
[%name = fdiv %x, %y]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
@ -1482,12 +1524,39 @@ external build_store : llvalue -> llvalue -> llbuilder -> llvalue
|
||||
= "llvm_build_store"
|
||||
|
||||
(** [build_gep p indices name b] creates a
|
||||
[%name = gep %p, indices...]
|
||||
[%name = getelementptr %p, indices...]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateGetElementPtr]. *)
|
||||
external build_gep : llvalue -> llvalue array -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_gep"
|
||||
|
||||
(** [build_in_bounds_gep p indices name b] creates a
|
||||
[%name = gelementptr inbounds %p, indices...]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateInBoundsGetElementPtr]. *)
|
||||
external build_in_bounds_gep : llvalue -> llvalue array -> string -> llbuilder ->
|
||||
llvalue = "llvm_build_in_bounds_gep"
|
||||
|
||||
(** [build_struct_gep p idx name b] creates a
|
||||
[%name = getelementptr %p, 0, idx]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateStructGetElementPtr]. *)
|
||||
external build_struct_gep : llvalue -> int -> string -> llbuilder ->
|
||||
llvalue = "llvm_build_struct_gep"
|
||||
|
||||
(** [build_global_string str name b] creates a series of instructions that adds
|
||||
a global string at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateGlobalString]. *)
|
||||
external build_global_string : string -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_global_string"
|
||||
|
||||
(** [build_global_stringptr str name b] creates a series of instructions that
|
||||
adds a global string pointer at the position specified by the instruction
|
||||
builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateGlobalStringPtr]. *)
|
||||
external build_global_stringptr : string -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_global_stringptr"
|
||||
|
||||
|
||||
(** {7 Casts} *)
|
||||
|
||||
@ -1571,10 +1640,46 @@ external build_inttoptr : llvalue -> lltype -> string -> llbuilder -> llvalue
|
||||
(** [build_bitcast v ty name b] creates a
|
||||
[%name = bitcast %p to %ty]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateBitcast]. *)
|
||||
See the method [llvm::LLVMBuilder::CreateBitCast]. *)
|
||||
external build_bitcast : llvalue -> lltype -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_bitcast"
|
||||
|
||||
(** [build_zext_or_bitcast v ty name b] creates a zext or bitcast
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateZExtOrBitCast]. *)
|
||||
external build_zext_or_bitcast : llvalue -> lltype -> string -> llbuilder ->
|
||||
llvalue = "llvm_build_zext_or_bitcast"
|
||||
|
||||
(** [build_sext_or_bitcast v ty name b] creates a sext or bitcast
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateSExtOrBitCast]. *)
|
||||
external build_sext_or_bitcast : llvalue -> lltype -> string -> llbuilder ->
|
||||
llvalue = "llvm_build_sext_or_bitcast"
|
||||
|
||||
(** [build_trunc_or_bitcast v ty name b] creates a trunc or bitcast
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateZExtOrBitCast]. *)
|
||||
external build_trunc_or_bitcast : llvalue -> lltype -> string -> llbuilder ->
|
||||
llvalue = "llvm_build_trunc_or_bitcast"
|
||||
|
||||
(** [build_pointercast v ty name b] creates a bitcast or pointer-to-int
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreatePointerCast]. *)
|
||||
external build_pointercast : llvalue -> lltype -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_pointercast"
|
||||
|
||||
(** [build_intcast v ty name b] creates a zext, bitcast, or trunc
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateIntCast]. *)
|
||||
external build_intcast : llvalue -> lltype -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_intcast"
|
||||
|
||||
(** [build_fpcast v ty name b] creates a fpext, bitcast, or fptrunc
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateFPCast]. *)
|
||||
external build_fpcast : llvalue -> lltype -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_fpcast"
|
||||
|
||||
|
||||
(** {7 Comparisons} *)
|
||||
|
||||
@ -1645,6 +1750,40 @@ external build_insertelement : llvalue -> llvalue -> llvalue -> string ->
|
||||
external build_shufflevector : llvalue -> llvalue -> llvalue -> string ->
|
||||
llbuilder -> llvalue = "llvm_build_shufflevector"
|
||||
|
||||
(** [build_insertvalue agg idx name b] creates a
|
||||
[%name = extractvalue %agg, %idx]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateExtractValue]. *)
|
||||
external build_extractvalue : llvalue -> int -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_extractvalue"
|
||||
|
||||
(** [build_insertvalue agg val idx name b] creates a
|
||||
[%name = insertvalue %agg, %val, %idx]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateInsertValue]. *)
|
||||
external build_insertvalue : llvalue -> llvalue -> int -> string -> llbuilder ->
|
||||
llvalue = "llvm_build_insertvalue"
|
||||
|
||||
(** [build_is_null val name b] creates a
|
||||
[%name = icmp eq %val, null]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateIsNull]. *)
|
||||
external build_is_null : llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_is_null"
|
||||
|
||||
(** [build_is_not_null val name b] creates a
|
||||
[%name = icmp ne %val, null]
|
||||
instruction at the position specified by the instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreateIsNotNull]. *)
|
||||
external build_is_not_null : llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_is_not_null"
|
||||
|
||||
(** [build_ptrdiff lhs rhs name b] creates a series of instructions that measure
|
||||
the difference between two pointer values at the position specified by the
|
||||
instruction builder [b].
|
||||
See the method [llvm::LLVMBuilder::CreatePtrDiff]. *)
|
||||
external build_ptrdiff : llvalue -> llvalue -> string -> llbuilder -> llvalue
|
||||
= "llvm_build_ptrdiff"
|
||||
|
||||
(** {6 Module providers} *)
|
||||
|
||||
|
@ -951,18 +951,42 @@ CAMLprim LLVMValueRef llvm_build_add(LLVMValueRef LHS, LLVMValueRef RHS,
|
||||
return LLVMBuildAdd(Builder_val(B), LHS, RHS, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> llvalue -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_nsw_add(LLVMValueRef LHS, LLVMValueRef RHS,
|
||||
value Name, value B) {
|
||||
return LLVMBuildNSWAdd(Builder_val(B), LHS, RHS, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> llvalue -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_fadd(LLVMValueRef LHS, LLVMValueRef RHS,
|
||||
value Name, value B) {
|
||||
return LLVMBuildFAdd(Builder_val(B), LHS, RHS, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> llvalue -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_sub(LLVMValueRef LHS, LLVMValueRef RHS,
|
||||
value Name, value B) {
|
||||
return LLVMBuildSub(Builder_val(B), LHS, RHS, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> llvalue -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_fsub(LLVMValueRef LHS, LLVMValueRef RHS,
|
||||
value Name, value B) {
|
||||
return LLVMBuildFSub(Builder_val(B), LHS, RHS, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> llvalue -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_mul(LLVMValueRef LHS, LLVMValueRef RHS,
|
||||
value Name, value B) {
|
||||
return LLVMBuildMul(Builder_val(B), LHS, RHS, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> llvalue -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_fmul(LLVMValueRef LHS, LLVMValueRef RHS,
|
||||
value Name, value B) {
|
||||
return LLVMBuildFMul(Builder_val(B), LHS, RHS, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> llvalue -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_udiv(LLVMValueRef LHS, LLVMValueRef RHS,
|
||||
value Name, value B) {
|
||||
@ -975,6 +999,12 @@ CAMLprim LLVMValueRef llvm_build_sdiv(LLVMValueRef LHS, LLVMValueRef RHS,
|
||||
return LLVMBuildSDiv(Builder_val(B), LHS, RHS, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> llvalue -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_exact_sdiv(LLVMValueRef LHS, LLVMValueRef RHS,
|
||||
value Name, value B) {
|
||||
return LLVMBuildExactSDiv(Builder_val(B), LHS, RHS, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> llvalue -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_fdiv(LLVMValueRef LHS, LLVMValueRef RHS,
|
||||
value Name, value B) {
|
||||
@ -1098,6 +1128,37 @@ CAMLprim LLVMValueRef llvm_build_gep(LLVMValueRef Pointer, value Indices,
|
||||
String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> llvalue array -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_in_bounds_gep(LLVMValueRef Pointer,
|
||||
value Indices, value Name,
|
||||
value B) {
|
||||
return LLVMBuildInBoundsGEP(Builder_val(B), Pointer,
|
||||
(LLVMValueRef *) Op_val(Indices),
|
||||
Wosize_val(Indices), String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> int -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_struct_gep(LLVMValueRef Pointer,
|
||||
value Indices, value Name,
|
||||
value B) {
|
||||
return LLVMBuildInBoundsGEP(Builder_val(B), Pointer,
|
||||
(LLVMValueRef *) Op_val(Indices),
|
||||
Wosize_val(Indices), String_val(Name));
|
||||
}
|
||||
|
||||
/* string -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_global_string(value Str, value Name, value B) {
|
||||
return LLVMBuildGlobalString(Builder_val(B), String_val(Str),
|
||||
String_val(Name));
|
||||
}
|
||||
|
||||
/* string -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_global_stringptr(value Str, value Name,
|
||||
value B) {
|
||||
return LLVMBuildGlobalStringPtr(Builder_val(B), String_val(Str),
|
||||
String_val(Name));
|
||||
}
|
||||
|
||||
/*--... Casts ..............................................................--*/
|
||||
|
||||
/* llvalue -> lltype -> string -> llbuilder -> llvalue */
|
||||
@ -1172,6 +1233,43 @@ CAMLprim LLVMValueRef llvm_build_bitcast(LLVMValueRef X, LLVMTypeRef Ty,
|
||||
return LLVMBuildBitCast(Builder_val(B), X, Ty, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> lltype -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_zext_or_bitcast(LLVMValueRef X, LLVMTypeRef Ty,
|
||||
value Name, value B) {
|
||||
return LLVMBuildZExtOrBitCast(Builder_val(B), X, Ty, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> lltype -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_sext_or_bitcast(LLVMValueRef X, LLVMTypeRef Ty,
|
||||
value Name, value B) {
|
||||
return LLVMBuildSExtOrBitCast(Builder_val(B), X, Ty, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> lltype -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_trunc_or_bitcast(LLVMValueRef X,
|
||||
LLVMTypeRef Ty, value Name,
|
||||
value B) {
|
||||
return LLVMBuildTruncOrBitCast(Builder_val(B), X, Ty, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> lltype -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_pointercast(LLVMValueRef X, LLVMTypeRef Ty,
|
||||
value Name, value B) {
|
||||
return LLVMBuildPointerCast(Builder_val(B), X, Ty, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> lltype -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_intcast(LLVMValueRef X, LLVMTypeRef Ty,
|
||||
value Name, value B) {
|
||||
return LLVMBuildIntCast(Builder_val(B), X, Ty, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> lltype -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_fpcast(LLVMValueRef X, LLVMTypeRef Ty,
|
||||
value Name, value B) {
|
||||
return LLVMBuildFPCast(Builder_val(B), X, Ty, String_val(Name));
|
||||
}
|
||||
|
||||
/*--... Comparisons ........................................................--*/
|
||||
|
||||
/* Icmp.t -> llvalue -> llvalue -> string -> llbuilder -> llvalue */
|
||||
@ -1256,6 +1354,38 @@ CAMLprim LLVMValueRef llvm_build_shufflevector(LLVMValueRef V1, LLVMValueRef V2,
|
||||
return LLVMBuildShuffleVector(Builder_val(B), V1, V2, Mask, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> int -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_extractvalue(LLVMValueRef Aggregate,
|
||||
value Idx, value Name, value B) {
|
||||
return LLVMBuildExtractValue(Builder_val(B), Aggregate, Int_val(Idx),
|
||||
String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> llvalue -> int -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_insertvalue(LLVMValueRef Aggregate,
|
||||
LLVMValueRef Val, value Idx,
|
||||
value Name, value B) {
|
||||
return LLVMBuildInsertValue(Builder_val(B), Aggregate, Val, Int_val(Idx),
|
||||
String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_is_null(LLVMValueRef Val, value Name,
|
||||
value B) {
|
||||
return LLVMBuildIsNull(Builder_val(B), Val, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_is_not_null(LLVMValueRef Val, value Name,
|
||||
value B) {
|
||||
return LLVMBuildIsNotNull(Builder_val(B), Val, String_val(Name));
|
||||
}
|
||||
|
||||
/* llvalue -> llvalue -> string -> llbuilder -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_build_ptrdiff(LLVMValueRef LHS, LLVMValueRef RHS,
|
||||
value Name, value B) {
|
||||
return LLVMBuildPtrDiff(Builder_val(B), LHS, RHS, String_val(Name));
|
||||
}
|
||||
|
||||
/*===-- Module Providers --------------------------------------------------===*/
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user