[Bug 742843] ORC compiler is disabled on the iOS devices

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Sat Jan 17 03:14:09 PST 2015


https://bugzilla.gnome.org/show_bug.cgi?id=742843
  GStreamer | orc | 1.4.5

--- Comment #15 from Sebastian Dröge (slomo) <slomo at coaxion.net> 2015-01-17 11:14:06 UTC ---
(In reply to comment #14)
> Having enabled static assembly compilation by orc for videotestsrc component
> (chose this one since it has just one most trivial orc-implemented function)
> i've made a successful iOS sdk build. But running the "videotestsrc !
> autovideosink" pipeline i instantly get a EXC_ARM_DA_ALIGN from inside of
> video_test_src_orc_splat_u32.
> Error is dumped at this instruction. 
> vst1.64 { d4, d5 }, [r2,:128]
> The address referenced in error message is not 16-bytes aligned as required by
> instruction.
> I've tried setting clang flag -mno-unaligned-access but no luck. No idea how to
> track back in C code what piece of memory lacks alignment specified.

In theory ORC should emit some assembly that makes sure the memory is correctly
aligned, i.e. that processes the first part of the memory without the SIMD
instructions and only then uses the vector instructions.
However it assumes the the memory is at least aligned to the "unit size", i.e.
in this case 4 byte.

Maybe that assembly code is not emitted when outputting static assembly and
only used for the JIT, or there's a bug in the handling of that instruction.

The C code should have proper alignment in any case.

> Also, is there any way to generate at least close to neon-optimized assembly
> code in clang/gcc so that we won't have to start from scratch with asm
> implementation for the functions that missing it?

All these ORC opcodes should map to <10 SIMD instructions, or would not be
possible to implement at all for one backend. Often there's a 1:1 mapping
between ORC opcodes and the SIMD instructions.


Note that support for generating something (C backup code, which quite often
can be vectorized by compilers too) for functions that use unimplemented
opcodes must be there. There will always be opcodes that are not implemented in
one backend or another.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list