65
65
# end
66
66
67
67
# struct GenericMemoryRef{kind::Symbol, T, AS::AddrSpace}
68
- # mem::Memory {kind, T, AS}
68
+ # mem::GenericMemory {kind, T, AS}
69
69
# data::Ptr{Cvoid} # make this GenericPtr{addrspace, Cvoid}
70
70
# end
71
71
@@ -191,8 +191,8 @@ export
191
191
Tuple, Type, UnionAll, TypeVar, Union, Nothing, Cvoid,
192
192
AbstractArray, DenseArray, NamedTuple, Pair,
193
193
# special objects
194
- Function, Method, Array, Memory, MemoryRef, GenericMemory, GenericMemoryRef ,
195
- Module, Symbol, Task, UndefInitializer, undef, WeakRef, VecElement ,
194
+ Function, Method, Module, Symbol, Task, UndefInitializer, undef, WeakRef, VecElement ,
195
+ Array, Memory, MemoryRef, AtomicMemory, AtomicMemoryRef, GenericMemory, GenericMemoryRef ,
196
196
# numeric types
197
197
Number, Real, Integer, Bool, Ref, Ptr,
198
198
AbstractFloat, Float16, Float32, Float64,
@@ -209,10 +209,10 @@ export
209
209
# AST representation
210
210
Expr, QuoteNode, LineNumberNode, GlobalRef,
211
211
# object model functions
212
- fieldtype, getfield, setfield!, swapfield!, modifyfield!, replacefield!,
212
+ fieldtype, getfield, setfield!, swapfield!, modifyfield!, replacefield!, setfieldonce!,
213
213
nfields, throw, tuple, === , isdefined, eval,
214
214
# access to globals
215
- getglobal, setglobal!,
215
+ getglobal, setglobal!, swapglobal!, modifyglobal!, replaceglobal!, setglobalonce!,
216
216
# ifelse, sizeof # not exported, to avoid conflicting with Base
217
217
# type reflection
218
218
< :, typeof, isa, typeassert,
@@ -516,22 +516,24 @@ const undef = UndefInitializer()
516
516
(self:: Type{GenericMemory{kind,T,addrspace}} )(:: UndefInitializer , d:: NTuple{1,Int} ) where {T,kind,addrspace} = self (undef, getfield (d,1 ))
517
517
# empty vector constructor
518
518
(self:: Type{GenericMemory{kind,T,addrspace}} )() where {T,kind,addrspace} = self (undef, 0 )
519
- # copy constructors
520
519
521
- const Memory{T} = GenericMemory{:not_atomic , T, CPU}
522
- const MemoryRef{T} = GenericMemoryRef{:not_atomic , T, CPU}
523
520
GenericMemoryRef (mem:: GenericMemory ) = memoryref (mem)
524
521
GenericMemoryRef (ref:: GenericMemoryRef , i:: Integer ) = memoryref (ref, Int (i), @_boundscheck )
525
522
GenericMemoryRef (mem:: GenericMemory , i:: Integer ) = memoryref (memoryref (mem), Int (i), @_boundscheck )
526
- MemoryRef (mem:: Memory ) = memoryref (mem)
527
- MemoryRef (ref:: MemoryRef , i:: Integer ) = memoryref (ref, Int (i), @_boundscheck )
528
- MemoryRef (mem:: Memory , i:: Integer ) = memoryref (memoryref (mem), Int (i), @_boundscheck )
529
- MemoryRef {T} (mem:: Memory{T} ) where {T} = memoryref (mem)
530
- MemoryRef {T} (ref:: MemoryRef{T} , i:: Integer ) where {T} = memoryref (ref, Int (i), @_boundscheck )
531
- MemoryRef {T} (mem:: Memory{T} , i:: Integer ) where {T} = memoryref (memoryref (mem), Int (i), @_boundscheck )
523
+ GenericMemoryRef {kind,<:Any,AS} (mem:: GenericMemory{kind,<:Any,AS} ) where {kind,AS} = memoryref (mem)
524
+ GenericMemoryRef {kind,<:Any,AS} (ref:: GenericMemoryRef{kind,<:Any,AS} , i:: Integer ) where {kind,AS} = memoryref (ref, Int (i), @_boundscheck )
525
+ GenericMemoryRef {kind,<:Any,AS} (mem:: GenericMemory{kind,<:Any,AS} , i:: Integer ) where {kind,AS} = memoryref (memoryref (mem), Int (i), @_boundscheck )
526
+ GenericMemoryRef {kind,T,AS} (mem:: GenericMemory{kind,T,AS} ) where {kind,T,AS} = memoryref (mem)
527
+ GenericMemoryRef {kind,T,AS} (ref:: GenericMemoryRef{kind,T,AS} , i:: Integer ) where {kind,T,AS} = memoryref (ref, Int (i), @_boundscheck )
528
+ GenericMemoryRef {kind,T,AS} (mem:: GenericMemory{kind,T,AS} , i:: Integer ) where {kind,T,AS} = memoryref (memoryref (mem), Int (i), @_boundscheck )
529
+
530
+ const Memory{T} = GenericMemory{:not_atomic , T, CPU}
531
+ const MemoryRef{T} = GenericMemoryRef{:not_atomic , T, CPU}
532
+ const AtomicMemory{T} = GenericMemory{:atomic , T, CPU}
533
+ const AtomicMemoryRef{T} = GenericMemoryRef{:atomic , T, CPU}
532
534
533
535
# construction helpers for Array
534
- new_as_memoryref (self:: Type{GenericMemoryRef{isatomic ,T,addrspace}} , m:: Int ) where {T,isatomic ,addrspace} = memoryref (fieldtype (self, :mem )(undef, m))
536
+ new_as_memoryref (self:: Type{GenericMemoryRef{kind ,T,addrspace}} , m:: Int ) where {T,kind ,addrspace} = memoryref (fieldtype (self, :mem )(undef, m))
535
537
536
538
# checked-multiply intrinsic function for dimensions
537
539
_checked_mul_dims () = 1 , false
0 commit comments