| %default {"preinstr":"", "st_result":"STORE64_F(fv0, fv0f, rOBJ)"} |
| /* |
| * Generic 32bit-to-64bit floating point unary operation. Provide an |
| * "instr" line that specifies an instruction that performs "d0 = op s0". |
| * |
| * For: int-to-double, float-to-double |
| * |
| * On entry: |
| * a0 = target dalvik register address |
| * a1 = src dalvik register address |
| */ |
| /* unop vA, vB */ |
| move rOBJ, a0 # save a0 |
| #ifdef SOFT_FLOAT |
| LOAD(a0, a1) # a0<- vB |
| $preinstr # optional op |
| $instr # result<- op, a0-a3 changed |
| |
| .L${opcode}_set_vreg: |
| STORE64(rRESULT0, rRESULT1, rOBJ) # vA/vA+1<- v0/v1 |
| #else |
| LOAD_F(fa0, a1) # fa0<- vB |
| $preinstr # optional op |
| $instr_f |
| |
| .L${opcode}_set_vreg: |
| $st_result # vA/vA+1<- fv0/fv0f |
| #endif |
| RETURN |