mirror of
				https://github.com/minio/minio.git
				synced 2025-10-30 00:05:02 -04:00 
			
		
		
		
	vendorize deps for snappy, blake2b and sha256 (#3476)
Bring in new optimization and portability changes. Fixes https://github.com/minio/minio-go/issues/578
This commit is contained in:
		
							parent
							
								
									85c6bb9809
								
							
						
					
					
						commit
						faa6b1e925
					
				| @ -18,7 +18,6 @@ package cmd | ||||
| 
 | ||||
| import ( | ||||
| 	"crypto/md5" | ||||
| 	"crypto/sha256" | ||||
| 	"encoding/hex" | ||||
| 	"fmt" | ||||
| 	"hash" | ||||
| @ -26,6 +25,8 @@ import ( | ||||
| 	"path" | ||||
| 	"strings" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/minio/sha256-simd" | ||||
| ) | ||||
| 
 | ||||
| // listMultipartUploads - lists all multipart uploads. | ||||
|  | ||||
| @ -18,7 +18,6 @@ package cmd | ||||
| 
 | ||||
| import ( | ||||
| 	"crypto/md5" | ||||
| 	"crypto/sha256" | ||||
| 	"encoding/hex" | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| @ -29,6 +28,7 @@ import ( | ||||
| 	"strings" | ||||
| 
 | ||||
| 	"github.com/minio/minio/pkg/mimedb" | ||||
| 	"github.com/minio/sha256-simd" | ||||
| ) | ||||
| 
 | ||||
| // fsObjects - Implements fs object layer. | ||||
|  | ||||
| @ -18,9 +18,10 @@ package cmd | ||||
| 
 | ||||
| import ( | ||||
| 	"crypto/md5" | ||||
| 	"crypto/sha256" | ||||
| 	"encoding/base64" | ||||
| 	"encoding/hex" | ||||
| 
 | ||||
| 	"github.com/minio/sha256-simd" | ||||
| ) | ||||
| 
 | ||||
| // getSHA256Hash returns SHA-256 hash of given data. | ||||
|  | ||||
| @ -18,7 +18,6 @@ package cmd | ||||
| 
 | ||||
| import ( | ||||
| 	"crypto/md5" | ||||
| 	"crypto/sha256" | ||||
| 	"encoding/hex" | ||||
| 	"fmt" | ||||
| 	"hash" | ||||
| @ -29,6 +28,7 @@ import ( | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/minio/minio/pkg/mimedb" | ||||
| 	"github.com/minio/sha256-simd" | ||||
| ) | ||||
| 
 | ||||
| // listMultipartUploads - lists all multipart uploads. | ||||
|  | ||||
| @ -18,7 +18,6 @@ package cmd | ||||
| 
 | ||||
| import ( | ||||
| 	"crypto/md5" | ||||
| 	"crypto/sha256" | ||||
| 	"encoding/hex" | ||||
| 	"hash" | ||||
| 	"io" | ||||
| @ -30,6 +29,7 @@ import ( | ||||
| 	"github.com/minio/minio/pkg/bpool" | ||||
| 	"github.com/minio/minio/pkg/mimedb" | ||||
| 	"github.com/minio/minio/pkg/objcache" | ||||
| 	"github.com/minio/sha256-simd" | ||||
| ) | ||||
| 
 | ||||
| // list all errors which can be ignored in object operations. | ||||
|  | ||||
							
								
								
									
										101
									
								
								vendor/github.com/golang/snappy/decode_other.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								vendor/github.com/golang/snappy/decode_other.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,101 @@ | ||||
| // Copyright 2016 The Snappy-Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build !amd64 appengine !gc noasm | ||||
| 
 | ||||
| package snappy | ||||
| 
 | ||||
| // decode writes the decoding of src to dst. It assumes that the varint-encoded | ||||
| // length of the decompressed bytes has already been read, and that len(dst) | ||||
| // equals that length. | ||||
| // | ||||
| // It returns 0 on success or a decodeErrCodeXxx error code on failure. | ||||
| func decode(dst, src []byte) int { | ||||
| 	var d, s, offset, length int | ||||
| 	for s < len(src) { | ||||
| 		switch src[s] & 0x03 { | ||||
| 		case tagLiteral: | ||||
| 			x := uint32(src[s] >> 2) | ||||
| 			switch { | ||||
| 			case x < 60: | ||||
| 				s++ | ||||
| 			case x == 60: | ||||
| 				s += 2 | ||||
| 				if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. | ||||
| 					return decodeErrCodeCorrupt | ||||
| 				} | ||||
| 				x = uint32(src[s-1]) | ||||
| 			case x == 61: | ||||
| 				s += 3 | ||||
| 				if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. | ||||
| 					return decodeErrCodeCorrupt | ||||
| 				} | ||||
| 				x = uint32(src[s-2]) | uint32(src[s-1])<<8 | ||||
| 			case x == 62: | ||||
| 				s += 4 | ||||
| 				if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. | ||||
| 					return decodeErrCodeCorrupt | ||||
| 				} | ||||
| 				x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 | ||||
| 			case x == 63: | ||||
| 				s += 5 | ||||
| 				if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. | ||||
| 					return decodeErrCodeCorrupt | ||||
| 				} | ||||
| 				x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 | ||||
| 			} | ||||
| 			length = int(x) + 1 | ||||
| 			if length <= 0 { | ||||
| 				return decodeErrCodeUnsupportedLiteralLength | ||||
| 			} | ||||
| 			if length > len(dst)-d || length > len(src)-s { | ||||
| 				return decodeErrCodeCorrupt | ||||
| 			} | ||||
| 			copy(dst[d:], src[s:s+length]) | ||||
| 			d += length | ||||
| 			s += length | ||||
| 			continue | ||||
| 
 | ||||
| 		case tagCopy1: | ||||
| 			s += 2 | ||||
| 			if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. | ||||
| 				return decodeErrCodeCorrupt | ||||
| 			} | ||||
| 			length = 4 + int(src[s-2])>>2&0x7 | ||||
| 			offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) | ||||
| 
 | ||||
| 		case tagCopy2: | ||||
| 			s += 3 | ||||
| 			if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. | ||||
| 				return decodeErrCodeCorrupt | ||||
| 			} | ||||
| 			length = 1 + int(src[s-3])>>2 | ||||
| 			offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) | ||||
| 
 | ||||
| 		case tagCopy4: | ||||
| 			s += 5 | ||||
| 			if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. | ||||
| 				return decodeErrCodeCorrupt | ||||
| 			} | ||||
| 			length = 1 + int(src[s-5])>>2 | ||||
| 			offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) | ||||
| 		} | ||||
| 
 | ||||
| 		if offset <= 0 || d < offset || length > len(dst)-d { | ||||
| 			return decodeErrCodeCorrupt | ||||
| 		} | ||||
| 		// Copy from an earlier sub-slice of dst to a later sub-slice. Unlike | ||||
| 		// the built-in copy function, this byte-by-byte copy always runs | ||||
| 		// forwards, even if the slices overlap. Conceptually, this is: | ||||
| 		// | ||||
| 		// d += forwardCopy(dst[d:d+length], dst[d-offset:]) | ||||
| 		for end := d + length; d != end; d++ { | ||||
| 			dst[d] = dst[d-offset] | ||||
| 		} | ||||
| 	} | ||||
| 	if d != len(dst) { | ||||
| 		return decodeErrCodeCorrupt | ||||
| 	} | ||||
| 	return 0 | ||||
| } | ||||
							
								
								
									
										238
									
								
								vendor/github.com/golang/snappy/encode_other.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										238
									
								
								vendor/github.com/golang/snappy/encode_other.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,238 @@ | ||||
| // Copyright 2016 The Snappy-Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build !amd64 appengine !gc noasm | ||||
| 
 | ||||
| package snappy | ||||
| 
 | ||||
| func load32(b []byte, i int) uint32 { | ||||
| 	b = b[i : i+4 : len(b)] // Help the compiler eliminate bounds checks on the next line. | ||||
| 	return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 | ||||
| } | ||||
| 
 | ||||
| func load64(b []byte, i int) uint64 { | ||||
| 	b = b[i : i+8 : len(b)] // Help the compiler eliminate bounds checks on the next line. | ||||
| 	return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | | ||||
| 		uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 | ||||
| } | ||||
| 
 | ||||
| // emitLiteral writes a literal chunk and returns the number of bytes written. | ||||
| // | ||||
| // It assumes that: | ||||
| //	dst is long enough to hold the encoded bytes | ||||
| //	1 <= len(lit) && len(lit) <= 65536 | ||||
| func emitLiteral(dst, lit []byte) int { | ||||
| 	i, n := 0, uint(len(lit)-1) | ||||
| 	switch { | ||||
| 	case n < 60: | ||||
| 		dst[0] = uint8(n)<<2 | tagLiteral | ||||
| 		i = 1 | ||||
| 	case n < 1<<8: | ||||
| 		dst[0] = 60<<2 | tagLiteral | ||||
| 		dst[1] = uint8(n) | ||||
| 		i = 2 | ||||
| 	default: | ||||
| 		dst[0] = 61<<2 | tagLiteral | ||||
| 		dst[1] = uint8(n) | ||||
| 		dst[2] = uint8(n >> 8) | ||||
| 		i = 3 | ||||
| 	} | ||||
| 	return i + copy(dst[i:], lit) | ||||
| } | ||||
| 
 | ||||
| // emitCopy writes a copy chunk and returns the number of bytes written. | ||||
| // | ||||
| // It assumes that: | ||||
| //	dst is long enough to hold the encoded bytes | ||||
| //	1 <= offset && offset <= 65535 | ||||
| //	4 <= length && length <= 65535 | ||||
| func emitCopy(dst []byte, offset, length int) int { | ||||
| 	i := 0 | ||||
| 	// The maximum length for a single tagCopy1 or tagCopy2 op is 64 bytes. The | ||||
| 	// threshold for this loop is a little higher (at 68 = 64 + 4), and the | ||||
| 	// length emitted down below is is a little lower (at 60 = 64 - 4), because | ||||
| 	// it's shorter to encode a length 67 copy as a length 60 tagCopy2 followed | ||||
| 	// by a length 7 tagCopy1 (which encodes as 3+2 bytes) than to encode it as | ||||
| 	// a length 64 tagCopy2 followed by a length 3 tagCopy2 (which encodes as | ||||
| 	// 3+3 bytes). The magic 4 in the 64±4 is because the minimum length for a | ||||
| 	// tagCopy1 op is 4 bytes, which is why a length 3 copy has to be an | ||||
| 	// encodes-as-3-bytes tagCopy2 instead of an encodes-as-2-bytes tagCopy1. | ||||
| 	for length >= 68 { | ||||
| 		// Emit a length 64 copy, encoded as 3 bytes. | ||||
| 		dst[i+0] = 63<<2 | tagCopy2 | ||||
| 		dst[i+1] = uint8(offset) | ||||
| 		dst[i+2] = uint8(offset >> 8) | ||||
| 		i += 3 | ||||
| 		length -= 64 | ||||
| 	} | ||||
| 	if length > 64 { | ||||
| 		// Emit a length 60 copy, encoded as 3 bytes. | ||||
| 		dst[i+0] = 59<<2 | tagCopy2 | ||||
| 		dst[i+1] = uint8(offset) | ||||
| 		dst[i+2] = uint8(offset >> 8) | ||||
| 		i += 3 | ||||
| 		length -= 60 | ||||
| 	} | ||||
| 	if length >= 12 || offset >= 2048 { | ||||
| 		// Emit the remaining copy, encoded as 3 bytes. | ||||
| 		dst[i+0] = uint8(length-1)<<2 | tagCopy2 | ||||
| 		dst[i+1] = uint8(offset) | ||||
| 		dst[i+2] = uint8(offset >> 8) | ||||
| 		return i + 3 | ||||
| 	} | ||||
| 	// Emit the remaining copy, encoded as 2 bytes. | ||||
| 	dst[i+0] = uint8(offset>>8)<<5 | uint8(length-4)<<2 | tagCopy1 | ||||
| 	dst[i+1] = uint8(offset) | ||||
| 	return i + 2 | ||||
| } | ||||
| 
 | ||||
| // extendMatch returns the largest k such that k <= len(src) and that | ||||
| // src[i:i+k-j] and src[j:k] have the same contents. | ||||
| // | ||||
| // It assumes that: | ||||
| //	0 <= i && i < j && j <= len(src) | ||||
| func extendMatch(src []byte, i, j int) int { | ||||
| 	for ; j < len(src) && src[i] == src[j]; i, j = i+1, j+1 { | ||||
| 	} | ||||
| 	return j | ||||
| } | ||||
| 
 | ||||
| func hash(u, shift uint32) uint32 { | ||||
| 	return (u * 0x1e35a7bd) >> shift | ||||
| } | ||||
| 
 | ||||
| // encodeBlock encodes a non-empty src to a guaranteed-large-enough dst. It | ||||
| // assumes that the varint-encoded length of the decompressed bytes has already | ||||
| // been written. | ||||
| // | ||||
| // It also assumes that: | ||||
| //	len(dst) >= MaxEncodedLen(len(src)) && | ||||
| // 	minNonLiteralBlockSize <= len(src) && len(src) <= maxBlockSize | ||||
| func encodeBlock(dst, src []byte) (d int) { | ||||
| 	// Initialize the hash table. Its size ranges from 1<<8 to 1<<14 inclusive. | ||||
| 	// The table element type is uint16, as s < sLimit and sLimit < len(src) | ||||
| 	// and len(src) <= maxBlockSize and maxBlockSize == 65536. | ||||
| 	const ( | ||||
| 		maxTableSize = 1 << 14 | ||||
| 		// tableMask is redundant, but helps the compiler eliminate bounds | ||||
| 		// checks. | ||||
| 		tableMask = maxTableSize - 1 | ||||
| 	) | ||||
| 	shift := uint32(32 - 8) | ||||
| 	for tableSize := 1 << 8; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 { | ||||
| 		shift-- | ||||
| 	} | ||||
| 	// In Go, all array elements are zero-initialized, so there is no advantage | ||||
| 	// to a smaller tableSize per se. However, it matches the C++ algorithm, | ||||
| 	// and in the asm versions of this code, we can get away with zeroing only | ||||
| 	// the first tableSize elements. | ||||
| 	var table [maxTableSize]uint16 | ||||
| 
 | ||||
| 	// sLimit is when to stop looking for offset/length copies. The inputMargin | ||||
| 	// lets us use a fast path for emitLiteral in the main loop, while we are | ||||
| 	// looking for copies. | ||||
| 	sLimit := len(src) - inputMargin | ||||
| 
 | ||||
| 	// nextEmit is where in src the next emitLiteral should start from. | ||||
| 	nextEmit := 0 | ||||
| 
 | ||||
| 	// The encoded form must start with a literal, as there are no previous | ||||
| 	// bytes to copy, so we start looking for hash matches at s == 1. | ||||
| 	s := 1 | ||||
| 	nextHash := hash(load32(src, s), shift) | ||||
| 
 | ||||
| 	for { | ||||
| 		// Copied from the C++ snappy implementation: | ||||
| 		// | ||||
| 		// Heuristic match skipping: If 32 bytes are scanned with no matches | ||||
| 		// found, start looking only at every other byte. If 32 more bytes are | ||||
| 		// scanned (or skipped), look at every third byte, etc.. When a match | ||||
| 		// is found, immediately go back to looking at every byte. This is a | ||||
| 		// small loss (~5% performance, ~0.1% density) for compressible data | ||||
| 		// due to more bookkeeping, but for non-compressible data (such as | ||||
| 		// JPEG) it's a huge win since the compressor quickly "realizes" the | ||||
| 		// data is incompressible and doesn't bother looking for matches | ||||
| 		// everywhere. | ||||
| 		// | ||||
| 		// The "skip" variable keeps track of how many bytes there are since | ||||
| 		// the last match; dividing it by 32 (ie. right-shifting by five) gives | ||||
| 		// the number of bytes to move ahead for each iteration. | ||||
| 		skip := 32 | ||||
| 
 | ||||
| 		nextS := s | ||||
| 		candidate := 0 | ||||
| 		for { | ||||
| 			s = nextS | ||||
| 			bytesBetweenHashLookups := skip >> 5 | ||||
| 			nextS = s + bytesBetweenHashLookups | ||||
| 			skip += bytesBetweenHashLookups | ||||
| 			if nextS > sLimit { | ||||
| 				goto emitRemainder | ||||
| 			} | ||||
| 			candidate = int(table[nextHash&tableMask]) | ||||
| 			table[nextHash&tableMask] = uint16(s) | ||||
| 			nextHash = hash(load32(src, nextS), shift) | ||||
| 			if load32(src, s) == load32(src, candidate) { | ||||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		// A 4-byte match has been found. We'll later see if more than 4 bytes | ||||
| 		// match. But, prior to the match, src[nextEmit:s] are unmatched. Emit | ||||
| 		// them as literal bytes. | ||||
| 		d += emitLiteral(dst[d:], src[nextEmit:s]) | ||||
| 
 | ||||
| 		// Call emitCopy, and then see if another emitCopy could be our next | ||||
| 		// move. Repeat until we find no match for the input immediately after | ||||
| 		// what was consumed by the last emitCopy call. | ||||
| 		// | ||||
| 		// If we exit this loop normally then we need to call emitLiteral next, | ||||
| 		// though we don't yet know how big the literal will be. We handle that | ||||
| 		// by proceeding to the next iteration of the main loop. We also can | ||||
| 		// exit this loop via goto if we get close to exhausting the input. | ||||
| 		for { | ||||
| 			// Invariant: we have a 4-byte match at s, and no need to emit any | ||||
| 			// literal bytes prior to s. | ||||
| 			base := s | ||||
| 
 | ||||
| 			// Extend the 4-byte match as long as possible. | ||||
| 			// | ||||
| 			// This is an inlined version of: | ||||
| 			//	s = extendMatch(src, candidate+4, s+4) | ||||
| 			s += 4 | ||||
| 			for i := candidate + 4; s < len(src) && src[i] == src[s]; i, s = i+1, s+1 { | ||||
| 			} | ||||
| 
 | ||||
| 			d += emitCopy(dst[d:], base-candidate, s-base) | ||||
| 			nextEmit = s | ||||
| 			if s >= sLimit { | ||||
| 				goto emitRemainder | ||||
| 			} | ||||
| 
 | ||||
| 			// We could immediately start working at s now, but to improve | ||||
| 			// compression we first update the hash table at s-1 and at s. If | ||||
| 			// another emitCopy is not our next move, also calculate nextHash | ||||
| 			// at s+1. At least on GOARCH=amd64, these three hash calculations | ||||
| 			// are faster as one load64 call (with some shifts) instead of | ||||
| 			// three load32 calls. | ||||
| 			x := load64(src, s-1) | ||||
| 			prevHash := hash(uint32(x>>0), shift) | ||||
| 			table[prevHash&tableMask] = uint16(s - 1) | ||||
| 			currHash := hash(uint32(x>>8), shift) | ||||
| 			candidate = int(table[currHash&tableMask]) | ||||
| 			table[currHash&tableMask] = uint16(s) | ||||
| 			if uint32(x>>8) != load32(src, candidate) { | ||||
| 				nextHash = hash(uint32(x>>16), shift) | ||||
| 				s++ | ||||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| emitRemainder: | ||||
| 	if nextEmit < len(src) { | ||||
| 		d += emitLiteral(dst[d:], src[nextEmit:]) | ||||
| 	} | ||||
| 	return d | ||||
| } | ||||
							
								
								
									
										2
									
								
								vendor/github.com/klauspost/reedsolomon/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/klauspost/reedsolomon/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -193,6 +193,8 @@ Example of performance scaling on Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz - 4 ph | ||||
| # Links | ||||
| * [Backblaze Open Sources Reed-Solomon Erasure Coding Source Code](https://www.backblaze.com/blog/reed-solomon/). | ||||
| * [JavaReedSolomon](https://github.com/Backblaze/JavaReedSolomon). Compatible java library by Backblaze. | ||||
| * [reedsolomon-c](https://github.com/jannson/reedsolomon-c). C version, compatible with output from this package. | ||||
| * [Reed-Solomon Erasure Coding in Haskell](https://github.com/NicolasT/reedsolomon). Haskell port of the package with similar performance. | ||||
| * [go-erasure](https://github.com/somethingnew2-0/go-erasure). A similar library using cgo, slower in my tests. | ||||
| * [rsraid](https://github.com/goayame/rsraid). A similar library written in Go. Slower, but supports more shards. | ||||
| * [Screaming Fast Galois Field Arithmetic](http://www.snia.org/sites/default/files2/SDC2013/presentations/NewThinking/EthanMiller_Screaming_Fast_Galois_Field%20Arithmetic_SIMD%20Instructions.pdf). Basis for SSE3 optimizations. | ||||
|  | ||||
							
								
								
									
										2
									
								
								vendor/github.com/minio/blake2b-simd/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/minio/blake2b-simd/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -24,7 +24,7 @@ This is a summary of the performance improvements. Full details are shown below. | ||||
| asm2plan9s | ||||
| ---------- | ||||
| 
 | ||||
| In order to be able to work more easily with AVX2/AVX instructions, a separate tool was developed to convert AVX2/AVX instructions into the corresponding BYTE sequence as accepted by Go assembly. See [asm2plan9s](https://github.com/fwessels/asm2plan9s) for more information. | ||||
| In order to be able to work more easily with AVX2/AVX instructions, a separate tool was developed to convert AVX2/AVX instructions into the corresponding BYTE sequence as accepted by Go assembly. See [asm2plan9s](https://github.com/minio/asm2plan9s) for more information. | ||||
| 
 | ||||
| bt2sum | ||||
| ------ | ||||
|  | ||||
							
								
								
									
										11
									
								
								vendor/github.com/minio/blake2b-simd/compressAvx2_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/github.com/minio/blake2b-simd/compressAvx2_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -23,11 +23,12 @@ package blake2b | ||||
| func compressAVX2Loop(p []uint8, in, iv, t, f, shffle, out []uint64) | ||||
| 
 | ||||
| func compressAVX2(d *digest, p []uint8) { | ||||
| 	var ( | ||||
| 		in     [8]uint64 | ||||
| 		out    [8]uint64 | ||||
| 		shffle [8]uint64 | ||||
| 	) | ||||
| 
 | ||||
| 	in := make([]uint64, 8, 8) | ||||
| 	out := make([]uint64, 8, 8) | ||||
| 
 | ||||
| 	shffle := make([]uint64, 8, 8) | ||||
| 	// vector for PSHUFB instruction | ||||
| 	shffle[0] = 0x0201000706050403 | ||||
| 	shffle[1] = 0x0a09080f0e0d0c0b | ||||
| @ -40,7 +41,7 @@ func compressAVX2(d *digest, p []uint8) { | ||||
| 
 | ||||
| 	in[0], in[1], in[2], in[3], in[4], in[5], in[6], in[7] = d.h[0], d.h[1], d.h[2], d.h[3], d.h[4], d.h[5], d.h[6], d.h[7] | ||||
| 
 | ||||
| 	compressAVX2Loop(p, in, iv[:], d.t[:], d.f[:], shffle, out) | ||||
| 	compressAVX2Loop(p, in[:], iv[:], d.t[:], d.f[:], shffle[:], out[:]) | ||||
| 
 | ||||
| 	d.h[0], d.h[1], d.h[2], d.h[3], d.h[4], d.h[5], d.h[6], d.h[7] = out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7] | ||||
| } | ||||
|  | ||||
							
								
								
									
										11
									
								
								vendor/github.com/minio/blake2b-simd/compressAvx_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/github.com/minio/blake2b-simd/compressAvx_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -23,18 +23,19 @@ package blake2b | ||||
| func blockAVXLoop(p []uint8, in, iv, t, f, shffle, out []uint64) | ||||
| 
 | ||||
| func compressAVX(d *digest, p []uint8) { | ||||
| 	var ( | ||||
| 		in     [8]uint64 | ||||
| 		out    [8]uint64 | ||||
| 		shffle [2]uint64 | ||||
| 	) | ||||
| 
 | ||||
| 	in := make([]uint64, 8, 8) | ||||
| 	out := make([]uint64, 8, 8) | ||||
| 
 | ||||
| 	shffle := make([]uint64, 2, 2) | ||||
| 	// vector for PSHUFB instruction | ||||
| 	shffle[0] = 0x0201000706050403 | ||||
| 	shffle[1] = 0x0a09080f0e0d0c0b | ||||
| 
 | ||||
| 	in[0], in[1], in[2], in[3], in[4], in[5], in[6], in[7] = d.h[0], d.h[1], d.h[2], d.h[3], d.h[4], d.h[5], d.h[6], d.h[7] | ||||
| 
 | ||||
| 	blockAVXLoop(p, in, iv[:], d.t[:], d.f[:], shffle, out) | ||||
| 	blockAVXLoop(p, in[:], iv[:], d.t[:], d.f[:], shffle[:], out[:]) | ||||
| 
 | ||||
| 	d.h[0], d.h[1], d.h[2], d.h[3], d.h[4], d.h[5], d.h[6], d.h[7] = out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7] | ||||
| } | ||||
|  | ||||
							
								
								
									
										1348
									
								
								vendor/github.com/minio/blake2b-simd/compressAvx_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1348
									
								
								vendor/github.com/minio/blake2b-simd/compressAvx_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										11
									
								
								vendor/github.com/minio/blake2b-simd/compressSse_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/github.com/minio/blake2b-simd/compressSse_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -23,18 +23,19 @@ package blake2b | ||||
| func blockSSELoop(p []uint8, in, iv, t, f, shffle, out []uint64) | ||||
| 
 | ||||
| func compressSSE(d *digest, p []uint8) { | ||||
| 	var ( | ||||
| 		in     [8]uint64 | ||||
| 		out    [8]uint64 | ||||
| 		shffle [2]uint64 | ||||
| 	) | ||||
| 
 | ||||
| 	in := make([]uint64, 8, 8) | ||||
| 	out := make([]uint64, 8, 8) | ||||
| 
 | ||||
| 	shffle := make([]uint64, 2, 2) | ||||
| 	// vector for PSHUFB instruction | ||||
| 	shffle[0] = 0x0201000706050403 | ||||
| 	shffle[1] = 0x0a09080f0e0d0c0b | ||||
| 
 | ||||
| 	in[0], in[1], in[2], in[3], in[4], in[5], in[6], in[7] = d.h[0], d.h[1], d.h[2], d.h[3], d.h[4], d.h[5], d.h[6], d.h[7] | ||||
| 
 | ||||
| 	blockSSELoop(p, in, iv[:], d.t[:], d.f[:], shffle, out) | ||||
| 	blockSSELoop(p, in[:], iv[:], d.t[:], d.f[:], shffle[:], out[:]) | ||||
| 
 | ||||
| 	d.h[0], d.h[1], d.h[2], d.h[3], d.h[4], d.h[5], d.h[6], d.h[7] = out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7] | ||||
| } | ||||
|  | ||||
							
								
								
									
										1526
									
								
								vendor/github.com/minio/blake2b-simd/compressSse_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1526
									
								
								vendor/github.com/minio/blake2b-simd/compressSse_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										9
									
								
								vendor/github.com/minio/blake2b-simd/compress_generic.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/minio/blake2b-simd/compress_generic.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -26,12 +26,13 @@ func compressGeneric(d *digest, p []uint8) { | ||||
| 		v13 := iv[5] ^ d.t[1] | ||||
| 		v14 := iv[6] ^ d.f[0] | ||||
| 		v15 := iv[7] ^ d.f[1] | ||||
| 		var m [16]uint64 | ||||
| 
 | ||||
| 		j := 0 | ||||
| 		for i := 0; i < 16; i++ { | ||||
| 			m[i] = uint64(p[j]) | uint64(p[j+1])<<8 | uint64(p[j+2])<<16 | uint64(p[j+3])<<24 | | ||||
| 				uint64(p[j+4])<<32 | uint64(p[j+5])<<40 | uint64(p[j+6])<<48 | uint64(p[j+7])<<56 | ||||
| 		var m [16]uint64 | ||||
| 		for i := range m { | ||||
| 			m[i] = uint64(p[j]) | uint64(p[j+1])<<8 | uint64(p[j+2])<<16 | | ||||
| 				uint64(p[j+3])<<24 | uint64(p[j+4])<<32 | uint64(p[j+5])<<40 | | ||||
| 				uint64(p[j+6])<<48 | uint64(p[j+7])<<56 | ||||
| 			j += 8 | ||||
| 		} | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										22
									
								
								vendor/github.com/minio/sha256-simd/cpuid_386.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/minio/sha256-simd/cpuid_386.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,4 +1,24 @@ | ||||
| // Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. | ||||
| // The MIT License (MIT) | ||||
| // | ||||
| // Copyright (c) 2015 Klaus Post | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| // in the Software without restriction, including without limitation the rights | ||||
| // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| // copies of the Software, and to permit persons to whom the Software is | ||||
| // furnished to do so, subject to the following conditions: | ||||
| // | ||||
| // The above copyright notice and this permission notice shall be included in all | ||||
| // copies or substantial portions of the Software. | ||||
| // | ||||
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| // SOFTWARE. | ||||
| 
 | ||||
| // +build 386,!gccgo | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										22
									
								
								vendor/github.com/minio/sha256-simd/cpuid_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/minio/sha256-simd/cpuid_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,4 +1,24 @@ | ||||
| // Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. | ||||
| // The MIT License (MIT) | ||||
| // | ||||
| // Copyright (c) 2015 Klaus Post | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| // in the Software without restriction, including without limitation the rights | ||||
| // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| // copies of the Software, and to permit persons to whom the Software is | ||||
| // furnished to do so, subject to the following conditions: | ||||
| // | ||||
| // The above copyright notice and this permission notice shall be included in all | ||||
| // copies or substantial portions of the Software. | ||||
| // | ||||
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| // SOFTWARE. | ||||
| 
 | ||||
| // +build amd64,!gccgo | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										3
									
								
								vendor/github.com/minio/sha256-simd/cpuid_arm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/minio/sha256-simd/cpuid_arm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -28,6 +28,5 @@ func xgetbv(index uint32) (eax, edx uint32) { | ||||
| } | ||||
| 
 | ||||
| func haveArmSha() bool { | ||||
| 	// TODO: Implement feature detection for ARM | ||||
| 	return true | ||||
| 	return false | ||||
| } | ||||
|  | ||||
							
								
								
									
										49
									
								
								vendor/github.com/minio/sha256-simd/cpuid_linux_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								vendor/github.com/minio/sha256-simd/cpuid_linux_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | ||||
| // +build arm64,linux | ||||
| 
 | ||||
| // Minio Cloud Storage, (C) 2016 Minio, Inc. | ||||
| // | ||||
| // Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| // you may not use this file except in compliance with the License. | ||||
| // You may obtain a copy of the License at | ||||
| // | ||||
| //     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| // | ||||
| // Unless required by applicable law or agreed to in writing, software | ||||
| // distributed under the License is distributed on an "AS IS" BASIS, | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
| // | ||||
| 
 | ||||
| package sha256 | ||||
| 
 | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"io/ioutil" | ||||
| ) | ||||
| 
 | ||||
| func cpuid(op uint32) (eax, ebx, ecx, edx uint32) { | ||||
| 	return 0, 0, 0, 0 | ||||
| } | ||||
| 
 | ||||
| func cpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32) { | ||||
| 	return 0, 0, 0, 0 | ||||
| } | ||||
| 
 | ||||
| func xgetbv(index uint32) (eax, edx uint32) { | ||||
| 	return 0, 0 | ||||
| } | ||||
| 
 | ||||
| // File to check for cpu capabilities. | ||||
| const procCPUInfo = "/proc/cpuinfo" | ||||
| 
 | ||||
| // Feature to check for. | ||||
| const sha256Feature = "sha2" | ||||
| 
 | ||||
| func haveArmSha() bool { | ||||
| 	cpuInfo, err := ioutil.ReadFile(procCPUInfo) | ||||
| 	if err != nil { | ||||
| 		return false | ||||
| 	} | ||||
| 	return bytes.Contains(cpuInfo, []byte(sha256Feature)) | ||||
| } | ||||
							
								
								
									
										35
									
								
								vendor/github.com/minio/sha256-simd/cpuid_others_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								vendor/github.com/minio/sha256-simd/cpuid_others_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,35 @@ | ||||
| // +build arm64,!linux | ||||
| 
 | ||||
| // Minio Cloud Storage, (C) 2016 Minio, Inc. | ||||
| // | ||||
| // Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| // you may not use this file except in compliance with the License. | ||||
| // You may obtain a copy of the License at | ||||
| // | ||||
| //     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| // | ||||
| // Unless required by applicable law or agreed to in writing, software | ||||
| // distributed under the License is distributed on an "AS IS" BASIS, | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
| // | ||||
| 
 | ||||
| package sha256 | ||||
| 
 | ||||
| func cpuid(op uint32) (eax, ebx, ecx, edx uint32) { | ||||
| 	return 0, 0, 0, 0 | ||||
| } | ||||
| 
 | ||||
| func cpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32) { | ||||
| 	return 0, 0, 0, 0 | ||||
| } | ||||
| 
 | ||||
| func xgetbv(index uint32) (eax, edx uint32) { | ||||
| 	return 0, 0 | ||||
| } | ||||
| 
 | ||||
| // Check for sha2 instruction flag. | ||||
| func haveArmSha() bool { | ||||
| 	return false | ||||
| } | ||||
| @ -28,6 +28,5 @@ func xgetbv(index uint32) (eax, edx uint32) { | ||||
| } | ||||
| 
 | ||||
| func haveArmSha() bool { | ||||
| 	// TODO: Implement feature detection for ARM | ||||
| 	return true | ||||
| 	return false | ||||
| } | ||||
							
								
								
									
										32
									
								
								vendor/github.com/minio/sha256-simd/cpuid_ppc64le.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								vendor/github.com/minio/sha256-simd/cpuid_ppc64le.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,32 @@ | ||||
| // Minio Cloud Storage, (C) 2016 Minio, Inc. | ||||
| // | ||||
| // Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| // you may not use this file except in compliance with the License. | ||||
| // You may obtain a copy of the License at | ||||
| // | ||||
| //     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| // | ||||
| // Unless required by applicable law or agreed to in writing, software | ||||
| // distributed under the License is distributed on an "AS IS" BASIS, | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
| // | ||||
| 
 | ||||
| package sha256 | ||||
| 
 | ||||
| func cpuid(op uint32) (eax, ebx, ecx, edx uint32) { | ||||
| 	return 0, 0, 0, 0 | ||||
| } | ||||
| 
 | ||||
| func cpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32) { | ||||
| 	return 0, 0, 0, 0 | ||||
| } | ||||
| 
 | ||||
| func xgetbv(index uint32) (eax, edx uint32) { | ||||
| 	return 0, 0 | ||||
| } | ||||
| 
 | ||||
| func haveArmSha() bool { | ||||
| 	return false | ||||
| } | ||||
							
								
								
									
										3
									
								
								vendor/github.com/minio/sha256-simd/sha256.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/minio/sha256-simd/sha256.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -89,7 +89,8 @@ func New() hash.Hash { | ||||
| 		d.Reset() | ||||
| 		return d | ||||
| 	} | ||||
| 	// default back to the standard golang implementation | ||||
| 	// Fallback to the standard golang implementation | ||||
| 	// if no features were found. | ||||
| 	return sha256.New() | ||||
| } | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										22
									
								
								vendor/github.com/minio/sha256-simd/sha256block_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/minio/sha256-simd/sha256block_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | ||||
| /* | ||||
|  * Minio Cloud Storage, (C) 2016 Minio, Inc. | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  * You may obtain a copy of the License at | ||||
|  * | ||||
|  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  */ | ||||
| 
 | ||||
| package sha256 | ||||
| 
 | ||||
| func blockAvx2Go(dig *digest, p []byte) {} | ||||
| func blockAvxGo(dig *digest, p []byte)  {} | ||||
| func blockSsseGo(dig *digest, p []byte) {} | ||||
| func blockArmGo(dig *digest, p []byte)  {} | ||||
							
								
								
									
										22
									
								
								vendor/github.com/minio/sha256-simd/sha256block_ppc64le.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/minio/sha256-simd/sha256block_ppc64le.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | ||||
| /* | ||||
|  * Minio Cloud Storage, (C) 2016 Minio, Inc. | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  * You may obtain a copy of the License at | ||||
|  * | ||||
|  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  */ | ||||
| 
 | ||||
| package sha256 | ||||
| 
 | ||||
| func blockAvx2Go(dig *digest, p []byte) {} | ||||
| func blockAvxGo(dig *digest, p []byte)  {} | ||||
| func blockSsseGo(dig *digest, p []byte) {} | ||||
| func blockArmGo(dig *digest, p []byte)  {} | ||||
							
								
								
									
										21
									
								
								vendor/vendor.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								vendor/vendor.json
									
									
									
									
										vendored
									
									
								
							| @ -1,6 +1,6 @@ | ||||
| { | ||||
| 	"comment": "", | ||||
| 	"ignore": "appengine test", | ||||
| 	"ignore": "test", | ||||
| 	"package": [ | ||||
| 		{ | ||||
| 			"path": "github.com/Sirupsen/logrus", | ||||
| @ -62,7 +62,7 @@ | ||||
| 			"revisionTime": "2016-06-10T14:06:02+03:00" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"checksumSHA1": "2a/SsTUBMKtcM6VtpbdPGO+c6c8=", | ||||
| 			"checksumSHA1": "W+E/2xXcE1GmJ0Qb784ald0Fn6I=", | ||||
| 			"path": "github.com/golang/snappy", | ||||
| 			"revision": "d9eb7a3d35ec988b8585d4a0068e462c27d28380", | ||||
| 			"revisionTime": "2016-05-29T05:00:41Z" | ||||
| @ -109,10 +109,10 @@ | ||||
| 			"revisionTime": "2016-10-16T15:41:25Z" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"checksumSHA1": "XRii0aDqXZvztXflEB2EE9TRoks=", | ||||
| 			"checksumSHA1": "Pzd1bfm8Yj1radncaohNZu+UT1I=", | ||||
| 			"path": "github.com/klauspost/reedsolomon", | ||||
| 			"revision": "c54154da9e35cab25232314cf69ab9d78447f9a5", | ||||
| 			"revisionTime": "2016-09-12T19:31:07Z" | ||||
| 			"revision": "d0a56f72c0d40a6cdde43a1575ad9686a0098b70", | ||||
| 			"revisionTime": "2016-10-28T07:13:20Z" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"checksumSHA1": "dNYxHiBLalTqluak2/Z8c3RsSEM=", | ||||
| @ -137,9 +137,10 @@ | ||||
| 			"revisionTime": "2015-12-11T09:06:21+09:00" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"checksumSHA1": "IgPoMBktWdCLuyzDBfzi34sT+jg=", | ||||
| 			"path": "github.com/minio/blake2b-simd", | ||||
| 			"revision": "25efc542f2c5064cf312cdca043790a7af861c4c", | ||||
| 			"revisionTime": "2016-07-06T10:29:24+02:00" | ||||
| 			"revision": "c50cace0dc7d72a80244a5f88ddd3e08a73db8de", | ||||
| 			"revisionTime": "2016-07-22T09:38:12Z" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"path": "github.com/minio/cli", | ||||
| @ -187,10 +188,10 @@ | ||||
| 			"revisionTime": "2016-07-24T00:05:56Z" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"checksumSHA1": "i8Hl0yGP1jqorMgfFMoJCItnI38=", | ||||
| 			"checksumSHA1": "URVle4qtadmW9w9BulDRHY3kxnA=", | ||||
| 			"path": "github.com/minio/sha256-simd", | ||||
| 			"revision": "6f50cd1d784b2bea46167b6929f16c0d12eefbfb", | ||||
| 			"revisionTime": "2016-08-16T22:25:11Z" | ||||
| 			"revision": "e82e73b775766b9011503e80e6772fc32b9afc5b", | ||||
| 			"revisionTime": "2016-12-19T23:17:30Z" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"checksumSHA1": "Nj7vQ2GlvJiPP7sqJX5AurrDSD4=", | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user