blob: aed830bc23b0d5294c5d234249a8dfaa79be5596 [file] [log] [blame]
%default {"srcreg":"s0", "tgtreg":"d0"}
/*
* Generic 32bit-to-32bit floating point unary operation. Provide an
* "instr" line that specifies an instruction that performs "$tgtreg = op $srcreg".
*
* For: int-to-float, float-to-int
* TODO: refactor all of the conversions - parameterize width and use same template.
*/
/* unop vA, vB */
lsr w3, wINST, #12 // w3<- B
ubfx w4, wINST, #8, #4 // w4<- A
GET_VREG $srcreg, w3
FETCH_ADVANCE_INST 1 // advance rPC, load wINST
$instr // d0<- op
GET_INST_OPCODE ip // extract opcode from wINST
SET_VREG $tgtreg, w4 // vA<- d0
GOTO_OPCODE ip // jump to next instruction