...

Text file src/github.com/cloudflare/circl/math/fp448/fp_amd64.s

Documentation: github.com/cloudflare/circl/math/fp448

     1// +build amd64
     2
     3#include "textflag.h"
     4#include "fp_amd64.h"
     5
     6// func cmovAmd64(x, y *Elt, n uint)
     7TEXT ·cmovAmd64(SB),NOSPLIT,$0-24
     8    MOVQ x+0(FP), DI
     9    MOVQ y+8(FP), SI
    10    MOVQ n+16(FP), BX
    11    cselect(0(DI),0(SI),BX)
    12    RET
    13
    14// func cswapAmd64(x, y *Elt, n uint)
    15TEXT ·cswapAmd64(SB),NOSPLIT,$0-24
    16    MOVQ x+0(FP), DI
    17    MOVQ y+8(FP), SI
    18    MOVQ n+16(FP), BX
    19    cswap(0(DI),0(SI),BX)
    20    RET
    21
    22// func subAmd64(z, x, y *Elt)
    23TEXT ·subAmd64(SB),NOSPLIT,$0-24
    24    MOVQ z+0(FP), DI
    25    MOVQ x+8(FP), SI
    26    MOVQ y+16(FP), BX
    27    subtraction(0(DI),0(SI),0(BX))
    28    RET
    29
    30// func addsubAmd64(x, y *Elt)
    31TEXT ·addsubAmd64(SB),NOSPLIT,$0-16
    32    MOVQ x+0(FP), DI
    33    MOVQ y+8(FP), SI
    34    addSub(0(DI),0(SI))
    35    RET
    36
    37#define addLegacy \
    38    additionLeg(0(DI),0(SI),0(BX))
    39#define addBmi2Adx \
    40    additionAdx(0(DI),0(SI),0(BX))
    41
    42#define mulLegacy \
    43    integerMulLeg(0(SP),0(SI),0(BX)) \
    44    reduceFromDoubleLeg(0(DI),0(SP))
    45#define mulBmi2Adx \
    46    integerMulAdx(0(SP),0(SI),0(BX)) \
    47    reduceFromDoubleAdx(0(DI),0(SP))
    48
    49#define sqrLegacy \
    50    integerSqrLeg(0(SP),0(SI)) \
    51    reduceFromDoubleLeg(0(DI),0(SP))
    52#define sqrBmi2Adx \
    53    integerSqrAdx(0(SP),0(SI)) \
    54    reduceFromDoubleAdx(0(DI),0(SP))
    55
    56// func addAmd64(z, x, y *Elt)
    57TEXT ·addAmd64(SB),NOSPLIT,$0-24
    58    MOVQ z+0(FP), DI
    59    MOVQ x+8(FP), SI
    60    MOVQ y+16(FP), BX
    61    CHECK_BMI2ADX(LADD, addLegacy, addBmi2Adx)
    62
    63// func mulAmd64(z, x, y *Elt)
    64TEXT ·mulAmd64(SB),NOSPLIT,$112-24
    65    MOVQ z+0(FP), DI
    66    MOVQ x+8(FP), SI
    67    MOVQ y+16(FP), BX
    68    CHECK_BMI2ADX(LMUL, mulLegacy, mulBmi2Adx)
    69
    70// func sqrAmd64(z, x *Elt)
    71TEXT ·sqrAmd64(SB),NOSPLIT,$112-16
    72    MOVQ z+0(FP), DI
    73    MOVQ x+8(FP), SI
    74    CHECK_BMI2ADX(LSQR, sqrLegacy, sqrBmi2Adx)

View as plain text