Example #1
0
 public unsafe static ValueRef BuildAtomicRMW(BuilderRef B, AtomicRMWBinOp op, ValueRef PTR, ValueRef Val, AtomicOrdering ordering, bool singleThread) {
   ValueRef ret = new ValueRef(LLVMPINVOKE.BuildAtomicRMW(B.Value, (int)op, PTR.Value, Val.Value, (int)ordering, singleThread));
   return ret;
 }
Example #2
0
 public unsafe static ValueRef BuildFence(BuilderRef B, AtomicOrdering ordering, bool singleThread, string Name) {
   ValueRef ret = new ValueRef(LLVMPINVOKE.BuildFence(B.Value, (int)ordering, singleThread, Name));
   return ret;
 }
Example #3
0
        public AtomicRMWInst CreateAtomicRMW(AtomicRMWInst.BinOp Op, Value Ptr, Value Val, AtomicOrdering Ordering, SyncScopeID SSID = SyncScopeID.System)
        {
            var handle = Handle.BuildAtomicRMW((LLVMAtomicRMWBinOp)Op, Ptr.Handle, Val.Handle, (LLVMAtomicOrdering)Ordering, SSID == SyncScopeID.SingleThread);

            return(Context.GetOrCreate <AtomicRMWInst>(handle));
        }
Example #4
0
        public FenceInst CreateFence(AtomicOrdering Ordering, SyncScopeID SSID, ReadOnlySpan <char> Name)
        {
            var handle = Handle.BuildFence((LLVMAtomicOrdering)Ordering, SSID == SyncScopeID.SingleThread, Name);

            return(Context.GetOrCreate <FenceInst>(handle));
        }
Example #5
0
 public FenceInst CreateFence(AtomicOrdering Ordering, SyncScopeID SSID = SyncScopeID.System, string Name = "") => CreateFence(Ordering, SSID, Name.AsSpan());
Example #6
0
 public static LLVMAtomicOrdering Unwrap(this AtomicOrdering wrapper) => (LLVMAtomicOrdering)(int)wrapper;