# pseudo-instructions-sparc32.api --- Sparc pseudo instructions
# Compiled by:
#
src/lib/compiler/back/low/sparc32/backend-sparc32.libstipulate
package rkj = registerkinds_junk; # registerkinds_junk is from
src/lib/compiler/back/low/code/registerkinds-junk.pkgherein
api Pseudo_Instruction_Sparc32 {
#
package mcf: Machcode_Sparc32; # Machcode_Sparc32 is from
src/lib/compiler/back/low/sparc32/code/machcode-sparc32.codemade.api Format1
=
( { r: rkj::Codetemp_Info,
i: mcf::Operand,
d: rkj::Codetemp_Info
},
(mcf::Operand -> rkj::Codetemp_Info)
)
->
List( mcf::Machine_Op );
Format2
=
({ i: mcf::Operand,
d: rkj::Codetemp_Info
},
(mcf::Operand -> rkj::Codetemp_Info))
->
List( mcf::Machine_Op );
# Signed and unsigned multiplications.
# These are all 32 bit operations:
#
umul32: Format1; # unsigned/non-trapping
smul32: Format1; # signed/non-trapping
smul32trap: Format1; # trap on overflow
udiv32: Format1; # unsigned/non-trapping
sdiv32: Format1; # signed/non-trapping
sdiv32trap: Format1; # trap on overflow/zero
# Convert integer into floating point:
#
cvti2d: Format2;
cvti2s: Format2;
cvti2q: Format2;
overflowtrap32: List( mcf::Machine_Op ); # 32-bit overflow detection:
overflowtrap64: List( mcf::Machine_Op ); # 64-bit overflow detection:
};
end;