From nobody Fri May 29 23:04:15 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4gRzSc400Zz6gFHR for ; Fri, 29 May 2026 23:04:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gRzSc1rd0z3H5j for ; Fri, 29 May 2026 23:04:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1780095856; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YbwyGcjOU1biAj93L08uMg+Pl4V0AR/K2r/qbtzjCUs=; b=JdllgYxMB3b511KCxe2efAoitKHwGT+fKbWsa8oJbg0s/b3Lut01VrSuUchCaVk6+abfAe Ij3pX+e3pt57rIgZQgBOz5Pj/94GBeO7jomeV8YxnChW+bOJwBZ+l3zqfbivrYtN3nbKcd H0kuG+mhcW8i+pG6CJXHetnOvmznjT3bhZqDmGKCjyI+Wxdforrd6Y9nKzVRlq3Vpywq7h WH1SwB0SZUIFk28Hw0q0mMk/8y7xyBjVuIqRLN3lJWOFcJxCbhgpDwct4QC+iQiaXKaqTi 8cUkxYGCpaCCpobp4npe5q5IXW9DoUuXVOsHHSk1irc1d1BuJYdcZGTIX5282w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1780095856; a=rsa-sha256; cv=none; b=Bu77zN7ndrgwi5IoGLx+6oNtonTRRtt1Bt2VR0VCGCTkfb1A7/bFpkOhAjY9dB1ei46hS7 biUuCXxzssY4RS57E1EvVgSAlhqq+muzl50rYhk3X6rgm5oW2NsFodd7XPnDeL+RggGduK RiLfRDxIzfPLUyPMPZ4YuCsW05p/9oaumnyMZlWbgqSJEfugSuD/MZncjBuqXaFkJVtsZG xlgWMheluPX8V6WFBHZB2PJiPAFuF7ATS1u0sVb5HhrI5hcSp4oDYGro2NST5oLjr3uIte qp4cRAH+yQ+PNiZMbKFspMJ+vv9Hf0/kzb2sOQ2qypwNEzjWDuamROrhVbug/Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1780095856; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YbwyGcjOU1biAj93L08uMg+Pl4V0AR/K2r/qbtzjCUs=; b=eBjKqJM4M70azmr2aN5k/O/IAivAiha8ICZ9SuR1DlabawSG1wHqW6hVwcxgYVvlrsetTd nnAqF5PLZri6LOx+41tCQgimjuRBVY9IKSSx1P77mYCbXISkmSry+MxUPpfrHMWBjLYba2 YHoGAJMB+iGP/kOwg1n+f0kX3pdTz8zsP4BB9DRJQlYDAzekniOlQIEuprOoObEBHf7zRW 0Di8h62IAHU+oav+tt+CByJr/L3Sxoa+CUaVibaruhTxTFsv60cyhHy9AjHbc7c2sDm+x6 VRTI+FVDyoW5n2AbdvV4q9s2a999DRl16UcOWBHxvAPcUAZgDmnjCNrmkfVKgA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gRzSb6cH7ztpk for ; Fri, 29 May 2026 23:04:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 41258 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 29 May 2026 23:04:15 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dimitry Andric Subject: git: b68b15f5535f - stable/14 - Adjust llvm-project main llvmorg-21-init-19288-gface93e724f4, part 1 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: b68b15f5535f5f4366229acca66e84dfb69e7799 Auto-Submitted: auto-generated Date: Fri, 29 May 2026 23:04:15 +0000 Message-Id: <6a1a1b6f.41258.6e487e5@gitrepo.freebsd.org> The branch stable/14 has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=b68b15f5535f5f4366229acca66e84dfb69e7799 commit b68b15f5535f5f4366229acca66e84dfb69e7799 Author: Dimitry Andric AuthorDate: 2025-12-07 19:01:02 +0000 Commit: Dimitry Andric CommitDate: 2026-05-29 22:59:35 +0000 Adjust llvm-project main llvmorg-21-init-19288-gface93e724f4, part 1 This adjusts the llvmorg-21-init-19288-gface93e724f4 import: add partial third-party/ top-level directory. PR: 292067 MFC after: 1 month (cherry picked from commit 3f16c588d1d8c46d7025f95003602807d9c1ddb9) --- .../third-party/siphash/include/siphash/SipHash.h | 160 +++++++++++++++++++++ 1 file changed, 160 insertions(+) diff --git a/contrib/llvm-project/third-party/siphash/include/siphash/SipHash.h b/contrib/llvm-project/third-party/siphash/include/siphash/SipHash.h new file mode 100644 index 000000000000..ca4fe45e4fdd --- /dev/null +++ b/contrib/llvm-project/third-party/siphash/include/siphash/SipHash.h @@ -0,0 +1,160 @@ +//===--- SipHash.h - An implementation of SipHash -------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This is a header-only implementation of SipHash. It lacks library +// dependencies so it can be used from LLVM and compiler-rt. +// +//===----------------------------------------------------------------------===// + +#include +#include + +// Lightly adapted from the SipHash reference C implementation: +// https://github.com/veorq/SipHash +// by Jean-Philippe Aumasson and Daniel J. Bernstein + +#define ROTL(x, b) (uint64_t)(((x) << (b)) | ((x) >> (64 - (b)))) + +#define U32TO8_LE(p, v) \ + (p)[0] = (uint8_t)((v)); \ + (p)[1] = (uint8_t)((v) >> 8); \ + (p)[2] = (uint8_t)((v) >> 16); \ + (p)[3] = (uint8_t)((v) >> 24); + +#define U64TO8_LE(p, v) \ + U32TO8_LE((p), (uint32_t)((v))); \ + U32TO8_LE((p) + 4, (uint32_t)((v) >> 32)); + +#define U8TO64_LE(p) \ + (((uint64_t)((p)[0])) | ((uint64_t)((p)[1]) << 8) | \ + ((uint64_t)((p)[2]) << 16) | ((uint64_t)((p)[3]) << 24) | \ + ((uint64_t)((p)[4]) << 32) | ((uint64_t)((p)[5]) << 40) | \ + ((uint64_t)((p)[6]) << 48) | ((uint64_t)((p)[7]) << 56)) + +#define SIPROUND \ + do { \ + v0 += v1; \ + v1 = ROTL(v1, 13); \ + v1 ^= v0; \ + v0 = ROTL(v0, 32); \ + v2 += v3; \ + v3 = ROTL(v3, 16); \ + v3 ^= v2; \ + v0 += v3; \ + v3 = ROTL(v3, 21); \ + v3 ^= v0; \ + v2 += v1; \ + v1 = ROTL(v1, 17); \ + v1 ^= v2; \ + v2 = ROTL(v2, 32); \ + } while (0) + +namespace { + +/// Computes a SipHash value +/// +/// \param in: pointer to input data (read-only) +/// \param inlen: input data length in bytes (any size_t value) +/// \param k: reference to the key data 16-byte array (read-only) +/// \returns output data, must be 8 or 16 bytes +/// +template +void siphash(const unsigned char *in, uint64_t inlen, + const unsigned char (&k)[16], unsigned char (&out)[outlen]) { + + const unsigned char *ni = (const unsigned char *)in; + const unsigned char *kk = (const unsigned char *)k; + + static_assert(outlen == 8 || outlen == 16, "result should be 8 or 16 bytes"); + + uint64_t v0 = UINT64_C(0x736f6d6570736575); + uint64_t v1 = UINT64_C(0x646f72616e646f6d); + uint64_t v2 = UINT64_C(0x6c7967656e657261); + uint64_t v3 = UINT64_C(0x7465646279746573); + uint64_t k0 = U8TO64_LE(kk); + uint64_t k1 = U8TO64_LE(kk + 8); + uint64_t m; + int i; + const unsigned char *end = ni + inlen - (inlen % sizeof(uint64_t)); + const int left = inlen & 7; + uint64_t b = ((uint64_t)inlen) << 56; + v3 ^= k1; + v2 ^= k0; + v1 ^= k1; + v0 ^= k0; + + if (outlen == 16) + v1 ^= 0xee; + + for (; ni != end; ni += 8) { + m = U8TO64_LE(ni); + v3 ^= m; + + for (i = 0; i < cROUNDS; ++i) + SIPROUND; + + v0 ^= m; + } + + switch (left) { + case 7: + b |= ((uint64_t)ni[6]) << 48; + [[fallthrough]]; + case 6: + b |= ((uint64_t)ni[5]) << 40; + [[fallthrough]]; + case 5: + b |= ((uint64_t)ni[4]) << 32; + [[fallthrough]]; + case 4: + b |= ((uint64_t)ni[3]) << 24; + [[fallthrough]]; + case 3: + b |= ((uint64_t)ni[2]) << 16; + [[fallthrough]]; + case 2: + b |= ((uint64_t)ni[1]) << 8; + [[fallthrough]]; + case 1: + b |= ((uint64_t)ni[0]); + break; + case 0: + break; + } + + v3 ^= b; + + for (i = 0; i < cROUNDS; ++i) + SIPROUND; + + v0 ^= b; + + if (outlen == 16) + v2 ^= 0xee; + else + v2 ^= 0xff; + + for (i = 0; i < dROUNDS; ++i) + SIPROUND; + + b = v0 ^ v1 ^ v2 ^ v3; + U64TO8_LE(out, b); + + if (outlen == 8) + return; + + v1 ^= 0xdd; + + for (i = 0; i < dROUNDS; ++i) + SIPROUND; + + b = v0 ^ v1 ^ v2 ^ v3; + U64TO8_LE(out + 8, b); +} + +} // end anonymous namespace