Update to 0.4.39

Add patch for div255w fix on ppc64le
Resolves: RHEL-50713
This commit is contained in:
Wim Taymans 2024-07-31 10:04:10 +02:00
parent 2eec18071d
commit 6eefdcb57c
4 changed files with 94 additions and 13 deletions

1
.gitignore vendored
View File

@ -8,3 +8,4 @@
/orc-0.4.30.tar.xz
/orc-0.4.31.tar.xz
/orc-0.4.33.tar.xz
/orc-0.4.39.tar.xz

View File

@ -0,0 +1,66 @@
From 508280f7ac31c7d0ab2eaed33b26e6df59bb4dd9 Mon Sep 17 00:00:00 2001
From: "L. E. Segovia" <amy@centricular.com>
Date: Fri, 19 Jul 2024 22:25:20 -0300
Subject: [PATCH 1/2] powerpc: fix div255w which still used the inexact
substitution
The code for this architecture used the substitution suggested in the
original bug report. That one had subtle failures on armv7a and aarch64,
but I was not able to verify if they affected PowerPC too.
This commit fixes it by reusing the mulhuw instruction implementation --
sse2 can be ported directly that way.
Fixes #71
Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/195>
---
orc/orcrules-altivec.c | 31 +++++++++++++++----------------
1 file changed, 15 insertions(+), 16 deletions(-)
diff --git a/orc/orcrules-altivec.c b/orc/orcrules-altivec.c
index 23409a8..a13fb5b 100644
--- a/orc/orcrules-altivec.c
+++ b/orc/orcrules-altivec.c
@@ -1513,23 +1513,22 @@ powerpc_rule_convlf (OrcCompiler *p, void *user, OrcInstruction *insn)
static void
powerpc_rule_div255w (OrcCompiler *p, void *user, OrcInstruction *insn)
{
- int src1 = ORC_SRC_ARG (p, insn, 0);
- int dest = ORC_DEST_ARG (p, insn, 0);
- int tmp = orc_compiler_get_temp_reg (p);
- int tmp2 = orc_compiler_get_temp_reg (p);
- int tmpc;
-
- tmpc = powerpc_get_constant (p, ORC_CONST_SPLAT_W, 0x0001);
-
- ORC_ASM_CODE(p," vspltish %s, 8\n", powerpc_get_regname(tmp2));
- powerpc_emit_VX(p, 0x1000034c, powerpc_regnum(tmp2), 8, 0);
-
- powerpc_emit_VX_2 (p, "vadduhm", 0x10000040, dest, src1, tmpc);
-
- powerpc_emit_VX_2 (p, "vsrh", 0x10000244, tmp, src1, tmp2);
- powerpc_emit_VX_2 (p, "vadduhm", 0x10000040, dest, dest, tmp);
+ const int src1 = ORC_SRC_ARG (p, insn, 0);
+ const int dest = ORC_DEST_ARG(p, insn, 0);
+ const int tmp = powerpc_get_constant (p, ORC_CONST_SPLAT_W, 7);
+ const int tmpc = powerpc_get_constant (p, ORC_CONST_SPLAT_W, 0x8081);
+
+ {
+ // mulhuw
+ const int perm = powerpc_get_constant_full(p, 0x10110001, 0x14150405,
+ 0x18190809, 0x1c1d0c0d);
+
+ powerpc_emit_vmuleuh (p, p->tmpreg, src1, tmpc);
+ powerpc_emit_vmulouh (p, dest, src1, tmpc);
+ powerpc_emit_vperm (p, dest, dest, p->tmpreg, perm);
+ }
- powerpc_emit_VX_2 (p, "vsrh", 0x10000244, dest, dest, tmp2);
+ powerpc_emit_VX_2 (p, "vsrh", 0x10000244, dest, dest, tmp);
}
static void
--
2.45.2

View File

@ -1,12 +1,14 @@
Name: orc
Version: 0.4.33
Release: 6%{?dist}
Version: 0.4.39
Release: 1%{?dist}
Summary: The Oil Run-time Compiler
License: BSD
License: BSD-2-Clause AND BSD-3-Clause
URL: http://cgit.freedesktop.org/gstreamer/orc/
Source0: http://gstreamer.freedesktop.org/src/orc/%{name}-%{version}.tar.xz
Patch0001: 0001-powerpc-fix-div255w-which-still-used-the-inexact-sub.patch
BuildRequires: meson >= 0.47.0
BuildRequires: gcc
BuildRequires: gtk-doc
@ -46,7 +48,7 @@ The Orc compiler, to produce optimized code.
%prep
%setup -q
%autosetup -p1
%build
%meson -D default_library=shared
@ -60,16 +62,16 @@ find %{buildroot}/%{_libdir} -name \*.a -delete
rm -rf %{buildroot}/%{_libdir}/orc
%check
%ifnarch s390 s390x ppc %{power64} %{arm} i686 aarch64
%meson_test
%endif
%ldconfig_scriptlets
%files
%doc COPYING README
%{_libdir}/liborc-*.so.*
%license COPYING
%doc README
%{_libdir}/liborc-0.4.so.0*
%{_libdir}/liborc-test-0.4.so*
%{_bindir}/orc-bugreport
%files doc
@ -78,18 +80,30 @@ rm -rf %{buildroot}/%{_libdir}/orc
%files devel
%doc examples/*.c
%{_includedir}/%{name}-0.4/
%{_libdir}/liborc-*.so
%{_libdir}/liborc-0.4.so
%{_libdir}/pkgconfig/orc-0.4.pc
%{_libdir}/pkgconfig/orc-test-0.4.pc
%{_datadir}/aclocal/orc.m4
%files compiler
%{_bindir}/orcc
%changelog
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 0.4.33-6
- Bump release for June 2024 mass rebuild
* Tue Jul 30 2024 Wim Taymans <wtaymans@redhat.com> 0.4.39-1
- Update to 0.4.39
- Add patch for div255w fix on ppc64le
- Resolves: RHEL-50713
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.4.38-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Wed Mar 06 2024 Peter Robinson <pbrobinson@fedoraproject.org> - 0.4.38-2
- Move orc-test to main package
* Tue Mar 05 2024 Peter Robinson <pbrobinson@fedoraproject.org> - 0.4.38-1
- Update to 0.4.38
- Version the library to catch bumps
- Cleanup spec, use license var
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.4.33-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild

View File

@ -1 +1 @@
SHA512 (orc-0.4.33.tar.xz) = ae8adce5dd62f4054879e6f2db76ce8a7959fd32fef0fb99f73f450ff58c5237e15bca764f6780309a163e40afcf400345f12b0aed5b88dc698064e44f8eede0
SHA512 (orc-0.4.39.tar.xz) = 5b2167c9bb5ef4fdd5b1a683e5e7fc94bafa0afe62cb5f30e6fd2de9e80b4727b533029688e2807fc64b60af45f9263a421074bf330fb2f208b48620b0f95fd6