From nobody Tue Feb 25 12:17:30 2025 X-Original-To: dev-commits-src-branches@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 4Z2Gnk6Lvmz5pm5f; Tue, 25 Feb 2025 12:17:30 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Z2Gnk3YbDz47M8; Tue, 25 Feb 2025 12:17:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1740485850; 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=YRazfyBpbqOXyhmOJBegINdYwsXPpWA4v2xr7i1IWeQ=; b=r88oWgm05VP+0zw08/XEt6jgdvlmjim9bBZ7yRhaIHbWS1y5pc2J+rHXCamzG56A0EBbM7 1alP7cvFduADLmXP3GmWZXtGfbsEJzlCLB5nluRXqdC/EWLXmQaCFNgryt20Oir19SwzXH TIdKR/kTMhGx02KntD7otsl11VD/0CjIDWxO5lKMUWb1NY5mGsXf13zveKUnDq9scvyiab 5xOAcldwdQ3wR05RYzsy6mzb1TymQSYescGuT0iJEBFVm4Dka/YeNozErl5nz1PoY9ENZN ABorvMRQxNTisdL62pC19hv3ePExKt07frg5zwjrEgfdf/CkA3IZFDYRYSdrng== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1740485850; a=rsa-sha256; cv=none; b=NU1uQMi1587JxXuOE8jz82KOmGr+ys9shv/E+zedEjEzQAWlP5L1bYjNStUXWv1msHkr4j C24lkvZdO6hJ2jD+YcRFLAA7YeYm57EwluLCekK6G63vuSKQ1rscGufiKqwgRizn034kUQ bND+fPm08iQTbrG4pwGHCPk9sId9qMai/HeaoMd8elQqQC50C2WbpnwRcjN7vbcQB6Sqw9 eJW3aPaIXmk+TUK4521u2BBOqmxl0GpSM1nnuoTxWYamTt+shH+R/nuvs8gq+OJ17OyNXY TTEbh6XnC+Weq4mB8aKFDHNTRs61H7RJDQr7gFhAuhUJMjZJ0L+DEOzy3g09MQ== 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=1740485850; 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=YRazfyBpbqOXyhmOJBegINdYwsXPpWA4v2xr7i1IWeQ=; b=hL5RGbaxOPRdksqrlobg9+fPmgnhpI6pb1YSNjXd8d9+MM68BcuX+gmAdtw7vxGT5dZN7p LIUJANDe58bLEmpi5ELJlnzoh9kXmn/SRwL968uDbvxXED4KP5mPxY+6U4KbqMKbP0N9+N Zy5LCeqAndlzuu27IpXznmM9b/a9kaWhS1mG/DppMWMO+XohddBgEuofheJ5QcYJ0FN3Sj 8t7R8nC181su0IzatFegFz3EGEid4aWAUg1FNu5JhX0h2Ue0edQmSAfg611gtQiuklt9Ys BaRkrlDl4W89XZKcVu0iWS1veF37VTn4IHd3KtH5TxFtqvGnxt8pRitkpPwXKQ== 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 4Z2Gnk33lhz9pL; Tue, 25 Feb 2025 12:17:30 +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 51PCHUJZ008008; Tue, 25 Feb 2025 12:17:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 51PCHUwq008005; Tue, 25 Feb 2025 12:17:30 GMT (envelope-from git) Date: Tue, 25 Feb 2025 12:17:30 GMT Message-Id: <202502251217.51PCHUwq008005@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 47a067308ec9 - stable/14 - sound tests: Fix downshift calculation in pcm_read_write test List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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/stable/14 X-Git-Reftype: branch X-Git-Commit: 47a067308ec97358ef07b7a5fb660e2d5fcc023e Auto-Submitted: auto-generated The branch stable/14 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=47a067308ec97358ef07b7a5fb660e2d5fcc023e commit 47a067308ec97358ef07b7a5fb660e2d5fcc023e Author: Florian Walpen AuthorDate: 2025-02-18 19:35:54 +0000 Commit: Christos Margiolis CommitDate: 2025-02-25 12:17:14 +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 (cherry picked from commit 6672831bda883756d7f4598bb4b119f99eb1e7d2) --- 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; }