|
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 | 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) |
| static bool | isMemOrderValid (uint64_t order, bool isStore, bool isLoad) |
|
static |
Definition at line 289 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 329 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 374 of file CIRGenAtomic.cpp.
References cir::MissingFeatures::atomicExpr(), cir::MissingFeatures::atomicScope(), 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::emitAtomicExpr().
|
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 |
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().
Definition at line 646 of file CIRGenAtomic.cpp.
References cir::isValidCIRAtomicOrderingCABI().
Referenced by clang::CIRGen::CIRGenFunction::emitAtomicExpr().
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().