|
|
|
@ -660,8 +660,8 @@ check_as(){ |
|
|
|
|
check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C -o $TMPO $TMPC |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
check_asm(){ |
|
|
|
|
log check_asm "$@" |
|
|
|
|
check_inline_asm(){ |
|
|
|
|
log check_inline_asm "$@" |
|
|
|
|
name="$1" |
|
|
|
|
code="$2" |
|
|
|
|
shift 2 |
|
|
|
@ -2833,31 +2833,31 @@ EOF |
|
|
|
|
warn "Compiler does not indicate floating-point ABI, guessing $fpabi." |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"' |
|
|
|
|
enabled armv6 && check_asm armv6 '"sadd16 r0, r0, r0"' |
|
|
|
|
enabled armv6t2 && check_asm armv6t2 '"movt r0, #0"' |
|
|
|
|
enabled armvfp && check_asm armvfp '"fadds s0, s0, s0"' |
|
|
|
|
enabled neon && check_asm neon '"vadd.i16 q0, q0, q0"' |
|
|
|
|
enabled vfpv3 && check_asm vfpv3 '"vmov.f32 s0, #1.0"' |
|
|
|
|
enabled armv5te && check_inline_asm armv5te '"qadd r0, r0, r0"' |
|
|
|
|
enabled armv6 && check_inline_asm armv6 '"sadd16 r0, r0, r0"' |
|
|
|
|
enabled armv6t2 && check_inline_asm armv6t2 '"movt r0, #0"' |
|
|
|
|
enabled armvfp && check_inline_asm armvfp '"fadds s0, s0, s0"' |
|
|
|
|
enabled neon && check_inline_asm neon '"vadd.i16 q0, q0, q0"' |
|
|
|
|
enabled vfpv3 && check_inline_asm vfpv3 '"vmov.f32 s0, #1.0"' |
|
|
|
|
|
|
|
|
|
check_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)' |
|
|
|
|
check_asm asm_mod_y '"vmul.i32 d0, d0, %y0" :: "x"(0)' |
|
|
|
|
check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)' |
|
|
|
|
check_inline_asm asm_mod_y '"vmul.i32 d0, d0, %y0" :: "x"(0)' |
|
|
|
|
|
|
|
|
|
enabled_all armv6t2 shared !pic && enable_pic |
|
|
|
|
|
|
|
|
|
elif enabled mips; then |
|
|
|
|
|
|
|
|
|
check_asm loongson '"dmult.g $1, $2, $3"' |
|
|
|
|
enabled mmi && check_asm mmi '"lq $2, 0($2)"' |
|
|
|
|
check_inline_asm loongson '"dmult.g $1, $2, $3"' |
|
|
|
|
enabled mmi && check_inline_asm mmi '"lq $2, 0($2)"' |
|
|
|
|
|
|
|
|
|
elif enabled ppc; then |
|
|
|
|
|
|
|
|
|
enable local_aligned_8 local_aligned_16 |
|
|
|
|
|
|
|
|
|
check_asm dcbzl '"dcbzl 0, %0" :: "r"(0)' |
|
|
|
|
check_asm ibm_asm '"add 0, 0, 0"' |
|
|
|
|
check_asm ppc4xx '"maclhw r10, r11, r12"' |
|
|
|
|
check_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)' |
|
|
|
|
check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)' |
|
|
|
|
check_inline_asm ibm_asm '"add 0, 0, 0"' |
|
|
|
|
check_inline_asm ppc4xx '"maclhw r10, r11, r12"' |
|
|
|
|
check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)' |
|
|
|
|
|
|
|
|
|
# AltiVec flags: The FSF version of GCC differs from the Apple version |
|
|
|
|
if enabled altivec; then |
|
|
|
@ -2885,7 +2885,8 @@ EOF |
|
|
|
|
|
|
|
|
|
elif enabled sparc; then |
|
|
|
|
|
|
|
|
|
enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc && |
|
|
|
|
enabled vis && |
|
|
|
|
check_inline_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc && |
|
|
|
|
add_cflags -mcpu=ultrasparc -mtune=ultrasparc |
|
|
|
|
|
|
|
|
|
elif enabled x86; then |
|
|
|
@ -2912,15 +2913,15 @@ elif enabled x86; then |
|
|
|
|
EOF |
|
|
|
|
|
|
|
|
|
# check whether EBX is available on x86 |
|
|
|
|
check_asm ebx_available '""::"b"(0)' && |
|
|
|
|
check_asm ebx_available '"":::"%ebx"' |
|
|
|
|
check_inline_asm ebx_available '""::"b"(0)' && |
|
|
|
|
check_inline_asm ebx_available '"":::"%ebx"' |
|
|
|
|
|
|
|
|
|
# check whether xmm clobbers are supported |
|
|
|
|
check_asm xmm_clobbers '"":::"%xmm0"' |
|
|
|
|
check_inline_asm xmm_clobbers '"":::"%xmm0"' |
|
|
|
|
|
|
|
|
|
# check whether binutils is new enough to compile SSSE3/MMXEXT |
|
|
|
|
enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"' |
|
|
|
|
enabled mmxext && check_asm mmxext '"pmaxub %mm0, %mm1"' |
|
|
|
|
enabled ssse3 && check_inline_asm ssse3 '"pabsw %xmm0, %xmm0"' |
|
|
|
|
enabled mmxext && check_inline_asm mmxext '"pmaxub %mm0, %mm1"' |
|
|
|
|
|
|
|
|
|
if ! disabled_any asm mmx yasm; then |
|
|
|
|
if check_cmd $yasmexe --version; then |
|
|
|
@ -2956,7 +2957,7 @@ fi |
|
|
|
|
|
|
|
|
|
if enabled asm; then |
|
|
|
|
as=${gas:=$as} |
|
|
|
|
check_asm gnu_as '".macro m n\n\\n:.int 0\n.endm\nm x"' || |
|
|
|
|
check_inline_asm gnu_as '".macro m n\n\\n:.int 0\n.endm\nm x"' || |
|
|
|
|
$nogas "GNU assembler not found, install gas-preprocessor" |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|