From 3c5ca20d9ff9b8ca112fa08f6ced4d34ca236f1a Mon Sep 17 00:00:00 2001
From: bhalimi <benjamin.halimi@cea.fr>
Date: Mon, 23 Sep 2024 13:11:55 +0000
Subject: [PATCH] minor changes

---
 include/aidge/backend/QuantizationCPU.hpp     |  2 ++
 python_binding/operator/SAT/pybind_DoReFa.cpp | 34 +++++++++++++++++++
 python_binding/pybind_Quantization.cpp        |  4 +--
 3 files changed, 38 insertions(+), 2 deletions(-)
 create mode 100644 python_binding/operator/SAT/pybind_DoReFa.cpp

diff --git a/include/aidge/backend/QuantizationCPU.hpp b/include/aidge/backend/QuantizationCPU.hpp
index 8b6fe78..dbc6c0e 100644
--- a/include/aidge/backend/QuantizationCPU.hpp
+++ b/include/aidge/backend/QuantizationCPU.hpp
@@ -15,6 +15,8 @@
 #include "aidge/backend/cpu/operator/LSQImpl.hpp"
 
 #include "aidge/backend/cpu/operator/SAT/TanhClampImpl.hpp"
+#include "aidge/backend/cpu/operator/SAT/DoReFaImpl.hpp"
+
 
 // ...
 
diff --git a/python_binding/operator/SAT/pybind_DoReFa.cpp b/python_binding/operator/SAT/pybind_DoReFa.cpp
new file mode 100644
index 0000000..4e66665
--- /dev/null
+++ b/python_binding/operator/SAT/pybind_DoReFa.cpp
@@ -0,0 +1,34 @@
+/********************************************************************************
+ * Copyright (c) 2023 CEA-List
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ ********************************************************************************/
+
+#include <pybind11/pybind11.h>
+
+#include "aidge/data/Tensor.hpp"
+#include "aidge/operator/SAT/DoReFa.hpp"
+#include "aidge/operator/OperatorTensor.hpp"
+
+namespace py = pybind11;
+namespace Aidge {
+
+void init_DoReFa(py::module& m) {
+    py::enum_<DoReFaMode>(m, "DoReFaMode")
+        .value("Default", DoReFaMode::Default)
+        .value("Symmetric", DoReFaMode::Symmetric)
+        .export_values();
+
+    py::class_<DoReFa_Op, std::shared_ptr<DoReFa_Op>, OperatorTensor>(m, "DoReFaOp", py::multiple_inheritance())
+    .def(py::init<size_t, DoReFaMode>(), py::arg("range") = 255, py::arg("mode") = DoReFaMode::Default)
+    .def_static("get_inputs_name", &DoReFa_Op::getInputsName)
+    .def_static("get_outputs_name", &DoReFa_Op::getOutputsName);
+    declare_registrable<DoReFa_Op>(m, "DoReFaOp");
+    m.def("DoReFa", &DoReFa, py::arg("range") = 255, py::arg("mode") = DoReFaMode::Default, py::arg("name") = "");
+}
+}  // namespace Aidge
diff --git a/python_binding/pybind_Quantization.cpp b/python_binding/pybind_Quantization.cpp
index 2ab1d0d..ab26c11 100644
--- a/python_binding/pybind_Quantization.cpp
+++ b/python_binding/pybind_Quantization.cpp
@@ -23,6 +23,7 @@ namespace Aidge
 void init_FixedQ(py::module& m);
 void init_LSQ(py::module& m);
 void init_TanhClamp(py::module& m);
+void init_DoReFa(py::module& m);
 
 
 // quantization routines
@@ -36,12 +37,11 @@ PYBIND11_MODULE(aidge_quantization, m)
     init_FixedQ(m);
     init_LSQ(m);
     init_TanhClamp(m);
-
+    init_DoReFa(m);
 
     init_PTQ(m);
     init_QAT_FixedQ(m);
     init_QAT_LSQ(m);
-
 }
 
 } // namespace Aidge
-- 
GitLab