It might be related to the fact that MemoryLayout<simd_float3>.stride gives the same value as MemoryLayout<simd_float4>.stride, due to memory alignment. (In contrast, MemoryLayout<simd_float3>.size returns a different value from that of simd_float4, which is three-quarters of the size of simd_float4.)