The matrix extension requires the indices for matrix subscript

expression to be valid and it is UB otherwise.

extract/insertelement produce poison if the index is invalid, which

limits the optimizer to not be bale to scalarize load/extract pairs for

example, which causes very suboptimal code to be generated when using

matrix subscript expressions with variable indices for large matrixes.

This patch updates IRGen to emit assumes to for index expression to

convey the information that the index must be valid.

This also adjusts the order in which operations are emitted slightly, so

indices & assumes are added before the load of the matrix value.