Since index operations have no set bitwidth, it is ill-defined to use signed/unsigned wrapping behavior. The corollary to which is that it is always safe to add nsw/nuw to lowering of affine ops. Also add a folder to fold `div(s|u)i (mul (a, v), v) -> a` Signed-off-by: MaheshRavishankar <mravisha@amd.com>