...

Text file src/crypto/internal/bigmod/nat_arm.s

Documentation: crypto/internal/bigmod

     1// Copyright 2009 The Go Authors. All rights reserved.
     2// Use of this source code is governed by a BSD-style
     3// license that can be found in the LICENSE file.
     4
     5//go:build !purego
     6
     7#include "textflag.h"
     8
     9// func addMulVVW1024(z, x *uint, y uint) (c uint)
    10TEXT ·addMulVVW1024(SB), $0-16
    11	MOVW	$32, R5
    12	JMP		addMulVVWx(SB)
    13
    14// func addMulVVW1536(z, x *uint, y uint) (c uint)
    15TEXT ·addMulVVW1536(SB), $0-16
    16	MOVW	$48, R5
    17	JMP		addMulVVWx(SB)
    18
    19// func addMulVVW2048(z, x *uint, y uint) (c uint)
    20TEXT ·addMulVVW2048(SB), $0-16
    21	MOVW	$64, R5
    22	JMP		addMulVVWx(SB)
    23
    24TEXT addMulVVWx(SB), NOFRAME|NOSPLIT, $0
    25	MOVW	$0, R0
    26	MOVW	z+0(FP), R1
    27	MOVW	x+4(FP), R2
    28	MOVW	y+8(FP), R3
    29	ADD	R5<<2, R1, R5
    30	MOVW	$0, R4
    31	B E9
    32
    33L9:	MOVW.P	4(R2), R6
    34	MULLU	R6, R3, (R7, R6)
    35	ADD.S	R4, R6
    36	ADC	R0, R7
    37	MOVW	0(R1), R4
    38	ADD.S	R4, R6
    39	ADC	R0, R7
    40	MOVW.P	R6, 4(R1)
    41	MOVW	R7, R4
    42
    43E9:	TEQ	R1, R5
    44	BNE	L9
    45
    46	MOVW	R4, c+12(FP)
    47	RET

View as plain text