platform/upstream/orc.git
3 years agoaarch64: Implement andn instruction
Marek Vasut [Sat, 27 Jun 2020 21:36:22 +0000 (23:36 +0200)]
aarch64: Implement andn instruction

Fill in aarch64 opcode for andn instruction.
This is bic instruction with reversed operands.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement splatw3q instruction
Marek Vasut [Sat, 27 Jun 2020 20:55:17 +0000 (22:55 +0200)]
aarch64: Implement splatw3q instruction

This uses TRN2 instruction twice on the same data, first to expand
top half-word of SRC register into TMP register and then to expand
top world of TMP register to DST register. The following scheme is
implemented: src[ABCDEFGH] -> tmp[ABABEFEF] -> dst[ABABABAB] .

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement swapX instructions
Marek Vasut [Sat, 27 Jun 2020 17:35:45 +0000 (19:35 +0200)]
aarch64: Implement swapX instructions

Fill in aarch64 opcodes for swapX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement div255w instruction
Marek Vasut [Fri, 26 Jun 2020 16:27:40 +0000 (18:27 +0200)]
aarch64: Implement div255w instruction

Fill in aarch64 opcodes for div255w instruction.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement mulX instructions
Marek Vasut [Fri, 26 Jun 2020 16:46:52 +0000 (18:46 +0200)]
aarch64: Implement mulX instructions

Fill in aarch64 opcodes for mulX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement cmpX instructions
Marek Vasut [Fri, 26 Jun 2020 16:44:15 +0000 (18:44 +0200)]
aarch64: Implement cmpX instructions

Fill in aarch64 opcodes for cmpX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement avgX instructions
Marek Vasut [Fri, 26 Jun 2020 16:39:29 +0000 (18:39 +0200)]
aarch64: Implement avgX instructions

Fill in aarch64 opcodes for avgX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement splitX/splatX instructions
Marek Vasut [Fri, 26 Jun 2020 11:38:52 +0000 (13:38 +0200)]
aarch64: Implement splitX/splatX instructions

Fill in aarch64 opcodes for splitX/splatX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement signX instructions
Marek Vasut [Fri, 26 Jun 2020 10:35:57 +0000 (12:35 +0200)]
aarch64: Implement signX instructions

Fill in aarch64 opcodes for signX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement vminX/vmaxX instructions
Marek Vasut [Fri, 26 Jun 2020 10:27:12 +0000 (12:27 +0200)]
aarch64: Implement vminX/vmaxX instructions

Fill in aarch64 opcodes for vminX/vmaxX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement accX instructions
Marek Vasut [Fri, 26 Jun 2020 03:08:14 +0000 (05:08 +0200)]
aarch64: Implement accX instructions

Fill in aarch64 opcodes for accX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement loadiX instructions
Marek Vasut [Fri, 26 Jun 2020 00:22:41 +0000 (02:22 +0200)]
aarch64: Implement loadiX instructions

Fill in aarch64 opcodes for loadiX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement subX instructions
Marek Vasut [Fri, 26 Jun 2020 01:43:41 +0000 (03:43 +0200)]
aarch64: Implement subX instructions

Fill in aarch64 opcodes for subX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement andX instructions
Marek Vasut [Fri, 26 Jun 2020 01:37:02 +0000 (03:37 +0200)]
aarch64: Implement andX instructions

Fill in aarch64 opcodes for andX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement absX instructions
Marek Vasut [Fri, 26 Jun 2020 01:35:22 +0000 (03:35 +0200)]
aarch64: Implement absX instructions

Fill in aarch64 opcodes for absX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement xorX instructions
Marek Vasut [Fri, 26 Jun 2020 01:32:34 +0000 (03:32 +0200)]
aarch64: Implement xorX instructions

Fill in aarch64 opcodes for xorX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement copyX/orX instructions
Marek Vasut [Thu, 25 Jun 2020 22:30:12 +0000 (00:30 +0200)]
aarch64: Implement copyX/orX instructions

Fill in aarch64 opcodes for copyX/orX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement mergeX instructions
Marek Vasut [Thu, 25 Jun 2020 19:43:03 +0000 (21:43 +0200)]
aarch64: Implement mergeX instructions

Fill in aarch64 opcodes for mergeX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Clean up mergeX/splatX instructions
Marek Vasut [Thu, 25 Jun 2020 19:22:35 +0000 (21:22 +0200)]
aarch64: Clean up mergeX/splatX instructions

Factor out common code from the mergeX/splatX instructions so it
is easier to add the aarch64 counterpart.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement loadX instructions
Marek Vasut [Wed, 24 Jun 2020 19:43:56 +0000 (21:43 +0200)]
aarch64: Implement loadX instructions

Fill in aarch64 opcodes for loadX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement shift instructions
Marek Vasut [Thu, 25 Jun 2020 18:28:30 +0000 (20:28 +0200)]
aarch64: Implement shift instructions

Fill in aarch64 opcodes for shift instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement mov instructions
Marek Vasut [Thu, 25 Jun 2020 17:09:42 +0000 (19:09 +0200)]
aarch64: Implement mov instructions

Fill in aarch64 opcodes for mov instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement mulhX instructions
Marek Vasut [Thu, 25 Jun 2020 16:20:39 +0000 (18:20 +0200)]
aarch64: Implement mulhX instructions

Fill in aarch64 opcodes for mulhX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement select{0,1}X instructions
Marek Vasut [Thu, 25 Jun 2020 18:58:09 +0000 (20:58 +0200)]
aarch64: Implement select{0,1}X instructions

Fill in aarch64 opcodes for select{0,1}X instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement convX instructions
Marek Vasut [Thu, 25 Jun 2020 19:09:46 +0000 (21:09 +0200)]
aarch64: Implement convX instructions

Fill in aarch64 opcodes for convX instructions.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Implement unary instruction emit
Marek Vasut [Thu, 25 Jun 2020 18:57:42 +0000 (20:57 +0200)]
aarch64: Implement unary instruction emit

Fill in missing code to emit unary instructions for aarch64 neon.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Fix MSVC warnings
Marek Vasut [Sun, 30 Aug 2020 22:52:09 +0000 (00:52 +0200)]
aarch64: Fix MSVC warnings

This fixes various warnings reported by the MSVC in CI.
No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Repair storeX instructions
Marek Vasut [Sun, 28 Jun 2020 00:09:11 +0000 (02:09 +0200)]
aarch64: Repair storeX instructions

The storeX instructions are a mirror image of loadX instructions, however
the current implementation is a copy and the storeX arguments are swapped.
This does lead to incorrect store and either to segfault or invalid data.
Fix this by correcting the storeX instruction arguments.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Repair emit for imm 1
Marek Vasut [Sat, 27 Jun 2020 20:52:02 +0000 (22:52 +0200)]
aarch64: Repair emit for imm 1

The logical immediate encoding of 1 is 0, so encode_logical_imm()
would return 0 in that case. However, 0 is treated as a failure.
Adjust encode_logical_imm() such that it return a negative return
value in case of failure, 0 in case of success and the logical
encoding of immediate value is returned via parameter.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Repair 8bit load/store opcode
Marek Vasut [Fri, 26 Jun 2020 19:15:41 +0000 (21:15 +0200)]
aarch64: Repair 8bit load/store opcode

The opcode for 8bit load/store is 0 instead of 1, fix this.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: Use 64bit operations on 64bit pointers
Marek Vasut [Wed, 24 Jun 2020 19:43:56 +0000 (21:43 +0200)]
aarch64: Use 64bit operations on 64bit pointers

This fixes loading values from arrays, where the array pointers
are 64bit, but the operation incrementing the pointer was 32bit
and thus the top 32bits of the pointer were set to zero. Fix it
by using 64bit operations on the pointer.

Signed-off-by: Marek Vasut <marex@denx.de>
3 years agoaarch64: orcprogram-neon porting to aarch64
Dongju Chae [Mon, 21 Oct 2019 11:21:47 +0000 (20:21 +0900)]
aarch64: orcprogram-neon porting to aarch64

This PR ports orcprogram-neon.c for AArch64 support.
It makes the orc compiler generate aarch64 assembly codes.

Currently, example1 succesfully runs on aarch64 (tested on an Android device).

Signed-off-by: Dongju Chae <dongju.chae@samsung.com>
3 years agoaarch64: implement emits for some vector instructions and ORC ops (add)
Dongju Chae [Mon, 21 Oct 2019 11:18:35 +0000 (20:18 +0900)]
aarch64: implement emits for some vector instructions and ORC ops (add)

This commit implements vector load/store/add instructions and ORC 'add' ops.
They reuse existing macros like 'BINARY', and aarch64-specific arguments are added.

Signed-off-by: Dongju Chae <dongju.chae@samsung.com>
3 years agoaarch64: implement emits for general instructions
Dongju Chae [Mon, 21 Oct 2019 10:48:49 +0000 (19:48 +0900)]
aarch64: implement emits for general instructions

This commit implement emits for general instructions.
Also, it defines a bunch of macros that can be used in orcprogram-neon.c

Signed-off-by: Dongju Chae <dongju.chae@samsung.com>
3 years agoaarch64: make some setups for aarch64 support
Dongju Chae [Mon, 21 Oct 2019 10:31:14 +0000 (19:31 +0900)]
aarch64: make some setups for aarch64 support

This commit adds the setup codes for aarch64 support including meson build and aarch64 selection.

Signed-off-by: Dongju Chae <dongju.chae@samsung.com>
3 years agomeson: Get rid of outdated version_compare checks
Nirbheek Chauhan [Wed, 1 Jul 2020 01:51:30 +0000 (07:21 +0530)]
meson: Get rid of outdated version_compare checks

3 years agoci: Also pass --fatal-meson-warnings
Nirbheek Chauhan [Wed, 1 Jul 2020 00:38:19 +0000 (06:08 +0530)]
ci: Also pass --fatal-meson-warnings

To ensure that warnings don't sneak in.

3 years agomeson: Bump version to 0.54 to fix warnings
Nirbheek Chauhan [Wed, 1 Jul 2020 00:45:16 +0000 (06:15 +0530)]
meson: Bump version to 0.54 to fix warnings

3 years agoRelease 0.4.32
Tim-Philipp Müller [Fri, 11 Sep 2020 09:30:15 +0000 (10:30 +0100)]
Release 0.4.32

Fixes #31

3 years agoci: Add an Android arm64 job run on Fedora
Nirbheek Chauhan [Mon, 31 Aug 2020 08:20:28 +0000 (13:50 +0530)]
ci: Add an Android arm64 job run on Fedora

Uses the same image as the android examples job on the cerbero CI.

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/51>

3 years agoci: Add iOS CI with a dynamic cross file
Nirbheek Chauhan [Mon, 31 Aug 2020 07:38:05 +0000 (13:08 +0530)]
ci: Add iOS CI with a dynamic cross file

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/51>

3 years agoci: Use the latest meson syntax
Nirbheek Chauhan [Mon, 31 Aug 2020 06:57:01 +0000 (12:27 +0530)]
ci: Use the latest meson syntax

Also rename macos job for consistency. Install ninja using pip on
Windows to workaround https://github.com/mesonbuild/meson/pull/7669

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/51>

3 years agoci: Use werror on macOS too
Nirbheek Chauhan [Mon, 31 Aug 2020 07:28:24 +0000 (12:58 +0530)]
ci: Use werror on macOS too

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/51>

3 years agomeson: Use pkgconfig.generate
Jan Alexander Steffens (heftig) [Tue, 28 Jul 2020 14:19:23 +0000 (16:19 +0200)]
meson: Use pkgconfig.generate

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/49>

3 years agoci: mark the msys job as manual and allowed to fail
Jordan Petridis [Wed, 29 Jul 2020 11:59:00 +0000 (11:59 +0000)]
ci: mark the msys job as manual and allowed to fail

the msys setup is not deterministic due to issues with msys installation,
so it keeps breaking every now and then.

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/48>

4 years agoorc: Use page size aligned memory block for Windows
Seungha Yang [Tue, 28 Jul 2020 09:00:09 +0000 (18:00 +0900)]
orc: Use page size aligned memory block for Windows

VirtualProtect will change protection attribute of all memory range
which belong to the same page range.

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/48>

4 years agoorc: Remove trailing white spaces
Seungha Yang [Tue, 28 Jul 2020 09:00:38 +0000 (18:00 +0900)]
orc: Remove trailing white spaces

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/48>

4 years agoci: add basic macOS CI
Tim-Philipp Müller [Mon, 20 Jul 2020 23:19:13 +0000 (00:19 +0100)]
ci: add basic macOS CI

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/46>

4 years agomeson: use / instead of join_paths() for readability
Tim-Philipp Müller [Tue, 21 Jul 2020 09:20:03 +0000 (10:20 +0100)]
meson: use / instead of join_paths() for readability

4 years agoci: run benchmark tests as well
Tim-Philipp Müller [Tue, 21 Jul 2020 00:19:01 +0000 (01:19 +0100)]
ci: run benchmark tests as well

4 years agomeson: hook up benchmark as benchmark
Tim-Philipp Müller [Tue, 21 Jul 2020 00:16:47 +0000 (01:16 +0100)]
meson: hook up benchmark as benchmark

4 years agobenchmorc: fix file path to test orc file on windows
Tim-Philipp Müller [Mon, 20 Jul 2020 23:48:48 +0000 (00:48 +0100)]
benchmorc: fix file path to test orc file on windows

Fix compiler warning on msys2:
enchmorc.c:35:31: error: unknown escape sequence: '\o'

The absolute path returned by current_source_dir()
returns backward slashes, which don't work well when
used as a C string constant. join_paths() will make
it all forward-slashes.

4 years agoorcc: use #pragma once in generated headers
Tim-Philipp Müller [Sat, 4 Jul 2020 10:49:09 +0000 (11:49 +0100)]
orcc: use #pragma once in generated headers

Simplifies code and removes build path fragments from
generated file (paths may be different if generated
in a gst-build setup).

There shouldn't be any portability issues with this. Meson
has been using this in its generated config.h for years.

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/45>

4 years agoorc: Don't set memory protection if there's no code
Nirbheek Chauhan [Thu, 2 Jul 2020 09:32:57 +0000 (15:02 +0530)]
orc: Don't set memory protection if there's no code

If the size of the JIT code is 0, there's no code and the *mem is
uninitialized. This can happen when orcc.exe is used to generate
backup C code.

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/44>

4 years agoorc: Print hex value directly instead of a constant
Nirbheek Chauhan [Thu, 2 Jul 2020 09:32:12 +0000 (15:02 +0530)]
orc: Print hex value directly instead of a constant

This is actually more useful because the constants are all bitfields
and it's fairly straightforward to look it up:

https://docs.microsoft.com/en-us/windows/win32/memory/memory-protection-constants

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/44>

4 years agoorc: Fix indentation
Nirbheek Chauhan [Thu, 2 Jul 2020 09:31:40 +0000 (15:01 +0530)]
orc: Fix indentation

Only whitespace changes.

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/44>

4 years agoci: Attempt to fix broken Windows CI
Nirbheek Chauhan [Tue, 30 Jun 2020 11:14:59 +0000 (16:44 +0530)]
ci: Attempt to fix broken Windows CI

https://gitlab.freedesktop.org/nirbheek/orc/-/pipelines/169274

Update to latest image and use the gstreamer runner tag. Matches the
gst-ci template.

Also try to make MSYS2 CI more resilient by following:
https://github.com/msys2/setup-msys2/blob/master/main.js#L98

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/42>

4 years agoorc: Fix some warnings on MSVC and enable --werror
Nirbheek Chauhan [Tue, 30 Jun 2020 11:42:54 +0000 (17:12 +0530)]
orc: Fix some warnings on MSVC and enable --werror

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/42>

4 years agoorccodemem: Add support for Universal Windows Platform apps
Nirbheek Chauhan [Tue, 30 Jun 2020 10:46:39 +0000 (16:16 +0530)]
orccodemem: Add support for Universal Windows Platform apps

VirtualAlloc is VirtualAllocFromApp when targeting UWP, and you can
only allocate executable pages if you have the codeGeneration
capability set in the app manifest. Check for that capability in
_orc_compiler_init() and switch to backup code or emulation if it
isn't available instead of crashing when VirtualAllocFromApp
returns NULL.

Also you cannot allocate pages that are both READWRITE and EXECUTE, so
we allocate as read-write first, then set the memory as execute-only
after the code has been compiled and copied over.

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/42>

4 years agoorc: Implement a windows helper for getenv()
Nirbheek Chauhan [Tue, 30 Jun 2020 10:00:35 +0000 (15:30 +0530)]
orc: Implement a windows helper for getenv()

On Windows, getenv() is deprecated and does not work in all cases. On
the Universal Windows Platform (UWP) it always returns NULL. Add
a wrapper orc_getenv() that calls GetEnvironmentVariable on Windows.

Also change semantics to always make a copy before returning.

Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/42>

4 years agomeson: improve summary() printout
Tim-Philipp Müller [Fri, 13 Mar 2020 12:29:12 +0000 (12:29 +0000)]
meson: improve summary() printout

Pass bool_yn kwarg to summary() to make it
print boolean arguments as nice coloured YES/NO
instead of true/false.

We can also pass multiple arguments like a bool
and a disabled_reason string. In meson 0.54 these
can be printed on one line if we set the line_sep
kwarg. In meson 0.53 these will always be printed
on two lines (and it will warn about the line_sep
arg), so only pass two args if docs are disabled
and otherwise just pass one arg, so we don't end
up with an ugly empty line with meson 0.53.

4 years agomeson: add summary() if Meson version is new enough
Tim-Philipp Müller [Fri, 7 Feb 2020 15:53:29 +0000 (15:53 +0000)]
meson: add summary() if Meson version is new enough

4 years agoci: update windows runner tag and image
Tim-Philipp Müller [Sat, 8 Feb 2020 00:17:22 +0000 (00:17 +0000)]
ci: update windows runner tag and image

4 years agoRelease 0.4.31
Sebastian Dröge [Sat, 2 Nov 2019 09:24:17 +0000 (10:24 +0100)]
Release 0.4.31

4 years agoneon: Enable Flush-to-zero mode for float programs
Doug Nazar [Fri, 20 Sep 2019 08:56:35 +0000 (04:56 -0400)]
neon: Enable Flush-to-zero mode for float programs

Some of the instructions are not NEON (which always uses FTZ),
but are actually VFP, which requires enabling FTZ mode.

4 years agopowerpc: Fix a few opcodes to support x2/x4 usage
Doug Nazar [Fri, 20 Sep 2019 08:51:42 +0000 (04:51 -0400)]
powerpc: Fix a few opcodes to support x2/x4 usage

4 years agopowerpc: Fix a few rules to handle multiple vector elements
Doug Nazar [Sat, 14 Sep 2019 01:07:35 +0000 (21:07 -0400)]
powerpc: Fix a few rules to handle multiple vector elements

4 years agopowerpc: Add manual denormalize support for vsx instructions
Doug Nazar [Sat, 14 Sep 2019 00:53:50 +0000 (20:53 -0400)]
powerpc: Add manual denormalize support for vsx instructions

The VSX vector instructions don't support automatically treating source
denormalized FP numbers as 0 or converting the denormalized results
to zero.

4 years agotestsuite: Reduce memcpy_speed loops
Doug Nazar [Sat, 14 Sep 2019 00:24:28 +0000 (20:24 -0400)]
testsuite: Reduce memcpy_speed loops

Even with the PowerPC copy improvements we still exceed the 30s
time limit.

Power8 has an 8MB L3 cache, resulting in a total copy of ~9GB.

Before PowerPC copy: ~48s
 After PowerPC copy: ~38s
                now: ~18s

4 years agopowerpc: Add custom handling of copy programs
Doug Nazar [Sat, 14 Sep 2019 00:17:47 +0000 (20:17 -0400)]
powerpc: Add custom handling of copy programs

Provides ~20x speedup for fulling aligned buffers, although still
slower than builtin memcpy.

4 years agopowerpc: Move load/store align helpers to common file
Doug Nazar [Fri, 13 Sep 2019 23:52:58 +0000 (19:52 -0400)]
powerpc: Move load/store align helpers to common file

4 years agopowerpc: Improve constant handling
Doug Nazar [Fri, 13 Sep 2019 23:42:58 +0000 (19:42 -0400)]
powerpc: Improve constant handling

Some of the constants are used by the invariants so add them to
the precheck and then load constants first.

4 years agopowerpc: Fix register order of a few emit helpers
Doug Nazar [Fri, 13 Sep 2019 23:32:24 +0000 (19:32 -0400)]
powerpc: Fix register order of a few emit helpers

Two emit helpers had their parameters in the wrong location in
the generated opcode. Hasn't mattered because they were using
the same register for source & dest.

Constant flags are now at the end, so the label should be marked
forward, not backward.

4 years agotestsuite: Return error from exec_parse if a program fails
Doug Nazar [Fri, 13 Sep 2019 23:22:04 +0000 (19:22 -0400)]
testsuite: Return error from exec_parse if a program fails

4 years agoorctest: Fix parentheses location in ULP test
Doug Nazar [Fri, 13 Sep 2019 23:15:47 +0000 (19:15 -0400)]
orctest: Fix parentheses location in ULP test

4 years agoFix OrcTargetPowerPCFlags enum typedef
Pablo Marcos Oltra [Tue, 10 Sep 2019 15:36:51 +0000 (17:36 +0200)]
Fix OrcTargetPowerPCFlags enum typedef

4 years agoBack to development
Sebastian Dröge [Mon, 9 Sep 2019 07:27:32 +0000 (10:27 +0300)]
Back to development

4 years agoRelease 0.4.30
Sebastian Dröge [Mon, 9 Sep 2019 07:21:29 +0000 (10:21 +0300)]
Release 0.4.30

4 years agopowerpc: Use extended mnemonic for load immediate
Doug Nazar [Wed, 28 Aug 2019 14:30:12 +0000 (10:30 -0400)]
powerpc: Use extended mnemonic for load immediate

4 years agopowerpc: Add double & quad operands for vsx/v2.07 compatible cpus
Doug Nazar [Wed, 28 Aug 2019 14:28:39 +0000 (10:28 -0400)]
powerpc: Add double & quad operands for vsx/v2.07 compatible cpus

4 years agopowerpc: Fix cpu feature detection
Doug Nazar [Wed, 28 Aug 2019 14:23:31 +0000 (10:23 -0400)]
powerpc: Fix cpu feature detection

Fix meson cpu family detection.
Actually call cpu detection from progam init.
Add VSX & v2.07 checks for linux with options to diable.
Add display of target flags & cache sizes.

4 years agoDrop support for Autotools as build system
Tim-Philipp Müller [Fri, 19 Apr 2019 23:22:51 +0000 (00:22 +0100)]
Drop support for Autotools as build system

4 years agotests: Allow exec testing of single opcode
Doug Nazar [Wed, 28 Aug 2019 14:05:21 +0000 (10:05 -0400)]
tests: Allow exec testing of single opcode

4 years agotests: Use correct double/int64 functions for parameters & consts
Doug Nazar [Wed, 28 Aug 2019 14:00:33 +0000 (10:00 -0400)]
tests: Use correct double/int64 functions for parameters & consts

4 years agoexecutor: x2 union members not endian safe
Doug Nazar [Wed, 28 Aug 2019 13:55:26 +0000 (09:55 -0400)]
executor: x2 union members not endian safe

4 years agopowerpc: Pre-load long constants & invariants
Doug Nazar [Sun, 25 Aug 2019 19:50:15 +0000 (15:50 -0400)]
powerpc: Pre-load long constants & invariants

PowerPC doesn't have an easy way to load a long constant into a
vector register so we emit the value into the code and then load it.

This moves those values to after the epilogue and then loads them
before starting the outer loop.

4 years agoorc: Consolidate orc_program_has_float()
Doug Nazar [Sun, 25 Aug 2019 19:41:59 +0000 (15:41 -0400)]
orc: Consolidate orc_program_has_float()

4 years agoorc: Make orc_*_emit_invariants() generic
Doug Nazar [Sun, 25 Aug 2019 18:50:11 +0000 (14:50 -0400)]
orc: Make orc_*_emit_invariants() generic

Move mmx/sse emit invariant function to orcompiler so it can
be used on other architectures.

4 years agoorccodemem: Mark exec mapping writable if debugging
Doug Nazar [Sun, 25 Aug 2019 18:27:23 +0000 (14:27 -0400)]
orccodemem: Mark exec mapping writable if debugging

gdb needs the mapping to be writable to set breakpoints.

4 years agoorctest: Fix ULP compare and make compatible with clang
Doug Nazar [Sat, 31 Aug 2019 15:08:58 +0000 (11:08 -0400)]
orctest: Fix ULP compare and make compatible with clang

4 years agobuild: fix werror build with clang
Matthew Waters [Tue, 27 Aug 2019 01:36:49 +0000 (11:36 +1000)]
build: fix werror build with clang

../subprojects/orc/orc-test/orcarray.c:230:47: error: taking the absolute value of unsigned type 'unsigned int' has no effect [-Werror,-Wabsolute-value]
          if ((a[i] < 0.0) == (b[i] < 0.0) && abs(*(orc_uint32 *)&a[i] - *(orc_uint32 *)&b[i]) <= 2) continue;
                                              ^
../subprojects/orc/orc-test/orcarray.c:230:47: note: remove the call to 'abs' since unsigned values cannot be negative
          if ((a[i] < 0.0) == (b[i] < 0.0) && abs(*(orc_uint32 *)&a[i] - *(orc_uint32 *)&b[i]) <= 2) continue;
                                              ^~~
../subprojects/orc/orc-test/orcarray.c:247:47: error: taking the absolute value of unsigned type 'unsigned long' has no effect [-Werror,-Wabsolute-value]
          if ((a[i] < 0.0) == (b[i] < 0.0) && abs(*(orc_uint64 *)&a[i] - *(orc_uint64 *)&b[i]) <= 2) continue;
                                              ^
../subprojects/orc/orc-test/orcarray.c:247:47: note: remove the call to 'abs' since unsigned values cannot be negative
          if ((a[i] < 0.0) == (b[i] < 0.0) && abs(*(orc_uint64 *)&a[i] - *(orc_uint64 *)&b[i]) <= 2) continue;
                                              ^~~
../subprojects/orc/orc-test/orctest.c:525:63: error: taking the absolute value of unsigned type 'unsigned int' has no effect [-Werror,-Wabsolute-value]
      if ((*(float *)ptr1 < 0.0) == (*(float *)ptr2 < 0.0) && abs(*(orc_uint32 *)ptr1 - *(orc_uint32 *)ptr2) <= 2) return TRUE;
                                                              ^
../subprojects/orc/orc-test/orctest.c:525:63: note: remove the call to 'abs' since unsigned values cannot be negative
      if ((*(float *)ptr1 < 0.0) == (*(float *)ptr2 < 0.0) && abs(*(orc_uint32 *)ptr1 - *(orc_uint32 *)ptr2) <= 2) return TRUE;
                                                              ^~~
../subprojects/orc/orc-test/orctest.c:530:65: error: taking the absolute value of unsigned type 'unsigned long' has no effect [-Werror,-Wabsolute-value]
      if ((*(double *)ptr1 < 0.0) == (*(double *)ptr2 < 0.0) && abs(*(orc_uint64 *)ptr1 - *(orc_uint64 *)ptr2) <= 2) return TRUE;
                                                                ^
../subprojects/orc/orc-test/orctest.c:530:65: note: remove the call to 'abs' since unsigned values cannot be negative
      if ((*(double *)ptr1 < 0.0) == (*(double *)ptr2 < 0.0) && abs(*(orc_uint64 *)ptr1 - *(orc_uint64 *)ptr2) <= 2) return TRUE;
                                                                ^~~

4 years agopowerpc: Add little endian support
Doug Nazar [Tue, 20 Aug 2019 08:50:56 +0000 (04:50 -0400)]
powerpc: Add little endian support

4 years agopowerpc: Fix whitespace
Doug Nazar [Tue, 20 Aug 2019 08:38:39 +0000 (04:38 -0400)]
powerpc: Fix whitespace

4 years agoorc: Add ORC_LIKELY/ORC_UNLIKELY macros
Doug Nazar [Sun, 18 Aug 2019 15:50:44 +0000 (11:50 -0400)]
orc: Add ORC_LIKELY/ORC_UNLIKELY macros

4 years agomeson: Fix ppc/ppc64 cpu family detection
Doug Nazar [Sun, 18 Aug 2019 15:48:10 +0000 (11:48 -0400)]
meson: Fix ppc/ppc64 cpu family detection

4 years agoorctest: print_array_val_float return value not used
Doug Nazar [Sun, 18 Aug 2019 15:47:06 +0000 (11:47 -0400)]
orctest: print_array_val_float return value not used

4 years agoadd Hygon Dhyana processor support
fanjinke [Tue, 7 May 2019 15:48:37 +0000 (23:48 +0800)]
add Hygon Dhyana processor support

Signed-off-by: fanjinke <fanjinke@hygon.cn>
4 years agotests: Use float constants and parameters when testing float opcodes.
Doug Nazar [Tue, 13 Aug 2019 19:38:55 +0000 (15:38 -0400)]
tests: Use float constants and parameters when testing float opcodes.

4 years agoorcarm: Fix flushing of icache when using dual map
Doug Nazar [Wed, 7 Aug 2019 01:44:02 +0000 (21:44 -0400)]
orcarm: Fix flushing of icache when using dual map

On a codemem_dual_map setup, we need to also flush the PROT_EXEC alias.

4 years agoorctest: Switch nearby float comparison to ULP method
Doug Nazar [Wed, 7 Aug 2019 04:11:35 +0000 (00:11 -0400)]
orctest: Switch nearby float comparison to ULP method