mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-07 00:21:07 +01:00
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
30 lines
706 B
C++
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
|