|
clang 22.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 | emitMemOrderDefaultCaseLabel (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) |
| 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) |
| 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 |
Definition at line 668 of file CIRGenAtomic.cpp.
References cir::MissingFeatures::atomicSyncScopeID(), clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenModule::errorNYI(), clang::SingleScope, and clang::SystemScope.
Referenced by emitAtomicOp().
|
static |
Definition at line 314 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 354 of file CIRGenAtomic.cpp.
References cir::MissingFeatures::atomicExpr(), clang::CIRGen::CIRGenFunction::cgm, emitAtomicCmpXchg(), clang::CIRGen::CIRGenModule::errorNYI(), clang::Expr::EvaluateAsInt(), clang::CIRGen::CIRGenFunction::getContext(), clang::APValue::getInt(), clang::Stmt::getSourceRange(), cir::isValidCIRAtomicOrderingCABI(), and clang::Expr::EvalResult::Val.
Referenced by EmitAtomicOp(), and emitAtomicOp().
|
static |
Definition at line 741 of file CIRGenAtomic.cpp.
References cir::CIRBaseBuilderTy::createYield(), and clang::CIRGen::CIRGenFunction::getBuilder().
Referenced by clang::CIRGen::CIRGenFunction::emitAtomicExprWithMemOrder().
|
static |
Definition at line 399 of file CIRGenAtomic.cpp.
References cir::MissingFeatures::atomicExpr(), cir::MissingFeatures::atomicSyncScopeID(), clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenBuilderTy::createLoad(), clang::CIRGen::CIRGenBuilderTy::createStore(), emitAtomicCmpXchgFailureSet(), 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(), and clang::CharUnits::getQuantity().
Referenced by clang::CIRGen::CIRGenFunction::emitAlloca(), clang::CIRGen::CIRGenFunction::emitAtomicExpr(), and emitAtomicOp().
|
static |
Definition at line 685 of file CIRGenAtomic.cpp.
References cir::MissingFeatures::atomicSyncScopeID(), clang::CIRGen::CIRGenFunction::cgm, convertSyncScopeToCIR(), emitAtomicOp(), clang::CIRGen::CIRGenModule::errorNYI(), and clang::ast_matchers::expr.
|
static |
Definition at line 300 of file CIRGenAtomic.cpp.
|
static |
Definition at line 289 of file CIRGenAtomic.cpp.
|
static |
Definition at line 141 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 713 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 150 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 237 of file CIRGenAtomic.cpp.
References clang::isa().
Referenced by clang::CodeGen::CodeGenFunction::EmitAtomicStore(), and clang::CIRGen::CIRGenFunction::emitAtomicStore().