public inbox for cgen@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Addons for OpenRISC support
@ 2014-04-23 21:34 Christian Svensson
  0 siblings, 0 replies; only message in thread
From: Christian Svensson @ 2014-04-23 21:34 UTC (permalink / raw)
  To: cgen

Hi,

We (OpenRISC) have recently begun upstreaming a lot of code. One of the first
things is our binutils port which depends on these CGEN modifications.

This patch has been living in the OpenRISC CGEN repository since 2012.
I would be delighted if it could be merged.

I'm submitting this patch but the author is Peter Gavin, one of the co-authors
of the binutils port.

2014-04-23  Peter Gavin  <pgavin@gmail.com>

        * sim-arch.scm: define WI, UWI, AI, & IAI using mode:c-type
        * add mul-o1flag (1's complement unsigned multiply overflow flag)
        and mul-o2flag (2's complement signed multiply overflow flag)
        * rtl-c.scm:
        (rem) add rem (reminder) function (needed for OR1K lf.rem.[sd])
        (mul-o1flag) new define-fn
        (mul-o2flag) ditto
        * rtx-funcs.scm:
        (rem) add rem (reminder) function (needed for OR1K lf.rem.[sd])
        (mul-o1flag) new drn
        (mul-o2flag) ditto

--- cgen.orig/rtl-c.scm 2010-08-30 16:51:27.000000000 +0000
+++ cgen/rtl-c.scm  2014-01-11 11:53:15.565783879 +0000
@@ -1746,6 +1746,14 @@
 (define-fn mul (*estate* options mode s1 s2)
   (s-binop *estate* "MUL" "*" mode s1 s2)
 )
+; 1's complement overflow
+(define-fn mul-o1flag (*estate* options mode s1 s2)
+  (s-binop *estate* "MUL1OF" #f mode s1 s2)
+)
+; 2's complement overflow
+(define-fn mul-o2flag (*estate* options mode s1 s2)
+  (s-binop *estate* "MUL2OF" #f mode s1 s2)
+)
 (define-fn div (*estate* options mode s1 s2)
   (s-binop *estate* "DIV" "/" mode s1 s2)
 )
@@ -1758,6 +1766,9 @@
 (define-fn umod (*estate* options mode s1 s2)
   (s-binop *estate* "UMOD" "%" mode s1 s2)
 )
+(define-fn rem (*estate* options mode s1 s2)
+  (s-binop *estate* "REM" #f mode s1 s2)
+)
 
 (define-fn sqrt (*estate* options mode s1)
   (s-unop *estate* "SQRT" #f mode s1)
--- cgen.orig/rtx-funcs.scm 2010-01-25 03:50:43.000000000 +0000
+++ cgen/rtx-funcs.scm  2014-01-11 11:53:15.565783879 +0000
@@ -755,6 +755,20 @@
      BINARY
      #f
 )
+; 1's complement overflow
+(drn (mul-o1flag &options &mode s1 s2)
+     BI
+     (OPTIONS ANYINTMODE RTX RTX) (NA NA MATCHEXPR MATCH2)
+     BINARY
+     #f
+)
+; 2's complement overflow
+(drn (mul-o2flag &options &mode s1 s2)
+     BI
+     (OPTIONS ANYINTMODE RTX RTX) (NA NA MATCHEXPR MATCH2)
+     BINARY
+     #f
+)
 ; ??? In non-sim case, ensure s1,s2 is in right C type for right result.
 ; ??? Need two variants, one that avoids implementation defined situations
 ; [both host and target], and one that specifies implementation defined
@@ -783,6 +797,12 @@
      BINARY
      #f
 )
+(drn (rem &options &mode s1 s2)
+     #f
+     (OPTIONS ANYFLOATMODE RTX RTX) (NA NA MATCHEXPR MATCH2)
+     BINARY
+     #f
+)
 
 ; wip: mixed mode mul/div
 
--- cgen.orig/sim-arch.scm  2009-11-23 00:59:57.000000000 +0000
+++ cgen/sim-arch.scm 2014-01-11 11:53:15.565783879 +0000
@@ -100,10 +100,10 @@
    "\n"
    "#define TARGET_BIG_ENDIAN 1\n\n" ; FIXME
    ;(gen-mem-macros)
-   ;"/* FIXME: split into 32/64 parts */\n"
-   ;"#define WI SI\n"
-   ;"#define UWI USI\n"
-   ;"#define AI USI\n\n"
+   "#define WI  " (mode:c-type WI)  "\n"
+   "#define UWI " (mode:c-type UWI) "\n"
+   "#define AI  " (mode:c-type AI)  "\n" "\n"
+   "#define IAI " (mode:c-type IAI)  "\n" "\n"
    /gen-cpuall-defines
    /gen-support-decls
    /gen-arch-model-decls

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2014-04-23 21:34 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-23 21:34 [PATCH] Addons for OpenRISC support Christian Svensson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).