This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] test for altivec h/w on PowerPC


On Tuesday 01 March 2005 17:56, Daniel Jacobowitz wrote:
> On Tue, Mar 01, 2005 at 04:32:17PM -0800, Paul Gilliam wrote:
> > Daniel,
> >
> > Thanks a lot for your speedy review!
> >
> > I didn't know Janis wrote it, she didn't say so when she showed it to me.
> > (Her cube is right next to mine: we are in the same group)
>
> She's too modest :-)  Or my memory is bad.

I just talked to her.  She doesn't think she needs the atribution and it came 
from Aldy Hernandez anyway.  8-)
>
> > Ok to commit?
>
> No patch attached?  :-)
I CAN'T BELEAVE IT !  FUDGE!

Here it is:
(This time for sure, I hope 8-)

-=# Paul #=-
diff -Naur testsuite.old/ChangeLog testsuite/ChangeLog
--- testsuite.old/ChangeLog	2005-03-01 14:56:21.439229400 -0800
+++ testsuite/ChangeLog	2005-03-01 15:59:49.052246512 -0800
@@ -1,3 +1,10 @@
+2004-03-01  Paul Gilliam  <pgilliam@us.ibm.com>
+
+        * lib/gdb.exp: added 'skip_altivec_tests', a modification of
+        Janis Johnson's 'check_vmx_hw_available' from GCC testsuite
+        * lib/gdb.arch/altivec-abi.exp: use new 'skip_altivec_tests'
+        * lib/gdb.arch/altivec-regs.exp: Likewise
+
 2004-02-24  Joel Brobecker  <brobecker@adacore.com>
 
 	* gdb.ada/fixed_points.exp: Create compilation object directory
diff -Naur testsuite.old/gdb.arch/altivec-abi.exp testsuite/gdb.arch/altivec-abi.exp
--- testsuite.old/gdb.arch/altivec-abi.exp	2005-03-01 14:56:21.484222560 -0800
+++ testsuite/gdb.arch/altivec-abi.exp	2005-03-01 15:01:49.451289288 -0800
@@ -32,7 +32,7 @@
 set prms_id 0
 set bug_id 0
 
-if ![istarget "powerpc-*altivec"] then {
+if [skip_altivec_tests] {
     verbose "Skipping altivec abi tests."
     return
 }
diff -Naur testsuite.old/gdb.arch/altivec-regs.exp testsuite/gdb.arch/altivec-regs.exp
--- testsuite.old/gdb.arch/altivec-regs.exp	2005-03-01 14:56:21.485222408 -0800
+++ testsuite/gdb.arch/altivec-regs.exp	2005-03-01 15:02:41.869176744 -0800
@@ -32,7 +32,7 @@
 set prms_id 0
 set bug_id 0
 
-if ![istarget "powerpc-*altivec"] then {
+if [skip_altivec_tests] then {
     verbose "Skipping altivec register tests."
     return
 }
diff -Naur testsuite.old/lib/gdb.exp testsuite/lib/gdb.exp
--- testsuite.old/lib/gdb.exp	2005-03-01 14:56:22.127258976 -0800
+++ testsuite/lib/gdb.exp	2005-03-02 10:09:13.241270112 -0800
@@ -1142,6 +1142,59 @@
     return 0
 }
 
+# Run a test on the target to see if it supports vmx hardware.
+# Return 1 if it does not, 0 if it does.
+
+# This code is based on 'check_vmx_hw_available' from the GCC testsuite.
+
+proc skip_altivec_tests {} {
+    global skip_vmx_tests_saved
+
+    if [info exists skip_vmx_tests_saved] {
+        verbose "check_hw_available:  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 "check_hw_available  returning 0" 2
+        return [set $skip_vmx_tests_saved 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 "skip_altivec_testing  compiling testfile $src" 0
+    set lines [gdb_compile $src $exe executable {debug additional_flags=-maltivec}]
+    file delete $src
+
+    if ![string match "" $lines] then {
+        verbose "check_vmx_hw_availalble testfile compilation failed" 2
+        return [set skip_vmx_tests_saved 1]
+    }
+
+    # No error message, compilation succeeded so now run it.
+
+    set exec_result [remote_exec target "./$exe"]
+    remote_file build delete "$exe"
+
+    return [set skip_vmx_tests_saved [lindex $exec_result 0]]
+}
+
 # Skip all the tests in the file if you are not on an hppa running
 # hpux target.
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]