With this, llvm-tblgen no longer tries and fails to allocate 7953 petabyte
when it runs during the build. Instead, check-llvm with lld/mac as host
linker now completes without any failures on an m1 mac.
This vector op handling code matches what happens in:
- ld64's OutputFile::applyFixUps() in OutputFile.cpp for kindStoreARM64PageOff12
- lld.ld64.darwinold's offset12KindFromInstruction() in lld/lib/ReaderWriter/MachO/ArchHandler_arm64.cpp for offset12scale16
- RuntimeDyld's decodeAddend() in llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h for ARM64_RELOC_PAGEOFF12
Fixes PR49444.
(the type change in this line is inconsequential. All callers pass a uint32_t, it's conceptually a uint32_t, and on the return line it gets widened to an uin64_t. This part is a no-op, but it seemed semantically more correct -- without it, you'd technically have to do (base >> 30) & 3 if you didn't know that all callers passed in a widened uint32_t.)