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> )