[patch][commit] Floating Point Support for SID

Dave Brolley <[email protected]>
Newsgroups gmane.comp.tools.cgen.devel,gmane.comp.emulators.sid.devel
Message-ID <[email protected]>
Hi,

I've committed this patch which makes a small change to the generated 
code for accurate floating point ops. The change is to not dereference 
CGEN_CPU_FPU (current_cpu)->ops->XXXXX. This makes no difference for 
cgen simulators generated for  sim/common, but does allow the 
implementation of 'ops' to be a C++ class with virtual member functions 
for each operation for SID.

The SID patch which makes use of this will follow shortly.

Dave
cgen-fp.sources.ChangeLog (text/plain, 194 B)
2005-08-02  Dave Brolley  <[email protected]>

	* rtl-c.scm (s-unop): Don't dereference
	CGEN_CPU_FPU (current_cpu)->ops->xxxxx in the generated code.
	(s-binop, s-convop, s-cmpop): Likewise.
cgen-fp.sources.patch.txt (text/plain, 3.9 KB)
Index: cgen/rtl-c.scm
===================================================================
RCS file: /cvs/src/src/cgen/rtl-c.scm,v
retrieving revision 1.6
diff -c -p -r1.6 rtl-c.scm
*** cgen/rtl-c.scm	15 Jun 2005 21:28:18 -0000	1.6
--- cgen/rtl-c.scm	2 Aug 2005 19:25:38 -0000
***************
*** 1,5 ****
  ; RTL->C translation support.
! ; Copyright (C) 2000 Red Hat, Inc.
  ; This file is part of CGEN.
  ; See file COPYING.CGEN for details.
  
--- 1,5 ----
  ; RTL->C translation support.
! ; Copyright (C) 2000, 2005 Red Hat, Inc.
  ; This file is part of CGEN.
  ; See file COPYING.CGEN for details.
  
***************
*** 649,658 ****
      (if (-rtx-use-sem-fn? estate c-op mode)
  	(if (mode-float? mode)
  	    (cx:make sem-mode
! 		     (string-append "(* CGEN_CPU_FPU (current_cpu)->ops->"
  				    (string-downcase name)
  				    (string-downcase (obj:str-name sem-mode))
! 				    ") (CGEN_CPU_FPU (current_cpu), "
  				    (cx:c val) ")"))
  	    (cx:make sem-mode
  		     (string-append name (obj:str-name sem-mode)
--- 649,658 ----
      (if (-rtx-use-sem-fn? estate c-op mode)
  	(if (mode-float? mode)
  	    (cx:make sem-mode
! 		     (string-append "CGEN_CPU_FPU (current_cpu)->ops->"
  				    (string-downcase name)
  				    (string-downcase (obj:str-name sem-mode))
! 				    " (CGEN_CPU_FPU (current_cpu), "
  				    (cx:c val) ")"))
  	    (cx:make sem-mode
  		     (string-append name (obj:str-name sem-mode)
***************
*** 684,693 ****
      (if (-rtx-use-sem-fn? estate c-op mode)
  	(if (mode-float? mode)
  	    (cx:make sem-mode
! 		     (string-append "(* CGEN_CPU_FPU (current_cpu)->ops->"
  				    (string-downcase name)
  				    (string-downcase (obj:str-name sem-mode))
! 				    ") (CGEN_CPU_FPU (current_cpu), "
  				    (cx:c val1) ", "
  				    (cx:c val2) ")"))
  	    (cx:make sem-mode
--- 684,693 ----
      (if (-rtx-use-sem-fn? estate c-op mode)
  	(if (mode-float? mode)
  	    (cx:make sem-mode
! 		     (string-append "CGEN_CPU_FPU (current_cpu)->ops->"
  				    (string-downcase name)
  				    (string-downcase (obj:str-name sem-mode))
! 				    " (CGEN_CPU_FPU (current_cpu), "
  				    (cx:c val1) ", "
  				    (cx:c val2) ")"))
  	    (cx:make sem-mode
***************
*** 799,809 ****
  	(if (or (mode-float? mode)
  		(mode-float? (cx:mode s)))
  	    (cx:make mode
! 		     (string-append "(* CGEN_CPU_FPU (current_cpu)->ops->"
  				    (string-downcase name)
  				    (string-downcase (obj:str-name (-rtx-sem-mode (cx:mode s))))
  				    (string-downcase (obj:str-name (-rtx-sem-mode mode)))
! 				    ") (CGEN_CPU_FPU (current_cpu), "
  				    (cx:c s) ")"))
  	    (cx:make mode
  		     (string-append name
--- 799,809 ----
  	(if (or (mode-float? mode)
  		(mode-float? (cx:mode s)))
  	    (cx:make mode
! 		     (string-append "CGEN_CPU_FPU (current_cpu)->ops->"
  				    (string-downcase name)
  				    (string-downcase (obj:str-name (-rtx-sem-mode (cx:mode s))))
  				    (string-downcase (obj:str-name (-rtx-sem-mode mode)))
! 				    " (CGEN_CPU_FPU (current_cpu), "
  				    (cx:c s) ")"))
  	    (cx:make mode
  		     (string-append name
***************
*** 829,838 ****
      (if (-rtx-use-sem-fn? estate c-op mode)
  	(if (mode-float? mode)
  	    (cx:make (mode:lookup 'BI)
! 		     (string-append "(* CGEN_CPU_FPU (current_cpu)->ops->"
  				    (string-downcase (symbol->string name))
  				    (string-downcase (obj:str-name (-rtx-sem-mode mode)))
! 				    ") (CGEN_CPU_FPU (current_cpu), "
  				    (cx:c val1) ", "
  				    (cx:c val2) ")"))
  	    (cx:make (mode:lookup 'BI)
--- 829,838 ----
      (if (-rtx-use-sem-fn? estate c-op mode)
  	(if (mode-float? mode)
  	    (cx:make (mode:lookup 'BI)
! 		     (string-append "CGEN_CPU_FPU (current_cpu)->ops->"
  				    (string-downcase (symbol->string name))
  				    (string-downcase (obj:str-name (-rtx-sem-mode mode)))
! 				    " (CGEN_CPU_FPU (current_cpu), "
  				    (cx:c val1) ", "
  				    (cx:c val2) ")"))
  	    (cx:make (mode:lookup 'BI)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.