| @@ -811,6 +811,17 @@ check_cmd(){ | |||||
| test_cmd $@ && enable $cmd | test_cmd $@ && enable $cmd | ||||
| } | } | ||||
| check_as(){ | |||||
| log check_as "$@" | |||||
| name=$1 | |||||
| code=$2 | |||||
| shift 2 | |||||
| disable $name | |||||
| test_as $@ <<EOF && enable $name | |||||
| $code | |||||
| EOF | |||||
| } | |||||
| check_inline_asm(){ | check_inline_asm(){ | ||||
| log check_inline_asm "$@" | log check_inline_asm "$@" | ||||
| name="$1" | name="$1" | ||||
| @@ -825,7 +836,7 @@ EOF | |||||
| check_insn(){ | check_insn(){ | ||||
| log check_insn "$@" | log check_insn "$@" | ||||
| check_inline_asm ${1}_inline "$2" | check_inline_asm ${1}_inline "$2" | ||||
| echo "$2" | test_as && enable ${1}_external || disable ${1}_external | |||||
| check_as ${1}_external "$2" | |||||
| } | } | ||||
| test_x86asm(){ | test_x86asm(){ | ||||
| @@ -4213,11 +4224,7 @@ check_gas() { | |||||
| m x | m x | ||||
| EOF | EOF | ||||
| # .altmacro is only used in arm asm | # .altmacro is only used in arm asm | ||||
| ! enabled arm || test_as <<EOF || return 1 | |||||
| .altmacro | |||||
| EOF | |||||
| enable gnu_as | |||||
| return 0 | |||||
| ! enabled arm || check_as gnu_as ".altmacro" | |||||
| } | } | ||||
| if enabled_any arm aarch64 || enabled_all ppc altivec && enabled asm; then | if enabled_any arm aarch64 || enabled_all ppc altivec && enabled asm; then | ||||
| @@ -4243,10 +4250,8 @@ if enabled_any arm aarch64 || enabled_all ppc altivec && enabled asm; then | |||||
| $nogas "GNU assembler not found, install/update gas-preprocessor" | $nogas "GNU assembler not found, install/update gas-preprocessor" | ||||
| fi | fi | ||||
| test_as <<EOF && enable as_func | |||||
| .func test | |||||
| .endfunc | |||||
| EOF | |||||
| check_as as_func ".func test | |||||
| .endfunc" | |||||
| fi | fi | ||||
| check_inline_asm inline_asm_labels '"1:\n"' | check_inline_asm inline_asm_labels '"1:\n"' | ||||
| @@ -4297,18 +4302,12 @@ 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)' | ||||
| test_as <<EOF && enable as_arch_directive | |||||
| .arch armv7-a | |||||
| EOF | |||||
| test_as <<EOF && enable as_fpu_directive | |||||
| .fpu neon | |||||
| EOF | |||||
| check_as as_arch_directive ".arch armv7-a" | |||||
| 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 | ||||
| [ "$objformat" = elf32 ] || [ "$objformat" = elf64 ] && | [ "$objformat" = elf32 ] || [ "$objformat" = elf64 ] && | ||||
| test_as <<EOF && enable as_object_arch | |||||
| .object_arch armv4 | |||||
| EOF | |||||
| check_as as_object_arch ".object_arch armv4" | |||||
| # MS armasm fails to assemble our PIC constructs | # MS armasm fails to assemble our PIC constructs | ||||
| [ $target_os != win32 ] && enabled_all armv6t2 shared !pic && enable_weak_pic | [ $target_os != win32 ] && enabled_all armv6t2 shared !pic && enable_weak_pic | ||||