Skip to content

Commit 394200d

Browse files
committed
fix LDC compilation
1 parent 4c6e89e commit 394200d

File tree

1 file changed

+68
-47
lines changed

1 file changed

+68
-47
lines changed

source/mir/math/common.d

Lines changed: 68 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -11,76 +11,97 @@ module mir.math.common;
1111

1212
public import mir.internal.utility: fastmath;
1313

14-
version(D_Ddoc)
14+
version(LDC)
1515
{
16+
nothrow @nogc pure @safe:
17+
18+
pragma(LDC_intrinsic, "llvm.sqrt.f#")
1619
///
17-
T sqrt(T)(in T x);
20+
T sqrt(T)(in T val);
21+
22+
pragma(LDC_intrinsic, "llvm.sin.f#")
1823
///
19-
T sin(T)(in T x);
24+
T sin(T)(in T val);
25+
26+
pragma(LDC_intrinsic, "llvm.cos.f#")
2027
///
21-
T cos(T)(in T x);
28+
T cos(T)(in T val);
29+
30+
pragma(LDC_intrinsic, "llvm.powi.f#")
31+
///
32+
T powi(T)(in T val, int power);
33+
34+
pragma(LDC_intrinsic, "llvm.pow.f#")
2235
///
23-
T pow(T)(in T x, in T power);
36+
T pow(T)(in T val, in T power);
37+
38+
pragma(LDC_intrinsic, "llvm.exp.f#")
2439
///
25-
T powi(T)(in T x, int power);
40+
T exp(T)(in T val);
41+
42+
pragma(LDC_intrinsic, "llvm.log.f#")
2643
///
27-
T exp(T)(in T x);
44+
T log(T)(in T val);
45+
46+
pragma(LDC_intrinsic, "llvm.fma.f#")
2847
///
29-
T log(T)(in T x);
48+
T fma(T)(T vala, T valb, T valc);
49+
50+
pragma(LDC_intrinsic, "llvm.fabs.f#")
3051
///
31-
T fabs(T)(in T x);
52+
T fabs(T)(in T val);
53+
54+
pragma(LDC_intrinsic, "llvm.floor.f#")
3255
///
33-
T floor(T)(in T x);
56+
T floor(T)(in T val);
57+
58+
pragma(LDC_intrinsic, "llvm.exp2.f#")
3459
///
35-
T exp2(T)(in T x);
60+
T exp2(T)(in T val);
61+
62+
pragma(LDC_intrinsic, "llvm.log10.f#")
3663
///
37-
T log10(T)(in T x);
64+
T log10(T)(in T val);
65+
66+
pragma(LDC_intrinsic, "llvm.log2.f#")
3867
///
39-
T log2(T)(in T x);
68+
T log2(T)(in T val);
69+
70+
pragma(LDC_intrinsic, "llvm.ceil.f#")
4071
///
41-
T ceil(T)(in T x);
72+
T ceil(T)(in T val);
73+
74+
pragma(LDC_intrinsic, "llvm.trunc.f#")
4275
///
43-
T trunc(T)(in T x);
76+
T trunc(T)(in T val);
77+
78+
pragma(LDC_intrinsic, "llvm.rint.f#")
4479
///
45-
T rint(T)(in T x);
80+
T rint(T)(in T val);
81+
82+
pragma(LDC_intrinsic, "llvm.nearbyint.f#")
4683
///
47-
T nearbyint(T)(in T x);
84+
T nearbyint(T)(in T val);
85+
86+
pragma(LDC_intrinsic, "llvm.copysign.f#")
4887
///
4988
T copysign(T)(in T mag, in T sgn);
89+
90+
pragma(LDC_intrinsic, "llvm.round.f#")
5091
///
51-
T round(T)(in T x);
92+
T round(T)(in T val);
93+
94+
pragma(LDC_intrinsic, "llvm.fmuladd.f#")
5295
///
53-
T fmuladd(T)(in T a, in T b, in T c);
96+
T fmuladd(T)(in T vala, in T valb, in T valc);
97+
98+
pragma(LDC_intrinsic, "llvm.minnum.f#")
5499
///
55-
T fmin(T)(in T x, in T y);
100+
T fmin(T)(in T vala, in T valb);
101+
102+
pragma(LDC_intrinsic, "llvm.maxnum.f#")
56103
///
57-
T fmax(T)(in T x, in T y);
58-
}
59-
else
60-
version(LDC)
61-
{
62-
import ldc.intrinsics;
63-
alias sqrt = llvm_sqrt;
64-
alias sin = llvm_sin;
65-
alias cos = llvm_cos;
66-
alias pow = llvm_pow;
67-
alias powi = llvm_powi;
68-
alias exp = llvm_exp;
69-
alias log = llvm_log;
70-
alias fabs = llvm_fabs;
71-
alias floor = llvm_floor;
72-
alias exp2 = llvm_exp2;
73-
alias log10 = llvm_log10;
74-
alias log2 = llvm_log2;
75-
alias ceil = llvm_ceil;
76-
alias trunc = llvm_trunc;
77-
alias rint = llvm_rint;
78-
alias nearbyint = llvm_nearbyint;
79-
alias copysign = llvm_copysign;
80-
alias round = llvm_round;
81-
alias fmuladd = llvm_fmuladd;
82-
alias fmin = llvm_minnum;
83-
alias fmax = llvm_maxnum;
104+
T fmax(T)(in T vala, in T valb);
84105
}
85106
else
86107
{

0 commit comments

Comments
 (0)