|
clang 24.0.0git
|
Go to the source code of this file.
Functions | |
| static Address | emitValToTemp (CIRGenFunction &cgf, Expr *e) |
| static bool | isFullSizeType (CIRGenModule &cgm, mlir::Type ty, uint64_t expectedSize) |
| Does a store of the given IR type modify the full expected width? | |
| static bool | shouldCastToInt (mlir::Type valueTy, bool cmpxchg) |
| Return true if. | |
| static void | emitDefaultCaseLabel (CIRGenBuilderTy &builder, mlir::Location loc) |
| static void | emitMemOrderCaseLabel (CIRGenBuilderTy &builder, mlir::Location loc, mlir::Type orderType, llvm::ArrayRef< cir::MemOrder > orders) |
| static void | emitAtomicCmpXchg (CIRGenFunction &cgf, AtomicExpr *e, bool isWeak, Address dest, Address ptr, Address val1, Address val2, Address expectedResult, uint64_t size, cir::MemOrder successOrder, cir::MemOrder failureOrder, cir::SyncScopeKind scope) |
| static void | emitAtomicCmpXchgFailureSet (CIRGenFunction &cgf, AtomicExpr *e, bool isWeak, Address dest, Address ptr, Address val1, Address val2, Address expectedResult, Expr *failureOrderExpr, uint64_t size, cir::MemOrder successOrder, cir::SyncScopeKind scope) |
| static void | emitAtomicCmpXchgFailureSetCheckWeak (CIRGenFunction &cgf, AtomicExpr *e, Expr *isWeakExpr, Address dest, Address ptr, Address val1, Address val2, Address expectedResult, Expr *failureOrderExpr, uint64_t size, cir::MemOrder successOrder, cir::SyncScopeKind scope) |
| static void | setAMDGPUAtomicMetadata (CIRGenFunction &cgf, mlir::Operation *op) |
| Attach the AMDGPU atomic metadata markers that the current atomic options call for. | |
| static void | emitAtomicOp (CIRGenFunction &cgf, AtomicExpr *expr, Address dest, Address ptr, Address val1, Address val2, Address expectedResult, Expr *isWeakExpr, Expr *failureOrderExpr, int64_t size, cir::MemOrder order, cir::SyncScopeKind scope) |
| static cir::SyncScopeKind | convertSyncScopeToCIR (CIRGenFunction &cgf, SourceRange range, clang::SyncScope scope) |
| static void | emitAtomicOp (CIRGenFunction &cgf, AtomicExpr *expr, Address dest, Address ptr, Address val1, Address val2, Address expectedResult, Expr *isWeakExpr, Expr *failureOrderExpr, int64_t size, cir::MemOrder order, const std::optional< Expr::EvalResult > &scopeConst, mlir::Value scopeValue) |
| static std::optional< cir::MemOrder > | getEffectiveAtomicMemOrder (cir::MemOrder oriOrder, bool isStore, bool isLoad, bool isFence) |
| static void | emitAtomicExprWithDynamicMemOrder (CIRGenFunction &cgf, mlir::Value order, bool isStore, bool isLoad, bool isFence, llvm::function_ref< void(cir::MemOrder)> emitAtomicOpFn) |
| static RValue | emitAtomicLibCall (CIRGenFunction &cgf, llvm::StringRef funcName, QualType resultType, CallArgList &args) |
| static RValue | emitLibCallForAtomicExpr (CIRGenFunction &cgf, AtomicExpr *e, Address atomicPtr, Address dest, Address val1, Address val2, uint64_t atomicTySize, QualType resultTy) |
|
static |
Definition at line 980 of file CIRGenAtomic.cpp.
References clang::ClusterScope, clang::DeviceScope, clang::HIPAgent, clang::HIPCluster, clang::HIPSingleThread, clang::HIPSystem, clang::HIPWavefront, clang::HIPWorkgroup, clang::OpenCLAllSVMDevices, clang::OpenCLDevice, clang::OpenCLSubGroup, clang::OpenCLWorkGroup, clang::SingleScope, clang::SystemScope, clang::WavefrontScope, and clang::WorkgroupScope.
Referenced by emitAtomicOp().
|
static |
Definition at line 486 of file CIRGenAtomic.cpp.
References clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenBuilderTy::createLoad(), clang::CIRGen::CIRGenBuilderTy::createMemCpy(), cir::CIRBaseBuilderTy::createNot(), clang::CIRGen::CIRGenBuilderTy::createStore(), clang::CIRGen::CIRGenFunction::createTempAlloca(), cir::CIRBaseBuilderTy::createYield(), clang::CIRGen::CIRGenFunction::emitStoreOfScalar(), cir::MissingFeatures::generateDebugInfo(), clang::CIRGen::Address::getAlignment(), clang::CharUnits::getAsAlign(), cir::CIRBaseBuilderTy::getBoolTy(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::CIRGen::CIRGenBuilderTy::getConstInt(), clang::CIRGen::CIRGenModule::getDataLayout(), clang::CIRGen::Address::getElementType(), clang::CIRGen::CIRGenFunction::getLoc(), clang::CIRGen::CIRGenFunction::getMLIRContext(), clang::CIRGen::Address::getPointer(), clang::Stmt::getSourceRange(), clang::Expr::getType(), cir::CIRDataLayout::getTypeStoreSize(), clang::AtomicExpr::isVolatile(), clang::CIRGen::CIRGenFunction::makeAddrLValue(), clang::CIRGen::CIRGenTypeCache::uInt64Ty, clang::CIRGen::CIRGenTypeCache::voidTy, and clang::CIRGen::Address::withElementType().
Referenced by emitAtomicCmpXchgFailureSet(), and emitAtomicCmpXchgFailureSet().
|
static |
Definition at line 543 of file CIRGenAtomic.cpp.
References cir::CIRBaseBuilderTy::createBreak(), cir::CIRBaseBuilderTy::createYield(), emitAtomicCmpXchg(), emitMemOrderCaseLabel(), clang::CIRGen::CIRGenFunction::emitScalarExpr(), clang::Expr::EvaluateAsInt(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::CIRGen::CIRGenFunction::getContext(), clang::APValue::getInt(), clang::CIRGen::CIRGenFunction::getLoc(), clang::Stmt::getSourceRange(), cir::isValidCIRAtomicOrderingCABI(), and clang::Expr::EvalResult::Val.
Referenced by EmitAtomicOp(), and emitAtomicOp().
|
static |
Definition at line 634 of file CIRGenAtomic.cpp.
References clang::CIRGen::CIRGenFunction::emitScalarExpr(), cir::CIRBaseBuilderTy::getBoolTy(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::CIRGen::CIRGenFunction::getLoc(), and clang::Stmt::getSourceRange().
Referenced by emitAtomicOp().
|
static |
Definition at line 1122 of file CIRGenAtomic.cpp.
References cir::CIRBaseBuilderTy::createYield(), and clang::CIRGen::CIRGenFunction::getBuilder().
Referenced by clang::CIRGen::CIRGenFunction::emitAtomicExprWithMemOrder().
|
static |
Definition at line 1207 of file CIRGenAtomic.cpp.
References clang::CIRGen::CIRGenTypes::arrangeBuiltinFunctionCall(), clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenModule::createRuntimeFunction(), clang::CIRGen::CIRGenFunction::emitCall(), clang::CIRGen::CIRGenCallee::forDirect(), clang::CIRGen::CIRGenTypes::getFunctionType(), clang::CIRGen::CIRGenModule::getTypes(), and cir::MissingFeatures::opFuncExtraAttrs().
Referenced by emitLibCallForAtomicExpr().
|
static |
Definition at line 699 of file CIRGenAtomic.cpp.
References cir::MissingFeatures::atomicSyncScopeID(), clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenBuilderTy::createLoad(), clang::CIRGen::CIRGenBuilderTy::createStore(), emitAtomicCmpXchgFailureSet(), emitAtomicCmpXchgFailureSetCheckWeak(), clang::CIRGen::CIRGenModule::errorNYI(), clang::Expr::EvaluateAsBooleanCondition(), clang::ast_matchers::expr, clang::CIRGen::Address::getAlignment(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::CIRGen::CIRGenFunction::getContext(), clang::CIRGen::CIRGenFunction::getLoc(), clang::CIRGen::Address::getPointer(), clang::CharUnits::getQuantity(), clang::CIRGen::CIRGenModule::getTriple(), kind, and setAMDGPUAtomicMetadata().
Referenced by clang::CIRGen::CIRGenFunction::emitAtomicExpr(), and emitAtomicOp().
|
static |
Definition at line 1023 of file CIRGenAtomic.cpp.
References convertSyncScopeToCIR(), cir::CIRBaseBuilderTy::createBreak(), cir::CIRBaseBuilderTy::createYield(), emitAtomicOp(), emitDefaultCaseLabel(), clang::ast_matchers::expr, clang::CIRGen::CIRGenFunction::getBuilder(), and clang::CIRGen::CIRGenFunction::getLoc().
|
static |
Definition at line 462 of file CIRGenAtomic.cpp.
Referenced by emitAtomicOp().
|
static |
Definition at line 1222 of file CIRGenAtomic.cpp.
References clang::CIRGen::CallArgList::add(), clang::ASTContext::BoolTy, clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenFunction::convertTempToRValue(), clang::CIRGen::CIRGenFunction::convertTypeForMem(), cir::CIRBaseBuilderTy::createPtrBitcast(), emitAtomicLibCall(), clang::CIRGen::Address::emitRawPointer(), clang::CIRGen::CIRGenFunction::emitScalarExpr(), clang::CIRGen::CIRGenModule::errorNYI(), clang::CIRGen::RValue::get(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::CIRGen::CIRGenBuilderTy::getConstInt(), clang::CIRGen::CIRGenFunction::getContext(), clang::Expr::getExprLoc(), clang::CIRGen::CIRGenFunction::getLoc(), clang::AtomicExpr::getOp(), clang::AtomicExpr::getOrder(), clang::AtomicExpr::getOrderFail(), clang::AtomicExpr::getPtr(), clang::ASTContext::getSizeType(), clang::Stmt::getSourceRange(), clang::Expr::getType(), clang::AtomicExpr::getVal1(), clang::AtomicExpr::getVal2(), clang::ASTContext::IntTy, clang::AtomicExpr::isCmpXChg(), clang::AtomicExpr::isOpenCL(), clang::Type::isVoidType(), cir::MissingFeatures::openCL(), clang::CIRGen::CIRGenTypeCache::sizeTy, clang::ASTContext::VoidPtrTy, clang::ASTContext::VoidTy, clang::CIRGen::CIRGenTypeCache::voidTy, and clang::CIRGen::Address::withElementType().
Referenced by clang::CIRGen::CIRGenFunction::emitAtomicExpr().
|
static |
Definition at line 472 of file CIRGenAtomic.cpp.
Referenced by emitAtomicCmpXchgFailureSet().
|
static |
Definition at line 164 of file CIRGenAtomic.cpp.
References clang::CIRGen::CIRGenFunction::createMemTemp(), clang::CIRGen::CIRGenFunction::emitAnyExprToMem(), clang::CIRGen::CIRGenFunction::getLoc(), clang::QualType::getQualifiers(), clang::Stmt::getSourceRange(), and clang::Expr::getType().
Referenced by clang::CIRGen::CIRGenFunction::emitAtomicExpr().
|
static |
Definition at line 1094 of file CIRGenAtomic.cpp.
Referenced by clang::CIRGen::CIRGenFunction::emitAtomicExprWithMemOrder().
|
static |
Does a store of the given IR type modify the full expected width?
Definition at line 173 of file CIRGenAtomic.cpp.
References clang::CIRGen::CIRGenModule::getDataLayout(), and cir::CIRDataLayout::getTypeStoreSize().
|
static |
Attach the AMDGPU atomic metadata markers that the current atomic options call for.
The "no.X" metadata is emitted when the corresponding option is off, since it asserts the absence of that memory kind. The clang::atomic attribute is what turns the options on and off.
Definition at line 668 of file CIRGenAtomic.cpp.
References cir::MissingFeatures::atomicAMDGPUAvailableVisibleMMRA(), cir::MissingFeatures::atomicAMDGPUNoaliasAddrspace(), clang::CIRGen::CIRGenFunction::cgm, clang::FineGrainedMemory, clang::CIRGen::CIRGenModule::getAtomicOpts(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::AtomicOptions::getOption(), clang::IgnoreDenormalMode, and clang::RemoteMemory.
Referenced by emitAtomicOp().
Return true if.
| valueTy | is a type that should be casted to integer around the atomic memory operation. If |
| cmpxchg | is true, then the cast of a floating point type is made as that instruction can not have floating point operands. TODO: Allow compare-and-exchange and FP - see comment in CIRGenAtomicExpandPass.cpp. |
Definition at line 329 of file CIRGenAtomic.cpp.
References clang::isa().
Referenced by clang::CodeGen::CodeGenFunction::EmitAtomicExpr(), clang::CIRGen::CIRGenFunction::emitAtomicExpr(), clang::CodeGen::CodeGenFunction::EmitAtomicStore(), and clang::CIRGen::CIRGenFunction::emitAtomicStore().