fix(asm): encode the loong64 64-bit-span 2RI14 offsets like the toolchain

Assisted-by: GLM 5.3
This commit is contained in:
petrbalvin committed 2026-10-07 13:51:02 +02:00
1 parent 41aa8edfd2
commit b9dfb48d79
2 files changed
+30 -7

No files matched your search

+2 -3
View File
@@ -264,9 +264,8 @@ func l64WordsLE(ws ...uint32) []byte {
// a 32-bit one (C_LOREG_32) splits between addu16i.d (bits 31:16, materialised
// in R30, the assembler temp) and si14 (bits 15:2); anything wider
// (C_LOREG_64) builds the whole constant in R30 through lu12i.w + ori +
// lu32i.d + lu52i.d and folds the base into it. The loong64 backend resolves
// memory offsets as int32, so the third span answers nothing the encoder can
// ask today: it stands so the mapping stays complete if that domain widens.
// lu32i.d + lu52i.d and folds the base into it. The caller adjusts the
// opcode for the 64-bit span's load-direction quirks before arriving here.
func l64firr14Words(op uint32, off, rj, rd int) []byte {
switch {
case off >= -32766 && off < 32766: