Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp3439597pxb; Sun, 26 Sep 2021 15:36:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxwK2UOVBjcAm/Mpbx5MdtNrbzr7KGhjXkz+AYklKGptKv4YEUc8EndAigR+OdsjSHkQz76 X-Received: by 2002:a63:b55e:: with SMTP id u30mr13835267pgo.187.1632695763156; Sun, 26 Sep 2021 15:36:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632695763; cv=none; d=google.com; s=arc-20160816; b=bWdqjpMgAeCPYhbNIIuO0p+9F1/d+g8t1tcTQAvtX5+7eEkfVhiuOdXQTwrwqqSa8l 1/miYXl9NrpVkgiaTKXmFI+0MMB37hwt4VqxAEgZD2LYv87AXACLBuUyeiJ5r8vNUI3L CjrA2QLqiNlSKTVp4Z9mcncUGXmhjB4BxAe0X7NmeKvFrPdFtiThjS/WOwEe0bkf0gza 0qjpGnafNZsLyzwgg3ER/ZxEzW6OjGc2gbv1xCom9BHxMbRI1eZvre0nGnusCgG31AKA mfxFdE+ACTKSD8Hp+swMREzAJQqrSo3KuLPxeFa8T9Ny+bxmXyB7RrbMfwCRIu/nT58t Biig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=kUt5TY5jxoR7/B2VCpvqew1CInyRkLUynHuODPcVSWc=; b=EL1bHMehqm6axIHB4sPxldRwPRNF5CNG7axrCAtZpSQNoCX7Tr8khhTtAFIj2tFNka /oAnuEJYa18DtKq+azjCMYFzwLi2ddOATRtCnO/UNt4Y+Qu5HIDgVqNrg1/PiWyg2zLa DZ6LuNvk1j/XfoXleDcQ2jVENHpG8/mkCP4Q3bvyLq2CugATbX3lvnwGBPIvaGnBtVx1 rtwB6NbaCBAhBHeTyEQ8/tV3Z4c2+uNbITv1lSWVAYnUqthPLYSptzJtxqDdh02EHuiQ xgJbdJcJI/B+gx8nEJK21a2vtgX0gVvvq71huYeoAVXu/hl5FDZ6tEZzmXg2ZxjVRu6h wgLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@usp.br header.s=usp-google header.b=bBK1mOCC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=usp.br Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 24si20758513pgu.522.2021.09.26.15.35.25; Sun, 26 Sep 2021 15:36:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@usp.br header.s=usp-google header.b=bBK1mOCC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=usp.br Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230491AbhIZWfN (ORCPT + 99 others); Sun, 26 Sep 2021 18:35:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41282 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230466AbhIZWfM (ORCPT ); Sun, 26 Sep 2021 18:35:12 -0400 Received: from mail-qt1-x82b.google.com (mail-qt1-x82b.google.com [IPv6:2607:f8b0:4864:20::82b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BE89DC061570 for ; Sun, 26 Sep 2021 15:33:35 -0700 (PDT) Received: by mail-qt1-x82b.google.com with SMTP id t2so8510588qtx.8 for ; Sun, 26 Sep 2021 15:33:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=usp.br; s=usp-google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=kUt5TY5jxoR7/B2VCpvqew1CInyRkLUynHuODPcVSWc=; b=bBK1mOCCuF0ojCMOPOET0V7fdi818uz01r6p+LePmuKT9t2TGV7e+PMGeIG9Sas86O rol4fyJtuZ2AaLA8e5QyZT4/J5sIpSjv7l4BVkVmeyqNPNDNFj65ShzTnH6vnc2XziIM oeqhyo3ujd4f+9v8BvOqO+3KRtGwyhJlSK/tHSfYZBTku9GmUcKWzGwewMHU0R+BAJah UFaJZJQiac/m5LkI9cH/EalifrnyMhLUba7Hrqxy1r9otnPn2PIMTRbc5+77b5547WjP w5Zbbg9vPgjkhkFPgWy5TGQ74g/353Y82o4ZDuKZgPLEtW8yyYEkPN1F0ouMmUOerHd3 ur4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=kUt5TY5jxoR7/B2VCpvqew1CInyRkLUynHuODPcVSWc=; b=jmqBcsXHTpErKQ975XqRkGx+qp/iTDLheemxkISY/dEijBUjuKG2Eq48Eloa9zHy0/ HgAaFsiYSMRCLo6wed1IYfUGbcCE6ZX8UdZyImkjA4oRpBmC6TWEM55OeSIfIRGTw/CO E4H/8HnonskJVD5iF0pikqYSDiSGtKrY17W7ZQp85GL+Q6BzC0TSUQJlHGwWvQaJ1Zxs 8gS+ZDuI6u+w9el1daVXFFsnfBVFSJ5PK85cIHVk61OedXJCIwojdAaYhJN/PrQGeGsK QwbsN1C3NISIxDHedTKjGB8jyhd5jVTnLpe+UF0tZLmKrQx/+S84qnEUJOBCpYGWzvfy 8IWA== X-Gm-Message-State: AOAM530rgo53oh9943Clju53vfwjz1q5xqMxp3XdZszw/PipHbyntDmY FKcWEheMkLwhsycsyQunGXccmQ== X-Received: by 2002:ac8:146:: with SMTP id f6mr8682544qtg.46.1632695614965; Sun, 26 Sep 2021 15:33:34 -0700 (PDT) Received: from aehse.localdomain ([2804:d41:bd1c:9100:f2e1:f671:7a83:1eb8]) by smtp.gmail.com with ESMTPSA id x6sm7244151qts.79.2021.09.26.15.33.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Sep 2021 15:33:34 -0700 (PDT) From: Isabella Basso To: geert@linux-m68k.org Cc: ferreiraenzoa@gmail.com, augusto.duraes33@gmail.com, brendanhiggins@google.com, dlatypov@google.com, davidgow@google.com, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, kunit-dev@googlegroups.com, ~lkcamp/patches@lists.sr.ht, rodrigosiqueiramelo@gmail.com, Isabella Basso Subject: [PATCH v2 2/5] test_hash.c: split test_int_hash into arch-specific functions Date: Sun, 26 Sep 2021 19:33:19 -0300 Message-Id: <20210926223322.848641-3-isabellabdoamaral@usp.br> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210926223322.848641-1-isabellabdoamaral@usp.br> References: <20210926223322.848641-1-isabellabdoamaral@usp.br> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Split the test_int_hash function to keep its mainloop separate from arch-specific chunks, which are only compiled as needed. This aims at improving readability. Tested-by: David Gow Signed-off-by: Isabella Basso --- lib/test_hash.c | 86 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 57 insertions(+), 29 deletions(-) diff --git a/lib/test_hash.c b/lib/test_hash.c index d4b0cfdb0377..08fe63776c4f 100644 --- a/lib/test_hash.c +++ b/lib/test_hash.c @@ -56,6 +56,53 @@ fill_buf(char *buf, size_t len, u32 seed) } } +/* Holds most testing variables for the int test */ +struct test_hash_params { + unsigned long long *h64; + u32 h0; + u32 h1; + u32 h2; + u32 (*hash_or)[33]; +}; + +#ifdef HAVE_ARCH__HASH_32 +static bool __init +test_int__hash_32(struct test_hash_params *params) +{ + params->hash_or[1][0] |= params->h2 = __hash_32_generic(params->h0); +#if HAVE_ARCH__HASH_32 == 1 + if (params->h1 != params->h2) { + pr_err("__hash_32(%#x) = %#x != __hash_32_generic() = %#x", + params->h0, params->h1, params->h2); + return false; + } +#endif + return true; +} +#endif + +#ifdef HAVE_ARCH_HASH_64 +static bool __init +test_int_hash_64(struct test_hash_params *params, u32 const *m, int *k) +{ + params->h2 = hash_64_generic(*params->h64, *k); +#if HAVE_ARCH_HASH_64 == 1 + if (params->h1 != params->h2) { + pr_err("hash_64(%#llx, %d) = %#x != hash_64_generic() = %#x", + *params->h64, *k, params->h1, params->h2); + return false; + } +#else + if (params->h2 > *m) { + pr_err("hash_64_generic(%#llx, %d) = %#x > %#x", + *params->h64, *k, params->h1, *m); + return false; + } +#endif + return true; +} +#endif + /* * Test the various integer hash functions. h64 (or its low-order bits) * is the integer to hash. hash_or accumulates the OR of the hash values, @@ -69,19 +116,13 @@ static bool __init test_int_hash(unsigned long long h64, u32 hash_or[2][33]) { int k; - u32 h0 = (u32)h64, h1, h2; + struct test_hash_params params = { &h64, (u32)h64, 0, 0, hash_or }; /* Test __hash32 */ - hash_or[0][0] |= h1 = __hash_32(h0); + hash_or[0][0] |= params.h1 = __hash_32(params.h0); #ifdef HAVE_ARCH__HASH_32 - hash_or[1][0] |= h2 = __hash_32_generic(h0); -#if HAVE_ARCH__HASH_32 == 1 - if (h1 != h2) { - pr_err("__hash_32(%#x) = %#x != __hash_32_generic() = %#x", - h0, h1, h2); + if (!test_int__hash_32(¶ms)) return false; - } -#endif #endif /* Test k = 1..32 bits */ @@ -89,37 +130,24 @@ test_int_hash(unsigned long long h64, u32 hash_or[2][33]) u32 const m = ((u32)2 << (k-1)) - 1; /* Low k bits set */ /* Test hash_32 */ - hash_or[0][k] |= h1 = hash_32(h0, k); - if (h1 > m) { - pr_err("hash_32(%#x, %d) = %#x > %#x", h0, k, h1, m); + hash_or[0][k] |= params.h1 = hash_32(params.h0, k); + if (params.h1 > m) { + pr_err("hash_32(%#x, %d) = %#x > %#x", params.h0, k, params.h1, m); return false; } /* Test hash_64 */ - hash_or[1][k] |= h1 = hash_64(h64, k); - if (h1 > m) { - pr_err("hash_64(%#llx, %d) = %#x > %#x", h64, k, h1, m); + hash_or[1][k] |= params.h1 = hash_64(h64, k); + if (params.h1 > m) { + pr_err("hash_64(%#llx, %d) = %#x > %#x", h64, k, params.h1, m); return false; } #ifdef HAVE_ARCH_HASH_64 - h2 = hash_64_generic(h64, k); -#if HAVE_ARCH_HASH_64 == 1 - if (h1 != h2) { - pr_err("hash_64(%#llx, %d) = %#x != hash_64_generic() " - "= %#x", h64, k, h1, h2); + if (!test_int_hash_64(¶ms, &m, &k)) return false; - } -#else - if (h2 > m) { - pr_err("hash_64_generic(%#llx, %d) = %#x > %#x", - h64, k, h1, m); - return false; - } -#endif #endif } - (void)h2; /* Suppress unused variable warning */ return true; } -- 2.33.0