Adopting a uniform naming convention for type constructors in bindings.
[oota-llvm.git] / bindings / ocaml / llvm / llvm_ocaml.c
index bc6e0b70f096660b2a88fb9437bf53e24729b014..0005bee9b758dad76c393b24e5d4c2739bad58a1 100644 (file)
@@ -74,7 +74,7 @@ CAMLprim LLVMTypeRef llvm_i64_type(value Unit) { return LLVMInt64Type(); }
 
 /* int -> lltype */
 CAMLprim LLVMTypeRef llvm_make_integer_type(value Width) {
-  return LLVMCreateIntType(Int_val(Width));
+  return LLVMIntType(Int_val(Width));
 }
 
 /* lltype -> int */
@@ -114,9 +114,9 @@ CAMLprim LLVMTypeRef llvm_ppc_fp128_type(value Unit) {
 /* lltype -> lltype array -> bool -> lltype */
 CAMLprim LLVMTypeRef llvm_make_function_type(LLVMTypeRef RetTy, value ParamTys,
                                              value IsVarArg) {
-  return LLVMCreateFunctionType(RetTy, (LLVMTypeRef *) ParamTys,
-                                Wosize_val(ParamTys),
-                                Bool_val(IsVarArg));
+  return LLVMFunctionType(RetTy, (LLVMTypeRef *) ParamTys,
+                          Wosize_val(ParamTys),
+                          Bool_val(IsVarArg));
 }
 
 /* lltype -> bool */
@@ -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 LLVMStructType((LLVMTypeRef *) ElementTypes,
+                        Wosize_val(ElementTypes),
+                        Bool_val(Packed));
 }
 
 /* lltype -> lltype array */
@@ -160,18 +160,18 @@ 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 LLVMArrayType(ElementTy, Int_val(Count));
 }
 
 /* lltype -> lltype */
 CAMLprim LLVMTypeRef llvm_make_pointer_type(LLVMTypeRef ElementTy) {
-  return LLVMCreatePointerType(ElementTy);
+  return LLVMPointerType(ElementTy);
 }
 
 /* lltype -> int -> lltype */
 CAMLprim LLVMTypeRef llvm_make_vector_type(LLVMTypeRef ElementTy, value Count) {
-  return LLVMCreateVectorType(ElementTy, Int_val(Count));
+  return LLVMVectorType(ElementTy, Int_val(Count));
 }
 
 /* lltype -> lltype */
@@ -197,7 +197,7 @@ CAMLprim LLVMTypeRef llvm_label_type(value Unit) { return LLVMLabelType(); }
 
 /* unit -> lltype */
 CAMLprim LLVMTypeRef llvm_make_opaque_type(value Unit) {
-  return LLVMCreateOpaqueType();
+  return LLVMOpaqueType();
 }
 
 
@@ -244,56 +244,79 @@ CAMLprim value llvm_is_undef(LLVMValueRef Val) {
 
 /*--... Operations on scalar constants .....................................--*/
 
-/* lltype -> int -> bool -> llvalue */
-CAMLprim LLVMValueRef llvm_make_int_constant(LLVMTypeRef IntTy, value N,
-                                             value SExt) {
-  /* GCC warns if we use the ternary operator. */
-  unsigned long long N2;
-  if (Bool_val(SExt))
-    N2 = (value) Int_val(N);
-  else
-    N2 = (mlsize_t) Int_val(N);
-  
-  return LLVMGetIntConstant(IntTy, N2, Bool_val(SExt));
+/* lltype -> int -> llvalue */
+CAMLprim LLVMValueRef llvm_const_int(LLVMTypeRef IntTy, value N) {
+  return LLVMConstInt(IntTy, (long long) Int_val(N), 1);
 }
 
 /* lltype -> Int64.t -> bool -> llvalue */
-CAMLprim LLVMValueRef llvm_make_int64_constant(LLVMTypeRef IntTy, value N,
-                                               value SExt) {
-  return LLVMGetIntConstant(IntTy, Int64_val(N), Bool_val(SExt));
+CAMLprim LLVMValueRef llvm_const_of_int64(LLVMTypeRef IntTy, value N,
+                                          value SExt) {
+  return LLVMConstInt(IntTy, Int64_val(N), Bool_val(SExt));
 }
 
 /* lltype -> float -> llvalue */
-CAMLprim LLVMValueRef llvm_make_real_constant(LLVMTypeRef RealTy, value N) {
-  return LLVMGetRealConstant(RealTy, Double_val(N));
+CAMLprim LLVMValueRef llvm_const_float(LLVMTypeRef RealTy, value N) {
+  return LLVMConstReal(RealTy, Double_val(N));
 }
 
 /*--... Operations on composite constants ..................................--*/
 
-/* string -> bool -> llvalue */
-CAMLprim LLVMValueRef llvm_make_string_constant(value Str, value NullTerminate) {
-  return LLVMGetStringConstant(String_val(Str), string_length(Str),
-                               Bool_val(NullTerminate) == 0);
+/* string -> llvalue */
+CAMLprim LLVMValueRef llvm_const_string(value Str, value NullTerminate) {
+  return LLVMConstString(String_val(Str), string_length(Str), 1);
+}
+
+/* string -> llvalue */
+CAMLprim LLVMValueRef llvm_const_stringz(value Str, value NullTerminate) {
+  return LLVMConstString(String_val(Str), string_length(Str), 0);
 }
 
 /* lltype -> llvalue array -> llvalue */
-CAMLprim LLVMValueRef llvm_make_array_constant(LLVMTypeRef ElementTy,
+CAMLprim LLVMValueRef llvm_const_array(LLVMTypeRef ElementTy,
                                                value ElementVals) {
-  return LLVMGetArrayConstant(ElementTy, (LLVMValueRef*) Op_val(ElementVals),
-                              Wosize_val(ElementVals));
+  return LLVMConstArray(ElementTy, (LLVMValueRef*) Op_val(ElementVals),
+                        Wosize_val(ElementVals));
 }
 
-/* llvalue array -> bool -> llvalue */
-CAMLprim LLVMValueRef llvm_make_struct_constant(value ElementVals,
-                                                value Packed) {
-  return LLVMGetStructConstant((LLVMValueRef *) Op_val(ElementVals),
-                               Wosize_val(ElementVals), Bool_val(Packed));
+/* llvalue array -> llvalue */
+CAMLprim LLVMValueRef llvm_const_struct(value ElementVals) {
+  return LLVMConstStruct((LLVMValueRef *) Op_val(ElementVals),
+                         Wosize_val(ElementVals), 0);
 }
 
 /* llvalue array -> llvalue */
-CAMLprim value llvm_make_vector_constant(value ElementVals) {
-  return (value) LLVMGetVectorConstant((LLVMValueRef*) Op_val(ElementVals),
-                                       Wosize_val(ElementVals));
+CAMLprim LLVMValueRef llvm_const_packed_struct(value ElementVals) {
+  return LLVMConstStruct((LLVMValueRef *) Op_val(ElementVals),
+                         Wosize_val(ElementVals), 1);
+}
+
+/* llvalue array -> llvalue */
+CAMLprim LLVMValueRef llvm_const_vector(value ElementVals) {
+  return LLVMConstVector((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) ...--*/