Bill Buzbee | 3b0b4b9 | 2016-02-02 13:45:36 +0000 | [diff] [blame] | 1 | /* |
| 2 | * Generic 32-bit floating point "/2addr" binary operation. Provide |
| 3 | * an "instr" line that specifies an instruction that performs |
| 4 | * "s2 = s0 op s1". |
| 5 | * |
| 6 | * For: add-float/2addr, sub-float/2addr, mul-float/2addr, div-float/2addr |
| 7 | */ |
| 8 | /* binop/2addr vA, vB */ |
| 9 | lsr w3, wINST, #12 // w3<- B |
Vladimir Marko | e622022 | 2016-07-20 14:25:30 +0100 | [diff] [blame] | 10 | ubfx w9, wINST, #8, #4 // w9<- A |
Bill Buzbee | 3b0b4b9 | 2016-02-02 13:45:36 +0000 | [diff] [blame] | 11 | GET_VREG s1, w3 |
| 12 | GET_VREG s0, w9 |
| 13 | $instr // s2<- op |
| 14 | FETCH_ADVANCE_INST 1 // advance rPC, load rINST |
| 15 | GET_INST_OPCODE ip // extract opcode from rINST |
| 16 | SET_VREG s2, w9 |
| 17 | GOTO_OPCODE ip // jump to next instruction |