It should! And it does on the v1.8-beta. You can see this because removing the bounds checks enables SIMD — and that’s why there’s such a big 2x (or more) speedup.
julia> @code_llvm debuginfo=:none f!(a)
# ... skipping ...
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%vec.ind = phi <4 x i64> [ <i64 1, i64 2, i64 3, i64 4>, %vector.ph ], [ %vec.ind.next, %vector.body ]
# ... skipping ...
That vector.body
and those <4 x i64>
s mean SIMD.