DPDK patches and discussions
 help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@zytor.com>
To: dev@dpdk.org
Cc: "H. Peter Anvin" <hpa@linux.intel.com>
Subject: [dpdk-dev] [PATCH] hash: reverse the operand order to crc32 in rte_hash_crc.h
Date: Tue, 25 Feb 2014 02:07:40 -0800	[thread overview]
Message-ID: <1393322860-26310-1-git-send-email-hpa@zytor.com> (raw)

From: "H. Peter Anvin" <hpa@linux.intel.com>

Checkin

a132a9cf2bcd440a974b9d3f5c44ba30b2c895a1 hash: use intrinsic

changed the rte_hash_crc.h from using the crc32 instruction via inline
assembly to using an intrinsic.  The intrinsic should allow for better
compiler performance, but the change did not account for the fact that
the inline assembly being in AT&T syntax used the opposite operand
order of the intrinsic.

This turns out to not matter for correctness, because the CRC32
operation is commutative.  However, it could potentially matter for
performance, because the loop is more efficient with the moving
pointer in the source operand and the accumulation in the destination
operand.

This was discovered by Jan Beulich when looking at the equivalent code
in the Linux kernel.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
---
 lib/librte_hash/rte_hash_crc.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_hash/rte_hash_crc.h b/lib/librte_hash/rte_hash_crc.h
index f10f139..1b9481e 100644
--- a/lib/librte_hash/rte_hash_crc.h
+++ b/lib/librte_hash/rte_hash_crc.h
@@ -60,7 +60,7 @@ extern "C" {
 static inline uint32_t
 rte_hash_crc_4byte(uint32_t data, uint32_t init_val)
 {
-	return _mm_crc32_u32(data, init_val);
+	return _mm_crc32_u32(init_val, data);
 }
 
 /**
-- 
1.8.5.3

             reply	other threads:[~2014-02-25 10:06 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-25 10:07 H. Peter Anvin [this message]
2014-02-25 10:57 ` Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1393322860-26310-1-git-send-email-hpa@zytor.com \
    --to=hpa@zytor.com \
    --cc=dev@dpdk.org \
    --cc=hpa@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).