mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-04 00:22:26 -06:00 
			
		
		
		
	* update dependencies, bump Go version to 1.19 * bump test image Go version * update golangci-lint * update gotosocial-drone-build * sign * linting, go fmt * update swagger docs * update swagger docs * whitespace * update contributing.md * fuckin whoopsie doopsie * linterino, linteroni * fix followrequest test not starting processor * fix other api/client tests not starting processor * fix remaining tests where processor not started * bump go-runners version * don't check last-webfingered-at, processor may have updated this * update swagger command * update bun to latest version * fix embed to work the same as before with new bun Signed-off-by: kim <grufwub@gmail.com> Co-authored-by: tsmethurst <tobi.smethurst@protonmail.com>
		
			
				
	
	
		
			85 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
//+build !noasm,!appengine,gc
 | 
						|
 | 
						|
// Copyright (c) 2020 MinIO Inc. All rights reserved.
 | 
						|
// Use of this source code is governed by a license that can be
 | 
						|
// found in the LICENSE file.
 | 
						|
 | 
						|
package md5simd
 | 
						|
 | 
						|
// Helper struct for sorting blocks based on length
 | 
						|
type lane struct {
 | 
						|
	len uint
 | 
						|
	pos uint
 | 
						|
}
 | 
						|
 | 
						|
type digest struct {
 | 
						|
	s [4]uint32
 | 
						|
}
 | 
						|
 | 
						|
// Helper struct for generating number of rounds in combination with mask for valid lanes
 | 
						|
type maskRounds struct {
 | 
						|
	mask   uint64
 | 
						|
	rounds uint64
 | 
						|
}
 | 
						|
 | 
						|
func generateMaskAndRounds8(input [8][]byte, mr *[8]maskRounds) (rounds int) {
 | 
						|
	// Sort on blocks length small to large
 | 
						|
	var sorted [8]lane
 | 
						|
	for c, inpt := range input[:] {
 | 
						|
		sorted[c] = lane{uint(len(inpt)), uint(c)}
 | 
						|
		for i := c - 1; i >= 0; i-- {
 | 
						|
			// swap so largest is at the end...
 | 
						|
			if sorted[i].len > sorted[i+1].len {
 | 
						|
				sorted[i], sorted[i+1] = sorted[i+1], sorted[i]
 | 
						|
				continue
 | 
						|
			}
 | 
						|
			break
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	// Create mask array including 'rounds' (of processing blocks of 64 bytes) between masks
 | 
						|
	m, round := uint64(0xff), uint64(0)
 | 
						|
 | 
						|
	for _, s := range sorted[:] {
 | 
						|
		if s.len > 0 {
 | 
						|
			if uint64(s.len)>>6 > round {
 | 
						|
				mr[rounds] = maskRounds{m, (uint64(s.len) >> 6) - round}
 | 
						|
				rounds++
 | 
						|
			}
 | 
						|
			round = uint64(s.len) >> 6
 | 
						|
		}
 | 
						|
		m = m & ^(1 << uint(s.pos))
 | 
						|
	}
 | 
						|
	return
 | 
						|
}
 | 
						|
 | 
						|
func generateMaskAndRounds16(input [16][]byte, mr *[16]maskRounds) (rounds int) {
 | 
						|
	// Sort on blocks length small to large
 | 
						|
	var sorted [16]lane
 | 
						|
	for c, inpt := range input[:] {
 | 
						|
		sorted[c] = lane{uint(len(inpt)), uint(c)}
 | 
						|
		for i := c - 1; i >= 0; i-- {
 | 
						|
			// swap so largest is at the end...
 | 
						|
			if sorted[i].len > sorted[i+1].len {
 | 
						|
				sorted[i], sorted[i+1] = sorted[i+1], sorted[i]
 | 
						|
				continue
 | 
						|
			}
 | 
						|
			break
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	// Create mask array including 'rounds' (of processing blocks of 64 bytes) between masks
 | 
						|
	m, round := uint64(0xffff), uint64(0)
 | 
						|
 | 
						|
	for _, s := range sorted[:] {
 | 
						|
		if s.len > 0 {
 | 
						|
			if uint64(s.len)>>6 > round {
 | 
						|
				mr[rounds] = maskRounds{m, (uint64(s.len) >> 6) - round}
 | 
						|
				rounds++
 | 
						|
			}
 | 
						|
			round = uint64(s.len) >> 6
 | 
						|
		}
 | 
						|
		m = m & ^(1 << uint(s.pos))
 | 
						|
	}
 | 
						|
	return
 | 
						|
}
 |