An rvalue reference passed to a function is a lvalue inside the function, and still requires move() to mark it as an rvalue when passing to other functions. A demo can be seen here: https://godbolt.org/z/j4bbP58MY.
Current rvalue ref overload of convolution makes a copy when passing to internal functions, which undermines the existance of the rvalue ref overload.