Registers for i128 data type not registered in X86


I have a set of new registers for x86 which I defined in to be:

def POI0: X86Reg<“poi0”, 0>;
def POI1: X86Reg<“poi1”, 1>;
def POI2: X86Reg<“poi2”, 2>;
def POI3: X86Reg<“poi3”, 3>;
def POI4: X86Reg<“poi4”, 4>;
def POI5: X86Reg<“poi5”, 5>;
def POI6: X86Reg<“poi6”, 6>;
def POI7: X86Reg<“poi7”, 7>;

def PR128 : RegisterClass<“X86”, [i128],
128, (sequence “POI%u”, 0, 7)>;

However, my debug message in TargetLowering base in its method computeRegisterProperties shows that RegClassForVT[MVT::i128] is still a nullptr. What else should I add for my registers to be a proper destination location of all 128-bit integers?


Do you have a line like this in X86ISelLowering.cpp

addRegisterClass(MVT::i128, &X86::PR128RegClass);