pub fn create_reg_universe() -> RealRegUniverse {
    let mut regs = Vec::<(RealReg, String)>::new();
    let mut allocable_by_class = [None; NUM_REG_CLASSES];

    // Integer regs
    let mut base = regs.len();
    // Callee-saved, in the ELF x86_64 ABI
    regs.push(info_R12());
    regs.push(info_R13());
    regs.push(info_R14());
    regs.push(info_R15());
    regs.push(info_RBX());
    // Caller-saved, in the ELF x86_64 ABI
    regs.push(info_RSI());
    regs.push(info_RDI());
    regs.push(info_RAX());
    regs.push(info_RCX());
    regs.push(info_RDX());
    regs.push(info_R8());
    regs.push(info_R9());
    regs.push(info_R10());
    regs.push(info_R11());
    allocable_by_class[RegClass::I64.rc_to_usize()] = Some(RegClassInfo {
        first: base,
        last: regs.len() - 1,
        suggested_scratch: Some(info_R12().0.get_index()),
    });

    // XMM registers
    base = regs.len();
    regs.push(info_XMM0());
    regs.push(info_XMM1());
    regs.push(info_XMM2());
    regs.push(info_XMM3());
    regs.push(info_XMM4());
    regs.push(info_XMM5());
    regs.push(info_XMM6());
    regs.push(info_XMM7());
    regs.push(info_XMM8());
    regs.push(info_XMM9());
    regs.push(info_XMM10());
    regs.push(info_XMM11());
    regs.push(info_XMM12());
    regs.push(info_XMM13());
    regs.push(info_XMM14());
    regs.push(info_XMM15());
    allocable_by_class[RegClass::V128.rc_to_usize()] = Some(RegClassInfo {
        first: base,
        last: regs.len() - 1,
        suggested_scratch: Some(info_XMM15().0.get_index()),
    });

    // Other regs, not available to the allocator.
    let allocable = regs.len();
    regs.push(info_RSP());
    regs.push(info_RBP());

    RealRegUniverse {
        regs,
        allocable,
        allocable_by_class,
    }
}
/// Create the register universe for X64.
Create the register universe for X64.
Create the register universe for X64 .
pub fn create_reg_universe() -> RealRegUniverse {
    let mut regs = Vec::<(RealReg, String)>::new();
    let mut allocable_by_class = [None; NUM_REG_CLASSES];
    // Integer regs
    let mut base = regs.len();
    // Callee-saved, in the ELF x86_64 ABI
    regs.push(info_R12());
    regs.push(info_R13());
    regs.push(info_R14());
    regs.push(info_R15());
    regs.push(info_RBX());
    // Caller-saved, in the ELF x86_64 ABI
    regs.push(info_RSI());
    regs.push(info_RDI());
    regs.push(info_RAX());
    regs.push(info_RCX());
    regs.push(info_RDX());
    regs.push(info_R8());
    regs.push(info_R9());
    regs.push(info_R10());
    regs.push(info_R11());
    allocable_by_class[RegClass::I64.rc_to_usize()] = Some(RegClassInfo {
        first: base,
        last: regs.len() - 1,
        suggested_scratch: Some(info_R12().0.get_index()),
    });
    // XMM registers
    base = regs.len();
    regs.push(info_XMM0());
    regs.push(info_XMM1());
    regs.push(info_XMM2());
    regs.push(info_XMM3());
    regs.push(info_XMM4());
    regs.push(info_XMM5());
    regs.push(info_XMM6());
    regs.push(info_XMM7());
    regs.push(info_XMM8());
    regs.push(info_XMM9());
    regs.push(info_XMM10());
    regs.push(info_XMM11());
    regs.push(info_XMM12());
    regs.push(info_XMM13());
    regs.push(info_XMM14());
    regs.push(info_XMM15());
    allocable_by_class[RegClass::V128.rc_to_usize()] = Some(RegClassInfo {
        first: base,
        last: regs.len() - 1,
        suggested_scratch: Some(info_XMM15().0.get_index()),
    });
    // Other regs, not available to the allocator.
    let allocable = regs.len();
    regs.push(info_RSP());
    regs.push(info_RBP());
    RealRegUniverse {
        regs,
        allocable,
        allocable_by_class,
    }
}
pub fn create_reg_universe ( ) -> RealRegUniverse { let mut regs = Vec :: < ( RealReg , String ) > :: new ( ) ; let mut allocable_by_class = [ None ; NUM_REG_CLASSES ] ; // Integer regs let mut base = regs . len ( ) ; // Callee-saved, in the ELF x86_64 ABI regs . push ( info_R12 ( ) ) ; regs . push ( info_R13 ( ) ) ; regs . push ( info_R14 ( ) ) ; regs . push ( info_R15 ( ) ) ; regs . push ( info_RBX ( ) ) ; // Caller-saved, in the ELF x86_64 ABI regs . push ( info_RSI ( ) ) ; regs . push ( info_RDI ( ) ) ; regs . push ( info_RAX ( ) ) ; regs . push ( info_RCX ( ) ) ; regs . push ( info_RDX ( ) ) ; regs . push ( info_R8 ( ) ) ; regs . push ( info_R9 ( ) ) ; regs . push ( info_R10 ( ) ) ; regs . push ( info_R11 ( ) ) ; allocable_by_class [ RegClass :: I64 . rc_to_usize ( ) ] = Some ( RegClassInfo { first : base , last : regs . len ( ) - 1 , suggested_scratch : Some ( info_R12 ( ) . 0 . get_index ( ) ) , } ) ; // XMM registers base = regs . len ( ) ; regs . push ( info_XMM0 ( ) ) ; regs . push ( info_XMM1 ( ) ) ; regs . push ( info_XMM2 ( ) ) ; regs . push ( info_XMM3 ( ) ) ; regs . push ( info_XMM4 ( ) ) ; regs . push ( info_XMM5 ( ) ) ; regs . push ( info_XMM6 ( ) ) ; regs . push ( info_XMM7 ( ) ) ; regs . push ( info_XMM8 ( ) ) ; regs . push ( info_XMM9 ( ) ) ; regs . push ( info_XMM10 ( ) ) ; regs . push ( info_XMM11 ( ) ) ; regs . push ( info_XMM12 ( ) ) ; regs . push ( info_XMM13 ( ) ) ; regs . push ( info_XMM14 ( ) ) ; regs . push ( info_XMM15 ( ) ) ; allocable_by_class [ RegClass :: V128 . rc_to_usize ( ) ] = Some ( RegClassInfo { first : base , last : regs . len ( ) - 1 , suggested_scratch : Some ( info_XMM15 ( ) . 0 . get_index ( ) ) , } ) ; // Other regs, not available to the allocator. let allocable = regs . len ( ) ; regs . push ( info_RSP ( ) ) ; regs . push ( info_RBP ( ) ) ; RealRegUniverse { regs , allocable , allocable_by_class , } }
Create the register universe for X64.
Create the register universe for X64 .