Skip to content

[REGRESSION LDC 1.40.0] Missing a lot of floating point operation functions when trying to build to WASM #4838

@MrcSnm

Description

@MrcSnm

All I done was upgrading. I'm using my same custom runtime and for now I don't know really what to do.

I don't have all symbols which are missing but I guess I have sufficient for someone to understand what is happening

You can see an example here https://d.godbolt.org/z/K1hc55fo8

///////////////////////////////////////Comparisons///////////////////////////////////////

///real1 > real2
extern(C) bool __gttf2(real a  , real b){assert(false);}
///real1 < real2
extern(C) bool __lttf2(real a, real b){assert(false);}
///real <= real2
extern(C) bool __letf2(real a, real b){assert(false);}
///real != real
extern(C) real __netf2(real a, real b){assert(false);}
/// real == real
extern(C) real __eqtf2(real a, real b){assert(false);}
///isNaN(real)
extern(C) bool __unordtf2(real a){assert(false);}
///comp float a and b
extern(C) bool __getf2(float a, float b){assert(false);}


///////////////////////////////////////Basic Operations///////////////////////////////////////

///real + real
extern(C) real __addtf3(real a, real b){assert(false);}
///real - real
extern(C) real __subtf3(real a, real b){assert(false);}
///real / real
extern(C) real __divtf3(real a, real b){assert(false);}
///real * real
extern(C) real __multf3(real a, real b){assert(false);}




///////////////////////////////////////Special Operations///////////////////////////////////////

/// round(real)
extern(C) real rintl(real a){assert(false);}
///cos(real)
extern(C) real cosl(real a){assert(false);}
///sqrt(real)
extern(C) real sqrtl(real a){assert(false);}
///sin(real)
extern(C) real sinl(real a){assert(false);}

///////////////////////////////////////Castings///////////////////////////////////////

// ///cast(double)realValue
extern(C) double __trunctfdf2(real x){assert(false);}
///cast(float)real
extern(C) float __trunctfsf2(real a){assert(false);}
///cast(real)uint
extern(C) real __floatunsitf (uint a){assert(false);}
///cast(real)long
extern(C) real __floatditf(long a){assert(false);}
///cast(real)ulong
extern(C) real __floatunditf(long a){assert(false);}
///cast(real) double
extern(C) real __extenddftf2(double a){assert(false);}
///cast(real) float
extern(C) real __extendsftf2(float a){assert(false);}
///cast(real)long
extern(C) real __fixtfdi(long a){assert(false);}
///cast(real)int
extern(C) real __floatsitf(int a){assert(false);}
///Don't know
extern(C) int __fixtfsi(float a){assert(false);}

Updated the list which includes all of the operations currently necessary

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions