mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
add binding to read icmp predicate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141287 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -705,6 +705,8 @@ external instr_end : llbasicblock -> (llbasicblock, llvalue) llrev_pos
|
||||
external instr_pred : llvalue -> (llbasicblock, llvalue) llrev_pos
|
||||
= "llvm_instr_pred"
|
||||
|
||||
external icmp_predicate : llvalue -> Icmp.t option = "llvm_instr_icmp_predicate"
|
||||
|
||||
let rec iter_instrs_range f i e =
|
||||
if i = e then () else
|
||||
match i with
|
||||
|
@@ -1435,6 +1435,8 @@ val instr_pred : llvalue -> (llbasicblock, llvalue) llrev_pos
|
||||
val fold_right_instrs: (llvalue -> 'a -> 'a) -> llbasicblock -> 'a -> 'a
|
||||
|
||||
|
||||
val icmp_predicate : llvalue -> Icmp.t option
|
||||
|
||||
(** {7 Operations on call sites} *)
|
||||
|
||||
(** [instruction_call_conv ci] is the calling convention for the call or invoke
|
||||
|
@@ -1010,6 +1010,19 @@ DEFINE_ITERATORS(instr, Instruction, LLVMBasicBlockRef, LLVMValueRef,
|
||||
LLVMGetInstructionParent)
|
||||
|
||||
|
||||
/* llvalue -> ICmp.t */
|
||||
CAMLprim value llvm_instr_icmp_predicate(LLVMValueRef Val) {
|
||||
CAMLparam0();
|
||||
int x = LLVMGetICmpPredicate(Val);
|
||||
if (x) {
|
||||
value Option = alloc(1, 0);
|
||||
Field(Option, 0) = Val_int(x - LLVMIntEQ);
|
||||
CAMLreturn(Option);
|
||||
}
|
||||
CAMLreturn(Val_int(0));
|
||||
}
|
||||
|
||||
|
||||
/*--... Operations on call sites ...........................................--*/
|
||||
|
||||
/* llvalue -> int */
|
||||
|
Reference in New Issue
Block a user