@@ -48,41 +48,78 @@ Expression *eval_unimp(Loc loc, FuncDeclaration *fd, Expressions *arguments)
48
48
return NULL ;
49
49
}
50
50
51
+ #if IN_LLVM
51
52
Expression * eval_sin (Loc loc , FuncDeclaration * fd , Expressions * arguments )
52
53
{
53
54
Expression * arg0 = (* arguments )[0 ];
54
55
assert (arg0 -> op == TOKfloat64 );
55
- return new RealExp (loc , sinl (arg0 -> toReal ()), arg0 -> type );
56
+ return new RealExp (loc , ldouble (arg0 -> toReal ()). sin ( ), arg0 -> type );
56
57
}
57
58
58
59
Expression * eval_cos (Loc loc , FuncDeclaration * fd , Expressions * arguments )
59
60
{
60
61
Expression * arg0 = (* arguments )[0 ];
61
62
assert (arg0 -> op == TOKfloat64 );
62
- return new RealExp (loc , cosl (arg0 -> toReal ()), arg0 -> type );
63
+ return new RealExp (loc , ldouble (arg0 -> toReal ()). cos ( ), arg0 -> type );
63
64
}
64
65
65
66
Expression * eval_tan (Loc loc , FuncDeclaration * fd , Expressions * arguments )
66
67
{
67
68
Expression * arg0 = (* arguments )[0 ];
68
69
assert (arg0 -> op == TOKfloat64 );
69
- return new RealExp (loc , tanl (arg0 -> toReal ()), arg0 -> type );
70
+ return new RealExp (loc , ldouble (arg0 -> toReal ()). tan ( ), arg0 -> type );
70
71
}
71
72
72
73
Expression * eval_sqrt (Loc loc , FuncDeclaration * fd , Expressions * arguments )
73
74
{
74
75
Expression * arg0 = (* arguments )[0 ];
75
76
assert (arg0 -> op == TOKfloat64 );
76
- return new RealExp (loc , Port :: sqrt (arg0 -> toReal ()), arg0 -> type );
77
+ return new RealExp (loc , ldouble (arg0 -> toReal ()). sqrt ( ), arg0 -> type );
77
78
}
78
79
79
80
Expression * eval_fabs (Loc loc , FuncDeclaration * fd , Expressions * arguments )
80
81
{
81
82
Expression * arg0 = (* arguments )[0 ];
82
83
assert (arg0 -> op == TOKfloat64 );
83
- return new RealExp (loc , fabsl (arg0 -> toReal ()), arg0 -> type );
84
+ return new RealExp (loc , ldouble (arg0 -> toReal ()).abs (), arg0 -> type );
85
+ }
86
+ #else
87
+ Expression * eval_sin (Loc loc , FuncDeclaration * fd , Expressions * arguments )
88
+ {
89
+ Expression * arg0 = (* arguments )[0 ];
90
+ assert (arg0 -> op == TOKfloat64 );
91
+ return new RealExp (loc , sinl (arg0 -> toReal ()), arg0 -> type );
92
+ }
93
+
94
+ Expression * eval_cos (Loc loc , FuncDeclaration * fd , Expressions * arguments )
95
+ {
96
+ Expression * arg0 = (* arguments )[0 ];
97
+ assert (arg0 -> op == TOKfloat64 );
98
+ return new RealExp (loc , cosl (arg0 -> toReal ()), arg0 -> type );
99
+ }
100
+
101
+ Expression * eval_tan (Loc loc , FuncDeclaration * fd , Expressions * arguments )
102
+ {
103
+ Expression * arg0 = (* arguments )[0 ];
104
+ assert (arg0 -> op == TOKfloat64 );
105
+ return new RealExp (loc , tanl (arg0 -> toReal ()), arg0 -> type );
106
+ }
107
+
108
+ Expression * eval_sqrt (Loc loc , FuncDeclaration * fd , Expressions * arguments )
109
+ {
110
+ Expression * arg0 = (* arguments )[0 ];
111
+ assert (arg0 -> op == TOKfloat64 );
112
+ return new RealExp (loc , Port ::sqrt (arg0 -> toReal ()), arg0 -> type );
84
113
}
85
114
115
+ Expression * eval_fabs (Loc loc , FuncDeclaration * fd , Expressions * arguments )
116
+ {
117
+ Expression * arg0 = (* arguments )[0 ];
118
+ assert (arg0 -> op == TOKfloat64 );
119
+ return new RealExp (loc , fabsl (arg0 -> toReal ()), arg0 -> type );
120
+ }
121
+ #endif
122
+
86
123
#if IN_LLVM
87
124
88
125
static inline Type * getTypeOfOverloadedIntrinsic (FuncDeclaration * fd )
0 commit comments