nir: add a load/store vectorization pass

This pass combines intersecting, adjacent and identical loads/stores into
potentially larger ones and will be used by ACO to greatly reduce the
number of memory operations.

v2: handle nir_deref_type_ptr_as_array
v3: assume explicitly laid out types for derefs

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
10 jobs for !1240 with nir_load_store_vectorize in 23 minutes and 46 seconds (queued for 18 seconds)
detached
Status Job ID Name Coverage
  Containers Build
passed #501394
debian

00:00:30

 
  Build+Test
passed #501396
meson-clang

00:10:45

passed #501400
meson-clover

00:08:38

passed #501399
meson-main

00:05:51

passed #501395
meson-swr-glvnd

00:06:19

passed #501401
meson-vulkan

00:02:20

passed #501403
scons-llvm

00:05:10

passed #501402
scons-nollvm

00:06:01

passed #501397
scons-swr

00:03:53

passed #501398
scons-win64

00:09:37