diff --git a/irtoc_scripts/interpreter_handlers.irt b/irtoc_scripts/interpreter_handlers.irt index 2e7e6e3180ff8f8346bd65b59d5aa8ab454163a4..31f6d2898939435de291a9092a5fabe14ca89d85 100644 --- a/irtoc_scripts/interpreter_handlers.irt +++ b/irtoc_scripts/interpreter_handlers.irt @@ -286,46 +286,38 @@ end # SHL # macro(:shl2dyn_smi_smi) do |l, r| - shift := AndI(anytou32(r.any)).Imm(0x1f).u32 - i32toany(Shl(anytoi32(l), shift).i32) + i32toany(Shl(anytoi32(l), anytoi32(r.any)).i32) end macro(:shl2dyn_smi_double) do |l, r| - shift := AndI(f64toi32(anytof64(r.any))).Imm(0x1f).u32 - i32toany(Shl(anytoi32(l), shift).i32) + i32toany(Shl(anytoi32(l), f64toi32(anytof64(r.any))).i32) end macro(:shl2dyn_double_smi) do |l, r| - shift := AndI(anytou32(r.any)).Imm(0x1f).u32 - i32toany(Shl(i64tou32(f64toi64(anytof64(l))), shift).i32) + i32toany(Shl(i64toi32(f64toi64(anytof64(l))), anytoi32(r.any)).i32) end macro(:shl2dyn_double_double) do |l, r| - shift := AndI(f64toi32(anytof64(r.any))).Imm(0x1f).u32 - i32toany(Shl(i64tou32(f64toi64(anytof64(l))), shift).i32) + i32toany(Shl(i64toi32(f64toi64(anytof64(l))), f64toi32(anytof64(r.any))).i32) end #################################################################### # SHR # macro(:shr2dyn_smi_smi) do |l, r| - shift := AndI(anytou32(r.any)).Imm(0x1f).u32 - i32toany(AShr(anytoi32(l), shift).i32) + i32toany(AShr(anytoi32(l), anytoi32(r.any)).i32) end macro(:shr2dyn_smi_double) do |l, r| - shift := AndI(f64toi32(anytof64(r.any))).Imm(0x1f).i32 - i32toany(AShr(anytoi32(l), shift).i32) + i32toany(AShr(anytoi32(l), f64toi32(anytof64(r.any))).i32) end macro(:shr2dyn_double_smi) do |l, r| - shift := AndI(anytou32(r.any)).Imm(0x1f).u32 - i32toany(AShr(i64tou32(f64toi64(anytof64(l))), shift).i32) + i32toany(AShr(i64toi32(f64toi64(anytof64(l))), anytoi32(r.any)).i32) end macro(:shr2dyn_double_double) do |l, r| - shift := AndI(f64tou32(anytof64(r.any))).Imm(0x1f).u32 - i32toany(AShr(i64tou32(f64toi64(anytof64(l))), shift).i32) + i32toany(AShr(i64toi32(f64toi64(anytof64(l))), f64toi32(anytof64(r.any))).i32) end ####################################################################################