blob: 04236adb812dc7e3cbe3548dabb810d3ffb7e013 [file] [log] [blame]
Bill Buzbee3b0b4b92016-02-02 13:45:36 +00001 /*
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 Markoe6220222016-07-20 14:25:30 +010010 ubfx w9, wINST, #8, #4 // w9<- A
Bill Buzbee3b0b4b92016-02-02 13:45:36 +000011 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