view test/intrinsics.d @ 217:0806379a5eca trunk

[svn r233] Added: -oq command line option for writing fully qualified object names. Added: started support for x86 80bit floating point. Changed: aggregates passed by value now use the llvm 'byval' parameter attribute, also lays ground work for using other attributes. Changed: eliminated a lot more std::vectorS, these showed up pretty much at the top when profiling! Changed: performed other misc. cleanups. Changed: halt expression now call the new llvm trap intrinsic instead of an assert(0). Changed: dstress suite now passes -O0 by default, this only eliminates unreferenced globals, which speeds up linking quite a bit.
author lindquist
date Thu, 05 Jun 2008 06:38:36 +0200
parents 44a95ac7368a
children
line wrap: on
line source

import llvm.intrinsic;

extern(C) int printf(char*,...);
extern(C) int scanf(char*,...);

void main()
{
    {
    float f;
    printf("Enter float: ");
    scanf("%f", &f);
    float sf = llvm_sqrt(f);
    printf("sqrt(%f) = %f\n", f, sf);
    }
    
    {
    double d;
    printf("Enter double: ");
    scanf("%lf", &d);
    double sd = llvm_sqrt(d);
    printf("sqrt(%lf) = %lf\n", d, sd);
    }
    
    {
    real d;
    printf("Enter real: ");
    scanf("%lf", &d);
    real sd = llvm_sqrt(d);
    printf("sqrt(%lf) = %lf\n", d, sd);
    }
}