48
48
49
49
export namespace atomic {
50
50
@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 ;
52
52
@builtin export declare function add < T > ( ptr : usize , value : T , immOffset ?: usize ) : T ;
53
53
@builtin export declare function sub < T > ( ptr : usize , value : T , immOffset ?: usize ) : T ;
54
54
@builtin export declare function and < T > ( ptr : usize , value : T , immOffset ?: usize ) : T ;
55
55
@builtin export declare function or < T > ( ptr : usize , value : T , immOffset ?: usize ) : T ;
56
56
@builtin export declare function xor < T > ( ptr : usize , value : T , immOffset ?: usize ) : T ;
57
57
@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 ;
60
60
@builtin export declare function notify < T > ( ptr : usize , count : u32 ) : u32 ;
61
61
}
62
62
63
+ @lazy export const enum AtomicWaitResult {
64
+ OK = 0 ,
65
+ NOT_EQUAL = 1 ,
66
+ TIMED_OUT = 2
67
+ }
68
+
63
69
@builtin export declare function i8 ( value : void ) : i8 ;
64
70
export namespace i8 {
65
71
@lazy export const MIN_VALUE : i8 = - 128 ;
@@ -92,45 +98,41 @@ export namespace i32 {
92
98
@builtin export declare function store ( offset : usize , value : i32 , immOffset ?: usize , immAlign ?: usize ) : void ;
93
99
94
100
export namespace atomic {
95
- @builtin export declare function load8_s ( offset : usize , immOffset ?: usize ) : i32 ;
96
101
@builtin export declare function load8_u ( offset : usize , immOffset ?: usize ) : i32 ;
97
- @builtin export declare function load16_s ( offset : usize , immOffset ?: usize ) : i32 ;
98
102
@builtin export declare function load16_u ( offset : usize , immOffset ?: usize ) : i32 ;
99
103
@builtin export declare function load ( offset : usize , immOffset ?: usize ) : i32 ;
100
104
@builtin export declare function store8 ( offset : usize , value : i32 , immOffset ?: usize ) : void ;
101
105
@builtin export declare function store16 ( offset : usize , value : i32 , immOffset ?: usize ) : void ;
102
106
@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 ;
114
118
}
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 ;
124
127
}
125
-
126
128
export namespace rmw {
127
129
@builtin export declare function add ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
128
130
@builtin export declare function sub ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
129
131
@builtin export declare function and ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
130
132
@builtin export declare function or ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
131
133
@builtin export declare function xor ( offset : usize , value : i32 , immOffset ?: usize ) : i32 ;
132
134
@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 ;
134
136
}
135
137
}
136
138
}
@@ -142,11 +144,11 @@ export namespace i64 {
142
144
@builtin export declare function clz ( value : i64 ) : i64 ;
143
145
@builtin export declare function ctz ( value : i64 ) : i64 ;
144
146
@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 ;
146
148
@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 ;
148
150
@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 ;
150
152
@builtin export declare function load ( offset : usize , immOffset ?: usize ) : i64 ;
151
153
@builtin export declare function popcnt ( value : i64 ) : i64 ;
152
154
@builtin export declare function rotl ( value : i64 , shift : i64 ) : i64 ;
@@ -157,58 +159,55 @@ export namespace i64 {
157
159
@builtin export declare function store32 ( offset : usize , value : i64 , immOffset ?: usize , immAlign ?: usize ) : void ;
158
160
@builtin export declare function store ( offset : usize , value : i64 , immOffset ?: usize , immAlign ?: usize ) : void ;
159
161
160
- namespace atomic {
161
- @builtin export declare function load8_s ( offset : usize , immOffset ?: usize ) : i64 ;
162
+ export namespace atomic {
162
163
@builtin export declare function load8_u ( offset : usize , immOffset ?: usize ) : i64 ;
163
- @builtin export declare function load16_s ( offset : usize , immOffset ?: usize ) : i64 ;
164
164
@builtin export declare function load16_u ( offset : usize , immOffset ?: usize ) : i64 ;
165
+ @builtin export declare function load32_u ( offset : usize , immOffset ?: usize ) : i64 ;
165
166
@builtin export declare function load ( offset : usize , immOffset ?: usize ) : i64 ;
166
167
@builtin export declare function store8 ( offset : usize , value : i64 , immOffset ?: usize ) : void ;
167
168
@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 ;
168
170
@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 ;
180
182
}
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 ;
190
191
}
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 ;
200
200
}
201
-
202
201
export namespace rmw {
203
202
@builtin export declare function add ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
204
203
@builtin export declare function sub ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
205
204
@builtin export declare function and ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
206
205
@builtin export declare function or ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
207
206
@builtin export declare function xor ( offset : usize , value : i64 , immOffset ?: usize ) : i64 ;
208
207
@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 ;
210
209
}
211
- }
210
+ }
212
211
}
213
212
214
213
@builtin export declare function isize ( value : void ) : isize ;
0 commit comments