message: Workaround MSVC bug that std::isnan cannot handle integral type
diff: @@ -916,9 +916,29 @@ class HloEvaluatorTypedVisitor : public DfsHloVisitorWithDefault {
  return HandleShiftRightLogical<ElementwiseT>(shrl);
  }
  - template <
  - typename NativeT,
  - typename std::enable_if<!is_complex_t<NativeT>::value>::type* = nullptr>
  + // Special case for integral type due to MSVC's std::isnan being unable to
  + // handle integral type.
  + template <typename NativeT,
  + typename std::enable_if<!is_complex_t<NativeT>::value &&
  + std::is_intergal<NativeT>::value>::type* =
  + nullptr>
  + Status HandleClamp(HloInstruction* clamp) {
  + std::function<ElementwiseT(ElementwiseT, ElementwiseT, ElementwiseT)>
  + clamp_op = [](ElementwiseT low, ElementwiseT value, ElementwiseT high) {
  + return static_cast<ElementwiseT>(
  + std::min(high, std::max(value, low)));
  + };
  + TF_ASSIGN_OR_RETURN(
  + parent_->evaluated_[clamp],
  + ElementwiseTernaryOp(clamp,
  + std::move(ConvertTernaryFunction(clamp_op))));
  + return Status::OK();
  + }
  +
  + template <typename NativeT,
  + typename std::enable_if<!is_complex_t<NativeT>::value &&
  + !std::is_intergal<NativeT>::value>::type* =
  + nullptr>
  Status HandleClamp(HloInstruction* clamp) {
  std::function<ElementwiseT(ElementwiseT, ElementwiseT, ElementwiseT)>
  clamp_op = [](ElementwiseT low, ElementwiseT value, ElementwiseT high) {
  