private void RewriteLwa() { var dtDst = arch.WordWidth; var dst = Reg(instrCur.Operands[0]); var mem = Mem(instrCur.Operands[1]); var ea = mem.EffectiveAddress; var fnType = new FunctionType( new Identifier("", PrimitiveType.Word32, null), new Identifier("ea", new Pointer(PrimitiveType.Word32, 32), null)); var e = host.CallIntrinsic("__atomic_load_w32", fnType, ea); if (mem.DataType.BitSize < dtDst.BitSize) { e = m.Convert(e, e.DataType, dtDst); } m.Assign(dst, e); }