From nobody Tue Feb 18 19:37:36 2025 X-Original-To: dev-commits-src-main@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 4Yy8tn0DJLz5p4dd; Tue, 18 Feb 2025 19:37:37 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Yy8tm40gRz3nVN; Tue, 18 Feb 2025 19:37:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1739907456; 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=2SnOQ9IYzuQcaQEVkB3KdGTApZV8V2n5YmW69QI+5Es=; b=WcimG811OlY1DoFUO7TZrM9RziZeVuvD8RTnW7SpNE6IH1P5wg+L+ccpv1W5IyDmFX2wuG 5dUMU3560A2b3+sBeH3Tp9zq4EbIzuUDSsEjzuzTfYHRDuqYJ3MDYFsZCa0XgfHO6aT5LZ 9+0fT9825x+sSF0qzVjJRDGrT41V4MR5ZYDspqDx3//A5YO1sHGNl1t6TwvWYSrsWWuDR4 ge8an8JuoWgKympMmHtKAlm/s/S4o10tlYvD6xkrw4EWmlkoOfRq1A3g0oeajjDfgMomNN glEtO18yv6EI3BkIGHqurh7sOMsv1kFZFkF1qajODsOGGy4cYCyNBEFun798/Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1739907456; a=rsa-sha256; cv=none; b=uUTBpneMYjF3D/Gsjm36nDfm4MRNWBwXylG/NQqzOGSup9ceU6Mx4kRIWa9GsvEjCjXRcM Yeznh2Kx5OBjSfw+yqwe/KQ77Z42iBDzYvMTR9nPTHxKaaXYM1w40kkrPgFtxpWtvydXTK K6NnhwJGT98VDSRgmjJLJGjYoWU94QuLnLkXjPhLZK2glaeXBdOZ2w+eFZtl7WNTVqO2RU LRviurlEoD5I+lPwaFKkXtPlY/VXmR0MwX4Vq57TQVctQfY905QWZaMuoqolYNWHud8CY9 nJVFjQDJX+LJBT2Eh9IJs7WNNIEZv2FZ4wtTKHG4y+BO/x27oyzGEUeblu0uWQ== 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=1739907456; 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=2SnOQ9IYzuQcaQEVkB3KdGTApZV8V2n5YmW69QI+5Es=; b=KpgEdhCYuvwWaferI9UcjQqQIKIRr1vtu3GBT9EztwQFNkEbRY+qFAbPQ1QIiQhzPEcHGt M8kZr1j3t28zOoDEVXTZ9eufb0rg9rrZ6D8SRMEMRtboT9BpqBZPJ0RPKlRrbH1XF+JoYR 6O+1nirwgNKzMP6F2pXixHrZO94fLX/V6ejE61VDpPy31RR/a1EdEJKibPW0MU8qoHwKTx /Uxn4bqYRpuigH22QqutJvuUKE+vyVispPMrKlqPRjtN0IbcqXuyN+aw461fgCS1XtqrYA i4wKXBkKbPmQlC06UYDjHA8OOptkHZw0JsMb5htfoma/IzPhKb6VfKj2gKgr9A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Yy8tm3PxwzZVZ; Tue, 18 Feb 2025 19:37:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 51IJbaR8029710; Tue, 18 Feb 2025 19:37:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 51IJba38029707; Tue, 18 Feb 2025 19:37:36 GMT (envelope-from git) Date: Tue, 18 Feb 2025 19:37:36 GMT Message-Id: <202502181937.51IJba38029707@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Christos Margiolis Subject: git: 6672831bda88 - main - sound tests: Fix downshift calculation in pcm_read_write test List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6672831bda883756d7f4598bb4b119f99eb1e7d2 Auto-Submitted: auto-generated The branch main has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=6672831bda883756d7f4598bb4b119f99eb1e7d2 commit 6672831bda883756d7f4598bb4b119f99eb1e7d2 Author: Florian Walpen AuthorDate: 2025-02-18 19:35:54 +0000 Commit: Christos Margiolis CommitDate: 2025-02-18 19:37:17 +0000 sound tests: Fix downshift calculation in pcm_read_write test In some situations the feeders in the sound module lower the pcm sample resolution through a downshift of the sample value. The pcm_read_write test implements this operation with an arithmetic division to avoid implementation defined or architecture specific behavior. Due to different rounding, the test produced marginally different sample values, which made the test fail on 32 bit architectures. Correct this. Reported by: CI Fixes: 27ef5d48c729 ("sound: Unit test the pcm sample read and write macros") MFC after: 1 week Reviewed by: christos, markj Differential revision: https://reviews.freebsd.org/D48926 --- tests/sys/sound/pcm_read_write.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/tests/sys/sound/pcm_read_write.c b/tests/sys/sound/pcm_read_write.c index 7ef310a35c25..cfd89eec7c19 100644 --- a/tests/sys/sound/pcm_read_write.c +++ b/tests/sys/sound/pcm_read_write.c @@ -81,13 +81,21 @@ static struct afmt_test_data { static intpcm_t local_normalize(intpcm_t value, int val_bits, int norm_bits) { + int32_t divisor; + intpcm_t remainder; + /* Avoid undefined or implementation defined behavior. */ if (val_bits < norm_bits) /* Multiply instead of left shift (value may be negative). */ return (value * (1 << (norm_bits - val_bits))); - else if (val_bits > norm_bits) + else if (val_bits > norm_bits) { + divisor = (1 << (val_bits - norm_bits)); + /* Positive remainder, to discard lowest bits from value. */ + remainder = value % divisor; + remainder = (remainder + divisor) % divisor; /* Divide instead of right shift (value may be negative). */ - return (value / (1 << (val_bits - norm_bits))); + return ((value - remainder) / divisor); + } return value; } @@ -103,8 +111,7 @@ local_calc_limit(intpcm_t value, int val_bits) * behavior here. */ if (sizeof(intpcm32_t) == (32 / 8) && val_bits == 32) - /* Divide instead of right shift (value may be negative). */ - return (value / (1 << 8)); + return (local_normalize(value, 32, 24)); return value; }