## 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.pkgherein
# 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;