11452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee%default {} 21452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee /* 31452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee * Specialised 64-bit floating point operation. 41452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee * 51452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee * Note: The result will be returned in d2. 61452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee * 71452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee * For: long-to-double 81452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee */ 91452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee mov r3, rINST, lsr #12 @ r3<- B 101452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee ubfx r9, rINST, #8, #4 @ r9<- A 11ace690f5e440930d7bbad97fdbfdc3eb65e230bebuzbee VREG_INDEX_TO_ADDR r3, r3 @ r3<- &fp[B] 12ace690f5e440930d7bbad97fdbfdc3eb65e230bebuzbee VREG_INDEX_TO_ADDR r9, r9 @ r9<- &fp[A] 131452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee vldr d0, [r3] @ d0<- vAA 141452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee FETCH_ADVANCE_INST 1 @ advance rPC, load rINST 151452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee 161452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee vcvt.f64.s32 d1, s1 @ d1<- (double)(vAAh) 171452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee vcvt.f64.u32 d2, s0 @ d2<- (double)(vAAl) 181452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee vldr d3, constval$opcode 191452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee vmla.f64 d2, d1, d3 @ d2<- vAAh*2^32 + vAAl 201452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee 211452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee GET_INST_OPCODE ip @ extract opcode from rINST 221452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee vstr.64 d2, [r9] @ vAA<- d2 231452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee GOTO_OPCODE ip @ jump to next instruction 241452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee 251452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee /* literal pool helper */ 261452bee8f06b9f76a333ddf4760e4beaa82f8099buzbeeconstval${opcode}: 271452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee .8byte 0x41f0000000000000 28