diff options
author | Gordon Henriksen <gordonhenriksen@mac.com> | 2007-10-06 14:29:36 +0000 |
---|---|---|
committer | Gordon Henriksen <gordonhenriksen@mac.com> | 2007-10-06 14:29:36 +0000 |
commit | 07067c0e1150f764978d0bcac432083df8dc7587 (patch) | |
tree | 3048a0ee53d324bd3ec7b2998a81a55334579e88 /bindings/ocaml/llvm/llvm_ocaml.c | |
parent | 95e1836c313cbf9cf665ac0460b7e6c8e7f7902b (diff) | |
download | external_llvm-07067c0e1150f764978d0bcac432083df8dc7587.zip external_llvm-07067c0e1150f764978d0bcac432083df8dc7587.tar.gz external_llvm-07067c0e1150f764978d0bcac432083df8dc7587.tar.bz2 |
Adding C and Ocaml bindings for ConstantExpr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42696 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'bindings/ocaml/llvm/llvm_ocaml.c')
-rw-r--r-- | bindings/ocaml/llvm/llvm_ocaml.c | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/bindings/ocaml/llvm/llvm_ocaml.c b/bindings/ocaml/llvm/llvm_ocaml.c index bc6e0b7..47f1936 100644 --- a/bindings/ocaml/llvm/llvm_ocaml.c +++ b/bindings/ocaml/llvm/llvm_ocaml.c @@ -139,10 +139,10 @@ CAMLprim value llvm_param_types(LLVMTypeRef FunTy) { /*--... Operations on struct types .........................................--*/ /* lltype array -> bool -> lltype */ -CAMLprim value llvm_make_struct_type(value ElementTypes, value Packed) { - return (value) LLVMCreateStructType((LLVMTypeRef *) ElementTypes, - Wosize_val(ElementTypes), - Bool_val(Packed)); +CAMLprim LLVMTypeRef llvm_make_struct_type(value ElementTypes, value Packed) { + return LLVMCreateStructType((LLVMTypeRef *) ElementTypes, + Wosize_val(ElementTypes), + Bool_val(Packed)); } /* lltype -> lltype array */ @@ -160,8 +160,8 @@ CAMLprim value llvm_is_packed(LLVMTypeRef StructTy) { /*--... Operations on array, pointer, and vector types .....................--*/ /* lltype -> int -> lltype */ -CAMLprim value llvm_make_array_type(LLVMTypeRef ElementTy, value Count) { - return (value) LLVMCreateArrayType(ElementTy, Int_val(Count)); +CAMLprim LLVMTypeRef llvm_make_array_type(LLVMTypeRef ElementTy, value Count) { + return LLVMCreateArrayType(ElementTy, Int_val(Count)); } /* lltype -> lltype */ @@ -291,9 +291,31 @@ CAMLprim LLVMValueRef llvm_make_struct_constant(value ElementVals, } /* llvalue array -> llvalue */ -CAMLprim value llvm_make_vector_constant(value ElementVals) { - return (value) LLVMGetVectorConstant((LLVMValueRef*) Op_val(ElementVals), - Wosize_val(ElementVals)); +CAMLprim LLVMValueRef llvm_make_vector_constant(value ElementVals) { + return LLVMGetVectorConstant((LLVMValueRef*) Op_val(ElementVals), + Wosize_val(ElementVals)); +} + +/*--... Constant expressions ...............................................--*/ + +/* int_predicate -> llvalue -> llvalue -> llvalue */ +CAMLprim LLVMValueRef llvm_const_icmp(value Pred, + LLVMValueRef LHSConstant, + LLVMValueRef RHSConstant) { + return LLVMConstICmp(Int_val(Pred) + LLVMIntEQ, LHSConstant, RHSConstant); +} + +/* real_predicate -> llvalue -> llvalue -> llvalue */ +CAMLprim LLVMValueRef llvm_const_fcmp(value Pred, + LLVMValueRef LHSConstant, + LLVMValueRef RHSConstant) { + return LLVMConstFCmp(Int_val(Pred), LHSConstant, RHSConstant); +} + +/* llvalue -> llvalue array -> llvalue */ +CAMLprim LLVMValueRef llvm_const_gep(LLVMValueRef ConstantVal, value Indices) { + return LLVMConstGEP(ConstantVal, (LLVMValueRef*) Op_val(Indices), + Wosize_val(Indices)); } /*--... Operations on global variables, functions, and aliases (globals) ...--*/ |