| 
									
										
										
										
											2018-02-02 09:17:40 +05:00
										 |  |  | // Copyright 2016 The 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 386,!gccgo,!appengine | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package blake2s | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-25 16:29:48 +05:00
										 |  |  | import "golang.org/x/sys/cpu" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-02 09:17:40 +05:00
										 |  |  | var ( | 
					
						
							|  |  |  | 	useSSE4  = false | 
					
						
							| 
									
										
										
										
											2019-02-25 16:29:48 +05:00
										 |  |  | 	useSSSE3 = cpu.X86.HasSSSE3 | 
					
						
							|  |  |  | 	useSSE2  = cpu.X86.HasSSE2 | 
					
						
							| 
									
										
										
										
											2018-02-02 09:17:40 +05:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //go:noescape | 
					
						
							|  |  |  | func hashBlocksSSE2(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //go:noescape | 
					
						
							|  |  |  | func hashBlocksSSSE3(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func hashBlocks(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) { | 
					
						
							| 
									
										
										
										
											2019-02-25 16:29:48 +05:00
										 |  |  | 	switch { | 
					
						
							|  |  |  | 	case useSSSE3: | 
					
						
							| 
									
										
										
										
											2018-02-02 09:17:40 +05:00
										 |  |  | 		hashBlocksSSSE3(h, c, flag, blocks) | 
					
						
							| 
									
										
										
										
											2019-02-25 16:29:48 +05:00
										 |  |  | 	case useSSE2: | 
					
						
							| 
									
										
										
										
											2018-02-02 09:17:40 +05:00
										 |  |  | 		hashBlocksSSE2(h, c, flag, blocks) | 
					
						
							| 
									
										
										
										
											2019-02-25 16:29:48 +05:00
										 |  |  | 	default: | 
					
						
							| 
									
										
										
										
											2018-02-02 09:17:40 +05:00
										 |  |  | 		hashBlocksGeneric(h, c, flag, blocks) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |