232c232
< return new WarnUnimplemented("strex", machInst);
---
> return new %(strex)s(machInst, rt, rt2, rn, true, 0);
236c236
< return new WarnUnimplemented("strexd", machInst);
---
> return new %(strexd)s(machInst, rt, rt2, rt2 + 1, rn, true, 0);
240c240
< return new WarnUnimplemented("strexb", machInst);
---
> return new %(strexb)s(machInst, rt, rt2, rn, true, 0);
244c244
< return new WarnUnimplemented("strexh", machInst);
---
> return new %(strexh)s(machInst, rt, rt2, rn, true, 0);
254c254,258
< "ldrexh" : "LDREXH_" + loadImmClassName(False, True, False, size=2)
---
> "ldrexh" : "LDREXH_" + loadImmClassName(False, True, False, size=2),
> "strex" : "STREX_" + storeImmClassName(False, True, False, size=4),
> "strexb" : "STREXB_" + storeImmClassName(False, True, False, size=1),
> "strexh" : "STREXH_" + storeImmClassName(False, True, False, size=2),
> "strexd" : "STREXD_" + storeDoubleImmClassName(False, True, False)
296a301
> const IntRegIndex rd = (IntRegIndex)(uint32_t)bits(machInst, 3, 0);
302c307
< return new WarnUnimplemented("strex", machInst);
---
> return new %(strex)s(machInst, rt2, rt, rn, true, imm);
310c315
< return new WarnUnimplemented("strexb", machInst);
---
> return new %(strexb)s(machInst, rd, rt, rn, true, 0);
312c317
< return new WarnUnimplemented("strexh", machInst);
---
> return new %(strexh)s(machInst, rd, rt, rn, true, 0);
314c319,320
< return new WarnUnimplemented("strexd", machInst);
---
> return new %(strexd)s(machInst, rd, rt,
> rt2, rn, true, 0);
380a387,390
> "strex" : "STREX_" + storeImmClassName(False, True, False, size=4),
> "strexb" : "STREXB_" + storeImmClassName(False, True, False, size=1),
> "strexh" : "STREXH_" + storeImmClassName(False, True, False, size=2),
> "strexd" : "STREXD_" + storeDoubleImmClassName(False, True, False),