File tree Expand file tree Collapse file tree 2 files changed +10
-4
lines changed
include/nbl/builtin/hlsl/emulated Expand file tree Collapse file tree 2 files changed +10
-4
lines changed Original file line number Diff line number Diff line change @@ -154,14 +154,20 @@ namespace hlsl
154
154
if ((data | ieee754::traits<float64_t>::signMask) == (rhs.data | ieee754::traits<float64_t>::signMask))
155
155
return _static_cast<this_t>(0ull);
156
156
157
- uint64_t rhsNormMantissaHigh = shiftAmount >= 64 ? 0ull : rhsNormMantissa >> shiftAmount;
157
+ uint64_t rhsNormMantissaHigh = shiftAmount >= 64u ? 0ull : rhsNormMantissa >> shiftAmount;
158
158
uint64_t rhsNormMantissaLow = 0ull;
159
159
if (shiftAmount < 128 )
160
160
{
161
161
if (shiftAmount >= 64 )
162
+ {
162
163
rhsNormMantissaLow = rhsNormMantissa >> (shiftAmount - 64 );
164
+ }
163
165
else
164
- rhsNormMantissaLow = rhsNormMantissa << (64 - shiftAmount);
166
+ {
167
+ const uint32_t lowMantissaShiftAmount = 64 - shiftAmount;
168
+ if (lowMantissaShiftAmount < 64 )
169
+ rhsNormMantissaLow = rhsNormMantissa << lowMantissaShiftAmount;
170
+ }
165
171
}
166
172
167
173
const int64_t mantissaDiff = int64_t (lhsNormMantissa) - int64_t (rhsNormMantissaHigh);
@@ -179,7 +185,7 @@ namespace hlsl
179
185
}
180
186
else
181
187
{
182
- rhsNormMantissa >>= shiftAmount;
188
+ rhsNormMantissa = shiftAmount > 63 ? 0ull : rhsNormMantissa >> shiftAmount;
183
189
resultMantissa = lhsNormMantissa + rhsNormMantissa;
184
190
185
191
if (resultMantissa & 1ull << 53 )
You can’t perform that action at this time.
0 commit comments