From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) (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 3E5693A1689 for ; Fri, 15 May 2026 14:10:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778854238; cv=none; b=JYHCQ3acHCIWUP8rZiUD9TE7mQjtp/FmfOiheEXatED/aomVpTt28R2ZQyo+Zwh3/Cug3HUCEOLjx7/GqyHy8pVVHVTV2MQxJz40VDlOkZy3UpFijJSxZIar4/CyE8QB60BFBf3MLJUard0JoMY1Xuo3C5LNO8OaO88cWBjLWck= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778854238; c=relaxed/simple; bh=VBq8idrgBob0ux77XAytvvqN1OJXBAZAdRTkE9i2hII=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=iFrzB/ClcV+g0BcYSHIt1g0F6T7fIEglgCdTwzT7zv7SqD22IxQx9gogrNBPvNIpsEhFrBQUk21SI1jTzmTPkXaEhaXRaozOmMpyzNqGKIvfYAG9rTWnU2D4fWdTcf7en4Vq59188KSVCAv+2diafZByKJ+5S2591FGFH0uiGzI= 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=Lgav8TtQ; arc=none smtp.client-ip=209.85.218.49 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="Lgav8TtQ" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-bd0fc4c336eso1043357066b.3 for ; Fri, 15 May 2026 07:10:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778854236; x=1779459036; 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=kpAbwEPMmZHunefUXov3BCvB1DVZ1pCLobl0y+AYsyw=; b=Lgav8TtQDaYol+9j0O4+8fPt6Qcqj1N1Q1iNgO7MX4MtytUz6fdBBin65ka8vG3MHz UkbQY9pB405nhcOsQqiQ5w+xLmM3LuWLSUQHP23KztvzBPDcadyIcE/aAHMkOK+MjPns XW+x8z4wAlVINXz/V90CKYlaJwhlbLpz7590M9+UleQXLsjbCg7yK/Q4g6lilgbTUyfJ Pg00i+g6b0E9hX2Fmf7GlC8ykztcssVklWBpYZnVTg1cEzzjgy5N8FGEnSF3nEj/XWjn nl1SrfCPl4PqCQsRmS+Js0DEF7RFKy7HSLn7CPMWh5N3SLBaTlenJuRhtIOEj5P27BoN mqDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778854236; x=1779459036; 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=kpAbwEPMmZHunefUXov3BCvB1DVZ1pCLobl0y+AYsyw=; b=aKySGFsD5TFG79W9GTpcvHlSFsK3qnDSjVf1pHlDmajUCslCjjcRWM0WW6S72/CwHx zjEDTolEpVScSiKCdHLc3kR7YOpoDdddwuCPo+tEKHXhRwxquffl2oKsyorTAJPtRRkT 7nvyYSUSFXJA98Iq4e5gXypcuZUwrzFv7K+hU28g+ZbTR3LbqcZvcARwnKH3y/WRscWb xPNIz6XbRS2CSNTjySr89Mzf4P1ZotVupD/KCSGy7FFYnPVelXYjsVIjqNvWzspEkBdG YAkw++IBlnODxTPCtK1vqK2ng2f6NbMBLkCF/nYM337fh6WVKZyFkraFg9AaaFtdqPs4 yWCw== X-Forwarded-Encrypted: i=1; AFNElJ9s7JRpGmLSyJkhee7CXyCWVbCCAJb8VikGwHq3Gf20jAP+vyqHyJyn4wIWPHK8Gbqdx3b1iDPDfkwflyM=@vger.kernel.org X-Gm-Message-State: AOJu0YzAOn0D+Z39pwOCcZahnYpc+73A1F/2ToOWixtGPCu1f/3WXUxc ffZ1arzcCF8TnjXlAJO5ab+T1yaIyeOJQdkx2oQp/4of2CmAlH/1TmEbOt7Wyac53mQ= X-Gm-Gg: Acq92OHl5gjmUdm5SPXQssjKVPzEpz/OCjfGujvqPoZrOK8dpoOaaQbDhTBYOFHzwqX J6dEVOy+ChvCaEP1QDmapl1vMbiYdVne0DhMIbyFTl7OQkmTlM6hscrLF6WMNGXzcV8exix0q/F c9mnYK9nl4rC2/q9yZvWyoHCzaNZs8qCgf/ys7QSqhrSLZyNKpkCja4L9kspCJ8RGC5jRT5ZWY4 E5Il4nzD5C4uucOPl3HrICYrZaL7CIXe1sJQtWVISvfQxC1wq5NcH+GMlr9vO29N0oTuaJjo9ar XIbuZmNNwe2S6EpkHKZEqNb5JEkroSmNRM8iGBpJbvyCOOfIHATro8eixPNu/XC8n5mJf+4A5Z8 dgBLfqC60FObe6LsetfhjonfHtpAj4zY/YasxMcPMc/pBVKtNm/vvzlAoBbAgFKYRWeiEyZg4Xp v+UGwxRDHI9LN8ULeD403WGAKqNfLZMB5KDw1xilHWyQ== X-Received: by 2002:a17:907:9483:b0:bd2:bd43:b46c with SMTP id a640c23a62f3a-bd517979775mr242223566b.43.1778854235491; Fri, 15 May 2026 07:10:35 -0700 (PDT) Received: from RTRKW671-LIN.domain.local ([77.243.23.192]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6831197bf00sm2115768a12.31.2026.05.15.07.10.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 May 2026 07:10:34 -0700 (PDT) From: Milan Tripkovic To: pjw@kernel.org, palmer@dabbelt.com, aou@eecs.berkeley.edu, kees@kernel.org Cc: alex@ghiti.fr, andy@kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Dusan.Stojkovic@rt-rk.com, Milan Tripkovic , Milan Tripkovic Subject: [PATCH v3 0/2] riscv: lib: add optimized memcmp() and extend KUnit tests Date: Fri, 15 May 2026 16:10:17 +0200 Message-ID: <20260515141019.1234037-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 This v3 series introduces an optimized RISC-V memcmp() implementation and extends the KUnit string tests to cover functional correctness and benchmarking of memcmp(). The memcmp() implementation incorporates review feedback from earlier versions, improving alignment handling, loop structure, Zbb usage, and overall correctness. The KUnit updates add comprehensive memcmp() test coverage and a benchmark mode, with v3 addressing structural cleanups and style issues raised during review. Signed-off-by: Milan Tripkovic --- v3 changes: - Split memcmp benchmark into wrapper (string_bench_memcmp) and worker function (do_string_bench_memcmp). - Removed all C99 mixed declarations; moved all variable declarations to the top of each function. - Converted len, iterations and loop counters in the benchmark to u64 to avoid implicit casts. - Cleaned up spacing, indentation and minor style issues. - Added #if defined(CONFIG_RISCV_ISA_ZBB)... in memcmp.S - Link to v2:https://lore.kernel.org/all/20260514121359.931999-1-milant2002@gmail.com/ 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. - Link to v1:https://lore.kernel.org/all/20260512141007.1193033-1-milant2002@gmail.com/ 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 | 125 ++++++++++++++++++++++++++++++++ arch/riscv/purgatory/Makefile | 5 +- lib/tests/string_kunit.c | 116 +++++++++++++++++++++++++++++ 5 files changed, 248 insertions(+), 1 deletion(-) create mode 100644 arch/riscv/lib/memcmp.S -- 2.43.0