comparison import/llvmdc/intrinsics.di @ 445:cc40db549aea

Changed the handling of variadic intrinsics a bit. Removed the -fp80 option and made real be 80bit floats on X86, this is what the D spec really says it should be and fixes a bunch of issues. Changed the handling of parameter attributes to a bit more generalized approach. Added sext/zext attributes for byte/short/ubyte/ushort parameters, fixes #60 . Parameter attribs now properly set for intrinsic calls if necessary. Made the tango.math.Math patch less intrusive. Fixed/added some mini tests.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Fri, 01 Aug 2008 17:59:58 +0200
parents 44f08170f4ef
children
comparison
equal deleted inserted replaced
444:f2b5f86348ef 445:cc40db549aea
104 104
105 pragma(intrinsic, "llvm.sqrt.f32") 105 pragma(intrinsic, "llvm.sqrt.f32")
106 float llvm_sqrt_f32(float val); 106 float llvm_sqrt_f32(float val);
107 pragma(intrinsic, "llvm.sqrt.f64") 107 pragma(intrinsic, "llvm.sqrt.f64")
108 double llvm_sqrt_f64(double val); 108 double llvm_sqrt_f64(double val);
109 version(LLVM_X86_FP80) 109 version(X86)
110 { 110 {
111 pragma(intrinsic, "llvm.sqrt.f80") 111 pragma(intrinsic, "llvm.sqrt.f80")
112 real llvm_sqrt_f80(real val); 112 real llvm_sqrt_f80(real val);
113 } 113 }
114 114
117 117
118 pragma(intrinsic, "llvm.sin.f32") 118 pragma(intrinsic, "llvm.sin.f32")
119 float llvm_sin_f32(float val); 119 float llvm_sin_f32(float val);
120 pragma(intrinsic, "llvm.sin.f64") 120 pragma(intrinsic, "llvm.sin.f64")
121 double llvm_sin_f64(double val); 121 double llvm_sin_f64(double val);
122 version(LLVM_X86_FP80) 122 version(X86)
123 { 123 {
124 pragma(intrinsic, "llvm.sin.f80") 124 pragma(intrinsic, "llvm.sin.f80")
125 real llvm_sin_f80(real val); 125 real llvm_sin_f80(real val);
126 } 126 }
127 127
130 130
131 pragma(intrinsic, "llvm.cos.f32") 131 pragma(intrinsic, "llvm.cos.f32")
132 float llvm_cos_f32(float val); 132 float llvm_cos_f32(float val);
133 pragma(intrinsic, "llvm.cos.f64") 133 pragma(intrinsic, "llvm.cos.f64")
134 double llvm_cos_f64(double val); 134 double llvm_cos_f64(double val);
135 version(LLVM_X86_FP80) 135 version(X86)
136 { 136 {
137 pragma(intrinsic, "llvm.cos.f80") 137 pragma(intrinsic, "llvm.cos.f80")
138 real llvm_cos_f80(real val); 138 real llvm_cos_f80(real val);
139 } 139 }
140 140
144 pragma(intrinsic, "llvm.powi.f32") 144 pragma(intrinsic, "llvm.powi.f32")
145 float llvm_powi_f32(float val, int power); 145 float llvm_powi_f32(float val, int power);
146 146
147 pragma(intrinsic, "llvm.powi.f64") 147 pragma(intrinsic, "llvm.powi.f64")
148 double llvm_powi_f64(double val, int power); 148 double llvm_powi_f64(double val, int power);
149 version(LLVM_X86_FP80) 149 version(X86)
150 { 150 {
151 pragma(intrinsic, "llvm.powi.f80") 151 pragma(intrinsic, "llvm.powi.f80")
152 real llvm_powi_f80(real val, int power); 152 real llvm_powi_f80(real val, int power);
153 } 153 }
154 154
158 pragma(intrinsic, "llvm.pow.f32") 158 pragma(intrinsic, "llvm.pow.f32")
159 float llvm_pow_f32(float val, float power); 159 float llvm_pow_f32(float val, float power);
160 160
161 pragma(intrinsic, "llvm.pow.f64") 161 pragma(intrinsic, "llvm.pow.f64")
162 double llvm_pow_f64(double val, double power); 162 double llvm_pow_f64(double val, double power);
163 version(LLVM_X86_FP80) 163 version(X86)
164 { 164 {
165 pragma(intrinsic, "llvm.pow.f80") 165 pragma(intrinsic, "llvm.pow.f80")
166 real llvm_pow_f80(real val, real power); 166 real llvm_pow_f80(real val, real power);
167 } 167 }
168 168