Ptr

Standard library class
class Ptr
@tuple
class Ptr[T]
Fields 1
T type
Constructors 4
__new__
@pure @llvm
__new__()
ret ptr null
__new__
@overload
__new__(sz: int)
__new__
@pure @derives @overload @llvm
__new__(other: Ptr[T])
ret ptr %other
__new__
@pure @derives @overload @llvm
__new__(other: Ptr)
ret ptr %other
Methods 1
as_byte
@pure @derives @llvm
as_byte(self)
ret ptr %self
Special methods 26
__format__
__format__(self, format_spec: str)
__to_gpu__
__to_gpu__(self, cache: AllocCache)
Added by internal.gpu
__from_gpu__
__from_gpu__(self, other: Ptr[T])
Added by internal.gpu
__from_gpu_new__
__from_gpu_new__(other: Ptr[T])
Added by internal.gpu
__int__
@pure @llvm
__int__(self)
%0 = ptrtoint ptr %self to i64
ret i64 %0
__copy__
@pure @llvm
__copy__(self)
ret ptr %self
__bool__
@pure @llvm
__bool__(self)
%0 = icmp ne ptr %self, null
%1 = zext i1 %0 to i8
ret i8 %1
__getitem__
@pure @derives @llvm
__getitem__(self, index: int)
%0 = getelementptr {=T}, ptr %self, i64 %index
%1 = load {=T}, ptr %0
ret {=T} %1
__getitem__(self: Ptr[Vec[S, M]], index: int, S: type, M: Literal[int])
Added by simd
%address = getelementptr <{=M} x {=S}>, ptr %self, i64 %index
%result = load <{=M} x {=S}>, ptr %address, align 1
ret <{=M} x {=S}> %result
__setitem__
@self_captures @llvm
__setitem__(self, index: int, what: T)
%0 = getelementptr {=T}, ptr %self, i64 %index
store {=T} %what, ptr %0
ret {} {}
__setitem__(self: Ptr[Vec[S, M]], index: int, what: Vec[S, M], S: type, M: Literal[int])
Added by simd
%address = getelementptr <{=M} x {=S}>, ptr %self, i64 %index
store <{=M} x {=S}> %what, ptr %address, align 1
ret {} zeroinitializer
__add__
@pure @derives @llvm
__add__(self, other: int)
%0 = getelementptr {=T}, ptr %self, i64 %other
ret ptr %0
__sub__
@pure @llvm
__sub__(self, other: Ptr[T])
%0 = ptrtoint ptr %self to i64
%1 = ptrtoint ptr %other to i64
%2 = sub i64 %0, %1
%3 = sdiv exact i64 %2, ptrtoint (ptr getelementptr ({=T}, {=T}* null, i32 1) to i64)
ret i64 %3
@derives
__sub__(self, other: int)
%0 = sub i64 0, %other
%1 = getelementptr {=T}, {=T}* %self, i64 %0
ret {=T}* %1
__eq__
@pure @llvm
__eq__(self, other: Ptr[T])
%0 = icmp eq ptr %self, %other
%1 = zext i1 %0 to i8
ret i8 %1
__ne__
@pure @llvm
__ne__(self, other: Ptr[T])
%0 = icmp ne ptr %self, %other
%1 = zext i1 %0 to i8
ret i8 %1
__lt__
@pure @llvm
__lt__(self, other: Ptr[T])
%0 = icmp slt ptr %self, %other
%1 = zext i1 %0 to i8
ret i8 %1
__gt__
@pure @llvm
__gt__(self, other: Ptr[T])
%0 = icmp sgt ptr %self, %other
%1 = zext i1 %0 to i8
ret i8 %1
__le__
@pure @llvm
__le__(self, other: Ptr[T])
%0 = icmp sle ptr %self, %other
%1 = zext i1 %0 to i8
ret i8 %1
__ge__
@pure @llvm
__ge__(self, other: Ptr[T])
%0 = icmp sge ptr %self, %other
%1 = zext i1 %0 to i8
ret i8 %1
__prefetch_r0__
@nocapture @llvm
__prefetch_r0__(self)
declare void @llvm.prefetch(ptr nocapture readonly, i32, i32, i32)
call void @llvm.prefetch(ptr %self, i32 0, i32 0, i32 1)
ret {} {}
__prefetch_r1__
@nocapture @llvm
__prefetch_r1__(self)
declare void @llvm.prefetch(ptr nocapture readonly, i32, i32, i32)
call void @llvm.prefetch(ptr %self, i32 0, i32 1, i32 1)
ret {} {}
__prefetch_r2__
@nocapture @llvm
__prefetch_r2__(self)
declare void @llvm.prefetch(ptr nocapture readonly, i32, i32, i32)
call void @llvm.prefetch(ptr %self, i32 0, i32 2, i32 1)
ret {} {}
__prefetch_r3__
@nocapture @llvm
__prefetch_r3__(self)
declare void @llvm.prefetch(ptr nocapture readonly, i32, i32, i32)
call void @llvm.prefetch(ptr %self, i32 0, i32 3, i32 1)
ret {} {}
__prefetch_w0__
@nocapture @llvm
__prefetch_w0__(self)
declare void @llvm.prefetch(ptr nocapture readonly, i32, i32, i32)
call void @llvm.prefetch(ptr %self, i32 1, i32 0, i32 1)
ret {} {}
__prefetch_w1__
@nocapture @llvm
__prefetch_w1__(self)
declare void @llvm.prefetch(ptr nocapture readonly, i32, i32, i32)
call void @llvm.prefetch(ptr %self, i32 1, i32 1, i32 1)
ret {} {}
__prefetch_w2__
@nocapture @llvm
__prefetch_w2__(self)
declare void @llvm.prefetch(ptr nocapture readonly, i32, i32, i32)
call void @llvm.prefetch(ptr %self, i32 1, i32 2, i32 1)
ret {} {}
__prefetch_w3__
@nocapture @llvm
__prefetch_w3__(self)
declare void @llvm.prefetch(ptr nocapture readonly, i32, i32, i32)
call void @llvm.prefetch(ptr %self, i32 1, i32 3, i32 1)
ret {} {}
__repr__
__repr__(self)