comparison lphobos/llvm/intrinsic.d @ 1:c53b6e3fe49a trunk

[svn r5] Initial commit. Most things are very rough.
author lindquist
date Sat, 01 Sep 2007 21:43:27 +0200
parents
children d3ee9efe20e2
comparison
equal deleted inserted replaced
0:a9e71648e74d 1:c53b6e3fe49a
1 module llvm.intrinsic;
2
3 // variable argument handling intrinsics
4 pragma(LLVM_internal, "intrinsic", "llvm.va_start")
5 void llvm_va_start(void* args);
6
7 pragma(LLVM_internal, "intrinsic", "llvm.va_end")
8 void llvm_va_end(void* args);
9
10 pragma(LLVM_internal, "intrinsic", "llvm.va_copy")
11 void llvm_va_copy(void* dst, void* src);
12
13 // code generator intrinsics
14 /*
15 pragma(LLVM_internal, "intrinsic", "llvm.returnaddress")
16 void* llvm_returnaddress(uint level);
17
18 pragma(LLVM_internal, "intrinsic", "llvm.frameaddress")
19 void* llvm_frameaddress(uint level);
20
21 pragma(LLVM_internal, "intrinsic", "llvm.stacksave")
22 void* llvm_stacksave();
23
24 pragma(LLVM_internal, "intrinsic", "llvm.stackrestore")
25 void llvm_stackrestore(void* ptr);
26
27 pragma(LLVM_internal, "intrinsic", "llvm.pcmarker")
28 void llvm_pcmarker(uint id);
29
30 pragma(LLVM_internal, "intrinsic", "llvm.prefetch")
31 void llvm_prefetch(void* ptr, uint rw, uint locality);
32
33 pragma(LLVM_internal, "intrinsic", "llvm.readcyclecounter")
34 ulong llvm_readcyclecounter();
35 */
36
37 // standard C intrinsics
38 pragma(LLVM_internal, "intrinsic", "llvm.memcpy.i32")
39 void llvm_memcpy_i32(void* dst, void* src, uint len, uint alignment);
40
41 pragma(LLVM_internal, "intrinsic", "llvm.memcpy.i64")
42 void llvm_memcpy_i64(void* dst, void* src, ulong len, uint alignment);
43
44 pragma(LLVM_internal, "intrinsic", "llvm.memmove.i32")
45 void llvm_memmove_i32(void* dst, void* src, uint len, uint alignment);
46
47 pragma(LLVM_internal, "intrinsic", "llvm.memmove.i64")
48 void llvm_memmove_i64(void* dst, void* src, ulong len, int alignment);
49
50 pragma(LLVM_internal, "intrinsic", "llvm.memset.i32")
51 void llvm_memset_i32(void* dst, ubyte val, uint len, uint alignment);
52
53 pragma(LLVM_internal, "intrinsic", "llvm.memset.i64")
54 void llvm_memset_i64(void* dst, ubyte val, ulong len, uint alignment);
55
56 pragma(LLVM_internal, "intrinsic", "llvm.sqrt.f32")
57 float llvm_sqrt(float val);
58
59 pragma(LLVM_internal, "intrinsic", "llvm.sqrt.f64")
60 {
61 double llvm_sqrt(double val);
62 real llvm_sqrt(real val);
63 }
64
65 pragma(LLVM_internal, "intrinsic", "llvm.powi.f32")
66 float llvm_powi(float val, int power);
67
68 pragma(LLVM_internal, "intrinsic", "llvm.powi.f64")
69 {
70 double llvm_powi(double val, int power);
71 real llvm_powi(real val, int power);
72 }
73
74 // bit manipulation intrinsics
75 pragma(LLVM_internal, "intrinsic", "llvm.bswap.i16.i16")
76 ushort llvm_bswap(ushort val);
77
78 pragma(LLVM_internal, "intrinsic", "llvm.bswap.i32.i32")
79 uint llvm_bswap(uint val);
80
81 pragma(LLVM_internal, "intrinsic", "llvm.bswap.i64.i64")
82 ulong llvm_bswap(ulong val);
83
84 /*
85 pragma(LLVM_internal, "intrinsic", "llvm.ctpop.i8")
86 uint llvm_ctpop_i8(ubyte src);
87
88 pragma(LLVM_internal, "intrinsic", "llvm.ctpop.i16")
89 uint llvm_ctpop_i16(ushort src);
90
91 pragma(LLVM_internal, "intrinsic", "llvm.ctpop.i32")
92 uint llvm_ctpop_i32(uint src);
93
94 pragma(LLVM_internal, "intrinsic", "llvm.ctpop.i64")
95 uint llvm_ctpop_i64(ulong src);
96
97 pragma(LLVM_internal, "intrinsic", "llvm.ctlz.i8")
98 uint llvm_ctlz_i8(ubyte src);
99
100 pragma(LLVM_internal, "intrinsic", "llvm.ctlz.i16")
101 uint llvm_ctlz_i16(ushort src);
102
103 pragma(LLVM_internal, "intrinsic", "llvm.ctlz.i32")
104 uint llvm_ctlz_i32(uint src);
105
106 pragma(LLVM_internal, "intrinsic", "llvm.ctlz.i64")
107 uint llvm_ctlz_i64(ulong src);
108
109 pragma(LLVM_internal, "intrinsic", "llvm.cttz.i8")
110 uint llvm_cttz_i8(ubyte src);
111
112 pragma(LLVM_internal, "intrinsic", "llvm.cttz.i16")
113 uint llvm_cttz_i16(ushort src);
114
115 pragma(LLVM_internal, "intrinsic", "llvm.cttz.i32")
116 uint llvm_cttz_i32(uint src);
117
118 pragma(LLVM_internal, "intrinsic", "llvm.cttz.i64")
119 uint llvm_cttz_i64(ulong src);
120 */
121
122 // atomic operations and synchronization intrinsics
123 // TODO
124 /*
125
126 //declare i8 @llvm.atomic.lcs.i8.i8p.i8.i8( i8* <ptr>, i8 <cmp>, i8 <val> )
127 pragma(LLVM_internal, "intrinsic", "llvm.atomic.lcs.i8.i8p.i8.i8")
128 ubyte llvm_atomic_lcs_i8(void* ptr, ubyte cmp, ubyte val);
129
130 declare i16 @llvm.atomic.lcs.i16.i16p.i16.i16( i16* <ptr>, i16 <cmp>, i16 <val> )
131 declare i32 @llvm.atomic.lcs.i32.i32p.i32.i32( i32* <ptr>, i32 <cmp>, i32 <val> )
132 declare i64 @llvm.atomic.lcs.i64.i64p.i64.i64( i64* <ptr>, i64 <cmp>, i64 <val> )
133
134 declare i8 @llvm.atomic.ls.i8.i8p.i8( i8* <ptr>, i8 <val> )
135 declare i16 @llvm.atomic.ls.i16.i16p.i16( i16* <ptr>, i16 <val> )
136 declare i32 @llvm.atomic.ls.i32.i32p.i32( i32* <ptr>, i32 <val> )
137 declare i64 @llvm.atomic.ls.i64.i64p.i64( i64* <ptr>, i64 <val> )
138
139 declare i8 @llvm.atomic.las.i8.i8p.i8( i8* <ptr>, i8 <delta> )
140 declare i16 @llvm.atomic.las.i16.i16p.i16( i16* <ptr>, i16 <delta> )
141 declare i32 @llvm.atomic.las.i32.i32p.i32( i32* <ptr>, i32 <delta> )
142 declare i64 @llvm.atomic.las.i64.i64p.i64( i64* <ptr>, i64 <delta> )
143
144 declare i8 @llvm.atomic.lss.i8.i8.i8( i8* <ptr>, i8 <delta> )
145 declare i16 @llvm.atomic.lss.i16.i16.i16( i16* <ptr>, i16 <delta> )
146 declare i32 @llvm.atomic.lss.i32.i32.i32( i32* <ptr>, i32 <delta> )
147 declare i64 @llvm.atomic.lss.i64.i64.i64( i64* <ptr>, i64 <delta> )
148
149 declare void @llvm.memory.barrier( i1 <ll>, i1 <ls>, i1 <sl>, i1 <ss> )
150 */