@@ -28310,19 +28310,6 @@ static inline void gen_ilvl_w(CPUMIPSState *env, uint32_t wd,
}
/*
- * [MSA] ILVL.D wd, ws, wt
- *
- * Vector Interleave Left (doubleword data elements)
- *
- */
-static inline void gen_ilvl_d(CPUMIPSState *env, uint32_t wd,
- uint32_t ws, uint32_t wt)
-{
- tcg_gen_mov_i64(msa_wr_d[wd * 2], msa_wr_d[wt * 2 + 1]);
- tcg_gen_mov_i64(msa_wr_d[wd * 2 + 1], msa_wr_d[ws * 2 + 1]);
-}
-
-/*
* [MSA] ILVOD.<B|H> wd, ws, wt
*
* Vector Interleave Odd (<byte|halfword> data elements)
@@ -28388,9 +28375,15 @@ static inline void gen_ilvod_w(CPUMIPSState *env, uint32_t wd,
*
* Vector Interleave Odd (doubleword data elements)
*
+ * [MSA] ILVL.D wd, ws, wt
+ *
+ * Vector Interleave Left (doubleword data elements)
+ *
+ * These two instructions are functionally equivalent.
+ *
*/
-static inline void gen_ilvod_d(CPUMIPSState *env, uint32_t wd,
- uint32_t ws, uint32_t wt)
+static inline void gen_ilvod_ilvl_d(CPUMIPSState *env, uint32_t wd,
+ uint32_t ws, uint32_t wt)
{
tcg_gen_mov_i64(msa_wr_d[wd * 2], msa_wr_d[wt * 2 + 1]);
tcg_gen_mov_i64(msa_wr_d[wd * 2 + 1], msa_wr_d[ws * 2 + 1]);
@@ -28603,7 +28596,7 @@ static void gen_msa_3r(CPUMIPSState *env, DisasContext *ctx)
gen_ilvl_w(env, wd, ws, wt);
break;
case DF_DOUBLE:
- gen_ilvl_d(env, wd, ws, wt);
+ gen_ilvod_ilvl_d(env, wd, ws, wt);
break;
default:
assert(0);
@@ -28699,7 +28692,7 @@ static void gen_msa_3r(CPUMIPSState *env, DisasContext *ctx)
gen_ilvod_w(env, wd, ws, wt);
break;
case DF_DOUBLE:
- gen_ilvod_d(env, wd, ws, wt);
+ gen_ilvod_ilvl_d(env, wd, ws, wt);
break;
default:
assert(0);