atomic Load/Store

This commit is contained in:
xushiwei
2024-06-16 16:35:46 +08:00
parent fbd15a81b4
commit 340b5bd165
9 changed files with 236 additions and 156 deletions

View File

@@ -27,6 +27,18 @@ import (
"github.com/goplus/llvm"
)
type AtomicOrdering = llvm.AtomicOrdering
const (
OrderingNotAtomic = llvm.AtomicOrderingNotAtomic
OrderingUnordered = llvm.AtomicOrderingUnordered
OrderingMonotonic = llvm.AtomicOrderingMonotonic
OrderingAcquire = llvm.AtomicOrderingAcquire
OrderingRelease = llvm.AtomicOrderingRelease
OrderingAcquireRelease = llvm.AtomicOrderingAcquireRelease
OrderingSeqConsistent = llvm.AtomicOrderingSequentiallyConsistent
)
// -----------------------------------------------------------------------------
type Expr struct {
@@ -41,6 +53,12 @@ func (v Expr) IsNil() bool {
return v.Type == nil
}
// SetOrdering sets the ordering of the atomic operation.
func (v Expr) SetOrdering(ordering AtomicOrdering) Expr {
v.impl.SetOrdering(ordering)
return v
}
// -----------------------------------------------------------------------------
type builtinTy struct {