Get top working with the PowerPC; use it to eliminate useless branches and
authorDavid Given <dg@cowlark.com>
Sat, 29 Oct 2016 21:37:11 +0000 (23:37 +0200)
committerDavid Given <dg@cowlark.com>
Sat, 29 Oct 2016 21:37:11 +0000 (23:37 +0200)
moves.

mach/powerpc/libem/build.lua
mach/powerpc/top/table
mach/proto/mcg/parse_em.c
plat/linuxppc/build-tools.lua
plat/linuxppc/descr

index 56278aa..dd9ec75 100644 (file)
@@ -1,4 +1,9 @@
 for _, plat in ipairs(vars.plats) do
+       acklibrary {
+               name = "headers_"..plat,
+               hdrs = { "./*.h" }
+       }
+
        acklibrary {
                name = "lib_"..plat,
                srcs = {
@@ -6,7 +11,8 @@ for _, plat in ipairs(vars.plats) do
                },
                vars = { plat = plat },
                deps = {
-                       "h+emheaders"
+                       "h+emheaders",
+                       "+headers_"..plat,
                }
        }
 end
index e735afe..acbe543 100644 (file)
@@ -1,7 +1,8 @@
 
-/* 68020 desciptor table for ACK target optimizer */
+/* PowerPC desciptor table for ACK target optimizer */
 
 MAXOP 3;
+LABEL_STARTER '.';
 
 %%;
 
@@ -15,6 +16,14 @@ X, Y, Z             { TRUE };
 addi  X, X, 0                -> ;
 addis X, X, 0                -> ;
 
+mr X, X                      -> ;
+fmr X, X                     -> ;
+
 or X, Y, Z : or. X, X, X     -> or. X, Y, Z ;
 
+b X : labdef X               -> labdef X ;
+
+/* IFFALSE=4, IFTRUE=12, ALWAYS=20 */
+/* LT=0, GT=1, EQ=2, OV=3 */
+
 %%;
index 4644d3a..b66b177 100644 (file)
@@ -51,12 +51,12 @@ static void unknown_type(const char* s)
 static const char* ilabel_to_str(label l)
 {
     assert(current_proc != NULL);
-    return aprintf("__%s_I%d", current_proc->name, l);
+    return aprintf(".%s_I%d", current_proc->name, l);
 }
 
 static const char* dlabel_to_str(label l)
 {
-    return aprintf("__D%d", l);
+    return aprintf(".D%d", l);
 }
 
 static void terminate_block(void)
index 0157e31..ce1a163 100644 (file)
@@ -15,12 +15,18 @@ build_ncg {
        arch = "powerpc",
 }
 
+build_top {
+       name = "top",
+       arch = "powerpc",
+}
+
 return installable {
        name = "tools",
        map = {
                ["$(PLATDEP)/linuxppc/as"] = "+as",
                ["$(PLATDEP)/linuxppc/ncg"] = "+ncg",
                ["$(PLATDEP)/linuxppc/mcg"] = "+mcg",
+               ["$(PLATDEP)/linuxppc/top"] = "+top",
                ["$(PLATIND)/descr/linuxppc"] = "./descr",
                "util/opt+pkg",
        }
index 72958b2..7918864 100644 (file)
@@ -40,16 +40,15 @@ name be
        stdout
        need .e
 end
-# FIXME(dtrg): not working yet
-#name asopt
-#      from .s
-#      to .so
-#      program {EM}/lib/ack/{PLATFORM}/top
-#      args
-#      optimizer
-#      stdin
-#      stdout
-#end
+name asopt
+       from .s
+       to .so
+       program {EM}/lib/ack/{PLATFORM}/top
+       args
+       optimizer
+       stdin
+       stdout
+end
 name as
        from .s.so
        to .o