IBA::mad - special float/half in-memory case for 10x speedup.
IBA::mad - special float/half in-memory case for 10x speedup.

In the deep internals fo IBA::mad(), for the special case of all images
being in-memory (not cached) and either float or half, and having the
ROI overlap their data areas, and operating on the full channel range,
we can take the shortcut of assuming contiguous rows and using a simple
loop. This yields a speedup of 10x (including the compiler's
auto-vectorization).

When these specific conditions are not met, fall back on the use of
Iterators, which are much slower but also much more flexible (can handle
other data types, non-contained ROIs or wrap modes, and tile-cached
images).

Prototype with mad() for now, but clearly this is a good approach to take
to speed up any performance-critical IBA function.

bdeluca/oiio,micler/oiio,YangYangTL/oiio,micler/oiio,micler/oiio,micler/oiio,lgritz/oiio,bdeluca/oiio,OpenImageIO/oiio,OpenImageIO/oiio,OpenImageIO/oiio,YangYangTL/oiio,lgritz/oiio,lgritz/oiio,OpenImageIO/oiio,YangYangTL/oiio,YangYangTL/oiio,lgritz/oiio,bdeluca/oiio,bdeluca/oiio