blob: c0cc33afcdf157916f864a2839972bf68dba4564 [file] [log] [blame]
%def fcmp(wide="", r1="s1", r2="s2", cond="lt"):
/*
* Compare two floating-point values. Puts 0, 1, or -1 into the
* destination register based on the results of the comparison.
*/
/* op vAA, vBB, vCC */
FETCH w0, 1 // w0<- CCBB
lsr w4, wINST, #8 // w4<- AA
and w2, w0, #255 // w2<- BB
lsr w3, w0, #8 // w3<- CC
GET_VREG$wide $r1, w2
GET_VREG$wide $r2, w3
fcmp $r1, $r2
cset w0, ne
cneg w0, w0, $cond
FETCH_ADVANCE_INST 2 // advance rPC, load rINST
GET_INST_OPCODE ip // extract opcode from rINST
SET_VREG w0, w4 // vAA<- w0
GOTO_OPCODE ip // jump to next instruction