Skip to content

Commit bb2e555

Browse files
committed
Addresses PR comments.
1 parent 3b58c79 commit bb2e555

File tree

4 files changed

+6
-37
lines changed

4 files changed

+6
-37
lines changed

clang/lib/Headers/hlsl/hlsl_intrinsics.h

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -303,43 +303,6 @@ fmod(__detail::HLSL_FIXED_VECTOR<float, N> X,
303303
return __detail::fmod_vec_impl(X, Y);
304304
}
305305

306-
//===----------------------------------------------------------------------===//
307-
// isnan builtins
308-
//===----------------------------------------------------------------------===//
309-
310-
/// \fn bool isnan(T x)
311-
/// \brief Returns whether x is NaN or QNaN.
312-
/// \param x [in] A number or vector of numbers.
313-
///
314-
/// Return whether (each element of) x is NaN or QNaN.
315-
316-
template <typename T>
317-
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
318-
const inline __detail::enable_if_t<
319-
__detail::is_arithmetic<T>::Value && __detail::is_same<half, T>::value, T>
320-
isnan(T X) {
321-
return __builtin_elementwise_isnan(X);
322-
}
323-
template <typename T>
324-
const inline __detail::enable_if_t<
325-
__detail::is_arithmetic<T>::Value && __detail::is_same<float, T>::value, T>
326-
isnan(T X) {
327-
return __builtin_elementwise_isnan(X);
328-
}
329-
330-
template <int N>
331-
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
332-
const inline __detail::HLSL_FIXED_VECTOR<half, N>
333-
isnan(__detail::HLSL_FIXED_VECTOR<half, N> X) {
334-
return __builtin_elementwise_isnan(X);
335-
}
336-
337-
template <int N>
338-
const inline __detail::HLSL_FIXED_VECTOR<float, N>
339-
isnan(__detail::HLSL_FIXED_VECTOR<float, N> X) {
340-
return __builtin_elementwise_isnan(X);
341-
}
342-
343306
//===----------------------------------------------------------------------===//
344307
// ldexp builtins
345308
//===----------------------------------------------------------------------===//

llvm/lib/Target/DirectX/DXIL.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,7 @@ def Saturate : DXILOp<7, unary> {
424424

425425
def IsNaN : DXILOp<8, isSpecialFloat> {
426426
let Doc = "Determines if the specified value is NaN.";
427+
let intrinsics = [IntrinSelect<int_dx_isnan>];
427428
let arguments = [OverloadTy];
428429
let result = Int1Ty;
429430
let overloads = [Overloads<DXIL1_0, [HalfTy, FloatTy]>];

llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ static bool isIntrinsicExpansion(Function &F) {
213213
case Intrinsic::dx_nclamp:
214214
case Intrinsic::dx_degrees:
215215
case Intrinsic::dx_isinf:
216+
case Intrinsic::dx_isnan:
216217
case Intrinsic::dx_lerp:
217218
case Intrinsic::dx_normalize:
218219
case Intrinsic::dx_fdot:
@@ -1024,6 +1025,9 @@ static bool expandIntrinsic(Function &F, CallInst *Orig) {
10241025
case Intrinsic::dx_isinf:
10251026
Result = expand16BitIsInf(Orig);
10261027
break;
1028+
case Intrinsic::dx_isnan:
1029+
Result = expand16BitIsInf(Orig);
1030+
break;
10271031
case Intrinsic::dx_lerp:
10281032
Result = expandLerpIntrinsic(Orig);
10291033
break;

llvm/lib/Target/DirectX/DirectXTargetTransformInfo.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ bool DirectXTTIImpl::isTargetIntrinsicTriviallyScalarizable(
4848
case Intrinsic::dx_firstbituhigh:
4949
case Intrinsic::dx_frac:
5050
case Intrinsic::dx_isinf:
51+
case Intrinsic::dx_isnan:
5152
case Intrinsic::dx_rsqrt:
5253
case Intrinsic::dx_saturate:
5354
case Intrinsic::dx_splitdouble:

0 commit comments

Comments
 (0)