28 lines
814 B
ArmAsm
28 lines
814 B
ArmAsm
// Copyright (c) 2026 Petr Balvín <opensource@petrbalvin.org> (https://petrbalvin.org)
|
|||
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
||
|
|
|
||
|
|
// Differential kernel for the loong64 register-pair spellings: a top-level
|
||
|
|
// colon between two registers splits the operand in two with the halves
|
||
|
|
// swapped, so R4:R5 encodes exactly as R5, R4. The integer multiply and
|
||
|
|
// divide families, the FP pair and the vector pair, each the way
|
||
|
|
// GOARCH=loong64 go tool asm takes them.
|
||
|
|
|
||
|
|
#include "textflag.h"
|
||
|
|
|
||
|
|
TEXT ·pairs(SB), NOSPLIT, $0-0
|
||
|
|
MULV R4 : R5, R6
|
||
|
|
MULV R4 : R5
|
||
|
|
MULV R6, R4 : R5
|
||
|
|
DIVV R4 : R5, R6
|
||
|
|
DIVVU R4 : R5, R6
|
||
|
|
MULHV R4 : R5, R6
|
||
|
|
MULHVU R4 : R5, R6
|
||
|
|
ADDV R4 : R5, R6
|
||
|
|
ADDW R4 : R5, R6
|
||
|
|
AND R4 : R5, R6
|
||
|
|
OR R4 : R5, R6
|
||
|
|
XOR R4 : R5, R6
|
||
|
|
MOVV R4 : R5
|
||
|
|
MULD F4 : F5, F6
|
||
|
|
VADDW V1 : V2, V3
|
||
|
|
RET
|