xref: /aosp_15_r20/external/pytorch/c10/core/QEngine.h (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1 #pragma once
2 
3 #include <c10/util/Exception.h>
4 #include <cstdint>
5 #include <string>
6 
7 namespace c10 {
8 
9 /**
10  * QEngine is an enum that is used to select the engine to run quantized ops.
11  * Keep this enum in sync with get_qengine_id() in
12  * torch/backends/quantized/__init__.py
13  */
14 enum class QEngine : uint8_t {
15   NoQEngine = 0,
16   FBGEMM = 1,
17   QNNPACK = 2,
18   ONEDNN = 3,
19   X86 = 4,
20 };
21 
22 constexpr auto kNoQEngine = QEngine::NoQEngine;
23 constexpr auto kFBGEMM = QEngine::FBGEMM;
24 constexpr auto kQNNPACK = QEngine::QNNPACK;
25 constexpr auto kONEDNN = QEngine::ONEDNN;
26 constexpr auto kX86 = QEngine::X86;
27 
toString(QEngine qengine)28 inline std::string toString(QEngine qengine) {
29   switch (qengine) {
30     case kNoQEngine:
31       return "NoQEngine";
32     case kFBGEMM:
33       return "FBGEMM";
34     case kQNNPACK:
35       return "QNNPACK";
36     case kONEDNN:
37       return "ONEDNN";
38     case kX86:
39       return "X86";
40     default:
41       TORCH_CHECK(
42           false, "Unrecognized Quantized Engine: ", static_cast<int>(qengine));
43   }
44 }
45 
46 } // namespace c10
47