13b0b4b9d09baae7234fc26b7970b3ec55560735eBill Buzbee /* 23b0b4b9d09baae7234fc26b7970b3ec55560735eBill Buzbee * Generic 32-bit floating point "/2addr" binary operation. Provide 33b0b4b9d09baae7234fc26b7970b3ec55560735eBill Buzbee * an "instr" line that specifies an instruction that performs 43b0b4b9d09baae7234fc26b7970b3ec55560735eBill Buzbee * "s2 = s0 op s1". 53b0b4b9d09baae7234fc26b7970b3ec55560735eBill Buzbee * 63b0b4b9d09baae7234fc26b7970b3ec55560735eBill Buzbee * For: add-float/2addr, sub-float/2addr, mul-float/2addr, div-float/2addr 73b0b4b9d09baae7234fc26b7970b3ec55560735eBill Buzbee */ 83b0b4b9d09baae7234fc26b7970b3ec55560735eBill Buzbee /* binop/2addr vA, vB */ 93b0b4b9d09baae7234fc26b7970b3ec55560735eBill Buzbee lsr w3, wINST, #12 // w3<- B 10e6220220cdd20d81da336528d9b1642edf65655aVladimir Marko ubfx w9, wINST, #8, #4 // w9<- A 113b0b4b9d09baae7234fc26b7970b3ec55560735eBill Buzbee GET_VREG s1, w3 123b0b4b9d09baae7234fc26b7970b3ec55560735eBill Buzbee GET_VREG s0, w9 133b0b4b9d09baae7234fc26b7970b3ec55560735eBill Buzbee $instr // s2<- op 143b0b4b9d09baae7234fc26b7970b3ec55560735eBill Buzbee FETCH_ADVANCE_INST 1 // advance rPC, load rINST 153b0b4b9d09baae7234fc26b7970b3ec55560735eBill Buzbee GET_INST_OPCODE ip // extract opcode from rINST 163b0b4b9d09baae7234fc26b7970b3ec55560735eBill Buzbee SET_VREG s2, w9 173b0b4b9d09baae7234fc26b7970b3ec55560735eBill Buzbee GOTO_OPCODE ip // jump to next instruction 18