-rw-r--r-- 2041 high-ctidh-20210504/uintbig512.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 .global uintbig_p uintbig_p: .quad 0x1b81b90533c6c87b, 0xc2721bf457aca835, 0x516730cc1f0b4f25, 0xa7aac6c567f35507 .quad 0x5afbfcc69322c9cd, 0xb42d083aedc88c42, 0xfc8ab0d15e3e4c4a, 0x65b48e8f740f89bf .global uintbig_four_sqrt_p uintbig_four_sqrt_p: .quad 0x17895e71e1a20b3f, 0x38d0cd95f8636a56, 0x142b9541e59682cd, 0x856f1399d91d6592 .quad 2, 0, 0, 0 .section .text .global uintbig_set uintbig_set: cld mov rax, rsi stosq xor rax, rax mov rcx, 7 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 7 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 7 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 ret