Thank you Marcus por looking through my code (and the positive comments).
I have several things to report:
- Pulling from your repo and using volk_32fc_x2_divide_32fc worked perfectly, and gr-isdbt kept operating as usual.
- Substituting yours with my AVX proto-kernel (plus the aligned version) works too.
- Regarding performance, they are almost indistinguishable, at least in my PC: running volk_profile they are roughly 10x faster than the generic implementation, and Performance Monitor does not show any real difference between both implementations (here I used the complete receiving chain).
- The performance gain (again, measured by using Performance Monitor with the complete receiving chain) between using the four lines of code I sent before, and the divide kernel is mostly null.
So, to conclude, maybe the performance gain of using a kernel instead of four lines of code is not significant, but I believe it's both simpler to use and easier to read (and performance should be further tested in other setups to actually conclude the former). Regarding the implementations, both implementations of the AVX kernel are, from my unexperienced perspective, mostly identical (maybe mine is a little bit simpler to read, but it was me who wrote it, so I'm no judge). I've seen you already made a pull request to add it to gnuradio, so my opinion is to use yours (but feel free to use/test mine if you prefer).
In any case, this was a very interesting and formative experience.