Mercurial > projects > ldc
view tests/mini/intrinsics.d @ 978:6a32d2e18175
Fix a latent bug in the asm code.
I think that technically, using "*m0" instead of "*0" allows LLVM to pick
between using the same memory as output 0 and using a new memory location.
(So far I haven't been able to construct a testcase that actually breaks
because of this, though)
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Wed, 18 Feb 2009 03:38:12 +0100 |
parents | 4ac97ec7c18e |
children | 146d8dfa0043 |
line wrap: on
line source
import ldc.intrinsics; extern(C) int printf(char*,...); extern(C) int scanf(char*,...); void main() { float f; printf("Enter float: "); //scanf("%f", &f); f = 1.22345; float sf = llvm_sqrt_f32(f); printf("sqrt(%f) = %f\n", f, sf); double d; printf("Enter double: "); //scanf("%lf", &d); d = 2.2311167895435245; double sd = llvm_sqrt_f64(d); printf("sqrt(%lf) = %lf\n", d, sd); real r; printf("Enter real: "); //scanf("%llf", &r); r = 3.2311167891231231234754764576; version(X86) { real sr = llvm_sqrt_f80(r); printf("sqrt(%llf) = %llf\n", r, sr); } else version (X86_64) { real sr = llvm_sqrt_f80(r); printf("sqrt(%llf) = %llf\n", r, sr); } else { real sr = llvm_sqrt_f64(r); printf("sqrt(%f) = %lf\n", r, sr); } }