|
clang 23.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, 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, 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, Expr *failureOrderExpr, uint64_t size, cir::MemOrder successOrder, cir::SyncScopeKind scope) |
| static void | emitAtomicOp (CIRGenFunction &cgf, AtomicExpr *expr, Address dest, Address ptr, Address val1, Address val2, 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, 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, uint64_t atomicTySize, QualType resultTy) |
|
static |
Definition at line 903 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 471 of file CIRGenAtomic.cpp.
References clang::CIRGen::CIRGenBuilderTy::createLoad(), cir::CIRBaseBuilderTy::createNot(), cir::CIRBaseBuilderTy::createPtrBitcast(), clang::CIRGen::CIRGenBuilderTy::createStore(), cir::CIRBaseBuilderTy::createYield(), clang::CIRGen::CIRGenFunction::emitStoreOfScalar(), clang::CIRGen::Address::getAlignment(), clang::CharUnits::getAsAlign(), cir::CIRBaseBuilderTy::getBoolTy(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::CIRGen::Address::getElementType(), clang::CIRGen::CIRGenFunction::getLoc(), clang::CIRGen::CIRGenFunction::getMLIRContext(), clang::CIRGen::Address::getPointer(), clang::Stmt::getSourceRange(), clang::Expr::getType(), clang::AtomicExpr::isVolatile(), clang::CIRGen::CIRGenFunction::makeAddrLValue(), and clang::CIRGen::Address::withPointer().
Referenced by emitAtomicCmpXchgFailureSet(), and emitAtomicCmpXchgFailureSet().
|
static |
Definition at line 513 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 606 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 1044 of file CIRGenAtomic.cpp.
References cir::CIRBaseBuilderTy::createYield(), and clang::CIRGen::CIRGenFunction::getBuilder().
Referenced by clang::CIRGen::CIRGenFunction::emitAtomicExprWithMemOrder().
|
static |
Definition at line 1129 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 635 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(), and kind.
Referenced by clang::CIRGen::CIRGenFunction::emitAtomicExpr(), and emitAtomicOp().
|
static |
Definition at line 946 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 447 of file CIRGenAtomic.cpp.
Referenced by emitAtomicOp().
|
static |
Definition at line 1143 of file CIRGenAtomic.cpp.
References clang::CIRGen::CallArgList::add(), 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::getPtr(), clang::ASTContext::getSizeType(), clang::Stmt::getSourceRange(), clang::Expr::getType(), clang::AtomicExpr::getVal1(), 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 457 of file CIRGenAtomic.cpp.
Referenced by emitAtomicCmpXchgFailureSet().
|
static |
Definition at line 163 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 1016 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 172 of file CIRGenAtomic.cpp.
References clang::CIRGen::CIRGenModule::getDataLayout(), and cir::CIRDataLayout::getTypeStoreSize().
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 314 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().