Miscellaneous minor stuff:

* scripts/minimaws: Set option strict for JavaScript code.
* util/mfpresolve.h: Be explicit about turning nullptr into a pointer to
  data.
* cpu/drcbearm64.cpp: Reduced number of temporary registers used for AND
  with some operand combinations.
This commit is contained in:
Vas Crabb 2025-03-17 05:17:57 +11:00
parent d7d7a4c46c
commit 5f6296049b
6 changed files with 16 additions and 8 deletions

View File

@ -1,5 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
'use strict';
function make_collapsible(heading, section)
{

View File

@ -1,5 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
'use strict';
function Crc32Digester()
{

View File

@ -1,5 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
'use strict';
var slot_info = Object.create(null);
var bios_sets = Object.create(null);

View File

@ -1,5 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
'use strict';
var matched_names = new Array();
var unmatched_names = new Array();

View File

@ -4042,36 +4042,36 @@ void drcbe_arm64::op_and(a64::Assembler &a, const uml::instruction &inst)
}
else if (src1p.is_immediate() && is_valid_immediate_mask(src1p.immediate(), inst.size()))
{
const a64::Gp src2 = src2p.select_register(TEMP_REG1, inst.size());
const a64::Gp src2 = src2p.select_register(dst, inst.size());
mov_reg_param(a, inst.size(), src2, src2p);
a.emit(opcode, dst, src2, src1p.immediate());
}
else if (src2p.is_immediate() && is_valid_immediate_mask(src2p.immediate(), inst.size()))
{
const a64::Gp src1 = src1p.select_register(TEMP_REG1, inst.size());
const a64::Gp src1 = src1p.select_register(dst, inst.size());
mov_reg_param(a, inst.size(), src1, src1p);
a.emit(opcode, dst, src1, src2p.immediate());
}
else if ((inst.size() == 8) && src1p.is_immediate() && is_valid_immediate_mask(src1p.immediate(), 4) && (!inst.flags() || !BIT(src1p.immediate(), 31)))
{
const a64::Gp src2 = src2p.select_register(TEMP_REG1, inst.size());
const a64::Gp src2 = src2p.select_register(dst, inst.size());
mov_reg_param(a, inst.size(), src2, src2p);
a.emit(opcode, dst.w(), src2.w(), src1p.immediate());
}
else if ((inst.size() == 8) && src2p.is_immediate() && is_valid_immediate_mask(src2p.immediate(), 4) && (!inst.flags() || !BIT(src2p.immediate(), 31)))
{
const a64::Gp src1 = src1p.select_register(TEMP_REG1, inst.size());
const a64::Gp src1 = src1p.select_register(dst, inst.size());
mov_reg_param(a, inst.size(), src1, src1p);
a.emit(opcode, dst.w(), src1.w(), src2p.immediate());
}
else
{
const a64::Gp src1 = src1p.select_register(TEMP_REG1, inst.size());
const a64::Gp src2 = src2p.select_register(TEMP_REG2, inst.size());
const a64::Gp src1 = src1p.select_register(dst, inst.size());
const a64::Gp src2 = src2p.select_register(TEMP_REG1, inst.size());
mov_reg_param(a, inst.size(), src1, src1p);
mov_reg_param(a, inst.size(), src2, src2p);

View File

@ -75,7 +75,9 @@ inline std::pair<std::uintptr_t, std::uintptr_t> resolve_member_function(Ret (T:
}
else
{
return std::make_pair(std::uintptr_t(static_cast<void (*)()>(nullptr)), std::uintptr_t(nullptr));
return std::make_pair(
std::uintptr_t(static_cast<void (*)()>(nullptr)),
std::uintptr_t(static_cast<void *>(nullptr)));
}
}
@ -96,7 +98,9 @@ inline std::pair<std::uintptr_t, std::uintptr_t> resolve_member_function(Ret (T:
}
else
{
return std::make_pair(std::uintptr_t(static_cast<void (*)()>(nullptr)), std::uintptr_t(nullptr));
return std::make_pair(
std::uintptr_t(static_cast<void (*)()>(nullptr)),
std::uintptr_t(static_cast<void *>(nullptr)));
}
}