4848
4949export namespace atomic {
5050 @builtin export declare function load < T > ( offset : usize , immOffset ?: usize ) : T ;
51- @builtin export declare function store < T > ( offset : usize , value : void , immOffset ?: usize ) : void ;
51+ @builtin export declare function store < T > ( offset : usize , value : T , immOffset ?: usize ) : void ;
5252 @builtin export declare function add < T > ( ptr : usize , value : T , immOffset ?: usize ) : T ;
5353 @builtin export declare function sub < T > ( ptr : usize , value : T , immOffset ?: usize ) : T ;
5454 @builtin export declare function and < T > ( ptr : usize , value : T , immOffset ?: usize ) : T ;
5555 @builtin export declare function or < T > ( ptr : usize , value : T , immOffset ?: usize ) : T ;
5656 @builtin export declare function xor < T > ( ptr : usize , value : T , immOffset ?: usize ) : T ;
5757 @builtin export declare function xchg < T > ( ptr : usize , value : T , immOffset ?: usize ) : T ;
58- @builtin export declare function cmpxchg < T > ( ptr : usize , expected :T , replacement : T , immOffset ?: usize ) : T ;
59- @builtin export declare function wait < T > ( ptr : usize , expected :T , timeout :i64 ) : i32 ;
58+ @builtin export declare function cmpxchg < T > ( ptr : usize , expected : T , replacement : T , immOffset ?: usize ) : T ;
59+ @builtin export declare function wait < T > ( ptr : usize , expected : T , timeout : i64 ) : AtomicWaitResult ;
6060 @builtin export declare function notify < T > ( ptr : usize , count : u32 ) : u32 ;
6161}
6262
63+ @lazy export const enum AtomicWaitResult {
64+ OK = 0 ,
65+ NOT_EQUAL = 1 ,
66+ TIMED_OUT = 2
67+ }
68+
6369@builtin export declare function i8 ( value : void ) : i8 ;
6470export namespace i8 {
6571 @lazy export const MIN_VALUE : i8 = - 128 ;
@@ -92,45 +98,41 @@ export namespace i32 {
9298 @builtin export declare function store ( offset : usize , value : i32 , immOffset ?: usize , immAlign ?: usize ) : void ;
9399
94100 export namespace atomic {
95- @builtin export declare function load8_s ( offset : usize , immOffset ?: usize ) : i32 ;
96101 @builtin export declare function load8_u ( offset : usize , immOffset ?: usize ) : i32 ;
97- @builtin export declare function load16_s ( offset : usize , immOffset ?: usize ) : i32 ;
98102 @builtin export declare function load16_u ( offset : usize , immOffset ?: usize ) : i32 ;
99103 @builtin export declare function load ( offset : usize , immOffset ?: usize ) : i32 ;
100104 @builtin export declare function store8 ( offset : usize , value : i32 , immOffset ?: usize ) : void ;
101105 @builtin export declare function store16 ( offset : usize , value : i32 , immOffset ?: usize ) : void ;
102106 @builtin export declare function store ( offset : usize , value : i32 , immOffset ?: usize ) : void ;
103- @builtin export declare function wait ( ptr : usize , expected :i32 , timeout :i64 ) : i32 ;
104- @builtin export declare function notify ( ptr : usize , count :u32 ) : u32 ;
105-
106- export namespace rmw8_u {
107- @builtin export declare function add ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
108- @builtin export declare function sub ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
109- @builtin export declare function and ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
110- @builtin export declare function or ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
111- @builtin export declare function xor ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
112- @builtin export declare function xchg ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
113- @builtin export declare function cmpxchg ( offset : usize , expected :i32 , replacement : i32 , immOffset ?: usize ) : i32 ;
107+ @builtin export declare function wait ( ptr : usize , expected : i32 , timeout : i64 ) : AtomicWaitResult ;
108+ @builtin export declare function notify ( ptr : usize , count : i32 ) : i32 ;
109+
110+ export namespace rmw8 {
111+ @builtin export declare function add_u ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
112+ @builtin export declare function sub_u ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
113+ @builtin export declare function and_u ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
114+ @builtin export declare function or_u ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
115+ @builtin export declare function xor_u ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
116+ @builtin export declare function xchg_u ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
117+ @builtin export declare function cmpxchg_u ( offset : usize , expected : i32 , replacement : i32 , immOffset ?: usize ) : i32 ;
114118 }
115-
116- export namespace rmw16_u {
117- @builtin export declare function add ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
118- @builtin export declare function sub ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
119- @builtin export declare function and ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
120- @builtin export declare function or ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
121- @builtin export declare function xor ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
122- @builtin export declare function xchg ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
123- @builtin export declare function cmpxchg ( offset : usize , expected :i32 , replacement : i32 , immOffset ?: usize ) : i32 ;
119+ export namespace rmw16 {
120+ @builtin export declare function add_u ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
121+ @builtin export declare function sub_u ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
122+ @builtin export declare function and_u ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
123+ @builtin export declare function or_u ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
124+ @builtin export declare function xor_u ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
125+ @builtin export declare function xchg_u ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
126+ @builtin export declare function cmpxchg_u ( offset : usize , expected : i32 , replacement : i32 , immOffset ?: usize ) : i32 ;
124127 }
125-
126128 export namespace rmw {
127129 @builtin export declare function add ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
128130 @builtin export declare function sub ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
129131 @builtin export declare function and ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
130132 @builtin export declare function or ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
131133 @builtin export declare function xor ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
132134 @builtin export declare function xchg ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
133- @builtin export declare function cmpxchg ( offset : usize , expected :i32 , replacement : i32 , immOffset ?: usize ) : i32 ;
135+ @builtin export declare function cmpxchg ( offset : usize , expected : i32 , replacement : i32 , immOffset ?: usize ) : i32 ;
134136 }
135137 }
136138}
@@ -142,11 +144,11 @@ export namespace i64 {
142144 @builtin export declare function clz ( value : i64 ) : i64 ;
143145 @builtin export declare function ctz ( value : i64 ) : i64 ;
144146 @builtin export declare function load8_s ( offset : usize , immOffset ?: usize , immAlign ?: usize ) : i64 ;
145- @builtin export declare function load8_u ( offset : usize , immOffset ?: usize , immAlign ?: usize ) : u64 ;
147+ @builtin export declare function load8_u ( offset : usize , immOffset ?: usize , immAlign ?: usize ) : i64 ;
146148 @builtin export declare function load16_s ( offset : usize , immOffset ?: usize , immAlign ?: usize ) : i64 ;
147- @builtin export declare function load16_u ( offset : usize , immOffset ?: usize , immAlign ?: usize ) : u64 ;
149+ @builtin export declare function load16_u ( offset : usize , immOffset ?: usize , immAlign ?: usize ) : i64 ;
148150 @builtin export declare function load32_s ( offset : usize , immOffset ?: usize , immAlign ?: usize ) : i64 ;
149- @builtin export declare function load32_u ( offset : usize , immOffset ?: usize , immAlign ?: usize ) : u64 ;
151+ @builtin export declare function load32_u ( offset : usize , immOffset ?: usize , immAlign ?: usize ) : i64 ;
150152 @builtin export declare function load ( offset : usize , immOffset ?: usize ) : i64 ;
151153 @builtin export declare function popcnt ( value : i64 ) : i64 ;
152154 @builtin export declare function rotl ( value : i64 , shift : i64 ) : i64 ;
@@ -157,58 +159,55 @@ export namespace i64 {
157159 @builtin export declare function store32 ( offset : usize , value : i64 , immOffset ?: usize , immAlign ?: usize ) : void ;
158160 @builtin export declare function store ( offset : usize , value : i64 , immOffset ?: usize , immAlign ?: usize ) : void ;
159161
160- namespace atomic {
161- @builtin export declare function load8_s ( offset : usize , immOffset ?: usize ) : i64 ;
162+ export namespace atomic {
162163 @builtin export declare function load8_u ( offset : usize , immOffset ?: usize ) : i64 ;
163- @builtin export declare function load16_s ( offset : usize , immOffset ?: usize ) : i64 ;
164164 @builtin export declare function load16_u ( offset : usize , immOffset ?: usize ) : i64 ;
165+ @builtin export declare function load32_u ( offset : usize , immOffset ?: usize ) : i64 ;
165166 @builtin export declare function load ( offset : usize , immOffset ?: usize ) : i64 ;
166167 @builtin export declare function store8 ( offset : usize , value : i64 , immOffset ?: usize ) : void ;
167168 @builtin export declare function store16 ( offset : usize , value : i64 , immOffset ?: usize ) : void ;
169+ @builtin export declare function store32 ( offset : usize , value : i64 , immOffset ?: usize ) : void ;
168170 @builtin export declare function store ( offset : usize , value : i64 , immOffset ?: usize ) : void ;
169- @builtin export declare function wait ( ptr : usize , expected :i64 , timeout :i64 ) : i32 ;
170- @builtin export declare function notify ( ptr : usize , count :u32 ) : u32 ;
171-
172- export namespace rmw8_u {
173- @builtin export declare function add ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
174- @builtin export declare function sub ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
175- @builtin export declare function and ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
176- @builtin export declare function or ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
177- @builtin export declare function xor ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
178- @builtin export declare function xchg ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
179- @builtin export declare function cmpxchg ( offset : usize , expected :i64 , replacement : i64 , immOffset ?: usize ) : i64 ;
171+ @builtin export declare function wait ( ptr : usize , expected : i64 , timeout : i64 ) : AtomicWaitResult ;
172+ @builtin export declare function notify ( ptr : usize , count : i32 ) : i32 ;
173+
174+ export namespace rmw8 {
175+ @builtin export declare function add_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
176+ @builtin export declare function sub_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
177+ @builtin export declare function and_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
178+ @builtin export declare function or_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
179+ @builtin export declare function xor_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
180+ @builtin export declare function xchg_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
181+ @builtin export declare function cmpxchg_u ( offset : usize , expected : i64 , replacement : i64 , immOffset ?: usize ) : i64 ;
180182 }
181-
182- export namespace rmw16_u {
183- @builtin export declare function add ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
184- @builtin export declare function sub ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
185- @builtin export declare function and ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
186- @builtin export declare function or ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
187- @builtin export declare function xor ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
188- @builtin export declare function xchg ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
189- @builtin export declare function cmpxchg ( offset : usize , expected :i64 , replacement : i64 , immOffset ?: usize ) : i64 ;
183+ export namespace rmw16 {
184+ @builtin export declare function add_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
185+ @builtin export declare function sub_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
186+ @builtin export declare function and_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
187+ @builtin export declare function or_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
188+ @builtin export declare function xor_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
189+ @builtin export declare function xchg_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
190+ @builtin export declare function cmpxchg_u ( offset : usize , expected : i64 , replacement : i64 , immOffset ?: usize ) : i64 ;
190191 }
191-
192- export namespace rmw32_u {
193- @builtin export declare function add ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
194- @builtin export declare function sub ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
195- @builtin export declare function and ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
196- @builtin export declare function or ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
197- @builtin export declare function xor ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
198- @builtin export declare function xchg ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
199- @builtin export declare function cmpxchg ( offset : usize , expected :i64 , replacement : i64 , immOffset ?: usize ) : i64 ;
192+ export namespace rmw32 {
193+ @builtin export declare function add_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
194+ @builtin export declare function sub_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
195+ @builtin export declare function and_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
196+ @builtin export declare function or_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
197+ @builtin export declare function xor_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
198+ @builtin export declare function xchg_u ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
199+ @builtin export declare function cmpxchg_u ( offset : usize , expected : i64 , replacement : i64 , immOffset ?: usize ) : i64 ;
200200 }
201-
202201 export namespace rmw {
203202 @builtin export declare function add ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
204203 @builtin export declare function sub ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
205204 @builtin export declare function and ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
206205 @builtin export declare function or ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
207206 @builtin export declare function xor ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
208207 @builtin export declare function xchg ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
209- @builtin export declare function cmpxchg ( offset : usize , expected :i64 , replacement : i64 , immOffset ?: usize ) : i64 ;
208+ @builtin export declare function cmpxchg ( offset : usize , expected : i64 , replacement : i64 , immOffset ?: usize ) : i64 ;
210209 }
211- }
210+ }
212211}
213212
214213@builtin export declare function isize ( value : void ) : isize ;
0 commit comments