From nobody Fri May 29 23:01:38 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 4gRzPb0LFMz6gDs4 for ; Fri, 29 May 2026 23:01:39 +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 4gRzPZ4NQVz4QTt for ; Fri, 29 May 2026 23:01:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1780095698; 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=RL6hYqiUSP6hHF+R18S+rgqdtM/6DBhlxfqeEKZw+VU=; b=kCEBMv+RagtzjPTv0fmIysYQ9V6BnjThX8Nc3jU68bOGoEpS9RYWZFzDtFISqRioeQodjT uAQ2O1RaEy/QMN8DusCyvI8fgIVKajsoujQZhN5xUXEVytrZqmLkKYdBp0O2psSdEuPshJ PCIR/pKoMdbTFCrqKEesOSJgLoPhSqS3ppAoTgUmsdhbMQadFGqwOCn00NCM3I52P9udQD 4/URNCDsPCWGEcs0NObAojCIW2RR9VAjYLtxOkNE9GRNafq2ZpUoAZ/NlIHScuxfcd46pN sPS6UpX7ePPb5Ojc/b1wSOb/lEzMLE0OwHd8pDOlE45QtyrHVpB9vCj6Y4M6dA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1780095698; a=rsa-sha256; cv=none; b=veDenwsHsTnjcKuKeI4gpMuBgo9B53kYfI+4SLRG/vMifxyu2a6ETMKvoQuts2I8/Fx1Ik afvqOCJ6oIDI5q9ZCJH7yDX/aniJmKb+pE8Tv/vp+2+eJhzkdgUFr/Kmo84UnnZBX5iDJA VmS6zI5Qe2CfBK+Kcr1D1v5HHi+fq9idnck9eDgBAoYokIG4UEj7xX2Soke6GUml5iUoVi 27reN/KRZhAp2T8MAdfQ5mw6J4a6Kq6y7cQ8Yu/juyxr4/RVv3AYNdJvnwbMkGPHRadnM0 uAP3/Ijtrpy1Sku8I8EQn3ROYz+UlkHzoXWSb3y8Tn1hXfD9ioe3WVzYQlqiew== 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=1780095698; 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=RL6hYqiUSP6hHF+R18S+rgqdtM/6DBhlxfqeEKZw+VU=; b=s14jXxLQV91DEeTLogMh0eGjLQAhRudhPwaiGU1uzh9a6yIWdbJk+2+JuxvGH2+hhuiXw7 e5wJxDgvXqjsxPw9UbdAlMIt3TOIaKbyPcfUvdZXLRc2rPVQHY19nc6JIx2KPgcU1WYySH OORzouSRK91jbgmkHjdm3KgWzdpWbk5i7K2FLTWO2oL0IEZpxWwfOERp3IMxbtHTRt8Pjt EcvQW2loi9xldaLm6OPNfFFPMH9kWmkcnsRkDM5MC1fCgteqhYp+Jf2xTmwBtpmzajs3Cv MwJ4Nu4Fn3R3miV7JphXZs5kw/5eKpX0dF5d26fiuMGLp5wBWWL2lzACFQV1RQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gRzPZ3rrBztFt for ; Fri, 29 May 2026 23:01:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 421b7 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 29 May 2026 23:01:38 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dimitry Andric Subject: git: c76ec2942795 - stable/15 - 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/15 X-Git-Reftype: branch X-Git-Commit: c76ec29427955975909939e41052e19d000cf008 Auto-Submitted: auto-generated Date: Fri, 29 May 2026 23:01:38 +0000 Message-Id: <6a1a1ad2.421b7.2c193d58@gitrepo.freebsd.org> The branch stable/15 has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=c76ec29427955975909939e41052e19d000cf008 commit c76ec29427955975909939e41052e19d000cf008 Author: Dimitry Andric AuthorDate: 2025-12-07 19:01:02 +0000 Commit: Dimitry Andric CommitDate: 2026-05-29 22:57:30 +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