...

Text file src/github.com/cloudflare/circl/ecc/fourq/fq_amd64.s

Documentation: github.com/cloudflare/circl/ecc/fourq

     1// +build amd64,!purego
     2
     3#include "fq_amd64.h"
     4
     5#define fqMulLegacy \
     6    _fqMulLeg(0(DI),0(SI),0(BX))
     7#define fqMulBmi2 \
     8    _fqMulBmi2(0(DI),0(SI),0(BX))
     9
    10#define fqSqrLegacy \
    11    _fqSqrLeg(0(DI),0(SI))
    12#define fqSqrBmi2 \
    13    _fqSqrBmi2(0(DI),0(SI))
    14
    15// func fqCmov(c, a *fq, b int)
    16TEXT ·fqCmov(SB),0,$0-24
    17    MOVQ c+0(FP), DI
    18    MOVQ a+8(FP), SI
    19    MOVQ b+16(FP), BX
    20    TESTQ BX, BX
    21    MOVQ  0(DI), AX; MOVQ  0(SI), DX; CMOVQNE DX, AX; MOVQ AX,  0(DI);
    22    MOVQ  8(DI), AX; MOVQ  8(SI), DX; CMOVQNE DX, AX; MOVQ AX,  8(DI);
    23    MOVQ 16(DI), AX; MOVQ 16(SI), DX; CMOVQNE DX, AX; MOVQ AX, 16(DI);
    24    MOVQ 24(DI), AX; MOVQ 24(SI), DX; CMOVQNE DX, AX; MOVQ AX, 24(DI);
    25    RET
    26
    27// func fqAdd(c, a, b *fq)
    28TEXT ·fqAdd(SB),0,$0-24
    29    MOVQ c+0(FP), DI
    30    MOVQ a+8(FP), SI
    31    MOVQ b+16(FP), BX
    32    _fqAdd(0(DI), 0(SI), 0(BX))
    33    RET
    34
    35// func fqSub(c, a, b *fq)
    36TEXT ·fqSub(SB),0,$0-24
    37    MOVQ c+0(FP), DI
    38    MOVQ a+8(FP), SI
    39    MOVQ b+16(FP), BX
    40    _fqSub(0(DI), 0(SI), 0(BX))
    41    RET
    42
    43// func fqMul(c, a, b *fq)
    44TEXT ·fqMul(SB),0,$0-24
    45    MOVQ c+0(FP), DI
    46    MOVQ a+8(FP), SI
    47    MOVQ b+16(FP), BX
    48    CHECK_BMI2(LFQMUL, fqMulLegacy, fqMulBmi2)
    49    RET
    50
    51// func fqSqr(c, a *fq)
    52TEXT ·fqSqr(SB),0,$0-16
    53    MOVQ c+0(FP), DI
    54    MOVQ a+8(FP), SI
    55    CHECK_BMI2(LFQSQR, fqSqrLegacy, fqSqrBmi2)
    56    RET

View as plain text