PreviousUpNext

15.4.345  src/lib/compiler/back/low/pwrpc32/jmp/delay-slots-pwrpc32-g.pkg

## delay-slots-pwrpc32-g.pkg

# Compiled by:
#     src/lib/compiler/back/low/pwrpc32/backend-pwrpc32.lib

# This file was automatically generated by MDGen (v3.0)
# from the architecture description file "pwrpc32/pwrpc32.md".


stipulate
    package lem =  lowhalf_error_message;                                                       # lowhalf_error_message         is from   src/lib/compiler/back/low/control/lowhalf-error-message.pkg
herein

    # We are nowhere invoked.  And the code looks incomplete.
    #
    generic package   delay_slots_pwrpc32_g   (
        #             =====================
        #
        package mcf: Machcode_Pwrpc32;                                                          # Machcode_Pwrpc32              is from   src/lib/compiler/back/low/pwrpc32/code/machcode-pwrpc32.codemade.api

        # This is never used:
        #
        package mu: Machcode_Universals                                                         # Machcode_Universals           is from   src/lib/compiler/back/low/code/machcode-universals.api
                    where
                        mcf == mcf;                                                             # "mcf" == "machcode_form" (abstract machine code).
    )
    : (weak) Delay_Slot_Properties                                                              # Delay_Slot_Properties         is from   src/lib/compiler/back/low/jmp/delay-slot-props.api
    {
        package mcf = mcf;

        Delay_Slot = D_NONE | D_ERROR | D_ALWAYS | D_TAKEN | D_FALLTHRU; 

        fun error msg
            =
            lem::error("delay_slots_pwrpc32_g", msg);

        delay_slot_bytes = 4;

        fun delay_slot { instruction, backward }
            =
            delay_slot instruction
            where
               fun delay_slot instruction
                   = 
                   case instruction   
                       _ => { nop=>TRUE, n=>FALSE, n_on=>D_ERROR, n_off=>D_NONE };
                   esac;
            end;

        fun enable_delay_slot _ = error "enableDelaySlot";
        fun conflict _ = error "conflict";

        fun delay_slot_candidate { jmp, delay_slot }
            =
            delay_slot_candidate  delay_slot
            where
               fun delay_slot_candidate delay_slot
                   = 
                   case delay_slot   
                       _ => TRUE;
                   esac;
            end;

        fun set_target _ = error "setTarget";

    };
end;


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext