On 8/23/19 8:28 AM, Peter Maydell wrote: >> + gen_aa32_st_i32(s, tmp, addr, get_mem_index(s), mop | s->be_data); >> + disas_set_da_iss(s, mop, a->rt | ISSIsAcqRel | ISSIsWrite); ... >> - switch (op1) { >> - case 0: /* stl */ >> - gen_aa32_st32_iss(s, tmp, addr, >> - get_mem_index(s), >> - rm | ISSIsAcqRel); >> - break; >> - case 2: /* stlb */ >> - gen_aa32_st8_iss(s, tmp, addr, >> - get_mem_index(s), >> - rm | ISSIsAcqRel); >> - break; >> - case 3: /* stlh */ >> - gen_aa32_st16_iss(s, tmp, addr, >> - get_mem_index(s), >> - rm | ISSIsAcqRel); >> - break; > > Any particular reason for doing separate gen_aa32_st_i32() > and disas_set_da_iss() calls rather than using the _gen_aa32_st32_iss() > function that the old decoder did?
I think gen_aa32_st_i32 with the MemOp argument is preferable to a switch statement that enumerates the different sizes. We don't have a version of gen_aa32_st_i32 that also passes the ISS. While we could add one, a separate call seems just as easy. r~