-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
compute fletcher 4 with avx instructions #4330
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
/* | ||
* CDDL HEADER START | ||
* | ||
* The contents of this file are subject to the terms of the | ||
* Common Development and Distribution License (the "License"). | ||
* You may not use this file except in compliance with the License. | ||
* | ||
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE | ||
* or http://www.opensolaris.org/os/licensing. | ||
* See the License for the specific language governing permissions | ||
* and limitations under the License. | ||
* | ||
* When distributing Covered Code, include this CDDL HEADER in each | ||
* file and include the License file at usr/src/OPENSOLARIS.LICENSE. | ||
* If applicable, add the following below this CDDL HEADER, with the | ||
* fields enclosed by brackets "[]" replaced with your own identifying | ||
* information: Portions Copyright [yyyy] [name of copyright owner] | ||
* | ||
* CDDL HEADER END | ||
*/ | ||
/* | ||
* Copyright 2009 Sun Microsystems, Inc. All rights reserved. | ||
* Use is subject to license terms. | ||
*/ | ||
|
||
#ifndef _SPA_CHECKSUM_H | ||
#define _SPA_CHECKSUM_H | ||
|
||
#include <sys/types.h> | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/* | ||
* Each block has a 256-bit checksum -- strong enough for cryptographic hashes. | ||
*/ | ||
typedef struct zio_cksum { | ||
uint64_t zc_word[4]; | ||
} zio_cksum_t; | ||
|
||
#define ZIO_SET_CHECKSUM(zcp, w0, w1, w2, w3) \ | ||
{ \ | ||
(zcp)->zc_word[0] = w0; \ | ||
(zcp)->zc_word[1] = w1; \ | ||
(zcp)->zc_word[2] = w2; \ | ||
(zcp)->zc_word[3] = w3; \ | ||
} | ||
|
||
#define ZIO_CHECKSUM_EQUAL(zc1, zc2) \ | ||
(0 == (((zc1).zc_word[0] - (zc2).zc_word[0]) | \ | ||
((zc1).zc_word[1] - (zc2).zc_word[1]) | \ | ||
((zc1).zc_word[2] - (zc2).zc_word[2]) | \ | ||
((zc1).zc_word[3] - (zc2).zc_word[3]))) | ||
|
||
#define ZIO_CHECKSUM_IS_ZERO(zc) \ | ||
(0 == ((zc)->zc_word[0] | (zc)->zc_word[1] | \ | ||
(zc)->zc_word[2] | (zc)->zc_word[3])) | ||
|
||
#define ZIO_CHECKSUM_BSWAP(zcp) \ | ||
{ \ | ||
(zcp)->zc_word[0] = BSWAP_64((zcp)->zc_word[0]); \ | ||
(zcp)->zc_word[1] = BSWAP_64((zcp)->zc_word[1]); \ | ||
(zcp)->zc_word[2] = BSWAP_64((zcp)->zc_word[2]); \ | ||
(zcp)->zc_word[3] = BSWAP_64((zcp)->zc_word[3]); \ | ||
} | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,3 +15,5 @@ $(MODULE)-objs += zfs_comutil.o | |
$(MODULE)-objs += zfs_fletcher.o | ||
$(MODULE)-objs += zfs_uio.o | ||
$(MODULE)-objs += zpool_prop.o | ||
|
||
$(MODULE)-$(CONFIG_X86) += zfs_fletcher_intel.o | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think zfs_fletcher_avx2 would make it more clear. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think so too. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @jxiong are to open to renaming this |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wow, I hope this is a github rendering issue, otherwise these are some exciting characters.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is, and it's annoying.