Having this type act as either a slice or array of int32 lets us write code once, but still allows the compiler to potentially generate both code paths (or we can write both paths manually, using ispc to be more efficient when we have a slice and don't require random reads/writes).