summaryrefslogtreecommitdiff
path: root/libavutil/arm/intreadwrite.h
Commit message (Collapse)AuthorAge
* avutil/attributes: add AV_GCC_VERSION_AT_MOSTJames Almer2015-09-18
| | | | | Reviewed-by: Michael Niedermayer <michaelni@gmx.at> Signed-off-by: James Almer <jamrial@gmail.com>
* Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-08-09
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: (23 commits) build: cosmetics: Reorder some lists in a more logical fashion x86: pngdsp: Fix assembly for OS/2 fate: add test for RTjpeg in nuv with frameheader rtmp: send check_bw as notification g723_1: clip argument for 15-bit version of normalize_bits() g723_1: use all LPC vectors in formant postfilter id3v2: Support v2.2 PIC avplay: fix build with lavfi disabled. avconv: split configuring filter configuration to a separate file. avconv: split option parsing into a separate file. mpc8: do not leave padding after last frame in buffer for the next decode call mpegaudioenc: list supported channel layouts. mpegaudiodec: don't print an error on > 1 frame in a packet. api-example: update to new audio encoding API. configure: add --enable/disable-random option doc: cygwin: Update list of FATE package requirements build: Remove all installed headers and header directories on uninstall build: change checkheaders to use regular build rules rtmp: Add a new option 'rtmp_subscribe' rtmp: Add support for subscribing live streams ... Conflicts: Makefile common.mak configure doc/examples/decoding_encoding.c ffmpeg.c libavcodec/g723_1.c libavcodec/mpegaudiodec.c libavcodec/x86/pngdsp.asm libavformat/version.h library.mak tests/fate/video.mak Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * 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>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-05-05
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: configure: add POWER[5-7] support arm: intreadwrite: revert 16-bit load asm to old version for gcc < 4.6 vqavideo: return error if image size is not a multiple of block size cosmetics: indentation avformat: only fill-in interpolated timestamps if duration is non-zero avformat: remove a workaround for broken timestamps Conflicts: libavformat/utils.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * 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>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-05-02
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: arm: intreadwrite: disable inline asm for gcc 4.7 and later arm: intreadwrite: fix inline asm constraints for gcc 4.6 and later indeo3: fix motion vector validation pcm_bluray: set bits_per_raw_sample for > 16-bit twinvq: fix out of bounds array access lavr: use 8.8 instead of 10.6 as the 16-bit fixed-point mixing coeff type Conflicts: doc/APIchanges libavcodec/indeo3.c libavcodec/pcm-mpeg.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * 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>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2011-05-31
|\| | | | | | | | | | | | | | | * qatar/master: swscale: Remove unused variable. ARM: simplify inline asm with 64-bit operands Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * ARM: simplify inline asm with 64-bit operandsMans Rullgard2011-05-30
| | | | | | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
| * Replace FFmpeg with Libav in licence headersMans Rullgard2011-03-19
|/ | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* ARM: change return type of AV_RN16() to unsignedMåns Rullgård2010-09-26
| | | | | | | This prevents gcc inserting useless UXTH instructions, at least in some cases. Originally committed as revision 25212 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Mark all intreadwrite functions av_always_inlineMåns Rullgård2010-01-18
| | | | Originally committed as revision 21278 to svn://svn.ffmpeg.org/ffmpeg/trunk
* ARM: first value loaded in AV_RN64 needs to be early-clobberMåns Rullgård2009-08-16
| | | | Originally committed as revision 19656 to svn://svn.ffmpeg.org/ffmpeg/trunk
* ARM asm for AV_RN*()Måns Rullgård2009-04-18
ARMv6 and later support unaligned loads and stores for single word/halfword but not double/multiple. GCC is ignorant of this and will always use bytewise accesses for unaligned data. Casting to an int32_t pointer is dangerous since a load/store double or multiple instruction might be used (this happens with some code in FFmpeg). Implementing the AV_[RW]* macros with inline asm using only supported instructions gives fast and safe unaligned accesses. ARM RVCT does the right thing with generic code. This gives an overall speedup of up to 10%. Originally committed as revision 18601 to svn://svn.ffmpeg.org/ffmpeg/trunk