LLVMValueRef mono_llvm_build_load (LLVMBuilderRef builder, LLVMValueRef PointerVal, const char *Name, gboolean is_volatile, BarrierKind barrier) { LoadInst *ins = unwrap(builder)->CreateLoad(unwrap(PointerVal), is_volatile, Name); switch (barrier) { case LLVM_BARRIER_NONE: break; case LLVM_BARRIER_ACQ: ins->setOrdering(Acquire); break; case LLVM_BARRIER_SEQ: ins->setOrdering(SequentiallyConsistent); break; default: g_assert_not_reached (); break; } return wrap(ins); }
LLVMValueRef LLVM_General_BuildLoad( LLVMBuilderRef b, LLVMValueRef p, unsigned align, LLVMBool isVolatile, LLVMAtomicOrdering atomicOrdering, LLVMSynchronizationScope synchScope, const char *name ) { LoadInst *i = unwrap(b)->CreateAlignedLoad(unwrap(p), align, isVolatile, name); i->setOrdering(unwrap(atomicOrdering)); if (atomicOrdering != LLVMAtomicOrderingNotAtomic) i->setSynchScope(unwrap(synchScope)); return wrap(i); }