@@ -52,16 +52,21 @@ class Emitter {
52
52
53
53
/* *
54
54
* @brief called by generator to generate code to produce target code for a specific operation
55
+ * @details
56
+ * Avoid passing default arguments to virtual function, but still allow user to call
57
+ * emit_code function without "pool" or "gpr"
55
58
* @param in vector of vector argument registers
56
59
* @param out vector of vector resulting registers
57
60
* @param pool optional vector of free vector registers which might be used inside method
58
- * @param gpr vector of free generam puproce registers which might be used inside method
61
+ * @param gpr vector of free general purpose registers which might be used inside method
59
62
* @return void
60
63
*/
61
- virtual void emit_code (const std::vector<size_t >& in,
62
- const std::vector<size_t >& out,
63
- const std::vector<size_t >& pool = {},
64
- const std::vector<size_t >& gpr = {}) const = 0;
64
+ void emit_code (const std::vector<size_t >& in,
65
+ const std::vector<size_t >& out,
66
+ const std::vector<size_t >& pool = {},
67
+ const std::vector<size_t >& gpr = {}) const {
68
+ emit_code_impl (in, out, pool, gpr);
69
+ }
65
70
66
71
/* *
67
72
* @brief called by generator to generate data section, if needed for a specific operation
@@ -70,6 +75,20 @@ class Emitter {
70
75
virtual void emit_data () const {}
71
76
72
77
virtual ~Emitter () = default ;
78
+
79
+ private:
80
+ /* *
81
+ * @brief called by generator to generate code to produce target code for a specific operation
82
+ * @param in vector of vector argument registers
83
+ * @param out vector of vector resulting registers
84
+ * @param pool optional vector of free vector registers which might be used inside method
85
+ * @param gpr vector of free general purpose registers which might be used inside method
86
+ * @return void
87
+ */
88
+ virtual void emit_code_impl (const std::vector<size_t >& in,
89
+ const std::vector<size_t >& out,
90
+ const std::vector<size_t >& pool,
91
+ const std::vector<size_t >& gpr) const = 0;
73
92
};
74
93
75
94
} // namespace snippets
0 commit comments