Skip to content

Commit 39ac3d4

Browse files
authored
Merge pull request #44 from ConsenSys/feat/mul_by_13
feat: added mul_by_13 asm impl in field arithmetic
2 parents 01dadd0 + 8b6da20 commit 39ac3d4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1070
-19
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ tasks.txt
2727

2828
# generated files during integratrion tests
2929
internal/tests/integration/
30-
30+
field/internal/dev.go
31+
field/internal/dev/**
3132

3233
.vscode
3334

ecc/bls12-377/fp/element.go

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ecc/bls12-377/fp/element_ops_amd64.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ecc/bls12-377/fp/element_ops_amd64.s

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,3 +299,76 @@ TEXT ·MulBy5(SB), NOSPLIT, $0-8
299299
MOVQ DI, 32(AX)
300300
MOVQ R8, 40(AX)
301301
RET
302+
303+
// MulBy13(x *Element)
304+
TEXT ·MulBy13(SB), $40-8
305+
MOVQ x+0(FP), AX
306+
MOVQ 0(AX), DX
307+
MOVQ 8(AX), CX
308+
MOVQ 16(AX), BX
309+
MOVQ 24(AX), SI
310+
MOVQ 32(AX), DI
311+
MOVQ 40(AX), R8
312+
ADDQ DX, DX
313+
ADCQ CX, CX
314+
ADCQ BX, BX
315+
ADCQ SI, SI
316+
ADCQ DI, DI
317+
ADCQ R8, R8
318+
319+
// reduce element(DX,CX,BX,SI,DI,R8) using temp registers (R9,R10,R11,R12,R13,R14)
320+
REDUCE(DX,CX,BX,SI,DI,R8,R9,R10,R11,R12,R13,R14)
321+
322+
ADDQ DX, DX
323+
ADCQ CX, CX
324+
ADCQ BX, BX
325+
ADCQ SI, SI
326+
ADCQ DI, DI
327+
ADCQ R8, R8
328+
329+
// reduce element(DX,CX,BX,SI,DI,R8) using temp registers (R15,s0-8(SP),s1-16(SP),s2-24(SP),s3-32(SP),s4-40(SP))
330+
REDUCE(DX,CX,BX,SI,DI,R8,R15,s0-8(SP),s1-16(SP),s2-24(SP),s3-32(SP),s4-40(SP))
331+
332+
MOVQ DX, R15
333+
MOVQ CX, s0-8(SP)
334+
MOVQ BX, s1-16(SP)
335+
MOVQ SI, s2-24(SP)
336+
MOVQ DI, s3-32(SP)
337+
MOVQ R8, s4-40(SP)
338+
ADDQ DX, DX
339+
ADCQ CX, CX
340+
ADCQ BX, BX
341+
ADCQ SI, SI
342+
ADCQ DI, DI
343+
ADCQ R8, R8
344+
345+
// reduce element(DX,CX,BX,SI,DI,R8) using temp registers (R9,R10,R11,R12,R13,R14)
346+
REDUCE(DX,CX,BX,SI,DI,R8,R9,R10,R11,R12,R13,R14)
347+
348+
ADDQ R15, DX
349+
ADCQ s0-8(SP), CX
350+
ADCQ s1-16(SP), BX
351+
ADCQ s2-24(SP), SI
352+
ADCQ s3-32(SP), DI
353+
ADCQ s4-40(SP), R8
354+
355+
// reduce element(DX,CX,BX,SI,DI,R8) using temp registers (R9,R10,R11,R12,R13,R14)
356+
REDUCE(DX,CX,BX,SI,DI,R8,R9,R10,R11,R12,R13,R14)
357+
358+
ADDQ 0(AX), DX
359+
ADCQ 8(AX), CX
360+
ADCQ 16(AX), BX
361+
ADCQ 24(AX), SI
362+
ADCQ 32(AX), DI
363+
ADCQ 40(AX), R8
364+
365+
// reduce element(DX,CX,BX,SI,DI,R8) using temp registers (R9,R10,R11,R12,R13,R14)
366+
REDUCE(DX,CX,BX,SI,DI,R8,R9,R10,R11,R12,R13,R14)
367+
368+
MOVQ DX, 0(AX)
369+
MOVQ CX, 8(AX)
370+
MOVQ BX, 16(AX)
371+
MOVQ SI, 24(AX)
372+
MOVQ DI, 32(AX)
373+
MOVQ R8, 40(AX)
374+
RET

ecc/bls12-377/fp/element_ops_noasm.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ecc/bls12-377/fp/element_test.go

Lines changed: 40 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ecc/bls12-377/fr/element.go

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ecc/bls12-377/fr/element_ops_amd64.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ecc/bls12-377/fr/element_ops_amd64.s

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,3 +233,60 @@ TEXT ·MulBy5(SB), NOSPLIT, $0-8
233233
MOVQ BX, 16(AX)
234234
MOVQ SI, 24(AX)
235235
RET
236+
237+
// MulBy13(x *Element)
238+
TEXT ·MulBy13(SB), NOSPLIT, $0-8
239+
MOVQ x+0(FP), AX
240+
MOVQ 0(AX), DX
241+
MOVQ 8(AX), CX
242+
MOVQ 16(AX), BX
243+
MOVQ 24(AX), SI
244+
ADDQ DX, DX
245+
ADCQ CX, CX
246+
ADCQ BX, BX
247+
ADCQ SI, SI
248+
249+
// reduce element(DX,CX,BX,SI) using temp registers (DI,R8,R9,R10)
250+
REDUCE(DX,CX,BX,SI,DI,R8,R9,R10)
251+
252+
ADDQ DX, DX
253+
ADCQ CX, CX
254+
ADCQ BX, BX
255+
ADCQ SI, SI
256+
257+
// reduce element(DX,CX,BX,SI) using temp registers (R11,R12,R13,R14)
258+
REDUCE(DX,CX,BX,SI,R11,R12,R13,R14)
259+
260+
MOVQ DX, R11
261+
MOVQ CX, R12
262+
MOVQ BX, R13
263+
MOVQ SI, R14
264+
ADDQ DX, DX
265+
ADCQ CX, CX
266+
ADCQ BX, BX
267+
ADCQ SI, SI
268+
269+
// reduce element(DX,CX,BX,SI) using temp registers (DI,R8,R9,R10)
270+
REDUCE(DX,CX,BX,SI,DI,R8,R9,R10)
271+
272+
ADDQ R11, DX
273+
ADCQ R12, CX
274+
ADCQ R13, BX
275+
ADCQ R14, SI
276+
277+
// reduce element(DX,CX,BX,SI) using temp registers (DI,R8,R9,R10)
278+
REDUCE(DX,CX,BX,SI,DI,R8,R9,R10)
279+
280+
ADDQ 0(AX), DX
281+
ADCQ 8(AX), CX
282+
ADCQ 16(AX), BX
283+
ADCQ 24(AX), SI
284+
285+
// reduce element(DX,CX,BX,SI) using temp registers (DI,R8,R9,R10)
286+
REDUCE(DX,CX,BX,SI,DI,R8,R9,R10)
287+
288+
MOVQ DX, 0(AX)
289+
MOVQ CX, 8(AX)
290+
MOVQ BX, 16(AX)
291+
MOVQ SI, 24(AX)
292+
RET

ecc/bls12-377/fr/element_ops_noasm.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)