LLVM
8.0.1
|
#include "llvm/Transforms/Scalar/LowerAtomic.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/Pass.h"
#include "llvm/Transforms/Scalar.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "loweratomic" |
Functions | |
static bool | LowerAtomicCmpXchgInst (AtomicCmpXchgInst *CXI) |
static bool | LowerAtomicRMWInst (AtomicRMWInst *RMWI) |
static bool | LowerFenceInst (FenceInst *FI) |
static bool | LowerLoadInst (LoadInst *LI) |
static bool | LowerStoreInst (StoreInst *SI) |
static bool | runOnBasicBlock (BasicBlock &BB) |
static bool | lowerAtomics (Function &F) |
INITIALIZE_PASS (LowerAtomicLegacyPass, "loweratomic", "Lower atomic intrinsics to non-atomic form", false, false) Pass *llvm | |
#define DEBUG_TYPE "loweratomic" |
Definition at line 22 of file LowerAtomic.cpp.
INITIALIZE_PASS | ( | LowerAtomicLegacyPass | , |
"loweratomic" | , | ||
"Lower atomic intrinsics to non-atomic form" | , | ||
false | , | ||
false | |||
) |
Definition at line 169 of file LowerAtomic.cpp.
|
static |
Definition at line 24 of file LowerAtomic.cpp.
References llvm::IRBuilder< T, Inserter >::CreateICmpEQ(), llvm::IRBuilder< T, Inserter >::CreateInsertValue(), llvm::IRBuilder< T, Inserter >::CreateLoad(), llvm::IRBuilder< T, Inserter >::CreateSelect(), llvm::IRBuilder< T, Inserter >::CreateStore(), llvm::object::Equal, llvm::Instruction::eraseFromParent(), llvm::UndefValue::get(), llvm::AtomicCmpXchgInst::getCompareOperand(), llvm::AtomicCmpXchgInst::getNewValOperand(), llvm::AtomicCmpXchgInst::getPointerOperand(), llvm::Value::getType(), and llvm::Value::replaceAllUsesWith().
Referenced by runOnBasicBlock().
|
static |
Definition at line 43 of file LowerAtomic.cpp.
References llvm::AtomicRMWInst::Add, llvm::AtomicRMWInst::And, llvm::IRBuilder< T, Inserter >::CreateAdd(), llvm::IRBuilder< T, Inserter >::CreateAnd(), llvm::IRBuilder< T, Inserter >::CreateICmpSLT(), llvm::IRBuilder< T, Inserter >::CreateICmpULT(), llvm::IRBuilder< T, Inserter >::CreateLoad(), llvm::IRBuilder< T, Inserter >::CreateNot(), llvm::IRBuilder< T, Inserter >::CreateOr(), llvm::IRBuilder< T, Inserter >::CreateSelect(), llvm::IRBuilder< T, Inserter >::CreateStore(), llvm::IRBuilder< T, Inserter >::CreateSub(), llvm::IRBuilder< T, Inserter >::CreateXor(), llvm::Instruction::eraseFromParent(), llvm::AtomicRMWInst::getOperation(), llvm::AtomicRMWInst::getPointerOperand(), llvm::AtomicRMWInst::getValOperand(), llvm_unreachable, llvm::AtomicRMWInst::Max, llvm::AtomicRMWInst::Min, llvm::AtomicRMWInst::Nand, llvm::AtomicRMWInst::Or, llvm::Value::replaceAllUsesWith(), llvm::AtomicRMWInst::Sub, llvm::AtomicRMWInst::UMax, llvm::AtomicRMWInst::UMin, llvm::AtomicRMWInst::Xchg, and llvm::AtomicRMWInst::Xor.
Referenced by runOnBasicBlock().
Definition at line 133 of file LowerAtomic.cpp.
References runOnBasicBlock().
Referenced by llvm::LowerAtomicPass::run().
Definition at line 97 of file LowerAtomic.cpp.
References llvm::Instruction::eraseFromParent().
Referenced by runOnBasicBlock().
Definition at line 102 of file LowerAtomic.cpp.
References llvm::NotAtomic, and llvm::LoadInst::setAtomic().
Referenced by runOnBasicBlock().
Definition at line 107 of file LowerAtomic.cpp.
References llvm::NotAtomic, and llvm::StoreInst::setAtomic().
Referenced by runOnBasicBlock().
|
static |
Definition at line 112 of file LowerAtomic.cpp.
References llvm::BasicBlock::begin(), llvm::BasicBlock::end(), LowerAtomicCmpXchgInst(), LowerAtomicRMWInst(), LowerFenceInst(), LowerLoadInst(), LowerStoreInst(), and SI.
Referenced by lowerAtomics().