Mercurial > projects > ldc
annotate lphobos/llvm/intrinsic.d @ 837:331a176c1f4f
Removed error on naked, not fully complete, but I'll be doing more work on it during this Christmas, and some things do work.
Fixed taking delegate of final class method. see mini/delegate3.d.
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Tue, 09 Dec 2008 14:07:30 +0100 |
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 */ |