Converting an array from one type to another is a common and good example for using fast SIMD code. But for the compiler to optimize, it must know that the 2 arrays dont alias. The following example converts an array of int16 to float32.
C compiler clang defaults to strict aliasing and creates optimized SIMD code:
https://godbolt.org/z/b7EfTW5KM
Zig, since version 0.4.0, no longer plans to have Type Based Alias Analysis, see https://ziglang.org/download/0.4.0/release-notes.html#Type-Based-Alias-Analysis-Status