def upgrader(cpt):
    """
    Update the checkpoint to support initial SVE implemtation.
    The updater is taking the following steps.

    1) Set isa.haveSVE to false
    2) Set isa.sveVL to 1
    3) Add SVE misc registers in the checkpoint
    """
    if cpt.get('root','isa') == 'arm':
        for sec in cpt.sections():
            import re
            # Search for all ISA sections
            if re.search('.*sys.*\.cpu.*\.isa$', sec):

                # haveSVE = false
                cpt.set(sec, 'haveSVE', 'false')

                # sveVL (sve Vector Length in quadword) = 1
                # (This is a dummy value since haveSVE is set to false)
                cpt.set(sec, 'sveVL', '1')

                # Updating SVE misc registers (dummy values)
                mr = cpt.get(sec, 'miscRegs').split()
                if len(mr) == 820:
                    print("MISCREG_SVE registers already seems "
                          "to be inserted.")
                else:
                    # Replace MISCREG_FREESLOT_1 with MISCREG_ID_AA64ZFR0_EL1
                    mr[-1] = 0;

                    mr.append(0); # Add dummy value for MISCREG_ZCR_EL3
                    mr.append(0); # Add dummy value for MISCREG_ZCR_EL2
                    mr.append(0); # Add dummy value for MISCREG_ZCR_EL12
                    mr.append(0); # Add dummy value for MISCREG_ZCR_EL1
                    cpt.set(sec, 'miscRegs', ' '.join(str(x) for x in mr))

legacy_version = 15
