+static void do_vx_dives_i32(TCGv_i32 t, TCGv_i32 a, TCGv_i32 b)
+{
+ TCGv_i64 res, val1, val2;
+ TCGv_i64 zero = tcg_constant_i64(0);
+ TCGv_i64 one = tcg_constant_i64(1);
+
+ res = tcg_temp_new_i64();
+ val1 = tcg_temp_new_i64();
+ val2 = tcg_temp_new_i64();
+
+ tcg_gen_ext_i32_i64(val1, a);
+ tcg_gen_ext_i32_i64(val2, b);
+
+ /* return 0 if b = 0, so make b = 1 so the result doesn't fit in 32 bits*/
+ tcg_gen_movcond_i64(TCG_COND_EQ, val2, val2, zero, one, val2);
+ /* (a << 32)/b */
+ tcg_gen_shli_i64(val1, val1, 32);
+ tcg_gen_div_i64(res, val1, val2);
+
+ tcg_gen_ext32s_i64(val1, res);
+ /* if result is undefined (quotient doesn't fit in 32 bits) return 0 */
+ tcg_gen_movcond_i64(TCG_COND_EQ, res, res, val1, res, zero);