mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
arm: swscale: Only compile the rgb2yuv asm if .dn aliases are supported
Vanilla clang supports altmacro since clang 5.0, and thus doesn't
require gas-preprocessor for building the arm assembly any longer.
However, the built-in assembler doesn't support .dn directives.
This readds checks that were removed in d7320ca3ed
, when
the last usage of .dn directives within libav were removed.
Alternatively, the assembly could be rewritten to not use the
.dn directive, making it available to clang users.
Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
0c25caa470
commit
f33f728470
2
configure
vendored
2
configure
vendored
@ -2149,6 +2149,7 @@ SYSTEM_LIBRARIES="
|
|||||||
|
|
||||||
TOOLCHAIN_FEATURES="
|
TOOLCHAIN_FEATURES="
|
||||||
as_arch_directive
|
as_arch_directive
|
||||||
|
as_dn_directive
|
||||||
as_fpu_directive
|
as_fpu_directive
|
||||||
as_func
|
as_func
|
||||||
as_object_arch
|
as_object_arch
|
||||||
@ -5530,6 +5531,7 @@ EOF
|
|||||||
check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
|
check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
|
||||||
|
|
||||||
check_as as_arch_directive ".arch armv7-a"
|
check_as as_arch_directive ".arch armv7-a"
|
||||||
|
check_as as_dn_directive "ra .dn d0.i16"
|
||||||
check_as as_fpu_directive ".fpu neon"
|
check_as as_fpu_directive ".fpu neon"
|
||||||
|
|
||||||
# llvm's integrated assembler supports .object_arch from llvm 3.5
|
# llvm's integrated assembler supports .object_arch from llvm 3.5
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
#if HAVE_AS_DN_DIRECTIVE
|
||||||
#include "rgb2yuv_neon_common.S"
|
#include "rgb2yuv_neon_common.S"
|
||||||
|
|
||||||
/* downsampled R16G16B16 x8 */
|
/* downsampled R16G16B16 x8 */
|
||||||
@ -78,3 +80,4 @@ alias_qw c8x8x2, q10
|
|||||||
.endm
|
.endm
|
||||||
|
|
||||||
loop_420sp rgbx, nv12, init, kernel_420_16x2, 16
|
loop_420sp rgbx, nv12, init, kernel_420_16x2, 16
|
||||||
|
#endif
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
#if HAVE_AS_DN_DIRECTIVE
|
||||||
#include "rgb2yuv_neon_common.S"
|
#include "rgb2yuv_neon_common.S"
|
||||||
|
|
||||||
/* downsampled R16G16B16 x8 */
|
/* downsampled R16G16B16 x8 */
|
||||||
@ -117,3 +119,4 @@ alias_qw c8x8x2, q10
|
|||||||
|
|
||||||
|
|
||||||
loop_420sp rgbx, nv12, init, kernel_420_16x2, 32
|
loop_420sp rgbx, nv12, init, kernel_420_16x2, 32
|
||||||
|
#endif
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include "libswscale/swscale_internal.h"
|
#include "libswscale/swscale_internal.h"
|
||||||
#include "libavutil/arm/cpu.h"
|
#include "libavutil/arm/cpu.h"
|
||||||
|
|
||||||
|
#if HAVE_AS_DN_DIRECTIVE
|
||||||
extern void rgbx_to_nv12_neon_32(const uint8_t *src, uint8_t *y, uint8_t *chroma,
|
extern void rgbx_to_nv12_neon_32(const uint8_t *src, uint8_t *y, uint8_t *chroma,
|
||||||
int width, int height,
|
int width, int height,
|
||||||
int y_stride, int c_stride, int src_stride,
|
int y_stride, int c_stride, int src_stride,
|
||||||
@ -178,3 +179,8 @@ void ff_get_unscaled_swscale_arm(SwsContext *c)
|
|||||||
if (have_neon(cpu_flags))
|
if (have_neon(cpu_flags))
|
||||||
get_unscaled_swscale_neon(c);
|
get_unscaled_swscale_neon(c);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
void ff_get_unscaled_swscale_arm(SwsContext *c)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user