github.com/cloudflare/circl@v1.5.0/ecc/fourq/point_amd64.s (about)

     1  // +build amd64,!purego
     2  
     3  #include "go_asm.h"
     4  #include "fq_amd64.h"
     5  #include "point_amd64.h"
     6  
     7  // func doubleAmd64(P *pointR1)
     8  TEXT ·doubleAmd64(SB),0,$0-8
     9      MOVQ P+0(FP), DI
    10      #define Px  const__x +0(DI)
    11      #define Py  const__y +0(DI)
    12      #define Pz  const__z +0(DI)
    13      #define Pta const__ta+0(DI)
    14      #define Ptb const__tb+0(DI)
    15      #define a Px
    16      #define b Py
    17      #define c Pz
    18      #define d Pta
    19      #define e Ptb
    20      #define f b
    21      #define g a
    22      CHECK_BMI2(LDOUBLE, doubleLeg, doubleBmi2)
    23      #undef Px
    24      #undef Py
    25      #undef Pz
    26      #undef Pta
    27      #undef Ptb
    28      #undef a
    29      #undef b
    30      #undef c
    31      #undef d
    32      #undef e
    33      #undef f
    34      #undef g
    35  
    36  // func addAmd64(P *pointR1, R *pointR2)
    37  TEXT ·addAmd64(SB),0,$32-16
    38      MOVQ P+0(FP), DI
    39      MOVQ Q+8(FP), SI
    40      #define addYX const__addYXR2+0(SI)
    41      #define subYX const__subYXR2+0(SI)
    42      #define z2    const__z2R2   +0(SI)
    43      #define dt2   const__dt2R2  +0(SI)
    44      #define Px    const__x +0(DI)
    45      #define Py    const__y +0(DI)
    46      #define Pz    const__z +0(DI)
    47      #define Pta   const__ta+0(DI)
    48      #define Ptb   const__tb+0(DI)
    49      #define a Px
    50      #define b Py
    51      #define c 0(SP)
    52      #define d b
    53      #define e Pta
    54      #define f a
    55      #define g b
    56      #define h Ptb
    57      CHECK_BMI2(LDADD, addLeg, addBmi2)
    58      #undef addYX
    59      #undef subYX
    60      #undef z2
    61      #undef dt2
    62      #undef Px
    63      #undef Py
    64      #undef Pz
    65      #undef Pta
    66      #undef Ptb
    67      #undef a
    68      #undef b
    69      #undef c
    70      #undef d
    71      #undef e
    72      #undef f
    73      #undef g
    74      #undef h
    75  
    76  // func mixAddAmd64(P *pointR1, Q *pointR3)
    77  TEXT ·mixAddAmd64(SB),0,$32-16
    78      MOVQ P+0(FP), DI
    79      MOVQ Q+8(FP), SI
    80      #define addYX const__addYXR3+0(SI)
    81      #define subYX const__subYXR3+0(SI)
    82      #define dt2   const__dt2R3  +0(SI)
    83      #define Px    const__x +0(DI)
    84      #define Py    const__y +0(DI)
    85      #define Pz    const__z +0(DI)
    86      #define Pta   const__ta+0(DI)
    87      #define Ptb   const__tb+0(DI)
    88      #define a Px
    89      #define b Py
    90      #define c 0(SP)
    91      #define d b
    92      #define e Pta
    93      #define f a
    94      #define g b
    95      #define h Ptb
    96      CHECK_BMI2(LDMIXADD, mixAddLeg, mixAddBmi2)
    97      #undef addYX
    98      #undef subYX
    99      #undef dt2
   100      #undef Px
   101      #undef Py
   102      #undef Pz
   103      #undef Pta
   104      #undef Ptb
   105      #undef a
   106      #undef b
   107      #undef c
   108      #undef d
   109      #undef e
   110      #undef f
   111      #undef g
   112      #undef h