pytorch/c10/core/SymIntArrayRef.cpp
Edward Z. Yang a2cbbbd46f Improve SymInt print and move to correct file (#85413)
Signed-off-by: Edward Z. Yang <ezyang@fb.com>
Pull Request resolved: https://github.com/pytorch/pytorch/pull/85413
Approved by: https://github.com/wconstab
2022-09-21 20:09:22 +00:00

30 lines
706 B
C++

#include <c10/core/SymIntArrayRef.h>
#include <c10/util/Optional.h>
#include <iostream>
namespace c10 {
at::IntArrayRef asIntArrayRefSlow(c10::SymIntArrayRef ar) {
auto r = asIntArrayRefSlowOpt(ar);
TORCH_CHECK(
r.has_value(),
"SymIntArrayRef expected to contain only concrete integers");
return *r;
}
c10::optional<at::IntArrayRef> asIntArrayRefSlowOpt(c10::SymIntArrayRef ar) {
for (c10::SymInt sci : ar) {
if (sci.is_symbolic()) {
return c10::nullopt;
}
}
return {asIntArrayRefUnchecked(ar)};
}
at::IntArrayRef asIntArrayRefUnchecked(c10::SymIntArrayRef ar) {
return IntArrayRef(reinterpret_cast<const int64_t*>(ar.data()), ar.size());
}
} // namespace c10