mirror of
https://github.com/emmansun/gmsm.git
synced 2025-04-26 20:26:19 +08:00
sm9/bn256: gfp ppc64x fix neg
This commit is contained in:
parent
23b4d7ef72
commit
9a3d21eaec
@ -25,6 +25,21 @@
|
|||||||
#define PL V30
|
#define PL V30
|
||||||
#define PH V31
|
#define PH V31
|
||||||
|
|
||||||
|
#define gfpSubInternal(T1, T0, X1, X0, Y1, Y0) \
|
||||||
|
VSPLTISB $0, ZERO \ // VZERO
|
||||||
|
VSUBCUQ X0, Y0, CAR1 \
|
||||||
|
VSUBUQM X0, Y0, T0 \
|
||||||
|
VSUBECUQ X1, Y1, CAR1, SEL1 \
|
||||||
|
VSUBEUQM X1, Y1, CAR1, T1 \
|
||||||
|
VSUBUQM ZERO, SEL1, SEL1 \ // VSQ
|
||||||
|
\
|
||||||
|
VADDCUQ T0, PL, CAR1 \ // VACCQ
|
||||||
|
VADDUQM T0, PL, TT0 \ // VAQ
|
||||||
|
VADDEUQM T1, PH, CAR1, TT1 \ // VACQ
|
||||||
|
\
|
||||||
|
VSEL TT0, T0, SEL1, T0 \
|
||||||
|
VSEL TT1, T1, SEL1, T1 \
|
||||||
|
|
||||||
TEXT ·gfpNegAsm(SB),0,$0-16
|
TEXT ·gfpNegAsm(SB),0,$0-16
|
||||||
MOVD c+0(FP), R3
|
MOVD c+0(FP), R3
|
||||||
MOVD a+8(FP), R4
|
MOVD a+8(FP), R4
|
||||||
@ -43,41 +58,16 @@ TEXT ·gfpNegAsm(SB),0,$0-16
|
|||||||
XXPERMDI PH, PH, $2, PH
|
XXPERMDI PH, PH, $2, PH
|
||||||
XXPERMDI PL, PL, $2, PL
|
XXPERMDI PL, PL, $2, PL
|
||||||
|
|
||||||
VSUBCUQ PL, Y1L, CAR1 // subtract part2 giving carry
|
VSPLTISB $0, X1L
|
||||||
VSUBUQM PL, Y1L, T1L // subtract part2 giving result
|
gfpSubInternal(T1, T0, X1L, X1L, Y1H, Y1L)
|
||||||
VSUBEUQM PH, Y1H, CAR1, T1H // subtract part1 using carry from part2
|
|
||||||
|
|
||||||
VSUBCUQ T1L, PL, CAR1
|
XXPERMDI T1, T1, $2, T1
|
||||||
VSUBUQM T1L, PL, TT0
|
XXPERMDI T0, T0, $2, T0
|
||||||
VSUBECUQ T1H, PH, CAR1, SEL1
|
|
||||||
VSUBEUQM T1H, PH, CAR1, TT1
|
|
||||||
|
|
||||||
VSEL T1H, TT1, SEL1, Y1H
|
STXVD2X T0, (R0+R3)
|
||||||
VSEL T1L, TT0, SEL1, Y1L
|
STXVD2X T1, (R5+R3)
|
||||||
|
|
||||||
XXPERMDI Y1H, Y1H, $2, Y1H
|
|
||||||
XXPERMDI Y1L, Y1L, $2, Y1L
|
|
||||||
|
|
||||||
STXVD2X Y1L, (R0+R3)
|
|
||||||
STXVD2X Y1H, (R5+R3)
|
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
#define gfpSubInternal(T1, T0, X1, X0, Y1, Y0) \
|
|
||||||
VSPLTISB $0, ZERO \ // VZERO
|
|
||||||
VSUBCUQ X0, Y0, CAR1 \
|
|
||||||
VSUBUQM X0, Y0, T0 \
|
|
||||||
VSUBECUQ X1, Y1, CAR1, SEL1 \
|
|
||||||
VSUBEUQM X1, Y1, CAR1, T1 \
|
|
||||||
VSUBUQM ZERO, SEL1, SEL1 \ // VSQ
|
|
||||||
\
|
|
||||||
VADDCUQ T0, PL, CAR1 \ // VACCQ
|
|
||||||
VADDUQM T0, PL, TT0 \ // VAQ
|
|
||||||
VADDEUQM T1, PH, CAR1, TT1 \ // VACQ
|
|
||||||
\
|
|
||||||
VSEL TT0, T0, SEL1, T0 \
|
|
||||||
VSEL TT1, T1, SEL1, T1 \
|
|
||||||
|
|
||||||
TEXT ·gfpSubAsm(SB),0,$0-24
|
TEXT ·gfpSubAsm(SB),0,$0-24
|
||||||
MOVD c+0(FP), R3
|
MOVD c+0(FP), R3
|
||||||
MOVD a+8(FP), R4
|
MOVD a+8(FP), R4
|
||||||
|
Loading…
x
Reference in New Issue
Block a user