Sync from SUSE:SLFO:Main orc revision 92bbbcd30b4aa4fcf27c4e94eaaad889

This commit is contained in:
Adrian Schröter 2024-05-03 17:35:05 +02:00
commit 8d5ec9472b
6 changed files with 604 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

4
_constraints Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0"?>
<constraints>
<sandbox>kvm</sandbox>
</constraints>

1
baselibs.conf Normal file
View File

@ -0,0 +1 @@
liborc-0_4-0

BIN
orc-0.4.34.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

477
orc.changes Normal file
View File

@ -0,0 +1,477 @@
-------------------------------------------------------------------
Wed Jun 7 13:37:52 UTC 2023 - pgajdos@suse.com
- Update to version 0.4.34
+ Thread-safety improvements around orc codemem
allocation/freeing
+ Add orc_parse_code() with more detailed error reporting
+ Implement Orc function lazy initialization correctly via atomic
operations
+ orc program parser fixes and improvements
+ build fixes and compiler warning fixes
+ coverity and clang scan-build static code analysis fixes
+ meson: Do not always generate static library for test library
+ ci improvements
-------------------------------------------------------------------
Mon Nov 21 12:59:20 UTC 2022 - Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 0.4.33:
+ Add support for aarch64 (64-bit ARM) architecture.
+ aarch32: Implement loadupdb instruction used e.g. for video
pixel format packing/unpacking/conversions.
+ neon: Fix unsigned only implementation of loadoffb, loadoffw
and loadoffl.
+ neon: Fix testsuite not passing on arm CPUs.
+ orccodemem: Fix use-after-free in error paths.
+ orccpu-powerpc: Fix build with kernel < 4.11.
+ Add support for macOS Hardened Runtime.
+ Enable only SSE and MMX backends for Windows.
+ Fix ORC_RESTRICT definition for MSVC.
+ pkgconfig: add -DORC_STATIC_COMPILATION flag to .pc file for
static-only builds.
-------------------------------------------------------------------
Sat Jan 16 15:27:40 UTC 2021 - Dirk Müller <dmueller@suse.com>
- Update to version 0.4.32:
+ Add support for JIT code generation in Universal Windows
Platform apps.
+ Minor Meson build system fixes and improvements.
-------------------------------------------------------------------
Tue Jan 7 14:01:44 UTC 2020 - Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 0.4.31:
+ Fix OrcTargetPowerPCFlags enum typedef to revert API change on
macOS/iOS.
+ Fixes for various PowerPC issues.
+ Enable flush-to-zero mode for float programs on ARM/neon.
+ Fix some opcodes to support x2/x4 processing on PowerPC.
-------------------------------------------------------------------
Mon Sep 9 10:17:37 UTC 2019 - Bjørn Lie <bjorn.lie@gmail.com>
- Update to version 0.4.30:
+ Don't always generate static library but default to shared-only
+ Work around false positives in Microsoft UWP certification kit
+ Add endbr32/endbr64 instructions on x86/x86-64 for indirect
branch tracking
+ Fix gtk-doc build when orc is used as a meson subproject
+ Switch float comparison in tests to ULP method to fix spurious
failures
+ Fix flushing of ARM icache when using dual map
+ Use float constants/parameters when testing float opcodes
+ Add support for Hygon Dhyana processor
+ Fix PPC/PPC64 CPU family detection
+ Add little-endian PPC support
+ Fix compiler warnings with clang
+ Mark exec mapping writable in debug mode for allowing
breakpoints
+ Various codegen refactorings
+ autotools support has been dropped in favour of Meson as build
system.
+ Fix PPC CPU feature detection and add support for VSX/v2.07
+ Add double/int64 support for PPC
- No longer remove static file in install section, no longer needed
as it's not built by default anymore.
-------------------------------------------------------------------
Sat Apr 20 17:28:10 UTC 2019 - Bjørn Lie <bjorn.lie@gmail.com>
- Update to version 0.4.29:
+ PowerPC: Support ELFv2 ABI (A. Wilcox) and ppc64le.
+ Mips backend: only enable if the DSPr2 ASE is present.
+ Windows and MSVC build fixes.
+ orccpu-arm: Allow 'cpuinfo' fallback on non-android.
+ pkg-config file for orc-test library.
+ orcc: add --decorator command line argument to add function
decorators in header files.
+ meson:
- Make orcc detectable from other subprojects.
- Add options to disable tests, docs, benchmarks, examples,
tools, etc.
- Misc. other fixes.
- Pass orc-test=disabled, examples=disabled and tests=disabled to
meson, and drop meson_tests. Tests consistantly fails on the
buildservice and consistantly succedes when building locally,
hence trying to build them on the obs is pointless.
-------------------------------------------------------------------
Mon Nov 20 18:15:15 UTC 2017 - zaitor@opensuse.org
- Update to version 0.4.28:
+ Numerous undefined behaviour fixes.
+ Ability to disable tests.
+ Fix meson dist behaviour.
-------------------------------------------------------------------
Mon Sep 4 14:19:34 UTC 2017 - dimstar@opensuse.org
- Switch to the meson build system, which knows how to cope with
GTK 1.26+:
+ Use the tarball published on github (the automake bootstrapped
one does not contain the meson build system).
+ Add meson BuildRequires and switch configure/make/make_install
macros to the relevant meson/meson_build/meson_install
variants.
-------------------------------------------------------------------
Mon Jul 17 16:15:12 UTC 2017 - zaitor@opensuse.org
- Update to version 0.4.27:
+ sse: preserve non volatile sse registers, needed for MSVC.
+ x86: don't hard-code register size to 0 in orc_x86_emit_*()
funcs.
+ Fix incorrect asm generation on 64-bit Windows with MSVC.
+ Add support for building using the Meson build system.
-------------------------------------------------------------------
Sun Feb 12 17:29:14 UTC 2017 - zaitor@opensuse.org
- Disable make check for all arches except x86_64 again.
-------------------------------------------------------------------
Wed Aug 31 19:52:08 UTC 2016 - zaitor@opensuse.org
- Update to version 0.4.26:
+ Use 64 bit arithmetic to increment the stride if needed.
+ Fix generation of ModR/M / SIB bytes for the EBP, R12, R13
registers on X86/X86-64.
+ Fix test_parse unit test if no executable backend is available.
+ Add orc-test path to the -uninstalled .pc file.
+ Fix compiler warnings in the tests on OS X.
- Add pkgconfig(glib-2.0) BuildRequires, the build looks for it.
- Remove obsolete bconds, they were only there for now obsolete
versions of openSUSE.
- Drop explicit xz BuildRequires: No longer needed.
- Enable testsuite for all arches again.
-------------------------------------------------------------------
Sat Mar 5 13:02:47 UTC 2016 - zaitor@opensuse.org
- Update to version 0.4.25:
+ compiler: also prefer the backup function when no target,
instead of trying to use emulation which is usually slower.
+ executor: fix load of parameters smaller than 64 bits, fixing
crashes on ldresnearb and friends in emulated code.
+ test-limits: improve test without target.
+ Only check for Android's liblog on Android targets, so we don't
accidentally pick up another liblog that may exist elsewhere.
+ Don't require libtool for uninstalled setups (-uninstalled
pkg-config file).
+ Make -Bsymbolic check in configure work with clang.
+ Coverity code analyser fixes.
+ docs: update generated opcode tables.
+ Add orc_version_string() function and make orcc check the
liborc that is being picked up to make sure the right lib is
being used.
-------------------------------------------------------------------
Mon Sep 28 20:27:52 UTC 2015 - dmueller@suse.com
- disable testsuite on aarch64
-------------------------------------------------------------------
Thu Jul 9 22:03:42 UTC 2015 - zaitor@opensuse.org
- Update to version 0.4.24:
+ Only reuse constants of the same size and value.
+ Fix reading of .orc files with Windows line endings on Windows.
+ Fix out of bounds array access in the tests.
+ Remove duplicate code path in orcc.
+ Put a limit to the memcpy test.
+ Fix mmap leak on error path.
-------------------------------------------------------------------
Fri Feb 27 17:29:20 UTC 2015 - normand@linux.vnet.ibm.com
- disable make check for ppc64le archi
would need changes in orcprogram-altivec.c
and define of HAVE_POWERPC
-------------------------------------------------------------------
Fri Dec 26 11:27:42 UTC 2014 - zaitor@opensuse.org
- Update to version 0.4.23:
+ Various improvements to the NEON backend to bring it closer to
the SSE backend.
+ Add support for setting a custom backup function.
+ Preserve NEON/VFP registers across subroutines.
+ Fix 64 bit parameter loading on big-endian systems.
+ Improved implementations for various opcodes.
+ Various improvements and fixes to constants handling.
+ Avoid some undefined operations on signed integers.
+ Prefer user specific directories over global ones for
intermediate files to prevent name collisions.
-------------------------------------------------------------------
Thu Oct 9 13:53:25 UTC 2014 - dimstar@opensuse.org
- Fix version dependency for gtk-doc (min 1.12).
- Disable building of gtk-doc for SLE11, where this version of
gtk-doc is not available (by means of bcond_with/without).
The pre-built documentation, as shipped in the tarball will be
installed in this case.
-------------------------------------------------------------------
Thu Oct 9 13:41:02 UTC 2014 - dimstar@opensuse.org
- Add xz BuildRequires for openSUSE < 11.3 (and thus also SLE11).
-------------------------------------------------------------------
Tue Sep 23 20:58:44 UTC 2014 - zaitor@opensuse.org
- Temp-disable testsuite on i586 until we get the random fails
sorted out with upstream.
- Drop orc-disable-test-limits.patch, and autoreconf call, and
corresponding BuildRequires, as testsuite is disabled, and patch
needing them is dropped.
-------------------------------------------------------------------
Wed Sep 17 11:14:54 UTC 2014 - zaitor@opensuse.org
- Update to version 0.4.22:
+ Handle NOCONFIGURE=1 in autogen.sh.
+ Some memory leak fixes in the compiler.
+ Fixes for compiler warnings on Win64.
+ Properly detect CPU features on Android in non-debug build.
+ Use Android logging system instead of stderr for debug output.
-------------------------------------------------------------------
Fri Jul 4 07:57:28 UTC 2014 - idonmez@suse.com
- Update to version 0.4.21
+ Fix memory leaks
+ Fix list corruption when splitting code memory chunks,
causing crashes when allocating a lot of code memory and trying
to free it later
+ Various compiler warnings, coverity warnings and static code
analysis fixes
+ Documentation fix for mulhsw, mulhuw
- Add orc-disable-test-limits.patch to disable test-limits test,
it only works on x86-64
-------------------------------------------------------------------
Fri Dec 20 16:14:22 UTC 2013 - zaitor@opensuse.org
- Update to version 0.4.18:
+ Important bugfix in reading constants from bytecode.
+ Documentation and code cleanup.
+ Fix cache flushing on iOS.
-------------------------------------------------------------------
Wed May 15 18:05:56 UTC 2013 - dimstar@opensuse.org
- Update to version 0.4.17:
+ Merged known distro patches.
+ Added MIPS backend.
+ Disabled ARM backend because of poor coverage.
+ Added bytecode parsing and writing. This can be used instead of
manual creation of OrcPrograms.
- Drop altivec.patch and ppc64.patch: fixed upstream.
-------------------------------------------------------------------
Mon Sep 17 17:48:52 UTC 2012 - schwab@linux-m68k.org
- ppc64.patch: Add support for PowerPC64
- altivec.patch: Fix altivec implementation of cmpltf and cmplef operations
- Reenable check on ppc and ppc64
-------------------------------------------------------------------
Thu Mar 8 11:58:18 UTC 2012 - idonmez@suse.com
- Disable check on ARM.
-------------------------------------------------------------------
Thu Feb 2 12:26:37 UTC 2012 - idonmez@suse.com
- Fix license to be BSD-3-Clause.
-------------------------------------------------------------------
Wed Feb 1 11:09:49 UTC 2012 - dvaleev@suse.com
- disable check on ppc ppc64.
-------------------------------------------------------------------
Tue Oct 4 07:47:08 UTC 2011 - vuntz@opensuse.org
- Update to version 0.4.16:
+ orc_init() tried to take the same mutex as generated C code
that calls (indirectly) orc_init().
+ sse: Fixes for 64 bit pointers with any of the upper 32 bits
set.
-------------------------------------------------------------------
Mon Sep 26 11:35:02 UTC 2011 - vuntz@opensuse.org
- Update to version 0.4.15:
+ Protect global resources with mutexes.
+ Restore c64x-c backend (untested).
+ Convert MMX and SSE backends to a new instruction scheduler.
+ Add alignment and size hints to parser.
-------------------------------------------------------------------
Mon Jul 4 09:18:42 CEST 2011 - vuntz@opensuse.org
- Update to version 0.4.14:
+ Various fixes for SSE, MMX and Altivec
+ Fix endianness issues
-------------------------------------------------------------------
Wed Apr 27 16:02:34 UTC 2011 - chris@computersalat.de
- Update to version 0.4.13:
+ Fixes two serious code generation bugs in 0.4.12 on SSE and
Altivec.
+ Add some compatibility code to mitigate the previous automatic
inclusion of stdint.h
- Changes from version 0.4.12:
+ Fix gcc-4.6 warnings in generated code
+ Codegen fixes for Altivec. Passes regression tests again.
+ More error checking for code allocation.
+ NEON: floating point improvements
+ Removed stdint.h from API. This could theoretically cause
breakage if you depended on orc to include stdint.h.
+ Addition of the OrcCode structure, which keeps track of
compiled code. This now allows applications to free unused
code.
+ x86 code generation was completely refactored to add an
intermediate stage, which will later be used for instruction
reordering.
-------------------------------------------------------------------
Wed Dec 8 12:43:53 UTC 2010 - cristian.rodriguez@opensuse.org
- Run make check
-------------------------------------------------------------------
Mon Oct 18 10:20:19 CEST 2010 - vuntz@opensuse.org
- Update to version 0.4.11:
+ Fixes for CPUs that don't have backends
+ Fix loading of double parameters
+ mmx: Fix 64-bit parameter loading
+ sse/mmx: Fix x2/x4 with certain opcodes
-------------------------------------------------------------------
Sat Oct 9 11:20:19 CEST 2010 - vuntz@opensuse.org
- Update to version 0.4.10:
+ Added several simple 64-bit opcodes
+ Improved debugging by adding ORC_CODE=emulate
+ Allocation of mmapd areas for code now has several fallback
methods, in order to placate various SELinux configurations.
+ Various speed improvements in SSE backend
+ Add SSE implementations of ldreslinl and ldresnearl.
+ Update Mersenne Twister example
-------------------------------------------------------------------
Mon Sep 6 16:08:49 CEST 2010 - vuntz@opensuse.org
- Update to version 0.4.9:
+ Added handling for 64-bit constants
+ Fix building and use of static library
+ Fix register allocation on Win64 (still partly broken, however)
+ Quiet some non-errors printed by orcc in 0.4.8.
+ Fix implementation of several opcodes.
+ Until this release, the shared libraries all had the same
versioning information. This should be fixed going forward.
-------------------------------------------------------------------
Mon Aug 30 17:36:41 CEST 2010 - vuntz@opensuse.org
- Update to version 0.4.8:
+ Fix Windows and OS/X builds
+ Improve behavior in failure cases
+ Major improvements for Altivec backend
+ Significant documentation additions
+ Memory for executable code storage is now handled in a much
more controlled manner, and it's now possible to reclaim this
memory after it's no longer needed.
+ A few more 64-bit opcodes have been added, mostly related to
arithmetic on floating point values.
+ The orcc tool now handles 64-bit and floating point parameters
and constants.
- Add baselibs.conf.
-------------------------------------------------------------------
Thu Aug 26 12:01:02 CEST 2010 - vuntz@opensuse.org
- Update to version 0.4.7:
+ Lots of specialized new opcodes and opcode prefixes.
+ Important fixes for ARM backend
+ Improved emulation of programs (much faster)
+ Implemented fallback rules for almost all opcodes for SSE and
NEON backends
+ Performance improvements for SSE and NEON backends.
+ Many fixes to make larger programs compile properly.
+ 64-bit data types are now fully implemented, although there are
few operations on them.
+ Loads and stores are now handled by separate opcodes (loadb,
storeb, etc). For compatibility, these are automatically
included where necessary. This allowed new specialized loading
opcodes, for example, resampling a source array for use in
scaling images.
+ Opcodes may now be prefixed by "x2" or "x4", indicating that a
operation should be done on 2 or 4 parts of a proportionally
larger value. For example, "x4 addusb" performs 4 saturated
unsigned additions on each of the four bytes of 32-bit
quantities. This is useful in pixel operations.
+ The MMX backend is now (semi-) automatically generated from the
SSE backend.
+ The orcc tool has a new option "-inline", which creates inline
versions of the Orc stub functions. The orcc tool also
recognizes a new directive .init, which instructs the
compiler to generate an initialization function, which when
called at application init time, compiles all the generated
functions. This allows the generated stub functions to avoid
checking if the function has already been compiled. The use of
these two features can dramatically decrease the cost of
calling Orc functions.
-------------------------------------------------------------------
Fri Aug 6 17:45:52 CEST 2010 - vuntz@opensuse.org
- Update to version 0.4.6:
+ Various fixes to make Orc more portable
+ Major performance improvements to NEON backend
+ Minor performance improvements to SSE backend
+ Major improvements to ARM backend, now passes regression tests.
+ The defaults for floating point operations have been changed
somewhat: NANs are handled more like the IEEE 754 standard, and
denormals in operations are treated as zeros. The NAN changes
causes certain SSE operations to be slightly slower, but produce
less surprising results. Treating denormals as zero has effects
ranging from “slightly faster” to “now possible”.
+ New tool: orc-bugreport. Mainly this is to provide a limited
testing tool in the field, especially for embedded targets
which would not have access to the testsuite that is not
installed.
+ The environment variable ORC_CODE can now be used to adjust
some code generation. See orc-bugreport -help for details.
+ orcc has a new option to generate code that is compatible with
older versions of Orc.
+ New NEON detection relies on Linux 2.6.29 or later.
- Changes from version 0.4.5:
+ Many small improvements related to converting GStreamer from
liboil to Orc.
+ The major addition in this release is the mainstreaming of
the NEON backend, made possible by Nokia.
+ There is a new experimental option to ./configure,
--enable-backend, which allows you to choose a single code
generation backend to include in the library. This is mostly
useful for embedded systems, and is not recommended in general.
- Do not call autogen.sh and remove workaround for doc generation.
-------------------------------------------------------------------
Tue May 25 15:09:05 UTC 2010 - chris@computersalat.de
- update to version 0.4.4
o remove obsolete orc-asneeded.patch
-------------------------------------------------------------------
Wed Mar 17 10:47:22 UTC 2010 - dimstar@opensuse.org
- Initial package of orc 0.4.3

96
orc.spec Normal file
View File

@ -0,0 +1,96 @@
#
# spec file for package orc
#
# Copyright (c) 2023 SUSE LLC
# Copyright (c) 2010 Dominique Leuenberger, Amsterdam, Netherlands.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: orc
Version: 0.4.34
Release: 0
Summary: The Oil Runtime Compiler
License: BSD-3-Clause
Group: Productivity/Multimedia/Other
URL: https://gitlab.freedesktop.org/gstreamer/orc
Source: https://gstreamer.freedesktop.org/src/orc/%{name}-%{version}.tar.xz
Source99: baselibs.conf
BuildRequires: gtk-doc >= 1.12
BuildRequires: meson >= 0.47.0
BuildRequires: pkgconfig
BuildRequires: pkgconfig(glib-2.0)
Provides: %{name}-devel = %{version}
%description
Orc is a library and set of tools for compiling and executing very simple
programs that operate on arrays of data. The “language” is a generic
assembly language that represents many of the features available in SIMD
architectures, including saturated addition and subtraction, and many
arithmetic operations.
%package -n liborc-0_4-0
Summary: The Oil Runtime Compiler Library
Group: System/Libraries
%description -n liborc-0_4-0
Orc is a library and set of tools for compiling and executing very simple
programs that operate on arrays of data. The “language” is a generic
assembly language that represents many of the features available in SIMD
architectures, including saturated addition and subtraction, and many
arithmetic operations.
%package doc
Summary: The Oil Runtime Compiler Library - Documentation
Group: Documentation/HTML
%description doc
Orc is a library and set of tools for compiling and executing very simple
programs that operate on arrays of data. The “language” is a generic
assembly language that represents many of the features available in SIMD
architectures, including saturated addition and subtraction, and many
arithmetic operations.
%prep
%autosetup -p1
%build
%meson \
-Dorc-test=disabled \
-Dexamples=disabled \
-Dtests=disabled \
%{nil}
%meson_build
%install
%meson_install
%post -n liborc-0_4-0 -p /sbin/ldconfig
%postun -n liborc-0_4-0 -p /sbin/ldconfig
%files
%{_bindir}/orcc
%{_includedir}/orc-0.4/
%{_libdir}/*.so
%{_libdir}/pkgconfig/orc-0.4.pc
%{_datadir}/aclocal/orc.m4
%files doc
%dir %{_datadir}/gtk-doc
%dir %{_datadir}/gtk-doc/html
%{_datadir}/gtk-doc/html/orc/
%files -n liborc-0_4-0
%{_libdir}/liborc*-0.4.so.*
%changelog