use a single generic saturate instead of having both a scalar and simd one, using min/max everywhere