Mercurial > projects > ldc
comparison lphobos/llvm/intrinsic.d @ 473:373489eeaf90
Applied downs' lphobos update
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Mon, 04 Aug 2008 19:28:49 +0200 |
parents | 5825d48b27d1 |
children |
comparison
equal
deleted
inserted
replaced
472:15c804b6ce77 | 473:373489eeaf90 |
---|---|
1 module llvm.intrinsic; | 1 module llvm.intrinsic; |
2 | 2 |
3 // code generator intrinsics | 3 // code generator intrinsics |
4 /* | 4 /* |
5 pragma(LLVM_internal, "intrinsic", "llvm.returnaddress") | 5 pragma(intrinsic, "llvm.returnaddress") |
6 void* llvm_returnaddress(uint level); | 6 void* llvm_returnaddress(uint level); |
7 */ | 7 */ |
8 pragma(LLVM_internal, "intrinsic", "llvm.frameaddress") | 8 pragma(intrinsic, "llvm.frameaddress") |
9 void* llvm_frameaddress(uint level); | 9 void* llvm_frameaddress(uint level); |
10 /* | 10 /* |
11 pragma(LLVM_internal, "intrinsic", "llvm.stacksave") | 11 pragma(intrinsic, "llvm.stacksave") |
12 void* llvm_stacksave(); | 12 void* llvm_stacksave(); |
13 | 13 |
14 pragma(LLVM_internal, "intrinsic", "llvm.stackrestore") | 14 pragma(intrinsic, "llvm.stackrestore") |
15 void llvm_stackrestore(void* ptr); | 15 void llvm_stackrestore(void* ptr); |
16 | 16 |
17 pragma(LLVM_internal, "intrinsic", "llvm.pcmarker") | 17 pragma(intrinsic, "llvm.pcmarker") |
18 void llvm_pcmarker(uint id); | 18 void llvm_pcmarker(uint id); |
19 | 19 |
20 pragma(LLVM_internal, "intrinsic", "llvm.prefetch") | 20 pragma(intrinsic, "llvm.prefetch") |
21 void llvm_prefetch(void* ptr, uint rw, uint locality); | 21 void llvm_prefetch(void* ptr, uint rw, uint locality); |
22 */ | 22 */ |
23 | 23 |
24 pragma(LLVM_internal, "intrinsic", "llvm.readcyclecounter") | 24 pragma(intrinsic, "llvm.readcyclecounter") |
25 ulong readcyclecounter(); | 25 ulong readcyclecounter(); |
26 | 26 |
27 // standard C intrinsics | 27 // standard C intrinsics |
28 pragma(LLVM_internal, "intrinsic", "llvm.memcpy.i32") | 28 pragma(intrinsic, "llvm.memcpy.i32") |
29 void llvm_memcpy_i32(void* dst, void* src, uint len, uint alignment); | 29 void llvm_memcpy_i32(void* dst, void* src, uint len, uint alignment); |
30 | 30 |
31 pragma(LLVM_internal, "intrinsic", "llvm.memcpy.i64") | 31 pragma(intrinsic, "llvm.memcpy.i64") |
32 void llvm_memcpy_i64(void* dst, void* src, ulong len, uint alignment); | 32 void llvm_memcpy_i64(void* dst, void* src, ulong len, uint alignment); |
33 | 33 |
34 pragma(LLVM_internal, "intrinsic", "llvm.memmove.i32") | 34 pragma(intrinsic, "llvm.memmove.i32") |
35 void llvm_memmove_i32(void* dst, void* src, uint len, uint alignment); | 35 void llvm_memmove_i32(void* dst, void* src, uint len, uint alignment); |
36 | 36 |
37 pragma(LLVM_internal, "intrinsic", "llvm.memmove.i64") | 37 pragma(intrinsic, "llvm.memmove.i64") |
38 void llvm_memmove_i64(void* dst, void* src, ulong len, int alignment); | 38 void llvm_memmove_i64(void* dst, void* src, ulong len, int alignment); |
39 | 39 |
40 pragma(LLVM_internal, "intrinsic", "llvm.memset.i32") | 40 pragma(intrinsic, "llvm.memset.i32") |
41 void llvm_memset_i32(void* dst, ubyte val, uint len, uint alignment); | 41 void llvm_memset_i32(void* dst, ubyte val, uint len, uint alignment); |
42 | 42 |
43 pragma(LLVM_internal, "intrinsic", "llvm.memset.i64") | 43 pragma(intrinsic, "llvm.memset.i64") |
44 void llvm_memset_i64(void* dst, ubyte val, ulong len, uint alignment); | 44 void llvm_memset_i64(void* dst, ubyte val, ulong len, uint alignment); |
45 | 45 |
46 pragma(LLVM_internal, "intrinsic", "llvm.sqrt.f32") | 46 pragma(intrinsic, "llvm.sqrt.f32") |
47 float llvm_sqrt(float val); | 47 float llvm_sqrt(float val); |
48 | 48 |
49 pragma(LLVM_internal, "intrinsic", "llvm.sqrt.f64") | 49 pragma(intrinsic, "llvm.sqrt.f64") |
50 { | 50 { |
51 double llvm_sqrt(double val); | 51 double llvm_sqrt(double val); |
52 real llvm_sqrt(real val); | 52 // real llvm_sqrt(real val); |
53 } | 53 } |
54 | 54 |
55 pragma(LLVM_internal, "intrinsic", "llvm.powi.f32") | 55 pragma(intrinsic, "llvm.powi.f32") |
56 float llvm_powi(float val, int power); | 56 float llvm_powi(float val, int power); |
57 | 57 |
58 pragma(LLVM_internal, "intrinsic", "llvm.powi.f64") | 58 pragma(intrinsic, "llvm.powi.f64") |
59 { | 59 { |
60 double llvm_powi(double val, int power); | 60 double llvm_powi(double val, int power); |
61 real llvm_powi(real val, int power); | 61 // real llvm_powi(real val, int power); |
62 } | 62 } |
63 | 63 |
64 // bit manipulation intrinsics | 64 // bit manipulation intrinsics |
65 pragma(LLVM_internal, "intrinsic", "llvm.bswap.i16.i16") | 65 pragma(intrinsic, "llvm.bswap.i16.i16") |
66 ushort llvm_bswap(ushort val); | 66 ushort llvm_bswap(ushort val); |
67 | 67 |
68 pragma(LLVM_internal, "intrinsic", "llvm.bswap.i32.i32") | 68 pragma(intrinsic, "llvm.bswap.i32.i32") |
69 uint llvm_bswap(uint val); | 69 uint llvm_bswap(uint val); |
70 | 70 |
71 pragma(LLVM_internal, "intrinsic", "llvm.bswap.i64.i64") | 71 pragma(intrinsic, "llvm.bswap.i64.i64") |
72 ulong llvm_bswap(ulong val); | 72 ulong llvm_bswap(ulong val); |
73 | 73 |
74 /* | 74 /* |
75 pragma(LLVM_internal, "intrinsic", "llvm.ctpop.i8") | 75 pragma(intrinsic, "llvm.ctpop.i8") |
76 uint llvm_ctpop_i8(ubyte src); | 76 uint llvm_ctpop_i8(ubyte src); |
77 | 77 |
78 pragma(LLVM_internal, "intrinsic", "llvm.ctpop.i16") | 78 pragma(intrinsic, "llvm.ctpop.i16") |
79 uint llvm_ctpop_i16(ushort src); | 79 uint llvm_ctpop_i16(ushort src); |
80 | 80 |
81 pragma(LLVM_internal, "intrinsic", "llvm.ctpop.i32") | 81 pragma(intrinsic, "llvm.ctpop.i32") |
82 uint llvm_ctpop_i32(uint src); | 82 uint llvm_ctpop_i32(uint src); |
83 | 83 |
84 pragma(LLVM_internal, "intrinsic", "llvm.ctpop.i64") | 84 pragma(intrinsic, "llvm.ctpop.i64") |
85 uint llvm_ctpop_i64(ulong src); | 85 uint llvm_ctpop_i64(ulong src); |
86 | 86 |
87 pragma(LLVM_internal, "intrinsic", "llvm.ctlz.i8") | 87 pragma(intrinsic, "llvm.ctlz.i8") |
88 uint llvm_ctlz_i8(ubyte src); | 88 uint llvm_ctlz_i8(ubyte src); |
89 | 89 |
90 pragma(LLVM_internal, "intrinsic", "llvm.ctlz.i16") | 90 pragma(intrinsic, "llvm.ctlz.i16") |
91 uint llvm_ctlz_i16(ushort src); | 91 uint llvm_ctlz_i16(ushort src); |
92 | 92 |
93 pragma(LLVM_internal, "intrinsic", "llvm.ctlz.i32") | 93 pragma(intrinsic, "llvm.ctlz.i32") |
94 uint llvm_ctlz_i32(uint src); | 94 uint llvm_ctlz_i32(uint src); |
95 | 95 |
96 pragma(LLVM_internal, "intrinsic", "llvm.ctlz.i64") | 96 pragma(intrinsic, "llvm.ctlz.i64") |
97 uint llvm_ctlz_i64(ulong src); | 97 uint llvm_ctlz_i64(ulong src); |
98 | 98 |
99 pragma(LLVM_internal, "intrinsic", "llvm.cttz.i8") | 99 pragma(intrinsic, "llvm.cttz.i8") |
100 uint llvm_cttz_i8(ubyte src); | 100 uint llvm_cttz_i8(ubyte src); |
101 | 101 |
102 pragma(LLVM_internal, "intrinsic", "llvm.cttz.i16") | 102 pragma(intrinsic, "llvm.cttz.i16") |
103 uint llvm_cttz_i16(ushort src); | 103 uint llvm_cttz_i16(ushort src); |
104 | 104 |
105 pragma(LLVM_internal, "intrinsic", "llvm.cttz.i32") | 105 pragma(intrinsic, "llvm.cttz.i32") |
106 uint llvm_cttz_i32(uint src); | 106 uint llvm_cttz_i32(uint src); |
107 | 107 |
108 pragma(LLVM_internal, "intrinsic", "llvm.cttz.i64") | 108 pragma(intrinsic, "llvm.cttz.i64") |
109 uint llvm_cttz_i64(ulong src); | 109 uint llvm_cttz_i64(ulong src); |
110 */ | 110 */ |
111 | 111 |
112 // atomic operations and synchronization intrinsics | 112 // atomic operations and synchronization intrinsics |
113 // TODO | 113 // TODO |
114 /* | 114 /* |
115 | 115 |
116 //declare i8 @llvm.atomic.lcs.i8.i8p.i8.i8( i8* <ptr>, i8 <cmp>, i8 <val> ) | 116 //declare i8 @llvm.atomic.lcs.i8.i8p.i8.i8( i8* <ptr>, i8 <cmp>, i8 <val> ) |
117 pragma(LLVM_internal, "intrinsic", "llvm.atomic.lcs.i8.i8p.i8.i8") | 117 pragma(intrinsic, "llvm.atomic.lcs.i8.i8p.i8.i8") |
118 ubyte llvm_atomic_lcs_i8(void* ptr, ubyte cmp, ubyte val); | 118 ubyte llvm_atomic_lcs_i8(void* ptr, ubyte cmp, ubyte val); |
119 | 119 |
120 declare i16 @llvm.atomic.lcs.i16.i16p.i16.i16( i16* <ptr>, i16 <cmp>, i16 <val> ) | 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> ) | 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> ) | 122 declare i64 @llvm.atomic.lcs.i64.i64p.i64.i64( i64* <ptr>, i64 <cmp>, i64 <val> ) |