aboutsummaryrefslogtreecommitdiff
path: root/target-sparc/translate.c
diff options
context:
space:
mode:
Diffstat (limited to 'target-sparc/translate.c')
-rw-r--r--target-sparc/translate.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index cee85c4..7032dab 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -3515,25 +3515,31 @@ static void disas_sparc_insn(DisasContext * dc)
case 0x010: /* VIS I array8 */
gen_movl_reg_T0(rs1);
gen_movl_reg_T1(rs2);
- gen_op_array8();
+ tcg_gen_helper_1_2(helper_array8, cpu_T[0], cpu_T[0],
+ cpu_T[1]);
gen_movl_T0_reg(rd);
break;
case 0x012: /* VIS I array16 */
gen_movl_reg_T0(rs1);
gen_movl_reg_T1(rs2);
- gen_op_array16();
+ tcg_gen_helper_1_2(helper_array8, cpu_T[0], cpu_T[0],
+ cpu_T[1]);
+ tcg_gen_shli_i64(cpu_T[0], cpu_T[0], 1);
gen_movl_T0_reg(rd);
break;
case 0x014: /* VIS I array32 */
gen_movl_reg_T0(rs1);
gen_movl_reg_T1(rs2);
- gen_op_array32();
+ tcg_gen_helper_1_2(helper_array8, cpu_T[0], cpu_T[0],
+ cpu_T[1]);
+ tcg_gen_shli_i64(cpu_T[0], cpu_T[0], 2);
gen_movl_T0_reg(rd);
break;
case 0x018: /* VIS I alignaddr */
gen_movl_reg_T0(rs1);
gen_movl_reg_T1(rs2);
- gen_op_alignaddr();
+ tcg_gen_helper_1_2(helper_alignaddr, cpu_T[0], cpu_T[0],
+ cpu_T[1]);
gen_movl_T0_reg(rd);
break;
case 0x019: /* VIS II bmask */