mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-02 07:17:36 +00:00
[OCaml] PR19859: Add Llvm.{fcmp_predicate,float_of_const}.
Patch by Gabriel Radanne <drupyog@zoho.com>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220815 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -734,6 +734,22 @@ CAMLprim LLVMValueRef llvm_const_float(LLVMTypeRef RealTy, value N) {
|
||||
return LLVMConstReal(RealTy, Double_val(N));
|
||||
}
|
||||
|
||||
|
||||
/* llvalue -> float */
|
||||
CAMLprim value llvm_float_of_const(LLVMValueRef Const)
|
||||
{
|
||||
if (LLVMIsAConstantFP(Const)) {
|
||||
LLVMBool LosesInfo;
|
||||
double res = LLVMConstRealGetDouble(Const, &LosesInfo);
|
||||
if (LosesInfo)
|
||||
return Val_int(0);
|
||||
value Option = alloc(1, 0);
|
||||
Field(Option, 0) = caml_copy_double(res);
|
||||
return Option;
|
||||
}
|
||||
return Val_int(0);
|
||||
}
|
||||
|
||||
/* lltype -> string -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_const_float_of_string(LLVMTypeRef RealTy, value S) {
|
||||
return LLVMConstRealOfStringAndSize(RealTy, String_val(S),
|
||||
@@ -1358,6 +1374,18 @@ CAMLprim value llvm_instr_icmp_predicate(LLVMValueRef Val) {
|
||||
CAMLreturn(Val_int(0));
|
||||
}
|
||||
|
||||
/* llvalue -> FCmp.t option */
|
||||
CAMLprim value llvm_instr_fcmp_predicate(LLVMValueRef Val) {
|
||||
CAMLparam0();
|
||||
int x = LLVMGetFCmpPredicate(Val);
|
||||
if (x) {
|
||||
value Option = alloc(1, 0);
|
||||
Field(Option, 0) = Val_int(x - LLVMRealPredicateFalse);
|
||||
CAMLreturn(Option);
|
||||
}
|
||||
CAMLreturn(Val_int(0));
|
||||
}
|
||||
|
||||
/* llvalue -> llvalue */
|
||||
CAMLprim LLVMValueRef llvm_instr_clone(LLVMValueRef Inst) {
|
||||
if (!LLVMIsAInstruction(Inst))
|
||||
|
||||
Reference in New Issue
Block a user