Generalized constructions of 'fragments' of MMA operations to provide common primitives for construction of the ops.
This will make it easier to add new variants of the instructions that operate on integer types.
Use nested foreach loops which makes it possible to better control naming of the intrinsics.
This patch does not affect LLVM's output, so there are no test changes.