[mlir][memref] Add invariant attribute to memref.load (#206197)
Add an optional `invariant` attribute to `memref.load`, modeled on the
existing `nontemporal` attribute. When set, it indicates the referenced
memory location holds the same value at all points in the program where
it is dereferenceable, so the load may be treated as invariant.
The MemRefToLLVM LoadOpLowering forwards the attribute to the invariant
flag of `llvm.load` (which lowers to `!invariant.load`).