mirror of
https://github.com/xmrig/xmrig.git
synced 2026-06-20 11:32:41 -04:00
Compare commits
6 Commits
v6.26.0
...
a7baa9cb63
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a7baa9cb63 | ||
|
|
c59c03e137 | ||
|
|
80eff55ed6 | ||
|
|
5347458fc7 | ||
|
|
6bf43053f7 | ||
|
|
69b7e60d35 |
@@ -406,9 +406,9 @@ bool xmrig::BlockTemplate::parse(bool hashes)
|
|||||||
if (hashes) {
|
if (hashes) {
|
||||||
// FCMP++ layout:
|
// FCMP++ layout:
|
||||||
//
|
//
|
||||||
// index 0 fcmp_pp_n_tree_layers + 31 zero bytes
|
// index 0 coinbase transaction hash
|
||||||
// index 1 fcmp_pp_tree_root
|
// index 1 fcmp_pp_n_tree_layers + 31 zero bytes
|
||||||
// index 2 coinbase transaction hash
|
// index 2 fcmp_pp_tree_root
|
||||||
// index 3+ other transaction hashes
|
// index 3+ other transaction hashes
|
||||||
//
|
//
|
||||||
// pre-FCMP++ layout:
|
// pre-FCMP++ layout:
|
||||||
@@ -416,30 +416,28 @@ bool xmrig::BlockTemplate::parse(bool hashes)
|
|||||||
// index 0 coinbase transaction hash
|
// index 0 coinbase transaction hash
|
||||||
// index 1+ other transaction hashes
|
// index 1+ other transaction hashes
|
||||||
//
|
//
|
||||||
const uint32_t coinbase_tx_index = is_fcmp_pp ? 2 : 0;
|
// Update: FCMP moved coinbase tx to index 0 to stay consistent with pre-fork layout
|
||||||
|
|
||||||
m_hashes.clear();
|
m_hashes.clear();
|
||||||
m_hashes.resize((coinbase_tx_index + m_numHashes + 1) * kHashSize);
|
m_hashes.resize((m_numHashes + (is_fcmp_pp ? 3 : 1)) * kHashSize);
|
||||||
|
|
||||||
uint8_t* data = m_hashes.data() + coinbase_tx_index * kHashSize;
|
calculateMinerTxHash(blob(MINER_TX_PREFIX_OFFSET), blob(MINER_TX_PREFIX_END_OFFSET), m_hashes.data());
|
||||||
|
|
||||||
calculateMinerTxHash(blob(MINER_TX_PREFIX_OFFSET), blob(MINER_TX_PREFIX_END_OFFSET), data);
|
|
||||||
|
|
||||||
for (uint64_t i = 1; i <= m_numHashes; ++i) {
|
for (uint64_t i = 1; i <= m_numHashes; ++i) {
|
||||||
Span h;
|
Span h;
|
||||||
ar(h, kHashSize);
|
ar(h, kHashSize);
|
||||||
memcpy(data + i * kHashSize, h.data(), kHashSize);
|
memcpy(m_hashes.data() + (i + (is_fcmp_pp ? 2 : 0)) * kHashSize, h.data(), kHashSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_fcmp_pp) {
|
if (is_fcmp_pp) {
|
||||||
ar(m_FCMPTreeLayers);
|
ar(m_FCMPTreeLayers);
|
||||||
ar(m_FCMPTreeRoot);
|
ar(m_FCMPTreeRoot);
|
||||||
|
|
||||||
m_hashes[0] = m_FCMPTreeLayers;
|
m_hashes[kHashSize] = m_FCMPTreeLayers;
|
||||||
memcpy(m_hashes.data() + kHashSize, m_FCMPTreeRoot, kHashSize);
|
memcpy(m_hashes.data() + kHashSize * 2, m_FCMPTreeRoot, kHashSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
calculateMerkleTreeHash(coinbase_tx_index);
|
calculateMerkleTreeHash(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1059,11 +1059,8 @@ void JitCompilerA64::h_FDIV_M(Instruction& instr, uint32_t& codePos)
|
|||||||
constexpr uint32_t tmp_reg_fp = 28;
|
constexpr uint32_t tmp_reg_fp = 28;
|
||||||
emitMemLoadFP<tmp_reg_fp>(src, instr, code, k);
|
emitMemLoadFP<tmp_reg_fp>(src, instr, code, k);
|
||||||
|
|
||||||
// and tmp_reg_fp, tmp_reg_fp, and_mask_reg
|
// bif tmp_reg_fp, or_mask_reg, and_mask_reg
|
||||||
emit32(0x4E201C00 | tmp_reg_fp | (tmp_reg_fp << 5) | (29 << 16), code, k);
|
emit32(0x6EE01C00 | tmp_reg_fp | (30 << 5) | (29 << 16), code, k);
|
||||||
|
|
||||||
// orr tmp_reg_fp, tmp_reg_fp, or_mask_reg
|
|
||||||
emit32(0x4EA01C00 | tmp_reg_fp | (tmp_reg_fp << 5) | (30 << 16), code, k);
|
|
||||||
|
|
||||||
emit32(ARMV8A::FDIV | dst | (dst << 5) | (tmp_reg_fp << 16), code, k);
|
emit32(ARMV8A::FDIV | dst | (dst << 5) | (tmp_reg_fp << 16), code, k);
|
||||||
|
|
||||||
|
|||||||
@@ -109,7 +109,7 @@
|
|||||||
# v26 -> "a2"
|
# v26 -> "a2"
|
||||||
# v27 -> "a3"
|
# v27 -> "a3"
|
||||||
# v28 -> temporary
|
# v28 -> temporary
|
||||||
# v29 -> E 'and' mask = 0x00ffffffffffffff'00ffffffffffffff
|
# v29 -> E 'and' mask = 0x00ffffffffc00000'00ffffffffc00000
|
||||||
# v30 -> E 'or' mask = 0x3*00000000******'3*00000000******
|
# v30 -> E 'or' mask = 0x3*00000000******'3*00000000******
|
||||||
# v31 -> scale mask = 0x80f0000000000000'80f0000000000000
|
# v31 -> scale mask = 0x80f0000000000000'80f0000000000000
|
||||||
|
|
||||||
@@ -151,7 +151,9 @@ DECL(randomx_program_aarch64):
|
|||||||
ldp q26, q27, [x0, 224]
|
ldp q26, q27, [x0, 224]
|
||||||
|
|
||||||
# Load E 'and' mask
|
# Load E 'and' mask
|
||||||
movi v29.2d, #0x00FFFFFFFFFFFFFF
|
mov x16, 0x00FFFFFFFFC00000
|
||||||
|
ins v29.d[0], x16
|
||||||
|
ins v29.d[1], x16
|
||||||
|
|
||||||
# Load E 'or' mask (stored in reg.f[0])
|
# Load E 'or' mask (stored in reg.f[0])
|
||||||
ldr q30, [x0, 64]
|
ldr q30, [x0, 64]
|
||||||
@@ -239,14 +241,10 @@ DECL(randomx_program_aarch64_main_loop):
|
|||||||
sxtl2 v23.2d, v23.4s
|
sxtl2 v23.2d, v23.4s
|
||||||
scvtf v23.2d, v23.2d
|
scvtf v23.2d, v23.2d
|
||||||
|
|
||||||
and v20.16b, v20.16b, v29.16b
|
bif v20.16b, v30.16b, v29.16b
|
||||||
and v21.16b, v21.16b, v29.16b
|
bif v21.16b, v30.16b, v29.16b
|
||||||
and v22.16b, v22.16b, v29.16b
|
bif v22.16b, v30.16b, v29.16b
|
||||||
and v23.16b, v23.16b, v29.16b
|
bif v23.16b, v30.16b, v29.16b
|
||||||
orr v20.16b, v20.16b, v30.16b
|
|
||||||
orr v21.16b, v21.16b, v30.16b
|
|
||||||
orr v22.16b, v22.16b, v30.16b
|
|
||||||
orr v23.16b, v23.16b, v30.16b
|
|
||||||
|
|
||||||
# Execute VM instructions
|
# Execute VM instructions
|
||||||
DECL(randomx_program_aarch64_vm_instructions):
|
DECL(randomx_program_aarch64_vm_instructions):
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
#define APP_ID "xmrig"
|
#define APP_ID "xmrig"
|
||||||
#define APP_NAME "XMRig"
|
#define APP_NAME "XMRig"
|
||||||
#define APP_DESC "XMRig miner"
|
#define APP_DESC "XMRig miner"
|
||||||
#define APP_VERSION "6.26.0"
|
#define APP_VERSION "6.26.1-dev"
|
||||||
#define APP_DOMAIN "xmrig.com"
|
#define APP_DOMAIN "xmrig.com"
|
||||||
#define APP_SITE "www.xmrig.com"
|
#define APP_SITE "www.xmrig.com"
|
||||||
#define APP_COPYRIGHT "Copyright (C) 2016-2026 xmrig.com"
|
#define APP_COPYRIGHT "Copyright (C) 2016-2026 xmrig.com"
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
#define APP_VER_MAJOR 6
|
#define APP_VER_MAJOR 6
|
||||||
#define APP_VER_MINOR 26
|
#define APP_VER_MINOR 26
|
||||||
#define APP_VER_PATCH 0
|
#define APP_VER_PATCH 1
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
# if (_MSC_VER >= 1950)
|
# if (_MSC_VER >= 1950)
|
||||||
|
|||||||
Reference in New Issue
Block a user