| 107 | } |
| 108 | |
| 109 | XlaOp MaxFiniteValue(XlaBuilder* builder, PrimitiveType type) { |
| 110 | switch (type) { |
| 111 | case F16: |
| 112 | return ConstantR0<Eigen::half>(builder, |
| 113 | Eigen::NumTraits<Eigen::half>::highest()); |
| 114 | case BF16: |
| 115 | return ConstantR0<Eigen::bfloat16>( |
| 116 | builder, Eigen::NumTraits<Eigen::bfloat16>::highest()); |
| 117 | case F32: |
| 118 | return ConstantR0<float>(builder, std::numeric_limits<float>::max()); |
| 119 | case F64: |
| 120 | return ConstantR0<double>(builder, std::numeric_limits<double>::max()); |
| 121 | default: |
| 122 | return MaxValue(builder, type); |
| 123 | } |
| 124 | } |
| 125 | |
| 126 | XlaOp NanValue(XlaBuilder* builder, PrimitiveType type) { |
| 127 | return builder->ReportErrorOrReturn([&]() -> StatusOr<XlaOp> { |