|
|
|
@ -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 |
|
|
|
|
|
|
|
|
|