• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <ATen/core/ATenOpList.h>
2 
3 #include <string>
4 #include <cstring>
5 #include <utility>
6 #include <unordered_set>
7 #include <ATen/core/operator_name.h>
8 
9 // ${generated_comment}
10 
11 namespace at {
12 
13 namespace {
14 struct OpNameEquals final {
operator ()at::__anon3d9327d60111::OpNameEquals15   bool operator()(const std::pair<const char*, const char*>& lhs, const std::pair<const char*, const char*>& rhs) const {
16       return 0 == strcmp(lhs.first, rhs.first) && 0 == strcmp(lhs.second, rhs.second);
17   }
18 };
19 
20 struct OpNameHash final {
operator ()at::__anon3d9327d60111::OpNameHash21   size_t operator()(const std::pair<const char*, const char*>& p) const {
22       // use std::hash<std::string> because std::hash<const char*> would hash pointers and not pointed-to strings
23       return std::hash<std::string>()(p.first) ^ (~ std::hash<std::string>()(p.second));
24   }
25 };
26 }
27 
is_custom_op(const c10::OperatorName & opName)28 bool is_custom_op(const c10::OperatorName& opName) {
29   static std::unordered_set<std::pair<const char*, const char*>, OpNameHash, OpNameEquals> ops {
30     ${aten_ops}
31     {"", ""}
32   };
33   return ops.count(std::make_pair(
34              opName.name.c_str(), opName.overload_name.c_str())) == 0;
35 }
36 }
37