This is an alternative to D124530. In getUniformBase() only create scales that match the gather/scatter element size. If targets also support other scales, then they can produce those scales in DAG combines. This is what X86 already does (as long as the resulting scale would be 1, 2, 4 or 8).
This essentially restores the pre-opaque-pointer state of things.
Shouldn't we also always allow unit scaling (i.e. ScaleVal==1)? I know there's the IndexType = ISD::SIGNED_SCALED oddity, but that's the unnecessary duplication I mentioned before that I have inflight patches to remove (see D123381).