@@ -161,7 +161,7 @@ struct ref_t : public primitive_t {
161161
162162 status_t execute (const exec_ctx_t &ctx) const override {
163163 auto prep_weights_and_run
164- = [&](exec_args_t &args, int idx,
164+ = [&](exec_args_t && args, int idx,
165165 const std::shared_ptr<impl::primitive_t > &prim) {
166166 args[DNNL_ARG_WEIGHTS] = ctx.args ().at (idx);
167167 if (!pd ()->attr ()->scales_ .has_default_values (idx))
@@ -201,7 +201,8 @@ struct ref_t : public primitive_t {
201201 exec_args_t args;
202202 args[DNNL_ARG_SRC] = ctx.args ().at (DNNL_ARG_SRC);
203203 args[DNNL_ARG_DST] = memory_arg_t {inter_src_mem.get (), false };
204- CHECK (prep_weights_and_run (args, DNNL_ARG_WEIGHTS_UP, gemm_up_));
204+ CHECK (prep_weights_and_run (
205+ std::move (args), DNNL_ARG_WEIGHTS_UP, gemm_up_));
205206 } while (false );
206207 do {
207208 exec_args_t args;
@@ -211,14 +212,14 @@ struct ref_t : public primitive_t {
211212 args[DNNL_ARG_ATTR_MULTIPLE_POST_OP (1 ) | DNNL_ARG_SRC_1]
212213 = memory_arg_t {inter_src_mem.get (), true };
213214 CHECK (prep_weights_and_run (
214- args, DNNL_ARG_WEIGHTS_GATE, gemm_gate_));
215+ std::move ( args) , DNNL_ARG_WEIGHTS_GATE, gemm_gate_));
215216 } while (false );
216217 do {
217218 exec_args_t args;
218219 args[DNNL_ARG_SRC] = memory_arg_t {inter_wei_mem.get (), true };
219220 args[DNNL_ARG_DST] = ctx.args ().at (DNNL_ARG_DST);
220221 CHECK (prep_weights_and_run (
221- args, DNNL_ARG_WEIGHTS_DOWN, gemm_down_));
222+ std::move ( args) , DNNL_ARG_WEIGHTS_DOWN, gemm_down_));
222223 } while (false );
223224
224225 return status::success;
0 commit comments