@@ -4874,20 +4874,21 @@ static int disas_neon_data_insn(CPUState * env, DisasContext *s, uint32_t insn)
if (!(insn & (1 << 21)) || (q && ((rd | rm) & 1))) {
return 1;
}
+ shift = 64 - ((insn >> 16) & 0x3f);
for (pass = 0; pass < (q ? 4 : 2); pass++) {
tcg_gen_ld_f32(cpu_F0s, cpu_env,
neon_reg_offset(rm, pass));
if (op & 1) {
if (u) {
- gen_vfp_ulto(0, shift);
+ gen_vfp_toul(0, shift);
} else {
- gen_vfp_slto(0, shift);
+ gen_vfp_tosl(0, shift);
}
} else {
if (u) {
- gen_vfp_toul(0, shift);
+ gen_vfp_ulto(0, shift);
} else {
- gen_vfp_tosl(0, shift);
+ gen_vfp_slto(0, shift);
}
}
tcg_gen_st_f32(cpu_F0s, cpu_env,