From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6AEB33C989B for ; Thu, 14 May 2026 12:14:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778760860; cv=none; b=bJw9XQX3pmnv2Y1ImJNAYeKbVm0vCVqacPo7Mt2pEFVCDs4/9Qt/1zB0TIwbPpBLeX1PRX3kbsRFzUmKwX91Zdd7+Vu0AqnPV8rXuMZILQHXpNuWE0ri9bmRmAf5VgsB2u0u4KjoqjyiJfhbWmTLIoYAL5LaEssP3ZnaOzSPDNw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778760860; c=relaxed/simple; bh=IAO71bX6/0l+Uffip8mV9c2OUmrqf/4IKgA70H+dCIU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=CHAn5PRdWeUcoS3P3HdghAdQtWu7Q2BhtsqcfloFy/fXfXDt86uXP1LfXadViHWXPAEo5KgU/acoKKDzNkh221Cnc0Ggpok3DanUetOL1NdpdNER1O8UkvU/HOg7cUTp9U20M8aoMbXRvIVPljWZgxT+OKThkgaK3Ohlw8wrWI8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=TmtMA6cH; arc=none smtp.client-ip=209.85.221.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TmtMA6cH" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-44b330c5cc6so5779629f8f.1 for ; Thu, 14 May 2026 05:14:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778760858; x=1779365658; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=bGqf3rD2el4Fophu1OMYrfA7Yv/0FbhBVG7jdE96agc=; b=TmtMA6cHxjf5s7Xq4k0Zc6xuSLk/RX5bk2IQ/e4QpZH1r3gCQtJfjnuraxAZ9U4Bvf XLGyEoGVjUkhqdFBk8YprZV4gyYKAuFa5lflsEp874CJWaycyTFHJZfvnQmhw1bFlF9O xvDCluF9FiTqpv8ctCITp76Jp+aAWkJ7bR9l3XCIbw7rL5z/ZxDiqNoNFvjfm6+p1j/n qcYmErKDBbbjbqmSxYUkL1V5KAok1NgsURh6p4b598ieigscvrnu2Iup4ZtumDgFn3Fs ghEzm1uP3+vYl2OAqLATBpaikaF816+p27Be0BKVpzWXtIvgTOBqRliFr3yf4zxq3SWc P1hQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778760858; x=1779365658; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=bGqf3rD2el4Fophu1OMYrfA7Yv/0FbhBVG7jdE96agc=; b=a8vhu5YOJ1pHq30QdKksKyLmU/zF/DRYhOIRYa0GX/AquKcCntgl/AuZTtzYcAJCI/ K48+4chbMuCrT4Fy7X6/SmFFL9X75+J2bCvm5sPjdhVHC0ExyXDLAdxd99Lyul81WQ6w M7n9aSOhQD6UATXcVwPWg7+yaEY20g9eRdVipWIU2AKXXM9FArQigXrP8mDMvpi9JZld Mz+pxCwB4CjcYV/zNCaaL/wPjWJE+hkNZVfxgtFlKAeblOt54Q4xw4zhGPIiDMgP/l5L e5N7jfKYChy/F/i4wo34/Rr8XGTveEJIIm7T0AWOA6zwdbjzyoIdZY1ypAF7aE1pfJDX AF3Q== X-Forwarded-Encrypted: i=1; AFNElJ8rlE5zOX0KbJ7Z8I7znHowIiccBHMwFc3x9Mf9lIKpqs5QON27XsOfyNaIyj/pzBd8ytPotwFHNMVU2VY=@vger.kernel.org X-Gm-Message-State: AOJu0YyYPgatLS9YndkHLKXDrkDY+FZSYM0x+d/XaAMV4kKBUsk+6lYQ jBtJaww1LNaacLUgRfDDcvV67bvT502U8xudbvhulVTpoo6b32naA9KX X-Gm-Gg: Acq92OFY8ZSI+Pg3hudbBVdBeNl0HsLZzD25PGmltkMLJY4ji1Mqt4RrqLtEBBvfHO9 bjOHj/OnKsZsukx/huknbZrsgxC/sHGjTjmIN71bnaa62JKizF1nOZFbC2CyQEWlcobc0kYoKH3 V/I1dKqyBAfuR5gvx+JGUDr7iWWgWrFDn91FCpDrtiay36aMJh4Peox5SRWNFrK7j2H8KI62vP5 eEsh3X6pLoy7LAJV7yFqqhfTmUlMGu0v9MlP1ldcga1uRm0zmxxdy9sFLTBibZBpsfXM0rEdAd9 yUrSlp9wh/CjL3fKMUl2mdaH4PzUu1hWrZgIB/novt1NZD2w09Us6HJ82OChCGsraHg4blu+jPy SBqzKRYc2711/vGYRoNDzUEHHknNElkOOQaBcnNKXUOFTz1mKP1P4WxPIYFUz3xHsV5mmgoMBWH sH8gYCoxDuypxuOd/rDmbEc/lZBScVkUjHdjCZbdDkWwicGHnlUIUo X-Received: by 2002:a05:6000:1acc:b0:43d:7af0:3a7c with SMTP id ffacd0b85a97d-45c7a4ef3e4mr11408615f8f.29.1778760857731; Thu, 14 May 2026 05:14:17 -0700 (PDT) Received: from RTRKW671-LIN.domain.local ([77.243.27.125]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45d9e767cb9sm6285630f8f.2.2026.05.14.05.14.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 May 2026 05:14:17 -0700 (PDT) From: Milan Tripkovic To: Paul Walmsley , Palmer Dabbelt , Albert Ou Cc: Alexandre Ghiti , Kees Cook , Andy Shevchenko , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, llvm@lists.linux.dev, Dusan Stojkovic , Milan Tripkovic , Milan Tripkovic Subject: [PATCH v2 0/2] riscv: lib: add optimized memcmp() and extend KUnit tests Date: Thu, 14 May 2026 14:13:56 +0200 Message-ID: <20260514121359.931999-1-milant2002@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Add an assembly implementation of memcmp() for RISC-V. This version incorporates feedback from v1 regarding alignment safety, loop efficiency, and ZBB usage. The second patch extends the KUnit string tests to include functional verification and benchmarking for memcmp(). Signed-off-by: Milan Tripkovic --- v2 changes: - Added alignment checks for buffers to avoid expensive misaligned loads. - Optimized the loop using end-pointers to reduce per-iteration overhead. - Implemented word-aligned tail handling using ZBB shifts. - Removed redundant pointer equality (a0 == a1) check. - Retained BE support via #ifndef; ZBB rev8 is used for the LE fast-path. - Fixed KUnit build failures for Clang and non-benchmark configs. Milan Tripkovic (2): riscv: lib: add memcmp() implementation lib/string_kunit: extend benchmarks and unit test to memcmp() arch/riscv/include/asm/string.h | 2 + arch/riscv/lib/Makefile | 1 + arch/riscv/lib/memcmp.S | 124 ++++++++++++++++++++++++++++++++ arch/riscv/purgatory/Makefile | 5 +- lib/tests/string_kunit.c | 106 +++++++++++++++++++++++++++ 5 files changed, 237 insertions(+), 1 deletion(-) create mode 100644 arch/riscv/lib/memcmp.S -- 2.43.0