Mercurial > projects > ldc
annotate lphobos/llvm/intrinsic.d @ 1172:b3887714b735
Small cleanup: remove mars.h #include
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Sun, 29 Mar 2009 16:47:19 +0200 |
parents | 373489eeaf90 |
children |
rev | line source |
---|---|
1 | 1 module llvm.intrinsic; |
2 | |
3 // code generator intrinsics | |
4 /* | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
5 pragma(intrinsic, "llvm.returnaddress") |
1 | 6 void* llvm_returnaddress(uint level); |
131 | 7 */ |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
8 pragma(intrinsic, "llvm.frameaddress") |
1 | 9 void* llvm_frameaddress(uint level); |
131 | 10 /* |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
11 pragma(intrinsic, "llvm.stacksave") |
1 | 12 void* llvm_stacksave(); |
13 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
14 pragma(intrinsic, "llvm.stackrestore") |
1 | 15 void llvm_stackrestore(void* ptr); |
16 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
17 pragma(intrinsic, "llvm.pcmarker") |
1 | 18 void llvm_pcmarker(uint id); |
19 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
20 pragma(intrinsic, "llvm.prefetch") |
1 | 21 void llvm_prefetch(void* ptr, uint rw, uint locality); |
11
d3ee9efe20e2
[svn r15] * Fixed a bunch problems with virtual calls. Seems I did some rather poor testing.
lindquist
parents:
1
diff
changeset
|
22 */ |
1 | 23 |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
24 pragma(intrinsic, "llvm.readcyclecounter") |
11
d3ee9efe20e2
[svn r15] * Fixed a bunch problems with virtual calls. Seems I did some rather poor testing.
lindquist
parents:
1
diff
changeset
|
25 ulong readcyclecounter(); |
1 | 26 |
27 // standard C intrinsics | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
28 pragma(intrinsic, "llvm.memcpy.i32") |
1 | 29 void llvm_memcpy_i32(void* dst, void* src, uint len, uint alignment); |
30 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
31 pragma(intrinsic, "llvm.memcpy.i64") |
1 | 32 void llvm_memcpy_i64(void* dst, void* src, ulong len, uint alignment); |
33 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
34 pragma(intrinsic, "llvm.memmove.i32") |
1 | 35 void llvm_memmove_i32(void* dst, void* src, uint len, uint alignment); |
36 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
37 pragma(intrinsic, "llvm.memmove.i64") |
1 | 38 void llvm_memmove_i64(void* dst, void* src, ulong len, int alignment); |
39 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
40 pragma(intrinsic, "llvm.memset.i32") |
1 | 41 void llvm_memset_i32(void* dst, ubyte val, uint len, uint alignment); |
42 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
43 pragma(intrinsic, "llvm.memset.i64") |
1 | 44 void llvm_memset_i64(void* dst, ubyte val, ulong len, uint alignment); |
45 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
46 pragma(intrinsic, "llvm.sqrt.f32") |
1 | 47 float llvm_sqrt(float val); |
48 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
49 pragma(intrinsic, "llvm.sqrt.f64") |
1 | 50 { |
51 double llvm_sqrt(double val); | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
52 // real llvm_sqrt(real val); |
1 | 53 } |
54 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
55 pragma(intrinsic, "llvm.powi.f32") |
1 | 56 float llvm_powi(float val, int power); |
57 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
58 pragma(intrinsic, "llvm.powi.f64") |
1 | 59 { |
60 double llvm_powi(double val, int power); | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
61 // real llvm_powi(real val, int power); |
1 | 62 } |
63 | |
64 // bit manipulation intrinsics | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
65 pragma(intrinsic, "llvm.bswap.i16.i16") |
1 | 66 ushort llvm_bswap(ushort val); |
67 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
68 pragma(intrinsic, "llvm.bswap.i32.i32") |
1 | 69 uint llvm_bswap(uint val); |
70 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
71 pragma(intrinsic, "llvm.bswap.i64.i64") |
1 | 72 ulong llvm_bswap(ulong val); |
73 | |
74 /* | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
75 pragma(intrinsic, "llvm.ctpop.i8") |
1 | 76 uint llvm_ctpop_i8(ubyte src); |
77 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
78 pragma(intrinsic, "llvm.ctpop.i16") |
1 | 79 uint llvm_ctpop_i16(ushort src); |
80 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
81 pragma(intrinsic, "llvm.ctpop.i32") |
1 | 82 uint llvm_ctpop_i32(uint src); |
83 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
84 pragma(intrinsic, "llvm.ctpop.i64") |
1 | 85 uint llvm_ctpop_i64(ulong src); |
86 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
87 pragma(intrinsic, "llvm.ctlz.i8") |
1 | 88 uint llvm_ctlz_i8(ubyte src); |
89 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
90 pragma(intrinsic, "llvm.ctlz.i16") |
1 | 91 uint llvm_ctlz_i16(ushort src); |
92 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
93 pragma(intrinsic, "llvm.ctlz.i32") |
1 | 94 uint llvm_ctlz_i32(uint src); |
95 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
96 pragma(intrinsic, "llvm.ctlz.i64") |
1 | 97 uint llvm_ctlz_i64(ulong src); |
98 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
99 pragma(intrinsic, "llvm.cttz.i8") |
1 | 100 uint llvm_cttz_i8(ubyte src); |
101 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
102 pragma(intrinsic, "llvm.cttz.i16") |
1 | 103 uint llvm_cttz_i16(ushort src); |
104 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
105 pragma(intrinsic, "llvm.cttz.i32") |
1 | 106 uint llvm_cttz_i32(uint src); |
107 | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
108 pragma(intrinsic, "llvm.cttz.i64") |
1 | 109 uint llvm_cttz_i64(ulong src); |
110 */ | |
111 | |
112 // atomic operations and synchronization intrinsics | |
113 // TODO | |
114 /* | |
115 | |
116 //declare i8 @llvm.atomic.lcs.i8.i8p.i8.i8( i8* <ptr>, i8 <cmp>, i8 <val> ) | |
473
373489eeaf90
Applied downs' lphobos update
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
131
diff
changeset
|
117 pragma(intrinsic, "llvm.atomic.lcs.i8.i8p.i8.i8") |
1 | 118 ubyte llvm_atomic_lcs_i8(void* ptr, ubyte cmp, ubyte val); |
119 | |
120 declare i16 @llvm.atomic.lcs.i16.i16p.i16.i16( i16* <ptr>, i16 <cmp>, i16 <val> ) | |
121 declare i32 @llvm.atomic.lcs.i32.i32p.i32.i32( i32* <ptr>, i32 <cmp>, i32 <val> ) | |
122 declare i64 @llvm.atomic.lcs.i64.i64p.i64.i64( i64* <ptr>, i64 <cmp>, i64 <val> ) | |
123 | |
124 declare i8 @llvm.atomic.ls.i8.i8p.i8( i8* <ptr>, i8 <val> ) | |
125 declare i16 @llvm.atomic.ls.i16.i16p.i16( i16* <ptr>, i16 <val> ) | |
126 declare i32 @llvm.atomic.ls.i32.i32p.i32( i32* <ptr>, i32 <val> ) | |
127 declare i64 @llvm.atomic.ls.i64.i64p.i64( i64* <ptr>, i64 <val> ) | |
128 | |
129 declare i8 @llvm.atomic.las.i8.i8p.i8( i8* <ptr>, i8 <delta> ) | |
130 declare i16 @llvm.atomic.las.i16.i16p.i16( i16* <ptr>, i16 <delta> ) | |
131 declare i32 @llvm.atomic.las.i32.i32p.i32( i32* <ptr>, i32 <delta> ) | |
132 declare i64 @llvm.atomic.las.i64.i64p.i64( i64* <ptr>, i64 <delta> ) | |
133 | |
134 declare i8 @llvm.atomic.lss.i8.i8.i8( i8* <ptr>, i8 <delta> ) | |
135 declare i16 @llvm.atomic.lss.i16.i16.i16( i16* <ptr>, i16 <delta> ) | |
136 declare i32 @llvm.atomic.lss.i32.i32.i32( i32* <ptr>, i32 <delta> ) | |
137 declare i64 @llvm.atomic.lss.i64.i64.i64( i64* <ptr>, i64 <delta> ) | |
138 | |
139 declare void @llvm.memory.barrier( i1 <ll>, i1 <ls>, i1 <sl>, i1 <ss> ) | |
140 */ |