> all comparisons which check "are these two values the same object" are going to require masking, because your comparison instructions (xor, subtract, compare, ...) will not ignore any of the bits.
Wouldn’t two pointers to the same object also have the same tag? I don’t understand why you would need to mask it.