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