2004-05-02 Paul Gilliam <pgilliam@us.ibm.com>
* lib/gdb.exp (skip_altivec_tests): New function, based on check_vmx_hw_available from the GCC testsuite. * lib/gdb.arch/altivec-abi.exp: Use skip_altivec_tests. * lib/gdb.arch/altivec-regs.exp: Likewise.
This commit is contained in:
parent
b7be4033a1
commit
3c95e6af3b
@ -1,3 +1,10 @@
|
||||
2004-05-02 Paul Gilliam <pgilliam@us.ibm.com>
|
||||
|
||||
* lib/gdb.exp (skip_altivec_tests): New function, based on
|
||||
check_vmx_hw_available from the GCC testsuite.
|
||||
* lib/gdb.arch/altivec-abi.exp: Use skip_altivec_tests.
|
||||
* lib/gdb.arch/altivec-regs.exp: Likewise.
|
||||
|
||||
2005-05-02 Jim Blandy <jimb@redhat.com>
|
||||
|
||||
* gdb.base/auxv.exp: Call 'untested' and return -1 instead of
|
||||
|
@ -32,8 +32,9 @@ if $tracelevel then {
|
||||
set prms_id 0
|
||||
set bug_id 0
|
||||
|
||||
if ![istarget "powerpc-*altivec"] then {
|
||||
if {![istarget "powerpc*"] || [skip_altivec_tests]} then {
|
||||
verbose "Skipping altivec abi tests."
|
||||
verbose -log "Skipping altivec abi tests."
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -32,8 +32,9 @@ if $tracelevel then {
|
||||
set prms_id 0
|
||||
set bug_id 0
|
||||
|
||||
if ![istarget "powerpc-*altivec"] then {
|
||||
if {![istarget "powerpc*"] || [skip_altivec_tests]} then {
|
||||
verbose "Skipping altivec register tests."
|
||||
verbose -log "Skipping altivec register tests."
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -1142,6 +1142,94 @@ proc skip_fortran_tests {} {
|
||||
return 0
|
||||
}
|
||||
|
||||
# Run a test on the target to see if it supports vmx hardware. Return 0 if so,
|
||||
# 1 if it does not. Based on 'check_vmx_hw_available' from the GCC testsuite.
|
||||
|
||||
proc skip_altivec_tests {} {
|
||||
global skip_vmx_tests_saved
|
||||
global srcdir subdir gdb_prompt
|
||||
|
||||
# Use the cached value, if it exists.
|
||||
set me "skip_altivec_tests"
|
||||
if [info exists skip_vmx_tests_saved] {
|
||||
verbose "$me: returning saved $skip_vmx_tests_saved" 2
|
||||
return $skip_vmx_tests_saved
|
||||
}
|
||||
|
||||
# Some simulators are known to not support VMX instructions.
|
||||
if { [istarget powerpc-*-eabi] || [istarget powerpc*-*-eabispe] } {
|
||||
verbose "$me: target known to not support VMX, returning 1" 2
|
||||
return [set $skip_vmx_tests_saved 1]
|
||||
}
|
||||
|
||||
# Make sure we have a compiler that understands altivec.
|
||||
set compile_flags {debug additional_flags=-w}
|
||||
if [get_compiler_info not-used] {
|
||||
warning "Could not get compiler info"
|
||||
return 1
|
||||
}
|
||||
if [test_compiler_info gcc*] {
|
||||
set compile_flags "$compile_flags additional_flags=-maltivec"
|
||||
} elseif [test_compiler_info xlc*] {
|
||||
set compile_flags "$compile_flags additional_flags=-qaltivec"
|
||||
} else {
|
||||
verbose "Could not compile with altivec support, returning 1" 2
|
||||
return 1
|
||||
}
|
||||
|
||||
# Set up, compile, and execute a test program containing VMX instructions.
|
||||
# Include the current process ID in the file names to prevent conflicts
|
||||
# with invocations for multiple testsuites.
|
||||
set src vmx[pid].c
|
||||
set exe vmx[pid].x
|
||||
|
||||
set f [open $src "w"]
|
||||
puts $f "int main() {"
|
||||
puts $f "#ifdef __MACH__"
|
||||
puts $f " asm volatile (\"vor v0,v0,v0\");"
|
||||
puts $f "#else"
|
||||
puts $f " asm volatile (\"vor 0,0,0\");"
|
||||
puts $f "#endif"
|
||||
puts $f " return 0; }"
|
||||
close $f
|
||||
|
||||
verbose "$me: compiling testfile $src" 2
|
||||
set lines [gdb_compile $src $exe executable $compile_flags]
|
||||
file delete $src
|
||||
|
||||
if ![string match "" $lines] then {
|
||||
verbose "$me: testfile compilation failed, returning 1" 2
|
||||
return [set skip_vmx_tests_saved 1]
|
||||
}
|
||||
|
||||
# No error message, compilation succeeded so now run it via gdb.
|
||||
|
||||
gdb_exit
|
||||
gdb_start
|
||||
gdb_reinitialize_dir $srcdir/$subdir
|
||||
gdb_load "$exe"
|
||||
gdb_run_cmd
|
||||
gdb_expect {
|
||||
-re ".*Illegal instruction.*${gdb_prompt} $" {
|
||||
verbose -log "\n$me altivec hardware not detected"
|
||||
set skip_vmx_tests_saved 1
|
||||
}
|
||||
-re ".*Program exited normally.*${gdb_prompt} $" {
|
||||
verbose -log "\n$me: altivec hardware detected"
|
||||
set skip_vmx_tests_saved 0
|
||||
}
|
||||
default {
|
||||
warning "\n$me: default case taken"
|
||||
set skip_vmx_tests_saved 1
|
||||
}
|
||||
}
|
||||
gdb_exit
|
||||
remote_file build delete $exe
|
||||
|
||||
verbose "$me: returning $skip_vmx_tests_saved" 2
|
||||
return $skip_vmx_tests_saved
|
||||
}
|
||||
|
||||
# Skip all the tests in the file if you are not on an hppa running
|
||||
# hpux target.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user