[Liboil-commit] 2 commits - liboil/liboilfunction.c testsuite/mmx_engine.c

David Schleef ds at kemper.freedesktop.org
Sat Feb 16 21:27:54 PST 2008


 liboil/liboilfunction.c |    2 +
 testsuite/mmx_engine.c  |   96 ++++++++++++++++++++++++++++++------------------
 2 files changed, 63 insertions(+), 35 deletions(-)

New commits:
commit fa9b21eeba8b57531db1219325e0357c78b43ee3
Author: David Schleef <ds at ginger.bigkitten.com>
Date:   Sat Feb 16 21:29:41 2008 -0800

    Always copy the test performance into the impl structure, so the output show up in oil-inspect.

diff --git a/liboil/liboilfunction.c b/liboil/liboilfunction.c
index 6271276..fa1870c 100644
--- a/liboil/liboilfunction.c
+++ b/liboil/liboilfunction.c
@@ -395,6 +395,8 @@ oil_class_optimize (OilFunctionClass * klass)
       }
     } else {
       OIL_WARNING("disabling implementation %s", impl->name);
+      impl->profile_ave = test->profile_ave;
+      impl->profile_std = test->profile_std;
       impl->flags |= OIL_IMPL_FLAG_DISABLED;
     }
   }
commit 3679314389d253d53f3a18199d345c02bc5d614c
Author: David Schleef <ds at ginger.bigkitten.com>
Date:   Sat Feb 16 21:28:38 2008 -0800

    Improve how latency and throughput are measured

diff --git a/testsuite/mmx_engine.c b/testsuite/mmx_engine.c
index 05bfe2b..e18775d 100644
--- a/testsuite/mmx_engine.c
+++ b/testsuite/mmx_engine.c
@@ -123,7 +123,19 @@ void mmx_engine_test(void)
         "  " #insn " %%mm0, %%mm1\n" \
         "  " #insn " %%mm1, %%mm2\n" \
         "  " #insn " %%mm2, %%mm3\n" \
-        "  " #insn " %%mm3, %%mm0\n" \
+        "  " #insn " %%mm3, %%mm4\n" \
+        "  " #insn " %%mm4, %%mm5\n" \
+        "  " #insn " %%mm5, %%mm6\n" \
+        "  " #insn " %%mm6, %%mm7\n" \
+        "  " #insn " %%mm7, %%mm0\n" \
+        "  " #insn " %%mm0, %%mm1\n" \
+        "  " #insn " %%mm1, %%mm2\n" \
+        "  " #insn " %%mm2, %%mm3\n" \
+        "  " #insn " %%mm3, %%mm4\n" \
+        "  " #insn " %%mm4, %%mm5\n" \
+        "  " #insn " %%mm5, %%mm6\n" \
+        "  " #insn " %%mm6, %%mm7\n" \
+        "  " #insn " %%mm7, %%mm0\n" \
         "  decl %%ecx\n" \
         "  jne 1b\n" \
         "  emms\n" \
@@ -132,7 +144,7 @@ void mmx_engine_test(void)
   } \
   oil_profile_get_ave_std(&prof, &ave, &std); \
   ave -= OFFSET; \
-  sci_sprint_alt(s,ave/4000,std/4000); \
+  sci_sprint_alt(s,ave/16000,std/16000); \
   printf("latency of " #insn ": %s\n", s);
 
   CHECK_LATENCY(packssdw)
@@ -190,22 +202,22 @@ void mmx_engine_test(void)
         "  mov $1000, %%ecx\n" \
         ".p2align 4,,15\n" \
         "1:\n" \
-        "  " #insn " %%mm0, %%mm1\n" \
-        "  " #insn " %%mm0, %%mm2\n" \
-        "  " #insn " %%mm0, %%mm3\n" \
-        "  " #insn " %%mm0, %%mm4\n" \
-        "  " #insn " %%mm0, %%mm1\n" \
-        "  " #insn " %%mm0, %%mm2\n" \
-        "  " #insn " %%mm0, %%mm3\n" \
-        "  " #insn " %%mm0, %%mm4\n" \
-        "  " #insn " %%mm0, %%mm1\n" \
-        "  " #insn " %%mm0, %%mm2\n" \
-        "  " #insn " %%mm0, %%mm3\n" \
-        "  " #insn " %%mm0, %%mm4\n" \
-        "  " #insn " %%mm0, %%mm1\n" \
-        "  " #insn " %%mm0, %%mm2\n" \
-        "  " #insn " %%mm0, %%mm3\n" \
-        "  " #insn " %%mm0, %%mm4\n" \
+        "  " #insn " %%mm0, %%mm0\n" \
+        "  " #insn " %%mm1, %%mm1\n" \
+        "  " #insn " %%mm2, %%mm2\n" \
+        "  " #insn " %%mm3, %%mm3\n" \
+        "  " #insn " %%mm4, %%mm4\n" \
+        "  " #insn " %%mm5, %%mm5\n" \
+        "  " #insn " %%mm6, %%mm6\n" \
+        "  " #insn " %%mm7, %%mm7\n" \
+        "  " #insn " %%mm0, %%mm0\n" \
+        "  " #insn " %%mm1, %%mm1\n" \
+        "  " #insn " %%mm2, %%mm2\n" \
+        "  " #insn " %%mm3, %%mm3\n" \
+        "  " #insn " %%mm4, %%mm4\n" \
+        "  " #insn " %%mm5, %%mm5\n" \
+        "  " #insn " %%mm6, %%mm6\n" \
+        "  " #insn " %%mm7, %%mm7\n" \
         "  decl %%ecx\n" \
         "  jne 1b\n" \
         "  emms\n" \
@@ -289,7 +301,19 @@ void sse2_engine_test(void)
         "  " #insn " %%xmm0, %%xmm1\n" \
         "  " #insn " %%xmm1, %%xmm2\n" \
         "  " #insn " %%xmm2, %%xmm3\n" \
-        "  " #insn " %%xmm3, %%xmm0\n" \
+        "  " #insn " %%xmm3, %%xmm4\n" \
+        "  " #insn " %%xmm4, %%xmm5\n" \
+        "  " #insn " %%xmm5, %%xmm6\n" \
+        "  " #insn " %%xmm6, %%xmm7\n" \
+        "  " #insn " %%xmm7, %%xmm0\n" \
+        "  " #insn " %%xmm0, %%xmm1\n" \
+        "  " #insn " %%xmm1, %%xmm2\n" \
+        "  " #insn " %%xmm2, %%xmm3\n" \
+        "  " #insn " %%xmm3, %%xmm4\n" \
+        "  " #insn " %%xmm4, %%xmm5\n" \
+        "  " #insn " %%xmm5, %%xmm6\n" \
+        "  " #insn " %%xmm6, %%xmm7\n" \
+        "  " #insn " %%xmm7, %%xmm0\n" \
         "  decl %%ecx\n" \
         "  jne 1b\n" \
         :::"ecx"); \
@@ -297,7 +321,7 @@ void sse2_engine_test(void)
   } \
   oil_profile_get_ave_std(&prof, &ave, &std); \
   ave -= OFFSET; \
-  sci_sprint_alt(s,ave/4000,std/4000); \
+  sci_sprint_alt(s,ave/16000,std/16000); \
   printf("latency of " #insn ": %s\n", s);
 
   CHECK_LATENCY(packssdw)
@@ -357,20 +381,22 @@ void sse2_engine_test(void)
         "  mov $1000, %%ecx\n" \
         ".p2align 4,,15\n" \
         "1:\n" \
-        "  " #insn " %%xmm0, %%xmm1\n" \
-        "  " #insn " %%xmm0, %%xmm2\n" \
-        "  " #insn " %%xmm0, %%xmm3\n" \
-        "  " #insn " %%xmm0, %%xmm4\n" \
-        "  " #insn " %%xmm0, %%xmm5\n" \
-        "  " #insn " %%xmm0, %%xmm6\n" \
-        "  " #insn " %%xmm0, %%xmm7\n" \
-        "  " #insn " %%xmm0, %%xmm1\n" \
-        "  " #insn " %%xmm0, %%xmm2\n" \
-        "  " #insn " %%xmm0, %%xmm3\n" \
-        "  " #insn " %%xmm0, %%xmm4\n" \
-        "  " #insn " %%xmm0, %%xmm5\n" \
-        "  " #insn " %%xmm0, %%xmm6\n" \
-        "  " #insn " %%xmm0, %%xmm7\n" \
+        "  " #insn " %%xmm0, %%xmm0\n" \
+        "  " #insn " %%xmm1, %%xmm1\n" \
+        "  " #insn " %%xmm2, %%xmm2\n" \
+        "  " #insn " %%xmm3, %%xmm3\n" \
+        "  " #insn " %%xmm4, %%xmm4\n" \
+        "  " #insn " %%xmm5, %%xmm5\n" \
+        "  " #insn " %%xmm6, %%xmm6\n" \
+        "  " #insn " %%xmm7, %%xmm7\n" \
+        "  " #insn " %%xmm0, %%xmm0\n" \
+        "  " #insn " %%xmm1, %%xmm1\n" \
+        "  " #insn " %%xmm2, %%xmm2\n" \
+        "  " #insn " %%xmm3, %%xmm3\n" \
+        "  " #insn " %%xmm4, %%xmm4\n" \
+        "  " #insn " %%xmm5, %%xmm5\n" \
+        "  " #insn " %%xmm6, %%xmm6\n" \
+        "  " #insn " %%xmm7, %%xmm7\n" \
         "  decl %%ecx\n" \
         "  jne 1b\n" \
         :::"ecx"); \
@@ -378,7 +404,7 @@ void sse2_engine_test(void)
   } \
   oil_profile_get_ave_std(&prof, &ave, &std); \
   ave -= OFFSET; \
-  sci_sprint_alt(s,ave/14000,std/14000); \
+  sci_sprint_alt(s,ave/16000,std/16000); \
   printf("throughput of " #insn ": %s\n", s);
 
   CHECK_THROUGHPUT(packssdw)


More information about the Liboil-commit mailing list