One probably stupid question: would it be possible to parametrize the number of EV steps in tone equalizer?
No. The reason is the 9 nodes are then turned into 8 nodes by least-squares approximation to relax some constraints (to soften some of the oscillations in the curve happening if users are too harsh on the settings), and the 8 nodes are finally turned into a series of 8 gaussian exponential functions that fill a full AVX vector or 2 full SSE2 vectors, computed for each pixel. Since exponentials are quite heavy on your CPU, you want the best optimization possible, and having a fixed number of nodes that matches SSE/AVX boundaries is the only way to allow the compiler to optimize aggressively around that.
What I choosed is to let you post-process the exposure mask instead, so you can slide and spread the histogram on all the available nodes.
You will find that the tone equalizer runs on-par with the shadows/highlights module (non OpenCL), yet the number of computations performed is roughly 8-10 times superior.