XlaHelpers::MinMax XlaHelpers::MinMaxValues()

in torch_xla/csrc/helpers.cpp [178:219]


XlaHelpers::MinMax XlaHelpers::MinMaxValues(xla::PrimitiveType type) {
  switch (type) {
    case xla::PrimitiveType::S8:
      return {std::numeric_limits<xla::int8>::lowest(),
              std::numeric_limits<xla::int8>::max()};
    case xla::PrimitiveType::U8:
      return {std::numeric_limits<xla::uint8>::lowest(),
              std::numeric_limits<xla::uint8>::max()};
    case xla::PrimitiveType::S16:
      return {std::numeric_limits<xla::int16>::lowest(),
              std::numeric_limits<xla::int16>::max()};
    case xla::PrimitiveType::U16:
      return {std::numeric_limits<xla::uint16>::lowest(),
              std::numeric_limits<xla::uint16>::max()};
    case xla::PrimitiveType::S32:
      return {static_cast<int64_t>(std::numeric_limits<xla::int32>::lowest()),
              static_cast<int64_t>(std::numeric_limits<xla::int32>::max())};
    case xla::PrimitiveType::U32:
      return {static_cast<int64_t>(std::numeric_limits<xla::uint32>::lowest()),
              static_cast<int64_t>(std::numeric_limits<xla::uint32>::max())};
    case xla::PrimitiveType::S64:
      return {static_cast<int64_t>(std::numeric_limits<xla::int64_t>::lowest()),
              static_cast<int64_t>(std::numeric_limits<xla::int64_t>::max())};
    case xla::PrimitiveType::U64:
      return {static_cast<int64_t>(std::numeric_limits<xla::uint64>::lowest()),
              static_cast<int64_t>(std::numeric_limits<xla::uint64>::max())};
    case xla::PrimitiveType::F16:
      return {static_cast<float>(std::numeric_limits<xla::half>::lowest()),
              static_cast<float>(std::numeric_limits<xla::half>::max())};
    case xla::PrimitiveType::BF16:
    case xla::PrimitiveType::F32:
      return {std::numeric_limits<float>::lowest(),
              std::numeric_limits<float>::max()};
    case xla::PrimitiveType::F64:
      return {std::numeric_limits<double>::lowest(),
              std::numeric_limits<double>::max()};
    case xla::PrimitiveType::PRED:
      return {0, 1};
    default:
      XLA_ERROR() << "Unsupported XLA type " << type;
  }
}