How to use TargetLowering::addRegisterClass() for multiple register classes

Hi,

On my target, most value types can be stored in two register classes.
For example:

def SReg_64 : RegisterClass<"AMDGPU", [i64], 64, (add SGPR_64, VCC, EXEC)>;
def VReg_64 : RegisterClass<"AMDGPU", [i64], 64, (add VGPR_64)>;

What criteria should I use to decide which register class to associate
with each type using TargetLowering::addRegisterClass() ?

Thanks,
Tom