github.com/smalaichami/go-bowhead@v0.0.0-20180311002552-16302db95eaa/crypto/bn256/cloudflare/gfp.h (about)

     1  #define storeBlock(a0,a1,a2,a3, r) \
     2  	MOVQ a0,  0+r \
     3  	MOVQ a1,  8+r \
     4  	MOVQ a2, 16+r \
     5  	MOVQ a3, 24+r
     6  
     7  #define loadBlock(r, a0,a1,a2,a3) \
     8  	MOVQ  0+r, a0 \
     9  	MOVQ  8+r, a1 \
    10  	MOVQ 16+r, a2 \
    11  	MOVQ 24+r, a3
    12  
    13  #define gfpCarry(a0,a1,a2,a3,a4, b0,b1,b2,b3,b4) \
    14  	\ // b = a-p
    15  	MOVQ a0, b0 \
    16  	MOVQ a1, b1 \
    17  	MOVQ a2, b2 \
    18  	MOVQ a3, b3 \
    19  	MOVQ a4, b4 \
    20  	\
    21  	SUBQ ·p2+0(SB), b0 \
    22  	SBBQ ·p2+8(SB), b1 \
    23  	SBBQ ·p2+16(SB), b2 \
    24  	SBBQ ·p2+24(SB), b3 \
    25  	SBBQ $0, b4 \
    26  	\
    27  	\ // if b is negative then return a
    28  	\ // else return b
    29  	CMOVQCC b0, a0 \
    30  	CMOVQCC b1, a1 \
    31  	CMOVQCC b2, a2 \
    32  	CMOVQCC b3, a3