blob: 777cfeb6c803573e68c94c9ce672c97c11e777ab [file] [log] [blame]
%include "mips64/fcvtHeader.S" { "suffix":"_DOUBLE", "valreg":"f0" }
/*
* TODO: simplify this when the MIPS64R6 emulator
* supports NAN2008=1.
*/
dli t0, LONG_MIN_AS_DOUBLE
dmtc1 t0, f1
cmp.le.d f1, f1, f0
bc1nez f1, .L${opcode}_trunc
cmp.eq.d f1, f0, f0
dli t0, LONG_MIN
mfc1 t1, f1
and t0, t0, t1
b .L${opcode}_done
%break
.L${opcode}_trunc:
trunc.l.d f0, f0
dmfc1 t0, f0
.L${opcode}_done:
/* Can't include fcvtFooter.S after break */
GET_INST_OPCODE v0 # extract opcode from rINST
SET_VREG_WIDE t0, a1
GOTO_OPCODE v0 # jump to next instruction