Skip to content

Commit b0a476c

Browse files
authored
[RISC-V] Use standard NaNs in FP ops for cross-compiling RISC-V on x86 (dotnet#93098)
1 parent 46c8741 commit b0a476c

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

src/coreclr/jit/valuenum.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ struct DoubleTraits
106106
template <typename TFp, typename TFpTraits>
107107
TFp FpAdd(TFp value1, TFp value2)
108108
{
109-
#if defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64)
109+
#if defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64)
110110
// If [value1] is negative infinity and [value2] is positive infinity
111111
// the result is NaN.
112112
// If [value1] is positive infinity and [value2] is negative infinity
@@ -124,7 +124,7 @@ TFp FpAdd(TFp value1, TFp value2)
124124
return TFpTraits::NaN();
125125
}
126126
}
127-
#endif // TARGET_ARMARCH || TARGET_LOONGARCH64
127+
#endif // TARGET_ARMARCH || TARGET_LOONGARCH64 || TARGET_RISCV64
128128

129129
return value1 + value2;
130130
}
@@ -142,7 +142,7 @@ TFp FpAdd(TFp value1, TFp value2)
142142
template <typename TFp, typename TFpTraits>
143143
TFp FpSub(TFp value1, TFp value2)
144144
{
145-
#if defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64)
145+
#if defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64)
146146
// If [value1] is positive infinity and [value2] is positive infinity
147147
// the result is NaN.
148148
// If [value1] is negative infinity and [value2] is negative infinity
@@ -160,7 +160,7 @@ TFp FpSub(TFp value1, TFp value2)
160160
return TFpTraits::NaN();
161161
}
162162
}
163-
#endif // TARGET_ARMARCH || TARGET_LOONGARCH64
163+
#endif // TARGET_ARMARCH || TARGET_LOONGARCH64 || TARGET_RISCV64
164164

165165
return value1 - value2;
166166
}
@@ -178,7 +178,7 @@ TFp FpSub(TFp value1, TFp value2)
178178
template <typename TFp, typename TFpTraits>
179179
TFp FpMul(TFp value1, TFp value2)
180180
{
181-
#if defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64)
181+
#if defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64)
182182
// From the ECMA standard:
183183
//
184184
// If [value1] is zero and [value2] is infinity
@@ -194,7 +194,7 @@ TFp FpMul(TFp value1, TFp value2)
194194
{
195195
return TFpTraits::NaN();
196196
}
197-
#endif // TARGET_ARMARCH || TARGET_LOONGARCH64
197+
#endif // TARGET_ARMARCH || TARGET_LOONGARCH64 || TARGET_RISCV64
198198

199199
return value1 * value2;
200200
}
@@ -212,7 +212,7 @@ TFp FpMul(TFp value1, TFp value2)
212212
template <typename TFp, typename TFpTraits>
213213
TFp FpDiv(TFp dividend, TFp divisor)
214214
{
215-
#if defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64)
215+
#if defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64)
216216
// From the ECMA standard:
217217
//
218218
// If [dividend] is zero and [divisor] is zero
@@ -228,7 +228,7 @@ TFp FpDiv(TFp dividend, TFp divisor)
228228
{
229229
return TFpTraits::NaN();
230230
}
231-
#endif // TARGET_ARMARCH || TARGET_LOONGARCH64
231+
#endif // TARGET_ARMARCH || TARGET_LOONGARCH64 || TARGET_RISCV64
232232

233233
return dividend / divisor;
234234
}

0 commit comments

Comments
 (0)