diff options
Diffstat (limited to 'src/math/big/arith_riscv64.s')
-rw-r--r-- | src/math/big/arith_riscv64.s | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/math/big/arith_riscv64.s b/src/math/big/arith_riscv64.s new file mode 100644 index 0000000..2e950dd --- /dev/null +++ b/src/math/big/arith_riscv64.s @@ -0,0 +1,47 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !math_big_pure_go && riscv64 +// +build !math_big_pure_go,riscv64 + +#include "textflag.h" + +// This file provides fast assembly versions for the elementary +// arithmetic operations on vectors implemented in arith.go. + +// func mulWW(x, y Word) (z1, z0 Word) +TEXT ·mulWW(SB),NOSPLIT,$0 + MOV x+0(FP), X5 + MOV y+8(FP), X6 + MULHU X5, X6, X7 + MUL X5, X6, X8 + MOV X7, z1+16(FP) + MOV X8, z0+24(FP) + RET + + +TEXT ·addVV(SB),NOSPLIT,$0 + JMP ·addVV_g(SB) + +TEXT ·subVV(SB),NOSPLIT,$0 + JMP ·subVV_g(SB) + +TEXT ·addVW(SB),NOSPLIT,$0 + JMP ·addVW_g(SB) + +TEXT ·subVW(SB),NOSPLIT,$0 + JMP ·subVW_g(SB) + +TEXT ·shlVU(SB),NOSPLIT,$0 + JMP ·shlVU_g(SB) + +TEXT ·shrVU(SB),NOSPLIT,$0 + JMP ·shrVU_g(SB) + +TEXT ·mulAddVWW(SB),NOSPLIT,$0 + JMP ·mulAddVWW_g(SB) + +TEXT ·addMulVVW(SB),NOSPLIT,$0 + JMP ·addMulVVW_g(SB) + |