diff options
author | Vicente Olivert Riera <Vincent.Riera@imgtec.com> | 2016-02-24 16:38:20 +0000 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2016-02-27 04:22:55 +0100 |
commit | 8514fb6b987c20da34f566b5f92bededd836c8ab (patch) | |
tree | 5a59d1756e61f41e2f2e587a507b4fd2475801e6 /configure | |
parent | 6aac43f1805dcc65d51c1e4a9df34746b8e0d0fd (diff) | |
download | ffmpeg-8514fb6b987c20da34f566b5f92bededd836c8ab.tar.gz |
mips: improve detection of ISAs, FPU and ASEs (DSP, MSA)
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 101 |
1 files changed, 83 insertions, 18 deletions
@@ -5084,27 +5084,92 @@ elif enabled mips; then enabled mmi && check_inline_asm mmi '"punpcklhw $f0, $f0, $f0"' # Enable minimum ISA based on selected options - if enabled mips64 && (enabled mipsdsp || enabled mipsdspr2); then - add_cflags "-mips64r2" - add_asflags "-mips64r2" - elif enabled mips64 && enabled mipsfpu && disabled loongson2 && disabled loongson3; then - add_cflags "-mips64" - add_asflags "-mips64" - elif enabled mipsdsp || enabled mipsdspr2; then - add_cflags "-mips32r2 -mfp32" - add_asflags "-mips32r2 -mfp32" + if enabled mips64; then + if enabled mips64r6; then + check_ldflags "-mips64r6" && + add_cflags "-mips64r6" && + add_asflags "-mips64r6" && + check_inline_asm mips64r6 '"dlsa $0, $0, $0, 1"' || + disable mips64r6 + fi + if disabled mips64r6 && enabled mips64r2; then + check_ldflags "-mips64r2" && + add_cflags "-mips64r2" && + add_asflags "-mips64r2" && + check_inline_asm mips64r2 '"dext $0, $0, 0, 1"' || + disable mips64r2 + fi + if disabled mips64r6 && disabled mips64r2; then + check_ldflags "-mips64" && + add_cflags "-mips64" && + add_asflags "-mips64" && + check_inline_asm mips64r1 '"daddi $0, $0, 0"' || + disable mips64r1 + fi + else + if enabled mips32r6; then + check_ldflags "-mips32r6" && + add_cflags "-mips32r6" && + add_asflags "-mips32r6" && + check_inline_asm mips32r6 '"aui $0, $0, 0"' || + disable mips32r6 + fi + if disabled mips32r6 && enabled mips32r2; then + check_ldflags "-mips32r2" && + add_cflags "-mips32r2" && + add_asflags "-mips32r2" && + check_inline_asm mips32r2 '"ext $0, $0, 0, 1"' || + disable mips32r2 + fi + if disabled mips32r6 && disabled mips32r2; then + check_ldflags "-mips32" && + add_cflags "-mips32" && + add_asflags "-mips32" && + check_inline_asm mips32r1 '"addi $0, $0, 0"' || + disable mips32r1 + fi fi - enabled mipsdsp && add_cflags "-mdsp" && add_asflags "-mdsp" && - check_inline_asm mipsdsp '"addu.qb $t0, $t1, $t2"' - enabled mipsdspr2 && add_cflags "-mdspr2" && add_asflags "-mdspr2" && - check_inline_asm mipsdspr2 '"absq_s.qb $t0, $t1"' - enabled mipsfpu && add_cflags "-mhard-float" && add_asflags "-mhard-float" && - check_inline_asm mipsfpu '"madd.d $f0, $f2, $f4, $f6"' - enabled msa && check_cflags "-mmsa" && check_ldflags "-mmsa" && - check_inline_asm msa '"addvi.b $w0, $w1, 1"' + # MIPS FPU + if enabled mipsfpu; then + check_ldflags "-mhard-float" && + add_cflags "-mhard-float" && + add_asflags "-mhard-float" && + check_inline_asm mipsfpu '"cvt.d.l $f0, $f2"' || + disable mipsfpu + fi + + # MSA and DSP support require ISA revision level 2 or greater + if enabled mips32r2 || enabled mips64r2 || enabled mips32r6 || enabled mips64r6; then + # MSA must be used with -mfp64 and -mhard-float + if enabled mipsfpu; then + if enabled msa; then + check_ldflags "-mfp64 -mmsa" && + add_cflags "-mfp64 -mmsa" && + add_asflags "-mfp64 -mmsa" && + check_inline_asm msa '"addvi.b $w0, $w1, 1"' && + check_header msa.h || + disable msa + fi + else + disable msa + fi - enabled msa && add_asflags "-mmsa" + if enabled mipsdsp; then + check_ldflags "-mdsp" && + add_cflags "-mdsp" && + add_asflags "-mdsp" && + check_inline_asm mipsdsp '"addu.qb $t0, $t1, $t2"' || + disable mipsdsp + fi + if enabled mipsdspr2; then + check_ldflags "-mdspr2" && + add_cflags "-mdspr2" && + add_asflags "-mdspr2" && + check_inline_asm mipsdspr2 '"absq_s.qb $t0, $t1"' || + disable mipsdspr2 + fi + fi elif enabled parisc; then |