1
; This Source Code Form is subject to the terms of the Mozilla Public
2
; License, v. 2.0. If a copy of the MPL was not distributed with this
3
; file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
; This code is converted from mpi_amd64_gas.asm for MASM for x64.
9
; ------------------------------------------------------------------------
11
; Implementation of s_mpv_mul_set_vec which exploits
12
; the 64X64->128 bit unsigned multiply instruction.
14
; ------------------------------------------------------------------------
16
; r = a * digit, r and a are vectors of length len
17
; returns the carry digit
18
; r and a are 64 bit aligned.
21
; s_mpv_mul_set_vec64(uint64_t *r, uint64_t *a, int len, uint64_t digit)
26
s_mpv_mul_set_vec64 PROC
28
; compatibilities for paramenter registers
30
; About GAS and MASM, the usage of parameter registers are different.
174
s_mpv_mul_set_vec64 ENDP
177
;------------------------------------------------------------------------
179
; Implementation of s_mpv_mul_add_vec which exploits
180
; the 64X64->128 bit unsigned multiply instruction.
182
;------------------------------------------------------------------------
184
; r += a * digit, r and a are vectors of length len
185
; returns the carry digit
186
; r and a are 64 bit aligned.
189
; s_mpv_mul_add_vec64(uint64_t *r, uint64_t *a, int len, uint64_t digit)
192
s_mpv_mul_add_vec64 PROC
194
; compatibilities for paramenter registers
196
; About GAS and MASM, the usage of parameter registers are different.
386
s_mpv_mul_add_vec64 ENDP