-rw-r--r-- 2964 high-ctidh-20210523/uintbig1024.S
/* DO NOT EDIT! generated by ./autogen */
.intel_syntax noprefix
#include "uintbig_namespace.h"
.section .rodata
.global uintbig_1
uintbig_1:
.quad 1, 0, 0, 0
.quad 0, 0, 0, 0
.quad 0, 0, 0, 0
.quad 0, 0, 0, 0
.global uintbig_p
uintbig_p:
.quad 0xdbe34c5460e36453, 0xa1d81eebbc3d344d, 0x514ba72cb8d89fd3, 0xc2cab6a0e287f1bd
.quad 0x642aca4d5a313709, 0x6b317c5431541f40, 0xb97c56d1de81ede5, 0x0978dbeed90a2b58
.quad 0x7611ad4f90441c80, 0xf811d9c419ec8329, 0x4d6c594a8ad82d2d, 0xf06de2471cf9386e
.quad 0x0683cf25db31ad5b, 0x216c22bc86f21a08, 0xd89dec879007ebd7, 0x0ece55ed427012a9
.global uintbig_four_sqrt_p
uintbig_four_sqrt_p:
.quad 0xeba75c5815bb0d57, 0xfec8564a9ae457c6, 0xe362e1c2334bd738, 0x56f74a246ef0a30e
.quad 0x4a598c9571aeb858, 0xc5617b211ccad355, 0x4fb69e4928ccc442, 0xf643475c7915859c
.quad 0, 0, 0, 0
.quad 0, 0, 0, 0
.section .text
.global uintbig_set
uintbig_set:
cld
mov rax, rsi
stosq
xor rax, rax
mov rcx, 15
rep stosq
ret
.global uintbig_bit
uintbig_bit:
mov rcx, rsi
and rcx, 0x3f
shr rsi, 6
mov rax, [rdi + 8*rsi]
shr rax, cl
and rax, 1
ret
.global uintbig_add3
uintbig_add3:
mov rax, [rsi + 0]
add rax, [rdx + 0]
mov [rdi + 0], rax
.set k, 1
.rept 15
mov rax, [rsi + 8*k]
adc rax, [rdx + 8*k]
mov [rdi + 8*k], rax
.set k, k+1
.endr
setc al
movzx rax, al
ret
.global uintbig_sub3
uintbig_sub3:
mov rax, [rsi + 0]
sub rax, [rdx + 0]
mov [rdi + 0], rax
.set k, 1
.rept 15
mov rax, [rsi + 8*k]
sbb rax, [rdx + 8*k]
mov [rdi + 8*k], rax
.set k, k+1
.endr
setc al
movzx rax, al
ret
.global uintbig_mul3_64
uintbig_mul3_64:
mulx r10, rax, [rsi + 0]
mov [rdi + 0], rax
mulx r11, rax, [rsi + 8]
add rax, r10
mov [rdi + 8], rax
mulx r10, rax, [rsi + 16]
adcx rax, r11
mov [rdi + 16], rax
mulx r11, rax, [rsi + 24]
adcx rax, r10
mov [rdi + 24], rax
mulx r10, rax, [rsi + 32]
adcx rax, r11
mov [rdi + 32], rax
mulx r11, rax, [rsi + 40]
adcx rax, r10
mov [rdi + 40], rax
mulx r10, rax, [rsi + 48]
adcx rax, r11
mov [rdi + 48], rax
mulx r11, rax, [rsi + 56]
adcx rax, r10
mov [rdi + 56], rax
mulx r10, rax, [rsi + 64]
adcx rax, r11
mov [rdi + 64], rax
mulx r11, rax, [rsi + 72]
adcx rax, r10
mov [rdi + 72], rax
mulx r10, rax, [rsi + 80]
adcx rax, r11
mov [rdi + 80], rax
mulx r11, rax, [rsi + 88]
adcx rax, r10
mov [rdi + 88], rax
mulx r10, rax, [rsi + 96]
adcx rax, r11
mov [rdi + 96], rax
mulx r11, rax, [rsi + 104]
adcx rax, r10
mov [rdi + 104], rax
mulx r10, rax, [rsi + 112]
adcx rax, r11
mov [rdi + 112], rax
mulx r11, rax, [rsi + 120]
adcx rax, r10
mov [rdi + 120], rax
ret