//===- InstCombineAtomicRMW.cpp -------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file implements the visit functions for atomic rmw instructions. // //===----------------------------------------------------------------------===// #include "InstCombineInternal.h" #include "llvm/IR/Instructions.h" usingnamespacellvm; namespace { /// Return true if and only if the given instruction does not modify the memory /// location referenced. Note that an idemptent atomicrmw may still have /// ordering effects on nearby instructions, or be volatile. /// TODO: Common w/ the version in AtomicExpandPass, and change the term used. /// Idemptotent is confusing in this context. bool isIdempotentRMW(AtomicRMWInst& RMWI) { … } /// Return true if the given instruction always produces a value in memory /// equivalent to its value operand. bool isSaturating(AtomicRMWInst& RMWI) { … } } // namespace Instruction *InstCombinerImpl::visitAtomicRMWInst(AtomicRMWInst &RMWI) { … }