Mercurial > projects > ldc
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 |