221a222,231
> const bool up = (bits(machInst, 23) == 1);
> const uint32_t imm = bits(machInst, 7, 0) << 2;
> RegIndex vd;
> if (single) {
> vd = (RegIndex)(uint32_t)((bits(machInst, 15, 12) << 1) |
> (bits(machInst, 22)));
> } else {
> vd = (RegIndex)(uint32_t)((bits(machInst, 15, 12) << 1) |
> (bits(machInst, 22) << 5));
> }
223c233,247
< return new WarnUnimplemented("vstr", machInst);
---
> if (single) {
> if (up) {
> return new %(vstr_us)s(machInst, vd, rn, up, imm);
> } else {
> return new %(vstr_s)s(machInst, vd, rn, up, imm);
> }
> } else {
> if (up) {
> return new %(vstr_ud)s(machInst, vd, vd + 1,
> rn, up, imm);
> } else {
> return new %(vstr_d)s(machInst, vd, vd + 1,
> rn, up, imm);
> }
> }
225,227d248
< const bool up = (bits(machInst, 23) == 1);
< const uint32_t imm = bits(machInst, 7, 0) << 2;
< RegIndex vd;
229,230d249
< vd = (RegIndex)(uint32_t)((bits(machInst, 15, 12) << 1) |
< (bits(machInst, 22)));
237,238d255
< vd = (RegIndex)(uint32_t)((bits(machInst, 15, 12) << 1) |
< (bits(machInst, 22) << 5));
255c272,276
< "vldr_d" : "VLDR_" + loadDoubleImmClassName(False, False, False)
---
> "vldr_d" : "VLDR_" + loadDoubleImmClassName(False, False, False),
> "vstr_us" : "VSTR_" + storeImmClassName(False, True, False),
> "vstr_s" : "VSTR_" + storeImmClassName(False, False, False),
> "vstr_ud" : "VSTR_" + storeDoubleImmClassName(False, True, False),
> "vstr_d" : "VSTR_" + storeDoubleImmClassName(False, False, False)