summaryrefslogtreecommitdiff
path: root/libavutil/arm
Commit message (Collapse)AuthorAge
* arm: hpeldsp: prevent overreads in armv6 asmJanne Grunau2014-03-05
| | | | | | | Based on a patch by Russel King <rmk+libav@arm.linux.org.uk> Bug-Id: 646 CC: libav-stable@libav.org
* arm: Mark the stack as non-executableMartin Storsjö2014-02-19
| | | | | | | If linking in an object file without this attribute set, the linker will assume that an executable stack might be needed. Signed-off-by: Martin Storsjö <martin@martin.st>
* arm: Add EXTERN_ASM to the .func and .type declarations for exported symbolsMartin Storsjö2014-02-07
| | | | | | | | | | | | | | | This makes the generated assembly more internally consistent, avoiding declaring two labels for the same function (for cases where EXTERN_ASM is empty) and not declaring a separate unprefixed label in other cases. This also makes sure the .func and .type delcarations have the same prefix. They have previously not been used on the platforms that have prefixed symbols on arm (iOS), but gas-preprocessor has recently started using the .func declarations for adding .thumb_func declarations for such functions. Signed-off-by: Martin Storsjö <martin@martin.st>
* arm: Add an option for making sure NEON registers aren't clobberedMartin Storsjö2014-01-11
| | | | | | This is pretty much based on the same test for XMM registers. Signed-off-by: Martin Storsjö <martin@martin.st>
* arm: Allow overriding the alignment set in the function macroMartin Storsjö2014-01-07
| | | | | | | | | | | | | | | The function macro always sets .align 2 before declaring the function label (since 5c5e1ea3) and always sets the section to .text (since 278caa6a). The .align 5 before certain functions, added in fc252eba, were added before .text and .align were added to the function macro and thus became useless/unused when the function macro got them. This restores the original intention, to align the loop entry points. Signed-off-by: Martin Storsjö <martin@martin.st>
* arm: float_dsp: Propagate cpu_flags to vfp initialization functionDiego Biurrun2013-08-29
|
* avutil: Refactor CPU extension availability macrosDiego Biurrun2013-08-28
|
* avutil: Move internal CPU detection function declarations to private headerDiego Biurrun2013-08-28
|
* Employ consistent LIBAV_COMPAT_ multiple inclusion guards in compat/Diego Biurrun2013-07-18
| | | | Also fix a comment and an #endif comment.
* arm: Only output eabi attributes if building for ELFMartin Storsjö2013-05-27
| | | | | | | | This matches the other eabi attribute in the same file. This is required in order to build for arm/hardfloat with other object file formats than ELF. Signed-off-by: Martin Storsjö <martin@martin.st>
* avutil: Add av_cold attributes to init functions missing themDiego Biurrun2013-05-04
|
* arm: Fall back to runtime cpu feature detection via /proc/cpuinfoMartin Storsjö2013-02-11
| | | | | | | | | | | | | | | | On recent android versions, /proc/self/auxw is unreadable (unless the process is running running under the shell uid or in debuggable mode, which makes it hard to notice). See http://b.android.com/43055 and https://android-review.googlesource.com/51271 for more information about the issue. This makes sure e.g. neon optimizations are enabled at runtime in android apps even when built in release mode, if configured to use the runtime detection. CC: libav-stable@libav.org Signed-off-by: Martin Storsjö <martin@martin.st>
* floatdsp: move scalarproduct_float from dsputil to avfloatdsp.Ronald S. Bultje2013-01-22
| | | | This makes the aac decoder and all voice codecs independent of dsputil.
* floatdsp: move butterflies_float from dsputil to avfloatdsp.Ronald S. Bultje2013-01-22
| | | | | This makes wmadec/enc, twinvq and mpegaudiodec (i.e. mp2/mp3) independent of dsputil.
* floatdsp: move vector_fmul_reverse from dsputil to avfloatdsp.Ronald S. Bultje2013-01-22
| | | | | | Now, nellymoserenc and aacenc no longer depends on dsputil. Independent of this patch, wmaprodec also does not depend on dsputil, so I removed it from there also.
* floatdsp: move vector_fmul_add from dsputil to avfloatdsp.Ronald S. Bultje2013-01-22
|
* lavc: Move vector_fmul_window to AVFloatDSPContextJustin Ruggles2013-01-16
| | | | Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* arm: detect cpu features at runtime on LinuxMans Rullgard2012-12-07
| | | | | | | | This allows compiling optimised functions for features not enabled in the core build and selecting these at runtime if the system has the necessary support. Signed-off-by: Mans Rullgard <mans@mansr.com>
* arm: rename ARMVFP config symbol to VFPMans Rullgard2012-12-07
| | | | | | | This is consistent with usual ARM nomenclature as well as with the VFPV3 and NEON symbols which both lack the ARM prefix. Signed-off-by: Mans Rullgard <mans@mansr.com>
* arm: use HAVE*_INLINE/EXTERNAL macros for conditional compilationMans Rullgard2012-12-07
| | | | | | These macros reflect the actual capabilities required here. Signed-off-by: Mans Rullgard <mans@mansr.com>
* dsputil: move vector_fmul_scalar() to AVFloatDSPContext in libavutilJustin Ruggles2012-11-26
|
* Move avutil tables only used in libavcodec to libavcodec.Diego Biurrun2012-10-11
|
* ARM: use numeric ID for Tag_ABI_align_preservedMans Rullgard2012-10-03
| | | | | | Some old assemblers still in use do not support named tags. Signed-off-by: Mans Rullgard <mans@mansr.com>
* ARM: bswap: drop armcc version of av_bswap16()Mans Rullgard2012-10-02
| | | | | | | This function causes several versions of armcc to miscompile code, and the performance impact is small. Signed-off-by: Mans Rullgard <mans@mansr.com>
* ARM: set Tag_ABI_align_preserved in all asm filesMans Rullgard2012-10-02
| | | | | | | | All our ARM asm preserves alignment so setting this attribute in a common location is simpler. This removes numerous warnings when linking with armcc. Signed-off-by: Mans Rullgard <mans@mansr.com>
* ARM: fix Thumb PIC on AppleMans Rullgard2012-10-02
| | | | | | | LDR with register offset and PC as base register is not available in the Thumb instruction set so the addition must be done separately. Signed-off-by: Mans Rullgard <mans@mansr.com>
* ARM: use 2-operand syntax for ADD Rd, PC in Apple PIC codeMans Rullgard2012-09-21
| | | | | | | The Apple assembler refuses to assemble the 3-operand form in Thumb2 even though it is valid syntax. Signed-off-by: Mans Rullgard <mans@mansr.com>
* ARM: align PIC offset pools to 4 bytesMans Rullgard2012-09-21
| | | | | | | | | When building Thumb2 code, the end of a function, where the PIC offsets are placed, need not be aligned. Although the values are only accessed with instructions allowing unaligned addresses, keeping them aligned is preferable. Signed-off-by: Mans Rullgard <mans@mansr.com>
* ARM: swap source operands in some add instructionsMans Rullgard2012-09-20
| | | | | | This allows using a 16-bit opcode when generating Thumb2 code. Signed-off-by: Mans Rullgard <mans@mansr.com>
* flacdsp: arm optimised lpc filterMans Rullgard2012-09-15
|
* ARM: intmath: use native-size return types for clipping functionsMans Rullgard2012-08-13
| | | | | | | This avoids having the compiler redundantly mask the values to the smaller size. Signed-off-by: Mans Rullgard <mans@mansr.com>
* libavutil: add saturating addition functionsMans Rullgard2012-08-13
| | | | | | | Fixed-point audio codecs often use saturating arithmetic, and special instructions for these operations are common. Signed-off-by: Mans Rullgard <mans@mansr.com>
* ARM: add missing "cc" clobber in av_clipl_int32_arm()Mans Rullgard2012-08-10
| | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* ARM: use Q/R inline asm operand modifiers only if supportedMans Rullgard2012-08-07
| | | | | | | | | | Some compilers do not support the Q/R modifiers used to access the low/high parts of a 64-bit register pair. Check for this and disable all uses of it when not supported. Fixes bug #337. Signed-off-by: Mans Rullgard <mans@mansr.com>
* ARM: generate position independent code to access data symbolsMans Rullgard2012-07-01
| | | | | | | | | | | This creates proper position independent code when accessing data symbols if CONFIG_PIC is set. References to external symbols should now use the movrelx macro. Some additional code changes are required since this macro may need a register to hold the GOT pointer. Signed-off-by: Mans Rullgard <mans@mansr.com>
* cosmetics: do not use full path for local headersDiego Biurrun2012-06-22
|
* float_dsp: Move vector_fmac_scalar() from libavcodec to libavutilJustin Ruggles2012-06-18
|
* ARM: fix float_dsp breakage from d5a7229Mans Rullgard2012-06-08
| | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* Add a float DSP framework to libavutilJustin Ruggles2012-06-08
| | | | Move vector_fmul() from DSPContext to AVFloatDSPContext.
* ARM: Move asm.S from libavcodec to libavutilJustin Ruggles2012-06-08
| | | | | This will allow for easier implementation of ARM-optimized functions in libraries other than libavcodec.
* build: cosmetics: Add missing end-of-line backslashes to item lists.Diego Biurrun2012-05-07
|
* arm: intreadwrite: revert 16-bit load asm to old version for gcc < 4.6Mans Rullgard2012-05-03
| | | | | | | | Commit adebad0 "arm: intreadwrite: fix inline asm constraints for gcc 4.6 and later" caused some older gcc versions to miscompile code. This reverts to the old version of the code for these compilers. Signed-off-by: Mans Rullgard <mans@mansr.com>
* arm: intreadwrite: disable inline asm for gcc 4.7 and laterMans Rullgard2012-05-02
| | | | | | | | Starting with version 4.7, gcc properly supports unaligned memory accesses on ARM. Not using the inline asm with these compilers results in better code. Signed-off-by: Mans Rullgard <mans@mansr.com>
* arm: intreadwrite: fix inline asm constraints for gcc 4.6 and laterMans Rullgard2012-05-02
| | | | | | | | | | | | | | | | | | | | With a dereferenced type-cast pointer as memory operand, gcc 4.6 and later will sometimes copy the data to a temporary location, the address of which is used as the operand value, if it thinks the target address might be misaligned. Using a pointer to a packed struct type instead does the right thing. The 16-bit case is special since the ldrh instruction addressing modes are limited compared to ldr. The "Uq" constraint produces a memory reference suitable for an ldrsb instruction, which supports the same addressing modes as ldrh. However, the restrictions appear to apply only when the operand addresses a single byte. The memory reference must thus be split into two operands each targeting one byte. Finally, the "Uq" constraint is only available in ARM mode. The Thumb-2 ldrh instruction supports most addressing modes so the normal "m" constraint can be used there. Signed-off-by: Mans Rullgard <mans@mansr.com>
* ARM: allow runtime masking of CPU featuresMans Rullgard2012-04-22
| | | | | | | This allows masking CPU features with the -cpuflags avconv option which is useful for testing different optimisations without rebuilding. Signed-off-by: Mans Rullgard <mans@mansr.com>
* remove iwmmxt optimizationsJanne Grunau2012-03-12
| | | | | | The were broken since August of 2010 without anyone noticing until three weeks ago. Nobody cares about it anymore and hopefully Marvell will support NEON like in the PXA978 from now on.
* bswap: make generic implementation more compiler-friendlyMans Rullgard2011-12-12
| | | | | | | | With these changes, gcc 4.5 and later recognise it as a bswap and use the proper instructions on ARM and x86. On x86, the 16-bit bswap is recognised from gcc 4.1. Signed-off-by: Mans Rullgard <mans@mansr.com>
* ARM: allow building in Thumb2 modeMans Rullgard2011-06-23
| | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* ARM: simplify inline asm with 64-bit operandsMans Rullgard2011-05-30
| | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* ARM: improve FASTDIV asmMans Rullgard2011-05-28
| | | | | | This uses one register less. Also add missing "cc" clobber. Signed-off-by: Mans Rullgard <mans@mansr.com>