From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-commits+bounces-1709828-garchives=archives.gentoo.org@lists.gentoo.org>
Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (4096 bits))
	(No client certificate requested)
	by finch.gentoo.org (Postfix) with ESMTPS id 770CB15813A
	for <garchives@archives.gentoo.org>; Thu, 16 Jan 2025 19:26:11 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 80107E07E1;
	Thu, 16 Jan 2025 19:26:10 +0000 (UTC)
Received: from smtp.gentoo.org (smtp.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (4096 bits))
	(No client certificate requested)
	by pigeon.gentoo.org (Postfix) with ESMTPS id 6B006E07E1
	for <gentoo-commits@lists.gentoo.org>; Thu, 16 Jan 2025 19:26:10 +0000 (UTC)
Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52])
	(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)
	(No client certificate requested)
	by smtp.gentoo.org (Postfix) with ESMTPS id 8320D343017
	for <gentoo-commits@lists.gentoo.org>; Thu, 16 Jan 2025 19:26:09 +0000 (UTC)
Received: from localhost.localdomain (localhost [IPv6:::1])
	by oystercatcher.gentoo.org (Postfix) with ESMTP id BF5021F9A
	for <gentoo-commits@lists.gentoo.org>; Thu, 16 Jan 2025 19:26:07 +0000 (UTC)
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Content-Transfer-Encoding: 8bit
Content-type: text/plain; charset=UTF-8
Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" <sam@gentoo.org>
Message-ID: <1737055541.e82087ca0b0e9bf65d7292ce7cd6150298bbcaa9.sam@gentoo>
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-lang/orc/, dev-lang/orc/files/
X-VCS-Repository: repo/gentoo
X-VCS-Files: dev-lang/orc/files/orc-0.4.40-avx.patch dev-lang/orc/orc-0.4.40-r1.ebuild
X-VCS-Directories: dev-lang/orc/files/ dev-lang/orc/
X-VCS-Committer: sam
X-VCS-Committer-Name: Sam James
X-VCS-Revision: e82087ca0b0e9bf65d7292ce7cd6150298bbcaa9
X-VCS-Branch: master
Date: Thu, 16 Jan 2025 19:26:07 +0000 (UTC)
Precedence: bulk
List-Post: <mailto:gentoo-commits@lists.gentoo.org>
List-Help: <mailto:gentoo-commits+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org>
X-BeenThere: gentoo-commits@lists.gentoo.org
X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply
X-Archives-Salt: 508679a2-7829-4eeb-a89f-b3bb906593d1
X-Archives-Hash: f8f00de4cc4c8b434ed6522be9196175

commit:     e82087ca0b0e9bf65d7292ce7cd6150298bbcaa9
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Jan 16 19:19:09 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Jan 16 19:25:41 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e82087ca

dev-lang/orc: backport AVX backend fix

Closes: https://bugs.gentoo.org/948164
Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-lang/orc/files/orc-0.4.40-avx.patch | 77 +++++++++++++++++++++++++++++++++
 dev-lang/orc/orc-0.4.40-r1.ebuild       | 45 +++++++++++++++++++
 2 files changed, 122 insertions(+)

diff --git a/dev-lang/orc/files/orc-0.4.40-avx.patch b/dev-lang/orc/files/orc-0.4.40-avx.patch
new file mode 100644
index 000000000000..41dddd0c7248
--- /dev/null
+++ b/dev-lang/orc/files/orc-0.4.40-avx.patch
@@ -0,0 +1,77 @@
+https://bugs.gentoo.org/948164
+https://gitlab.freedesktop.org/gstreamer/orc/-/issues/82
+https://gitlab.freedesktop.org/gstreamer/orc/-/commit/8e48a61e27f4d3e60bf2e3e7873fd61363db6ff8
+
+From 8e48a61e27f4d3e60bf2e3e7873fd61363db6ff8 Mon Sep 17 00:00:00 2001
+From: "L. E. Segovia" <amy@centricular.com>
+Date: Wed, 15 Jan 2025 22:20:14 +0000
+Subject: [PATCH] avx: Fix sqrtps encoding, it's an unary operator
+
+Fixes #82
+
+Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/213>
+---
+ orc/orcavx.h       | 4 ++--
+ orc/orcprogram-c.c | 1 +
+ orc/orcrules-avx.c | 2 +-
+ testsuite/test.orc | 8 ++++++++
+ 4 files changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/orc/orcavx.h b/orc/orcavx.h
+index f564b63f..ca95bd02 100644
+--- a/orc/orcavx.h
++++ b/orc/orcavx.h
+@@ -224,8 +224,8 @@ ORC_API void orc_avx_restore_mxcsr (OrcCompiler *compiler);
+ #define orc_avx_emit_mulps(p,s1,s2,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_mulps, 32, s1, s2, d, ORC_X86_AVX_VEX256_PREFIX)
+ #define orc_avx_sse_emit_divps(p,s1,s2,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_divps, 32, s1, s2, d, ORC_X86_AVX_VEX128_PREFIX)
+ #define orc_avx_emit_divps(p,s1,s2,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_divps, 32, s1, s2, d, ORC_X86_AVX_VEX256_PREFIX)
+-#define orc_avx_sse_emit_sqrtps(p,s1,s2,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_sqrtps, 32, s1, s2, d, ORC_X86_AVX_VEX128_PREFIX)
+-#define orc_avx_emit_sqrtps(p,s1,s2,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_sqrtps, 32, s1, s2, d, ORC_X86_AVX_VEX256_PREFIX)
++#define orc_avx_sse_emit_sqrtps(p,s1,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_sqrtps, 32, s1, 0, d, ORC_X86_AVX_VEX128_PREFIX)
++#define orc_avx_emit_sqrtps(p,s1,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_sqrtps, 32, s1, 0, d, ORC_X86_AVX_VEX256_PREFIX)
+ #define orc_avx_sse_emit_andps(p,s1,s2,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_andps, 32, s1, s2, d, ORC_X86_AVX_VEX128_PREFIX)
+ #define orc_avx_emit_andps(p,s1,s2,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_andps, 32, s1, s2, d, ORC_X86_AVX_VEX256_PREFIX)
+ #define orc_avx_sse_emit_orps(p,s1,s2,d) orc_vex_emit_cpuinsn_size(p, ORC_X86_orps, 32, s1, s2, d, ORC_X86_AVX_VEX128_PREFIX)
+diff --git a/orc/orcprogram-c.c b/orc/orcprogram-c.c
+index 49e0b73b..1c9ff7cf 100644
+--- a/orc/orcprogram-c.c
++++ b/orc/orcprogram-c.c
+@@ -106,6 +106,7 @@ orc_target_c_get_asm_preamble (void)
+ {
+   return "\n"
+     "/* begin Orc C target preamble */\n"
++    "#include <math.h>\n"
+     "#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))\n"
+     "#define ORC_ABS(a) ((a)<0 ? -(a) : (a))\n"
+     "#define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))\n"
+diff --git a/orc/orcrules-avx.c b/orc/orcrules-avx.c
+index 66925982..5cffe145 100644
+--- a/orc/orcrules-avx.c
++++ b/orc/orcrules-avx.c
+@@ -2678,7 +2678,7 @@ BINARY (addf, addps)
+ BINARY (subf, subps)
+ BINARY (mulf, mulps)
+ BINARY (divf, divps)
+-BINARY (sqrtf, sqrtps)
++UNARY (sqrtf, sqrtps)
+ BINARY (orf, orps)
+ BINARY (andf, andps)
+ 
+diff --git a/testsuite/test.orc b/testsuite/test.orc
+index 3e9c5790..9ff53236 100644
+--- a/testsuite/test.orc
++++ b/testsuite/test.orc
+@@ -2806,3 +2806,11 @@ x4 addb argb, x, c128
+ mulslq t1, d1, p1
+ shrsq t1, t1, 27
+ convql d1, t1
++
++.function sqrt_nx
++.dest 4 dst float
++.source 4 src float
++.floatparam 4 k
++.temp 4 tmp
++sqrtf tmp, src
++mulf dst, tmp, k
+-- 
+GitLab

diff --git a/dev-lang/orc/orc-0.4.40-r1.ebuild b/dev-lang/orc/orc-0.4.40-r1.ebuild
new file mode 100644
index 000000000000..2a32020e4637
--- /dev/null
+++ b/dev-lang/orc/orc-0.4.40-r1.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit meson-multilib
+
+DESCRIPTION="The Oil Runtime Compiler, a just-in-time compiler for array operations"
+HOMEPAGE="https://gstreamer.freedesktop.org/"
+SRC_URI="https://gstreamer.freedesktop.org/src/${PN}/${P}.tar.xz"
+
+LICENSE="BSD BSD-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+RESTRICT="!test? ( test )"
+IUSE="gtk-doc static-libs test"
+
+BDEPEND="
+	gtk-doc? (
+		dev-util/gtk-doc
+		app-text/docbook-xml-dtd:4.1.2
+		app-text/docbook-xml-dtd:4.3
+	)
+"
+
+DOCS=( CONTRIBUTING.md README RELEASE )
+
+PATCHES=(
+	"${FILESDIR}"/${P}-avx.patch
+)
+
+multilib_src_configure() {
+	# FIXME: handle backends per arch? What about cross-compiling for the other arches?
+	local emesonargs=(
+		-Ddefault_library=$(usex static-libs both shared)
+		-Dorc-backend=all
+		-Dorc-test=enabled
+		-Dbenchmarks=disabled
+		-Dexamples=disabled
+		$(meson_native_use_feature gtk-doc gtk_doc)
+		$(meson_feature test tests)
+		-Dtools=enabled # requires orc-test
+	)
+	meson_src_configure
+}