📄 target-supports.exp
字号:
}# Return 1 if this is a PowerPC target that supports SPU.proc check_effective_target_powerpc_spu { } { if [istarget powerpc*-*-linux*] { return [check_effective_target_powerpc_altivec_ok] } else { return 0 }}# Return 1 if this is a PowerPC target with SPE enabled.proc check_effective_target_powerpc_spe { } { if { [istarget powerpc*-*-*] } { return [check_no_compiler_messages powerpc_spe object { #ifndef __SPE__ #error not SPE #else int dummy; #endif }] } else { return 0 }}# Return 1 if this is a PowerPC target with Altivec enabled.proc check_effective_target_powerpc_altivec { } { if { [istarget powerpc*-*-*] } { return [check_no_compiler_messages powerpc_altivec object { #ifndef __ALTIVEC__ #error not Altivec #else int dummy; #endif }] } else { return 0 }}# Return 1 if this is a SPU target with a toolchain that# supports automatic overlay generation.proc check_effective_target_spu_auto_overlay { } { if { [istarget spu*-*-elf*] } { return [check_no_compiler_messages spu_auto_overlay executable { int main (void) { } } "-Wl,--auto-overlay" ] } else { return 0 }}# The VxWorks SPARC simulator accepts only EM_SPARC executables and# chokes on EM_SPARC32PLUS or EM_SPARCV9 executables. Return 1 if the# test environment appears to run executables on such a simulator.proc check_effective_target_ultrasparc_hw { } { return [check_runtime ultrasparc_hw { int main() { return 0; } } "-mcpu=ultrasparc"]}# Return 1 if the target supports hardware vector shift operation.proc check_effective_target_vect_shift { } { global et_vect_shift_saved if [info exists et_vect_shift_saved] { verbose "check_effective_target_vect_shift: using cached result" 2 } else { set et_vect_shift_saved 0 if { ([istarget powerpc*-*-*] && ![istarget powerpc-*-linux*paired*]) || [istarget ia64-*-*] || [istarget i?86-*-*] || [istarget x86_64-*-*] } { set et_vect_shift_saved 1 } } verbose "check_effective_target_vect_shift: returning $et_vect_shift_saved" 2 return $et_vect_shift_saved}# Return 1 if the target supports hardware vectors of long, 0 otherwise.## This can change for different subtargets so do not cache the result.proc check_effective_target_vect_long { } { if { [istarget i?86-*-*] || (([istarget powerpc*-*-*] && ![istarget powerpc-*-linux*paired*]) && [check_effective_target_ilp32]) || [istarget x86_64-*-*] || ([istarget sparc*-*-*] && [check_effective_target_ilp32]) } { set answer 1 } else { set answer 0 } verbose "check_effective_target_vect_long: returning $answer" 2 return $answer}# Return 1 if the target supports hardware vectors of float, 0 otherwise.## This won't change for different subtargets so cache the result.proc check_effective_target_vect_float { } { global et_vect_float_saved if [info exists et_vect_float_saved] { verbose "check_effective_target_vect_float: using cached result" 2 } else { set et_vect_float_saved 0 if { [istarget i?86-*-*] || [istarget powerpc*-*-*] || [istarget spu-*-*] || [istarget mipsisa64*-*-*] || [istarget x86_64-*-*] || [istarget ia64-*-*] } { set et_vect_float_saved 1 } } verbose "check_effective_target_vect_float: returning $et_vect_float_saved" 2 return $et_vect_float_saved}# Return 1 if the target supports hardware vectors of double, 0 otherwise.## This won't change for different subtargets so cache the result.proc check_effective_target_vect_double { } { global et_vect_double_saved if [info exists et_vect_double_saved] { verbose "check_effective_target_vect_double: using cached result" 2 } else { set et_vect_double_saved 0 if { [istarget i?86-*-*] || [istarget x86_64-*-*] || [istarget spu-*-*] } { set et_vect_double_saved 1 } } verbose "check_effective_target_vect_double: returning $et_vect_double_saved" 2 return $et_vect_double_saved}# Return 1 if the target plus current options does not support a vector# max instruction on "int", 0 otherwise.## This won't change for different subtargets so cache the result.proc check_effective_target_vect_no_int_max { } { global et_vect_no_int_max_saved if [info exists et_vect_no_int_max_saved] { verbose "check_effective_target_vect_no_int_max: using cached result" 2 } else { set et_vect_no_int_max_saved 0 if { [istarget sparc*-*-*] || [istarget spu-*-*] || [istarget alpha*-*-*] } { set et_vect_no_int_max_saved 1 } } verbose "check_effective_target_vect_no_int_max: returning $et_vect_no_int_max_saved" 2 return $et_vect_no_int_max_saved}# Return 1 if the target plus current options does not support a vector# add instruction on "int", 0 otherwise.## This won't change for different subtargets so cache the result.proc check_effective_target_vect_no_int_add { } { global et_vect_no_int_add_saved if [info exists et_vect_no_int_add_saved] { verbose "check_effective_target_vect_no_int_add: using cached result" 2 } else { set et_vect_no_int_add_saved 0 # Alpha only supports vector add on V8QI and V4HI. if { [istarget alpha*-*-*] } { set et_vect_no_int_add_saved 1 } } verbose "check_effective_target_vect_no_int_add: returning $et_vect_no_int_add_saved" 2 return $et_vect_no_int_add_saved}# Return 1 if the target plus current options does not support vector# bitwise instructions, 0 otherwise.## This won't change for different subtargets so cache the result.proc check_effective_target_vect_no_bitwise { } { global et_vect_no_bitwise_saved if [info exists et_vect_no_bitwise_saved] { verbose "check_effective_target_vect_no_bitwise: using cached result" 2 } else { set et_vect_no_bitwise_saved 0 } verbose "check_effective_target_vect_no_bitwise: returning $et_vect_no_bitwise_saved" 2 return $et_vect_no_bitwise_saved}# Return 1 if the target plus current options supports a vector# widening summation of *short* args into *int* result, 0 otherwise.# A target can also support this widening summation if it can support# promotion (unpacking) from shorts to ints.## This won't change for different subtargets so cache the result. proc check_effective_target_vect_widen_sum_hi_to_si { } { global et_vect_widen_sum_hi_to_si if [info exists et_vect_widen_sum_hi_to_si_saved] { verbose "check_effective_target_vect_widen_sum_hi_to_si: using cached result" 2 } else { set et_vect_widen_sum_hi_to_si_saved [check_effective_target_vect_unpack] if { [istarget powerpc*-*-*] || [istarget ia64-*-*] } { set et_vect_widen_sum_hi_to_si_saved 1 } } verbose "check_effective_target_vect_widen_sum_hi_to_si: returning $et_vect_widen_sum_hi_to_si_saved" 2 return $et_vect_widen_sum_hi_to_si_saved}# Return 1 if the target plus current options supports a vector# widening summation of *char* args into *short* result, 0 otherwise.# A target can also support this widening summation if it can support# promotion (unpacking) from chars to shorts.## This won't change for different subtargets so cache the result. proc check_effective_target_vect_widen_sum_qi_to_hi { } { global et_vect_widen_sum_qi_to_hi if [info exists et_vect_widen_sum_qi_to_hi_saved] { verbose "check_effective_target_vect_widen_sum_qi_to_hi: using cached result" 2 } else { set et_vect_widen_sum_qi_to_hi_saved 0 if { [check_effective_target_vect_unpack] || [istarget ia64-*-*] } { set et_vect_widen_sum_qi_to_hi_saved 1 } } verbose "check_effective_target_vect_widen_sum_qi_to_hi: returning $et_vect_widen_sum_qi_to_hi_saved" 2 return $et_vect_widen_sum_qi_to_hi_saved}# Return 1 if the target plus current options supports a vector# widening summation of *char* args into *int* result, 0 otherwise.## This won't change for different subtargets so cache the result. proc check_effective_target_vect_widen_sum_qi_to_si { } { global et_vect_widen_sum_qi_to_si if [info exists et_vect_widen_sum_qi_to_si_saved] { verbose "check_effective_target_vect_widen_sum_qi_to_si: using cached result" 2 } else { set et_vect_widen_sum_qi_to_si_saved 0 if { [istarget powerpc*-*-*] } { set et_vect_widen_sum_qi_to_si_saved 1 } } verbose "check_effective_target_vect_widen_sum_qi_to_si: returning $et_vect_widen_sum_qi_to_si_saved" 2 return $et_vect_widen_sum_qi_to_si_saved}# Return 1 if the target plus current options supports a vector# widening multiplication of *char* args into *short* result, 0 otherwise.# A target can also support this widening multplication if it can support# promotion (unpacking) from chars to shorts, and vect_short_mult (non-widening# multiplication of shorts).## This won't change for different subtargets so cache the result.proc check_effective_target_vect_widen_mult_qi_to_hi { } { global et_vect_widen_mult_qi_to_hi if [info exists et_vect_widen_mult_qi_to_hi_saved] { verbose "check_effective_target_vect_widen_mult_qi_to_hi: using cached result" 2 } else { if { [check_effective_target_vect_unpack] && [check_effective_target_vect_short_mult] } { set et_vect_widen_mult_qi_to_hi_saved 1 } else { set et_vect_widen_mult_qi_to_hi_saved 0 } if { [istarget powerpc*-*-*] } { set et_vect_widen_mult_qi_to_hi_saved 1 } } verbose "check_effective_target_vect_widen_mult_qi_to_hi: returning $et_vect_widen_mult_qi_to_hi_saved" 2 return $et_vect_widen_mult_qi_to_hi_saved}# Return 1 if the target plus current options supports a vector# widening multiplication of *short* args into *int* result, 0 otherwise.# A target can also support this widening multplication if it can support# promotion (unpacking) from shorts to ints, and vect_int_mult (non-widening# multiplication of ints).## This won't change for different subtargets so cache the result.proc check_effective_target_vect_widen_mult_hi_to_si { } { global et_vect_widen_mult_hi_to_si if [info exists et_vect_widen_mult_hi_to_si_saved] { verbose "check_effective_target_vect_widen_mult_hi_to_si: using cached result" 2 } else { if { [check_effective_target_vect_unpack] && [check_effective_target_vect_int_mult] } { set et_vect_widen_mult_hi_to_si_saved 1 } else { set et_vect_widen_mult_hi_to_si_saved 0 } if { [istarget powerpc*-*-*] || [istarget spu-*-*] || [istarget i?86-*-*] || [istarget x86_64-*-*] } { set et_vect_widen_mult_hi_to_si_saved 1 } } verbose "check_effective_target_vect_widen_mult_hi_to_si: returning $et_vect_widen_mult_hi_to_si_saved" 2 return $et_vect_widen_mult_hi_to_si_saved}# Return 1 if the target plus current options supports a vector# dot-product of signed chars, 0 otherwise.## This won't change for different subtargets so cache the result.proc check_effective_target_vect_sdot_qi { } { global et_vect_sdot_qi if [info exists et_vect_sdot_qi_saved] { verbose "check_effective_target_vect_sdot_qi: using cached result" 2 } else { set et_vect_sdot_qi_saved 0 } verbose "check_effective_target_vect_sdot_qi: returning $et_vect_sdot_qi_saved" 2 return $et_vect_sdot_qi_saved}# Return 1 if the target plus current options supports a vector# dot-product of unsigned chars, 0 otherwise.## This won't change for different subtargets so cache the result.proc check_effective_target_vect_udot_qi { } { global et_vect_udot_qi if [info exists et_vect_udot_qi_saved] { verbose "check_effective_target_vect_udot_qi: using cached result" 2 } else { set et_vect_udot_qi_saved 0 if { [istarget powerpc*-*-*] } { set et_vect_udot_qi_saved 1 } } verbose "check_effective_target_vect_udot_qi: returning $et_vect_udot_qi_saved" 2 return $et_vect_udot_qi_saved}# Return 1 if the target plus current options supports a vector# dot-product of signed shorts, 0 otherwise.## This won't change for different subtargets so cache the result.proc check_effective_target_vect_sdot_hi { } { global et_vect_sdot_hi if [info exists et_vect_sdot_hi_saved] { verbose "check_effective_target_vect_sdot_hi: using cached result" 2 } else { set et_vect_sdot_hi_saved 0 if { ([istarget powerpc*-*-*] && ![istarget powerpc-*-linux*paired*]) || [istarget i?86-*-*] || [istarget x86_64-*-*] } { set et_vect_sdot_hi_saved 1 } } verbose "check_effective_target_vect_sdot_hi: returning $et_vect_sdot_hi_saved" 2 return $et_vect_sdot_hi_saved}# Return 1 if the target plus current options supports a vector# dot-product of unsigned shorts, 0 otherwise.## This won't change for different subtargets so cache the result.proc check_effective_target_vect_udot_hi { } { global et_vect_udot_hi if [info exists et_vect_udot_hi_saved] { verbose "check_effective_target_vect_udot_hi: using cached result" 2 } else { set et_vect_udot_hi_saved 0 if { ([istarget powerpc*-*-*] && ![istarget powerpc-*-linux*paired*]) } { set et_vect_udot_hi_saved 1 } } verbose "check_effective_target_vect_udot_hi: returning $et_vect_udot_hi_saved" 2 return $et_vect_udot_hi_saved}# Return 1 if the target plus current options supports a vector# demotion (packing) of shorts (to chars) and ints (to shorts) # using modulo arithmetic, 0 otherwise.## This won't change for different subtargets so cache the result.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -