mockup of nonvectorized-LUT for orientation, to plug in with SSE code
ori LUT code compiles.
running unvectorized LUT. cuts the BW in half. (on laptop... 3.5 GB/s with SSE {gradX_max, gradY_max, mag}. 1.3 GB/s with all this SSE stuff plus the atan2 LUT.
aha, it's not the LUT that's killing us. instead, using the LUT is enough to actually 'enable' the gradX_max stuff. (otherwise, we bail out after magMax and grad{X,Y}_channel[1,2,3].)
argh, just 2.1 GB/s if we compute gradX_max,gradY_max and write them out without any orientation stuff. (and all in SSE)
visually, the SSE 'choose best of 18 orientations' code seems to give reasonable results. it only runs at 0.65 GB/s, though.
fix loop bounds
funny, even enabling SCALE_ORI slows things down a bit