Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 8 of 8 for carryPropagate (0.19 sec)

  1. src/crypto/internal/edwards25519/field/fe_arm64.go

    // Use of this source code is governed by a BSD-style
    // license that can be found in the LICENSE file.
    
    //go:build !purego
    
    package field
    
    //go:noescape
    func carryPropagate(v *Element)
    
    func (v *Element) carryPropagate() *Element {
    	carryPropagate(v)
    	return v
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Mar 04 17:29:44 UTC 2024
    - 323 bytes
    - Viewed (0)
  2. src/crypto/internal/edwards25519/field/fe_arm64.s

    //go:build !purego
    
    #include "textflag.h"
    
    // carryPropagate works exactly like carryPropagateGeneric and uses the
    // same AND, ADD, and LSR+MADD instructions emitted by the compiler, but
    // avoids loading R0-R4 twice and uses LDP and STP.
    //
    // See https://golang.org/issues/43145 for the main compiler issue.
    //
    // func carryPropagate(v *Element)
    TEXT ·carryPropagate(SB),NOFRAME|NOSPLIT,$0-8
    	MOVD v+0(FP), R20
    
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Mar 04 17:29:44 UTC 2024
    - 1K bytes
    - Viewed (0)
  3. src/crypto/internal/edwards25519/field/fe_arm64_noasm.go

    // Use of this source code is governed by a BSD-style
    // license that can be found in the LICENSE file.
    
    //go:build !arm64 || purego
    
    package field
    
    func (v *Element) carryPropagate() *Element {
    	return v.carryPropagateGeneric()
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Mar 04 17:29:44 UTC 2024
    - 290 bytes
    - Viewed (0)
  4. src/crypto/internal/edwards25519/field/fe_generic.go

    	// to obtain a result with limbs that are at most slightly larger than 2⁵¹,
    	// to respect the Element invariant.
    	//
    	// Overall, the reduction works the same as carryPropagate, except with
    	// wider inputs: we take the carry for each coefficient by shifting it right
    	// by 51, and add it to the limb above it. The top carry is multiplied by 19
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed Sep 27 01:16:19 UTC 2023
    - 8.5K bytes
    - Viewed (0)
  5. src/crypto/internal/edwards25519/field/fe_amd64.s

    	ADDQ   R14, DI
    	ANDQ   AX, R9
    	ADDQ   SI, R9
    	ANDQ   AX, R11
    	ADDQ   R8, R11
    	ANDQ   AX, R13
    	ADDQ   R10, R13
    	ANDQ   AX, R15
    	ADDQ   R12, R15
    
    	// Second reduction chain (carryPropagate)
    	MOVQ   DI, SI
    	SHRQ   $0x33, SI
    	MOVQ   R9, R8
    	SHRQ   $0x33, R8
    	MOVQ   R11, R10
    	SHRQ   $0x33, R10
    	MOVQ   R13, R12
    	SHRQ   $0x33, R12
    	MOVQ   R15, R14
    	SHRQ   $0x33, R14
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Mar 04 17:29:44 UTC 2024
    - 5.7K bytes
    - Viewed (0)
  6. src/crypto/internal/edwards25519/field/_asm/fe_amd64_asm.go

    	maskAndAdd(r1lo, maskLow51Bits, c0, 1)
    	maskAndAdd(r2lo, maskLow51Bits, c1, 1)
    	maskAndAdd(r3lo, maskLow51Bits, c2, 1)
    	maskAndAdd(r4lo, maskLow51Bits, c3, 1)
    
    	Comment("Second reduction chain (carryPropagate)")
    	// c0 = r0 >> 51
    	MOVQ(r0lo, c0)
    	SHRQ(Imm(51), c0)
    	// c1 = r1 >> 51
    	MOVQ(r1lo, c1)
    	SHRQ(Imm(51), c1)
    	// c2 = r2 >> 51
    	MOVQ(r2lo, c2)
    	SHRQ(Imm(51), c2)
    	// c3 = r3 >> 51
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Mar 04 17:29:44 UTC 2024
    - 7.2K bytes
    - Viewed (0)
  7. src/crypto/internal/edwards25519/field/fe.go

    // One sets v = 1, and returns v.
    func (v *Element) One() *Element {
    	*v = *feOne
    	return v
    }
    
    // reduce reduces v modulo 2^255 - 19 and returns it.
    func (v *Element) reduce() *Element {
    	v.carryPropagate()
    
    	// After the light reduction we now have a field element representation
    	// v < 2^255 + 2^13 * 19, but need v < 2^255 - 19.
    
    	// If v >= 2^255 - 19, then v + 19 >= 2^255, which would overflow 2^255 - 1,
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon May 13 18:57:38 UTC 2024
    - 11.8K bytes
    - Viewed (0)
  8. src/crypto/internal/edwards25519/field/fe_test.go

    		}
    	}
    }
    
    func TestCarryPropagate(t *testing.T) {
    	asmLikeGeneric := func(a [5]uint64) bool {
    		t1 := &Element{a[0], a[1], a[2], a[3], a[4]}
    		t2 := &Element{a[0], a[1], a[2], a[3], a[4]}
    
    		t1.carryPropagate()
    		t2.carryPropagateGeneric()
    
    		if *t1 != *t2 {
    			t.Logf("got: %#v,\nexpected: %#v", t1, t2)
    		}
    
    		return *t1 == *t2 && isInBounds(t2)
    	}
    
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Aug 28 17:26:17 UTC 2023
    - 13.9K bytes
    - Viewed (0)
Back to top