/// %res = load {atomic|volatile} T* %ptr memory_order, align sizeof(T) /// becomes: /// %res = call T @llvm.nacl.atomic.load.i<size>(%ptr, memory_order) void AtomicVisitor::visitLoadInst(LoadInst &I) { return; // XXX EMSCRIPTEN if (I.isSimple()) return; PointerHelper<LoadInst> PH(*this, I); const NaCl::AtomicIntrinsics::AtomicIntrinsic *Intrinsic = findAtomicIntrinsic(I, Intrinsic::nacl_atomic_load, PH.PET); checkAlignment(I, I.getAlignment(), PH.BitSize / CHAR_BIT); Value *Args[] = {PH.P, freezeMemoryOrder(I, I.getOrdering())}; replaceInstructionWithIntrinsicCall(I, Intrinsic, PH.OriginalPET, PH.PET, Args); }