This is a largeish change so I'm posting it together with an RFC on llvm-dev, where we should probably talk about the design related aspects. I'll put a link here when I post it but one had to come first.
This adds IR support (essentially bitcode roundtripping) for a new kind of Constant to represent an ARMv8.3 signed pointer. Its main use is to represent the kinds of signed pointers that can be represented in the MachO binary format (used for vtables etc), so it folds in functionality from @llvm.ptrauth.blend and @llvm.ptrauth.sign and that has guided the fields present.