blob: d478480cea44544dd47e85fa8edc59359c39c709 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
|
---------------------------------------------------------------------------
-- PrelGHC.hi-boot
--
-- This hand-written interface file allows you to bring into scope the
-- primitive operations and types that GHC knows about.
---------------------------------------------------------------------------
#include "MachDeps.h"
__interface "std" PrelGHC 1 0 where
__export PrelGHC
ZLzmzgZR -- (->)
CCallable
CReturnable
-- Magical assert thingy
assert
-- constructor tags
tagToEnumzh
getTagzh
dataToTagzh
-- I/O primitives
RealWorld
realWorldzh
Statezh
-- Concurrency primitives
ThreadIdzh
myThreadIdzh
forkzh
yieldzh
killThreadzh
blockAsyncExceptionszh
unblockAsyncExceptionszh
delayzh
waitReadzh
waitWritezh
-- MVars
MVarzh
sameMVarzh
newMVarzh
takeMVarzh
putMVarzh
tryTakeMVarzh
tryPutMVarzh
isEmptyMVarzh
-- Seq
seq -- Defined in MkId
-- Parallel
seqzh
parzh
parGlobalzh
parLocalzh
parAtzh
parAtAbszh
parAtRelzh
parAtForNowzh
-- Character Type
Charzh
gtCharzh
geCharzh
eqCharzh
neCharzh
ltCharzh
leCharzh
ordzh
chrzh
-- Int Type
Intzh
zgzh
zgzezh
zezezh
zszezh
zlzh
zlzezh
zpzh
zmzh
ztzh
quotIntzh
remIntzh
gcdIntzh
negateIntzh
iShiftLzh
iShiftRAzh
iShiftRLzh
addIntCzh
subIntCzh
mulIntCzh
Wordzh
gtWordzh
geWordzh
eqWordzh
neWordzh
ltWordzh
leWordzh
plusWordzh
minusWordzh
timesWordzh
quotWordzh
remWordzh
andzh
orzh
notzh
xorzh
shiftLzh
shiftRLzh
int2Wordzh
word2Intzh
narrow8Intzh
narrow16Intzh
narrow32Intzh
narrow8Wordzh
narrow16Wordzh
narrow32Wordzh
#if WORD_SIZE_IN_BITS < 32
Int32zh
Word32zh
#endif
#if WORD_SIZE_IN_BITS < 64
Int64zh
Word64zh
#endif
Addrzh
nullAddrzh -- Defined in MkId
plusAddrzh
minusAddrzh
remAddrzh
#if (WORD_SIZE_IN_BITS == 32 || WORD_SIZE_IN_BITS == 64)
addr2Intzh
int2Addrzh
#endif
gtAddrzh
geAddrzh
eqAddrzh
neAddrzh
ltAddrzh
leAddrzh
Floatzh
gtFloatzh
geFloatzh
eqFloatzh
neFloatzh
ltFloatzh
leFloatzh
plusFloatzh
minusFloatzh
timesFloatzh
divideFloatzh
negateFloatzh
float2Intzh
int2Floatzh
expFloatzh
logFloatzh
sqrtFloatzh
sinFloatzh
cosFloatzh
tanFloatzh
asinFloatzh
acosFloatzh
atanFloatzh
sinhFloatzh
coshFloatzh
tanhFloatzh
powerFloatzh
decodeFloatzh
Doublezh
zgzhzh
zgzezhzh
zezezhzh
zszezhzh
zlzhzh
zlzezhzh
zpzhzh
zmzhzh
ztzhzh
zszhzh
negateDoublezh
double2Intzh
int2Doublezh
double2Floatzh
float2Doublezh
expDoublezh
logDoublezh
sqrtDoublezh
sinDoublezh
cosDoublezh
tanDoublezh
asinDoublezh
acosDoublezh
atanDoublezh
sinhDoublezh
coshDoublezh
tanhDoublezh
ztztzhzh
decodeDoublezh
-- Integer is implemented by foreign imports on .NET, so no primops
#ifndef ILX
cmpIntegerzh
cmpIntegerIntzh
plusIntegerzh
minusIntegerzh
timesIntegerzh
gcdIntegerzh
quotIntegerzh
remIntegerzh
gcdIntegerzh
gcdIntegerIntzh
divExactIntegerzh
quotRemIntegerzh
divModIntegerzh
integer2Intzh
integer2Wordzh
int2Integerzh
word2Integerzh
#if WORD_SIZE_IN_BITS < 32
integerToInt32zh
integerToWord32zh
int32ToIntegerzh
word32ToIntegerzh
#endif
#if WORD_SIZE_IN_BITS < 64
integerToInt64zh
integerToWord64zh
int64ToIntegerzh
word64ToIntegerzh
#endif
andIntegerzh
orIntegerzh
xorIntegerzh
complementIntegerzh
#endif
Arrayzh
ByteArrayzh
MutableArrayzh
MutableByteArrayzh
sameMutableArrayzh
sameMutableByteArrayzh
newArrayzh
newByteArrayzh
newPinnedByteArrayzh
byteArrayContentszh
indexArrayzh
indexCharArrayzh
indexWideCharArrayzh
indexIntArrayzh
indexWordArrayzh
indexAddrArrayzh
indexFloatArrayzh
indexDoubleArrayzh
indexStablePtrArrayzh
indexInt8Arrayzh
indexInt16Arrayzh
indexInt32Arrayzh
indexInt64Arrayzh
indexWord8Arrayzh
indexWord16Arrayzh
indexWord32Arrayzh
indexWord64Arrayzh
readArrayzh
readCharArrayzh
readWideCharArrayzh
readIntArrayzh
readWordArrayzh
readAddrArrayzh
readFloatArrayzh
readDoubleArrayzh
readStablePtrArrayzh
readInt8Arrayzh
readInt16Arrayzh
readInt32Arrayzh
readInt64Arrayzh
readWord8Arrayzh
readWord16Arrayzh
readWord32Arrayzh
readWord64Arrayzh
writeArrayzh
writeCharArrayzh
writeWideCharArrayzh
writeIntArrayzh
writeWordArrayzh
writeAddrArrayzh
writeFloatArrayzh
writeDoubleArrayzh
writeStablePtrArrayzh
writeInt8Arrayzh
writeInt16Arrayzh
writeInt32Arrayzh
writeInt64Arrayzh
writeWord8Arrayzh
writeWord16Arrayzh
writeWord32Arrayzh
writeWord64Arrayzh
indexCharOffAddrzh
indexWideCharOffAddrzh
indexIntOffAddrzh
indexWordOffAddrzh
indexAddrOffAddrzh
indexFloatOffAddrzh
indexDoubleOffAddrzh
indexStablePtrOffAddrzh
indexInt8OffAddrzh
indexInt16OffAddrzh
indexInt32OffAddrzh
indexInt64OffAddrzh
indexWord8OffAddrzh
indexWord16OffAddrzh
indexWord32OffAddrzh
indexWord64OffAddrzh
readCharOffAddrzh
readWideCharOffAddrzh
readIntOffAddrzh
readWordOffAddrzh
readAddrOffAddrzh
readFloatOffAddrzh
readDoubleOffAddrzh
readStablePtrOffAddrzh
readInt8OffAddrzh
readInt16OffAddrzh
readInt32OffAddrzh
readInt64OffAddrzh
readWord8OffAddrzh
readWord16OffAddrzh
readWord32OffAddrzh
readWord64OffAddrzh
writeCharOffAddrzh
writeWideCharOffAddrzh
writeIntOffAddrzh
writeWordOffAddrzh
writeAddrOffAddrzh
writeForeignObjOffAddrzh
writeFloatOffAddrzh
writeDoubleOffAddrzh
writeStablePtrOffAddrzh
writeInt8OffAddrzh
writeInt16OffAddrzh
writeInt32OffAddrzh
writeInt64OffAddrzh
writeWord8OffAddrzh
writeWord16OffAddrzh
writeWord32OffAddrzh
writeWord64OffAddrzh
eqForeignObjzh
indexCharOffForeignObjzh
indexWideCharOffForeignObjzh
indexIntOffForeignObjzh
indexWordOffForeignObjzh
indexAddrOffForeignObjzh
indexFloatOffForeignObjzh
indexDoubleOffForeignObjzh
indexStablePtrOffForeignObjzh
indexInt8OffForeignObjzh
indexInt16OffForeignObjzh
indexInt32OffForeignObjzh
indexInt64OffForeignObjzh
indexWord8OffForeignObjzh
indexWord16OffForeignObjzh
indexWord32OffForeignObjzh
indexWord64OffForeignObjzh
unsafeFreezzeArrayzh -- Note zz in the middle
unsafeFreezzeByteArrayzh -- Ditto
unsafeThawArrayzh
sizzeofByteArrayzh -- Ditto
sizzeofMutableByteArrayzh -- Ditto
MutVarzh
newMutVarzh
readMutVarzh
writeMutVarzh
sameMutVarzh
catchzh
raisezh
Weakzh
mkWeakzh
deRefWeakzh
finalizzeWeakzh
ForeignObjzh
mkForeignObjzh
writeForeignObjzh
foreignObjToAddrzh
touchzh
StablePtrzh
makeStablePtrzh
deRefStablePtrzh
eqStablePtrzh
StableNamezh
makeStableNamezh
eqStableNamezh
stableNameToIntzh
reallyUnsafePtrEqualityzh
newBCOzh
BCOzh
mkApUpd0zh
unsafeCoercezh -- unsafeCoerce# :: forall a b. a -> b
-- It's defined in ghc/compiler/basicTypes/MkId.lhs
addrToHValuezh
;
-- Export PrelErr.error, so that others do not have to import PrelErr
__export PrelErr error ;
infixr 0 seq ;
--------------------------------------------------
instance {CCallable Charzh} = zdfCCallableCharzh;
instance {CCallable Doublezh} = zdfCCallableDoublezh;
instance {CCallable Floatzh} = zdfCCallableFloatzh;
instance {CCallable Intzh} = zdfCCallableIntzh;
instance {CCallable Addrzh} = zdfCCallableAddrzh;
instance {CCallable Int64zh} = zdfCCallableInt64zh;
instance {CCallable Word64zh} = zdfCCallableWord64zh;
instance {CCallable Wordzh} = zdfCCallableWordzh;
instance {CCallable ByteArrayzh} = zdfCCallableByteArrayzh;
instance __forall s => {CCallable (MutableByteArrayzh s)} = zdfCCallableMutableByteArrayzh;
instance {CCallable ForeignObjzh} = zdfCCallableForeignObjzh;
instance __forall s => {CCallable (StablePtrzh s)} = zdfCCallableStablePtrzh;
-- CCallable and CReturnable have kind (Type AnyBox) so that
-- things like Int# can be instances of CCallable.
1 class CCallable a :: ? ;
1 class CReturnable a :: ? ;
1 assert :: __forall a => PrelBase.Bool -> a -> a ;
-- These guys do not really exist:
--
1 zdfCCallableCharzh :: {CCallable Charzh} ;
1 zdfCCallableDoublezh :: {CCallable Doublezh} ;
1 zdfCCallableFloatzh :: {CCallable Floatzh} ;
1 zdfCCallableIntzh :: {CCallable Intzh} ;
1 zdfCCallableAddrzh :: {CCallable Addrzh} ;
1 zdfCCallableInt64zh :: {CCallable Int64zh} ;
1 zdfCCallableWord64zh :: {CCallable Word64zh} ;
1 zdfCCallableWordzh :: {CCallable Wordzh} ;
1 zdfCCallableByteArrayzh :: {CCallable ByteArrayzh} ;
1 zdfCCallableMutableByteArrayzh :: __forall s => {CCallable (MutableByteArrayzh s)} ;
1 zdfCCallableForeignObjzh :: {CCallable ForeignObjzh} ;
1 zdfCCallableStablePtrzh :: __forall a => {CCallable (StablePtrzh a)} ;
|