Mercurial > hg > index.cgi
annotate extra/gcc6809lw-4.6.4-2.patch @ 399:6153cb49403c
Initial commit of pragma newsource
pragma newsource enables a source code variant as follows:
1. no line numbers
2. no implied comments at the end of lines
3. all comments must be introduced by a comment character
4. spaces are allowed in operands
(4) is not quite complete. This commit handles "operandless" instructions
(anything where the parser calls skip_operand()) and expression parsing.
author | William Astle <lost@l-w.ca> |
---|---|
date | Tue, 13 Oct 2015 23:38:02 -0600 |
parents | d0c0fede5021 |
children |
rev | line source |
---|---|
396
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1 diff -urN gcc-4.6.4-clean/config.sub gcc-4.6.4/config.sub |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2 --- gcc-4.6.4-clean/config.sub 2010-05-25 07:22:07.000000000 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3 +++ gcc-4.6.4/config.sub 2015-07-20 19:44:52.766843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4 @@ -313,7 +313,7 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5 c6x) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6 basic_machine=tic6x-unknown |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7 ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8 - m6811 | m68hc11 | m6812 | m68hc12 | picochip) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
9 + m6809 | m6811 | m68hc11 | m6812 | m68hc12 | picochip) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
10 # Motorola 68HC11/12. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
11 basic_machine=$basic_machine-unknown |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
12 os=-none |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
13 @@ -354,7 +354,7 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
14 | i*86-* | i860-* | i960-* | ia64-* \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
15 | ip2k-* | iq2000-* \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
16 | lm32-* \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
17 - | m32c-* | m32r-* | m32rle-* \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
18 + | m32c-* | m32r-* | m32rle-* | m6809-* \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
19 | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
20 | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
21 | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
22 @@ -509,6 +509,10 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
23 basic_machine=arm-unknown |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
24 os=-cegcc |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
25 ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
26 + coco) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
27 + basic_machine=coco |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
28 + os=-none |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
29 + ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
30 convex-c1) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
31 basic_machine=c1-convex |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
32 os=-bsd |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
33 diff -urN gcc-4.6.4-clean/configure gcc-4.6.4/configure |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
34 --- gcc-4.6.4-clean/configure 2011-12-18 03:03:44.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
35 +++ gcc-4.6.4/configure 2015-07-20 19:44:52.766843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
36 @@ -3439,6 +3439,9 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
37 m32r-*-*) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
38 noconfigdirs="$noconfigdirs ${libgcj}" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
39 ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
40 + m6809*) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
41 + noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 target-libgloss ${libgcj}" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
42 + ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
43 m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
44 noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
45 libgloss_dir=m68hc11 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
46 diff -urN gcc-4.6.4-clean/configure.ac gcc-4.6.4/configure.ac |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
47 --- gcc-4.6.4-clean/configure.ac 2011-11-18 04:45:44.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
48 +++ gcc-4.6.4/configure.ac 2015-07-20 19:44:52.766843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
49 @@ -885,6 +885,9 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
50 m32r-*-*) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
51 noconfigdirs="$noconfigdirs ${libgcj}" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
52 ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
53 + m6809*) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
54 + noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 target-libgloss ${libgcj}" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
55 + ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
56 m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
57 noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
58 libgloss_dir=m68hc11 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
59 diff -urN gcc-4.6.4-clean/gcc/calls.c gcc-4.6.4/gcc/calls.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
60 --- gcc-4.6.4-clean/gcc/calls.c 2012-02-09 10:27:25.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
61 +++ gcc-4.6.4/gcc/calls.c 2015-07-20 19:44:52.766843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
62 @@ -2561,7 +2561,7 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
63 call sequence. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
64 Also do the adjustments before a throwing call, otherwise |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
65 exception handling can fail; PR 19225. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
66 - if (pending_stack_adjust >= 32 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
67 + if (pending_stack_adjust >= 8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
68 || (pending_stack_adjust > 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
69 && (flags & ECF_MAY_BE_ALLOCA)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
70 || (pending_stack_adjust > 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
71 diff -urN gcc-4.6.4-clean/gcc/config/m6809/crt0.S gcc-4.6.4/gcc/config/m6809/crt0.S |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
72 --- gcc-4.6.4-clean/gcc/config/m6809/crt0.S 1969-12-31 17:00:00.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
73 +++ gcc-4.6.4/gcc/config/m6809/crt0.S 2015-07-20 19:44:52.766843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
74 @@ -0,0 +1,180 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
75 +;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
76 +;;; Copyright 2006, 2007, 2008, 2009 by Brian Dominy <brian@oddchange.com> |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
77 +;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
78 +;;; This file is part of GCC. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
79 +;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
80 +;;; GCC is free software; you can redistribute it and/or modify |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
81 +;;; it under the terms of the GNU General Public License as published by |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
82 +;;; the Free Software Foundation; either version 3, or (at your option) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
83 +;;; any later version. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
84 +;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
85 +;;; GCC is distributed in the hope that it will be useful, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
86 +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
87 +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
88 +;;; GNU General Public License for more details. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
89 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
90 +;;; You should have received a copy of the GNU General Public License |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
91 +;;; along with GCC; see the file COPYING3. If not see |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
92 +;;; <http://www.gnu.org/licenses/>. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
93 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
94 + /* Declare external for main() */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
95 + .globl _main |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
96 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
97 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
98 +/* The startup is heavily dependent on the type of machine and |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
99 +OS environment that is available at the start point. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
100 +For the most part, the general idea is the same across machines, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
101 +but the implementation is vastly different. This is managed via |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
102 +conditional compiles throughout the startup code for each of the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
103 +supported machines. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
104 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
105 +#ifdef TARGET_COCO /* CoCo memory map */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
106 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
107 +#define COCO_RAMROM_MODE 0xFFDE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
108 +#define COCO_ALLRAM_MODE 0xFFDF |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
109 +#define COCO_PAGE1 0xFFD5 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
110 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
111 +/* SAM M1 and M0 adjusts the memory size */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
112 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
113 +#define BASIC_WARMSTART_FLAG 0x0071 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
114 +#define BASIC_START 0xA027 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
115 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
116 +#define __STACK_TOP 0x6800 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
117 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
118 +#else /* Simulator (default) memory map */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
119 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
120 +#define SIM_EXIT_REG 0xFF01 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
121 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
122 +#define __STACK_TOP 0xFE00 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
123 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
124 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
125 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
126 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
127 + /* Declare all linker sections, and combine them into a single bank */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
128 + .bank prog |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
129 + .area .text (BANK=prog) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
130 + .area .data (BANK=prog) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
131 + .area .ctors (BANK=prog) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
132 + .word 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
133 + .area .dtors (BANK=prog) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
134 + .word 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
135 + .area .bss (BANK=prog) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
136 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
137 + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
138 + ;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
139 + ;;; __exit : Exit point from the program |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
140 + ;;; For simulation, this writes to a special I/O register that |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
141 + ;;; the simulator interprets as end-of-program. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
142 + ;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
143 + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
144 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
145 + .globl __exit |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
146 +__exit: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
147 +#ifdef TARGET_COCO |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
148 + ;; Go back to ROM/RAM mode |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
149 + sta COCO_RAMROM_MODE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
150 + clr BASIC_WARMSTART_FLAG |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
151 + jmp BASIC_START |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
152 +#else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
153 + tfr x,d |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
154 + stb SIM_EXIT_REG |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
155 + bra __exit |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
156 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
157 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
158 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
159 + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
160 + ;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
161 + ;;; __start : Entry point to the program |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
162 + ;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
163 + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
164 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
165 + .globl __start |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
166 +__start: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
167 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
168 +#ifdef HAVE_DIRECT |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
169 + ;; Initialize the direct page pointer |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
170 + lda #<s_.direct |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
171 + tfr a,dp |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
172 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
173 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
174 +#ifdef TARGET_COCO |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
175 + ;; Turn off interrupts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
176 + orcc #(0x10|0x40) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
177 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
178 + ;; Setup All RAM Mode |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
179 + sta COCO_ALLRAM_MODE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
180 +#endif /* TARGET_COCO */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
181 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
182 + ;; Initialize the stack |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
183 + lds #__STACK_TOP - 2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
184 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
185 + ;; Call any "initializer" functions |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
186 + ldu #s_.ctors |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
187 +__ctors_loop: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
188 + ldy ,u++ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
189 + cmpy #0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
190 + beq __ctors_done |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
191 + jsr ,y |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
192 + bra __ctors_loop |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
193 +__ctors_done: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
194 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
195 + ;; Enable interrupts on the simulator |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
196 +#ifndef TARGET_COCO |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
197 + andcc #~(0x10|0x40) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
198 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
199 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
200 + ;; Set up the environment |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
201 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
202 + ;; Set up argc/argv arrays |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
203 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
204 + ;; Call the main function. The exit code will |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
205 + ;; be returned in the X register, unless compiled |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
206 + ;; with -mdret, in which case it comes back in D. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
207 + jsr _main |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
208 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
209 + ;; Call any finalizer functions |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
210 + ldu #s_.dtors |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
211 +__dtors_loop: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
212 + ldy ,u++ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
213 + cmpy #0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
214 + beq __dtors_done |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
215 + jsr ,y |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
216 + bra __dtors_loop |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
217 +__dtors_done: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
218 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
219 + ;; If main returns, then invoke _exit() to stop the program |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
220 + ;; The C library doesn't support -mdret yet, so move the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
221 + ;; argument first. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
222 +#ifdef __DRET__ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
223 + tfr d,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
224 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
225 + jmp _exit |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
226 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
227 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
228 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
229 + ;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
230 + ;;; __crt0_vector : Default handler for interrupts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
231 + ;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
232 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
233 +___crt0_vector: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
234 + ;; The default behavior is to simply ignore all |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
235 + ;; non-reset interrupts. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
236 + rti |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
237 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
238 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
239 + ;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
240 + ;;; vector : The interrupt vector table |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
241 + ;;; The linker will ensure that this gets loaded at address 0xFFF0. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
242 + ;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
243 + .area vector |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
244 +vectors: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
245 + .word ___crt0_vector |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
246 + .word ___crt0_vector |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
247 + .word ___crt0_vector |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
248 + .word ___crt0_vector |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
249 + .word ___crt0_vector |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
250 + .word ___crt0_vector |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
251 + .word ___crt0_vector |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
252 + .word __start |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
253 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
254 + .end __start |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
255 diff -urN gcc-4.6.4-clean/gcc/config/m6809/libgcc1.s gcc-4.6.4/gcc/config/m6809/libgcc1.s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
256 --- gcc-4.6.4-clean/gcc/config/m6809/libgcc1.s 1969-12-31 17:00:00.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
257 +++ gcc-4.6.4/gcc/config/m6809/libgcc1.s 2015-07-20 19:44:52.766843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
258 @@ -0,0 +1,511 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
259 +/* libgcc routines for m6809 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
260 + Copyright (C) 2006 Free Software Foundation, Inc. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
261 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
262 +This file is part of GCC. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
263 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
264 +GCC is free software; you can redistribute it and/or modify |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
265 +it under the terms of the GNU General Public License as published by |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
266 +the Free Software Foundation; either version 3, or (at your option) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
267 +any later version. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
268 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
269 +GCC is distributed in the hope that it will be useful, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
270 +but WITHOUT ANY WARRANTY; without even the implied warranty of |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
271 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
272 +GNU General Public License for more details. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
273 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
274 +You should have received a copy of the GNU General Public License |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
275 +along with GCC; see the file COPYING3. If not see |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
276 +<http://www.gnu.org/licenses/>. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
277 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
278 +/* As a special exception, if you link this library with other files, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
279 + some of which are compiled with GCC, to produce an executable, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
280 + this library does not by itself cause the resulting executable |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
281 + to be covered by the GNU General Public License. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
282 + This exception does not however invalidate any other reasons why |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
283 + the executable file might be covered by the GNU General Public License. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
284 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
285 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
286 +#define SIGFPE jmp _abort |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
287 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
288 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
289 + ; Shift functions |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
290 + ; On input, D is value to be shifted, and X has shift count. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
291 + ; Result is also in D. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
292 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
293 +#ifdef L_ashlhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
294 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
295 + .globl _ashlhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
296 +_ashlhi3: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
297 + pshs x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
298 +1$: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
299 + leax -1,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
300 + cmpx #-1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
301 + beq 2$ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
302 + aslb |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
303 + rola |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
304 + bra 1$ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
305 +2$: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
306 + puls x,pc |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
307 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
308 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
309 +#ifdef L_ashrhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
310 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
311 + .globl _ashrhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
312 +_ashrhi3: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
313 + pshs x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
314 +1$: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
315 + leax -1,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
316 + cmpx #-1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
317 + beq 2$ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
318 + asra |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
319 + rorb |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
320 + bra 1$ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
321 +2$: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
322 + puls x,pc |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
323 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
324 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
325 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
326 +#ifdef L_lshrhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
327 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
328 + .globl _lshrhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
329 +_lshrhi3: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
330 + pshs x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
331 +1$: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
332 + leax -1,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
333 + cmpx #-1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
334 + beq 2$ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
335 + lsra |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
336 + rorb |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
337 + bra 1$ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
338 +2$: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
339 + puls x,pc |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
340 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
341 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
342 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
343 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
344 +#ifdef L_softregs |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
345 + .area direct |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
346 + .globl m0, m1, m2, m3, m4, m5, m6, m7 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
347 + .globl m8, m9, m10, m11, m12, m13, m14, m15 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
348 +m0: .blkb 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
349 +m1: .blkb 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
350 +m2: .blkb 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
351 +m3: .blkb 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
352 +m4: .blkb 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
353 +m5: .blkb 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
354 +m6: .blkb 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
355 +m7: .blkb 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
356 +m8: .blkb 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
357 +m9: .blkb 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
358 +m10: .blkb 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
359 +m11: .blkb 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
360 +m12: .blkb 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
361 +m13: .blkb 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
362 +m14: .blkb 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
363 +m15: .blkb 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
364 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
365 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
366 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
367 +#ifdef L_ashlsi3_one |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
368 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
369 + .globl _ashlsi3_one |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
370 +_ashlsi3_one: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
371 + asl 3,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
372 + rol 2,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
373 + rol 1,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
374 + rol ,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
375 + rts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
376 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
377 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
378 +#ifdef L_ashlsi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
379 + /* X points to the SImode (source/dest) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
380 + B is the count */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
381 +_ashlsi3: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
382 + pshs u |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
383 + cmpb #16 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
384 + blt try8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
385 + subb #16 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
386 + ; Shift by 16 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
387 + ldu 2,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
388 + stu ,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
389 +try8: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
390 + cmpb #8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
391 + blt try_rest |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
392 + subb #8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
393 + ; Shift by 8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
394 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
395 +try_rest: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
396 + tstb |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
397 + beq done |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
398 +do_rest: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
399 + ; Shift by 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
400 + asl 3,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
401 + rol 2,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
402 + rol 1,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
403 + rol ,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
404 + decb |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
405 + bne do_rest |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
406 +done: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
407 + puls u,pc |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
408 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
409 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
410 +#ifdef L_ashrsi3_one |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
411 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
412 + .globl _ashlsi3_one |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
413 +_ashrsi3_one: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
414 + asr ,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
415 + ror 1,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
416 + ror 2,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
417 + ror 3,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
418 + rts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
419 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
420 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
421 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
422 +#ifdef L_lshrsi3_one |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
423 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
424 + .globl _lshrsi3_one |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
425 +_lshrsi3_one: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
426 + lsr ,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
427 + ror 1,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
428 + ror 2,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
429 + ror 3,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
430 + rts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
431 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
432 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
433 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
434 +#ifdef L_clzsi2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
435 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
436 + .globl ___clzhi2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
437 + ; Input: X = 16-bit unsigned integer |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
438 + ; Output: X = number of leading zeros |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
439 + ; This function destroys the value in D. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
440 +___clzhi2: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
441 + pshs x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
442 + ; Find the offset of the leftmost '1' bit in |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
443 + ; the left half of the word. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
444 + ; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
445 + ; Bits are numbered in the table with 1 meaning the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
446 + ; LSB and 8 meaning the MSB. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
447 + ; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
448 + ; If nonzero, then clz is 8-a. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
449 + tfr x,d |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
450 + ldx #___clz_tab |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
451 + tfr a,b |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
452 + clra |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
453 + ldb d,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
454 + bne upper_bit_set |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
455 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
456 +lower_bit_set: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
457 + ; If the upper byte is zero, then check the lower |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
458 + ; half of the word. Return 16-a. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
459 + puls d |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
460 + clra |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
461 + ldb d,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
462 + negb |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
463 + addb #16 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
464 + bra done |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
465 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
466 +upper_bit_set: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
467 + negb |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
468 + addb #8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
469 + puls x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
470 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
471 +done: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
472 + tfr d,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
473 + puls pc |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
474 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
475 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
476 +#ifdef L_clzdi2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
477 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
478 + .globl ___clzsi2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
479 + ; Input: 32-bit unsigned integer is on the stack, just |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
480 + ; above the return address |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
481 + ; Output: X = number of leading zeros |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
482 +___clzsi2: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
483 + ; Check the upper 16-bit word |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
484 + ; If it is not zero, then return clzhi2(X). |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
485 + ; A branch can be used instead of a call since no |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
486 + ; postprocessing is needed. Use long branch form |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
487 + ; though since functions may not be near each other. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
488 + ldx 2,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
489 + lbne ___clzhi2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
490 + ldx 4,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
491 + jsr ___clzhi2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
492 + leax 16,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
493 + rts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
494 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
495 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
496 +#ifdef L_ctzsi2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
497 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
498 + .globl ___ctzhi2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
499 + ; Input: X = 16-bit unsigned integer |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
500 + ; Output: X = number of trailing zeros |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
501 + ; F(x) = 15 - clzhi2(X & -x) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
502 + ; This function destroys the value in D. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
503 +___ctzhi2: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
504 + tfr x,d |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
505 + coma |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
506 + comb |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
507 + addd #1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
508 + pshs a |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
509 + pshs b |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
510 + tfr x,d |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
511 + andb ,s+ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
512 + anda ,s+ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
513 + tfr d,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
514 + jsr ___clzhi2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
515 + tfr x,d |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
516 + subd #16 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
517 + coma |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
518 + comb |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
519 + tfr d,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
520 + rts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
521 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
522 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
523 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
524 +#ifdef L_ctzdi2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
525 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
526 + .globl ___ctzsi2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
527 + ; Input: 32-bit unsigned integer is on the stack, just |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
528 + ; above the return address |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
529 + ; Output: X = number of leading zeros |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
530 +___ctzsi2: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
531 + ; Check the lower 16-bit word |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
532 + ; If it is not zero, then return ctzhi2(X). |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
533 + ; A branch can be used instead of a call since no |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
534 + ; postprocessing is needed. Use long branch form |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
535 + ; though since functions may not be near each other. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
536 + ldx 4,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
537 + lbne ___ctzhi2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
538 + ldx 2,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
539 + jsr ___ctzhi2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
540 + leax 16,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
541 + rts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
542 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
543 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
544 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
545 +#ifdef L_mulhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
546 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
547 +;;; ___mulhi3 - signed/unsigned multiply |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
548 +;;; Called by GCC to implement 16x16 multiplication |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
549 +;;; Arguments: Two 16-bit values, one in stack, one in X. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
550 +;;; Result: 16-bit result in X |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
551 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
552 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
553 + .globl _mulhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
554 +_mulhi3: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
555 + pshs x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
556 + lda 5,s ; left msb * right lsb * 256 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
557 + ldb ,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
558 + mul |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
559 + tfr b,a |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
560 + clrb |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
561 + tfr d,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
562 + ldb 1,s ; left lsb * right msb * 256 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
563 + lda 4,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
564 + mul |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
565 + tfr b,a |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
566 + clrb |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
567 + leax d,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
568 + ldb 1,s ; left lsb * right lsb |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
569 + lda 5,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
570 + mul |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
571 + leax d,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
572 + puls d,pc ; kill D to remove initial push |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
573 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
574 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
575 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
576 +#ifdef L_divhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
577 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
578 +;;; ___divhi3 - signed division |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
579 +;;; Arguments: Dividend in X, divisor on the stack |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
580 +;;; Returns result in X. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
581 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
582 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
583 + .globl _divhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
584 +_divhi3: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
585 + ldd 2,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
586 + bne do_div ; check dividend |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
587 + SIGFPE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
588 +do_div: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
589 + pshs x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
590 + jsr _seuclid |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
591 + puls x,pc |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
592 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
593 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
594 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
595 +#ifdef L_modhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
596 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
597 +;;; ___modhi3 - signed modulo |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
598 +;;; Arguments: Dividend in X, divisor on the stack |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
599 +;;; Returns result in X. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
600 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
601 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
602 + .globl _modhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
603 +_modhi3: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
604 + ldd 2,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
605 + bne do_mod ; check dividend |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
606 + SIGFPE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
607 +do_mod: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
608 + pshs x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
609 + jsr _seuclid |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
610 + leas 2,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
611 + tfr d,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
612 + rts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
613 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
614 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
615 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
616 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
617 +#ifdef L_udivhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
618 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
619 +;;; ___udivhi3 - unsigned division |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
620 +;;; Arguments: Dividend in X, divisor on the stack |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
621 +;;; Returns result in X. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
622 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
623 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
624 + .globl _udivhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
625 +_udivhi3: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
626 + ldd 2,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
627 + bne do_udiv ; check dividend |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
628 + SIGFPE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
629 +do_udiv: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
630 + pshs x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
631 + jsr _euclid |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
632 + puls x,pc |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
633 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
634 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
635 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
636 +#ifdef L_umodhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
637 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
638 +;;; ___umodhi3 - unsigned modulo |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
639 +;;; Arguments: Dividend in X, divisor on the stack |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
640 +;;; Returns result in X. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
641 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
642 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
643 + .globl _umodhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
644 +_umodhi3: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
645 + ldd 2,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
646 + bne do_umod ; check dividend |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
647 + SIGFPE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
648 +do_umod: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
649 + pshs x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
650 + jsr _euclid |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
651 + leas 2,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
652 + tfr d,x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
653 + rts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
654 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
655 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
656 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
657 +#ifdef L_euclid |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
658 +; unsigned euclidean division |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
659 +; calling: (left / right) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
660 +; push left |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
661 +; ldd right |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
662 +; jsr _euclid |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
663 +; quotient on the stack (left) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
664 +; modulus in d |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
665 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
666 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
667 + .globl _euclid |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
668 + left=5 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
669 + right=1 ; word |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
670 + count=0 ; byte |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
671 + CARRY=1 ; alias |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
672 +_euclid: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
673 + leas -3,s ; 2 local variables |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
674 + clr count,s ; prescale divisor |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
675 + inc count,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
676 + tsta |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
677 +presc: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
678 + bmi presc_done |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
679 + inc count,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
680 + aslb |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
681 + rola |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
682 + bra presc |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
683 +presc_done: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
684 + std right,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
685 + ldd left,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
686 + clr left,s ; quotient = 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
687 + clr left+1,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
688 +mod1: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
689 + subd right,s ; check subtract |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
690 + bcc mod2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
691 + addd right,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
692 + andcc #~CARRY |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
693 + bra mod3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
694 +mod2: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
695 + orcc #CARRY |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
696 +mod3: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
697 + rol left+1,s ; roll in carry |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
698 + rol left,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
699 + lsr right,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
700 + ror right+1,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
701 + dec count,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
702 + bne mod1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
703 + leas 3,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
704 + rts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
705 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
706 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
707 +#ifdef L_seuclid |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
708 +; signed euclidean division |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
709 +; calling: (left / right) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
710 +; push left |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
711 +; ldd right |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
712 +; jsr _seuclid |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
713 +; quotient on the stack (left) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
714 +; modulus in d |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
715 + .area .text |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
716 + .globl _seuclid |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
717 + left=6 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
718 + right=2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
719 + quot_sign=1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
720 + mod_sign=0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
721 +_seuclid: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
722 + leas -4,s ; 3 local variables |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
723 + std right,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
724 + clr mod_sign,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
725 + clr quot_sign,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
726 + ldd left,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
727 + bge mod_abs |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
728 + inc mod_sign,s ; sign(mod) = sign(left) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
729 + inc quot_sign,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
730 + bsr negd ; abs(left) -> D |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
731 +mod_abs: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
732 + pshs b,a ; push abs(left) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
733 + ldd right+2,s ; all references shifted by 2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
734 + bge quot_abs |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
735 + dec quot_sign+2,s ; sign(quot) = sign(left) XOR sign(right) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
736 + bsr negd ; abs(right) -> D |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
737 +quot_abs: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
738 + jsr _euclid ; call (unsigned) euclidean division |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
739 + std right+2,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
740 + puls a,b ; quot -> D |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
741 + tst quot_sign,s ; all references no longer shifted |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
742 + beq quot_done |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
743 + bsr negd |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
744 +quot_done: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
745 + std left,s ; quot -> left |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
746 + ldd right,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
747 + tst mod_sign,s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
748 + beq mod_done |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
749 + bsr negd |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
750 +mod_done: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
751 + leas 4,s ; destroy stack frame |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
752 + rts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
753 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
754 +negd: ; self-explanatory ! |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
755 + nega |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
756 + negb |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
757 + sbca #0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
758 + rts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
759 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
760 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
761 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
762 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
763 +#ifdef L_pending_addsi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
764 +_addsi3: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
765 + rts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
766 +#endif /* L_pending_addsi3 */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
767 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
768 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
769 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
770 diff -urN gcc-4.6.4-clean/gcc/config/m6809/m6809.c gcc-4.6.4/gcc/config/m6809/m6809.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
771 --- gcc-4.6.4-clean/gcc/config/m6809/m6809.c 1969-12-31 17:00:00.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
772 +++ gcc-4.6.4/gcc/config/m6809/m6809.c 2015-07-20 22:11:37.726714746 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
773 @@ -0,0 +1,3023 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
774 +/*------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
775 + FILE: m6809.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
776 +-------------------------------------------------------------------*/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
777 +/* Subroutines for insn-output.c for MC6809. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
778 + Copyright (C) 1989-2007 Free Software Foundation, Inc. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
779 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
780 + MC6809 Version by Tom Jones (jones@sal.wisc.edu) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
781 + Space Astronomy Laboratory |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
782 + University of Wisconsin at Madison |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
783 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
784 + minor changes to adapt it to gcc-2.5.8 by Matthias Doerfel |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
785 + ( msdoerfe@informatik.uni-erlangen.de ) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
786 + also added #pragma interrupt (inspired by gcc-6811) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
787 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
788 + minor changes to adapt it to gcc-2.8.0 by Eric Botcazou |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
789 + (ebotcazou@multimania.com) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
790 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
791 + minor changes to adapt it to gcc-2.95.3 by Eric Botcazou |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
792 + (ebotcazou@multimania.com) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
793 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
794 + major cleanup, improvements, and upgrade to gcc 3.4 by Brian Dominy |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
795 + (brian@oddchange.com) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
796 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
797 + additional adjustments, etc., for gcc 4.6.1 by William Astle (lost@l-w.ca) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
798 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
799 +This file is part of GCC. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
800 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
801 +GCC is free software; you can redistribute it and/or modify |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
802 +it under the terms of the GNU General Public License as published by |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
803 +the Free Software Foundation; either version 3, or (at your option) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
804 +any later version. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
805 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
806 +GCC is distributed in the hope that it will be useful, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
807 +but WITHOUT ANY WARRANTY; without even the implied warranty of |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
808 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
809 +GNU General Public License for more details. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
810 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
811 +You should have received a copy of the GNU General Public License |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
812 +along with GCC; see the file COPYING3. If not see |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
813 +<http://www.gnu.org/licenses/>. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
814 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
815 +#include <string.h> |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
816 +#include <time.h> |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
817 +#include <sys/types.h> |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
818 +#include <sys/timeb.h> |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
819 +#include <stdio.h> |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
820 +#include "config.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
821 +#include "system.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
822 +#include "coretypes.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
823 +#include "tm.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
824 +#include "tree.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
825 +#include "rtl.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
826 +#include "tm_p.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
827 +#include "regs.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
828 +#include "flags.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
829 +#include "hard-reg-set.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
830 +#include "real.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
831 +#include "tree.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
832 +#include "insn-config.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
833 +#include "conditions.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
834 +#include "insn-flags.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
835 +#include "output.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
836 +#include "insn-attr.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
837 +#include "function.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
838 +#include "target.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
839 +#include "target-def.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
840 +#include "expr.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
841 +#include "recog.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
842 +#include "cpplib.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
843 +#include "c-family/c-pragma.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
844 +#include "c-family/c-common.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
845 +#include "toplev.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
846 +#include "optabs.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
847 +#include "version.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
848 +#include "df.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
849 +#include "rtlhooks-def.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
850 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
851 +/* macro to return TRUE if length of operand mode is one byte */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
852 +#define BYTE_MODE(X) ((GET_MODE_SIZE (GET_MODE (X))) == 1) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
853 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
854 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
855 +/* REAL_REG_P(x) is a true if the rtx 'x' represents a real CPU |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
856 +register and not a fake one that is emulated in software. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
857 +#define REAL_REG_P(x) (REG_P(x) && !M_REG_P(x)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
858 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
859 +/*------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
860 + Target hooks, moved from target.h |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
861 +-------------------------------------------------------------------*/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
862 +static void m6809_encode_section_info (tree decl, rtx rtl, int new_decl_p ATTRIBUTE_UNUSED); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
863 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
864 +#undef TARGET_ENCODE_SECTION_INFO |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
865 +#define TARGET_ENCODE_SECTION_INFO m6809_encode_section_info |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
866 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
867 +#undef TARGET_ASM_FILE_START |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
868 +#define TARGET_ASM_FILE_START m6809_asm_file_start |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
869 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
870 +#undef TARGET_ASM_ALIGNED_HI_OP |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
871 +#define TARGET_ASM_ALIGNED_HI_OP "\t.word\t" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
872 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
873 +#undef TARGET_ASM_ALIGNED_SI_OP |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
874 +#define TARGET_ASM_ALIGNED_SI_OP NULL |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
875 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
876 +#undef TARGET_ASM_UNALIGNED_HI_OP |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
877 +#define TARGET_ASM_UNALIGNED_HI_OP "\t.word\t" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
878 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
879 +#undef TARGET_ASM_UNALIGNED_SI_OP |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
880 +#define TARGET_ASM_UNALIGNED_SI_OP NULL |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
881 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
882 +#undef TARGET_RTX_COSTS |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
883 +#define TARGET_RTX_COSTS m6809_rtx_costs |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
884 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
885 +#undef TARGET_ATTRIBUTE_TABLE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
886 +#define TARGET_ATTRIBUTE_TABLE m6809_attribute_table |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
887 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
888 +#undef TARGET_INIT_BUILTINS |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
889 +#define TARGET_INIT_BUILTINS m6809_init_builtins |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
890 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
891 +#undef TARGET_EXPAND_BUILTIN |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
892 +#define TARGET_EXPAND_BUILTIN m6809_expand_builtin |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
893 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
894 +#undef TARGET_DEFAULT_TARGET_FLAGS |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
895 +#define TARGET_DEFAULT_TARGET_FLAGS (MASK_REG_ARGS | MASK_DIRECT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
896 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
897 +#undef TARGET_FUNCTION_OK_FOR_SIBCALL |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
898 +#define TARGET_FUNCTION_OK_FOR_SIBCALL m6809_function_ok_for_sibcall |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
899 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
900 +#undef TARGET_ASM_TRAMPOLINE_TEMPLATE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
901 +#define TARGET_ASM_TRAMPOLINE_TEMPLATE m6809_asm_trampoline_template |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
902 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
903 +#undef TARGET_TRAMPOLINE_INIT |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
904 +#define TARGET_TRAMPOLINE_INIT m6809_initialize_trampoline |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
905 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
906 +#undef TARGET_FRAME_POINTER_REQUIRED |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
907 +#define TARGET_FRAME_POINTER_REQUIRED m6809_frame_pointer_required |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
908 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
909 +#undef TARGET_OPTION_OVERRIDE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
910 +#define TARGET_OPTION_OVERRIDE m6809_override_options |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
911 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
912 +/* External variables used */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
913 +extern int reload_completed; /* set in toplev.c */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
914 +extern FILE *asm_out_file; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
915 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
916 +static int last_mem_size; /* operand size (bytes) */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
917 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
918 +/* True if the section was recently changed and another .area |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
919 + * directive needs to be output before emitting the next label. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
920 +int section_changed = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
921 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
922 +/* Section names. The defaults here are used until an |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
923 + * __attribute__((section)) is seen that changes it. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
924 +char code_section_op[128] = "\t.area .text"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
925 +char data_section_op[128] = "\t.area .data"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
926 +char bss_section_op[128] = "\t.area .bss"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
927 +const char *code_bank_option = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
928 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
929 +/* TRUE if the direct mode prefix might be valid in this context. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
930 + * This is set by 'print_address' prior to calling output_addr_const, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
931 + * which performs into 'print_direct_prefix' to do the final checks. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
932 +static int check_direct_prefix_flag; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
933 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
934 +/* Nonzero if an address is being printed in a context which does not |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
935 + * permit any PIC modifications to the address */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
936 +static int pic_ok_for_addr_p = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
937 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
938 +/* Current code page. This supports machines which can do bank |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
939 + * switching to allow for more than 64KB of code/data. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
940 +char far_code_page[64]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
941 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
942 +/* Current bank name */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
943 +static char current_bank_name[8] = "-1"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
944 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
945 +/* Default bank name */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
946 +static char default_code_bank_name[8] = "-1"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
947 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
948 +/* Direct memory reserved as soft registers */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
949 +unsigned int m6809_soft_regs = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
950 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
951 +/* ABI version */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
952 +unsigned int m6809_abi_version = M6809_ABI_VERSION_REGS; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
953 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
954 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
955 +/** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
956 + * Called after options have been parsed. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
957 + * If overrides have been specified on the command-line, then |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
958 + * these values are copied into the main storage variables. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
959 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
960 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
961 +m6809_override_options (void) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
962 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
963 + /* Handle -mfar-code-page */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
964 + if (far_code_page_option == 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
965 + far_code_page_option = "__default_code_page"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
966 + strcpy (far_code_page, far_code_page_option); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
967 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
968 + /* Handle -mcode-section, -mdata-section, and -mbss-section */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
969 + if (code_section_ptr != 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
970 + sprintf (code_section_op, "\t.area %s", code_section_ptr); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
971 + if (data_section_ptr != 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
972 + sprintf (data_section_op, "\t.area %s", data_section_ptr); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
973 + if (bss_section_ptr != 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
974 + sprintf (bss_section_op, "\t.area %s", bss_section_ptr); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
975 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
976 + /* Handle -mcode-bank */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
977 + if (code_bank_option != 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
978 + sprintf (default_code_bank_name, "%s", code_bank_option); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
979 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
980 + /* Handle -mabi-version or -mno-reg-args */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
981 + if (m6809_abi_version_ptr != 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
982 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
983 + if (!strcmp (m6809_abi_version_ptr, "stack")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
984 + m6809_abi_version = M6809_ABI_VERSION_STACK; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
985 + else if (!strcmp (m6809_abi_version_ptr, "regs")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
986 + m6809_abi_version = M6809_ABI_VERSION_REGS; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
987 + else if (!strcmp (m6809_abi_version_ptr, "bx")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
988 + m6809_abi_version = M6809_ABI_VERSION_BX; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
989 + else if (!strcmp (m6809_abi_version_ptr, "latest")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
990 + m6809_abi_version = M6809_ABI_VERSION_LATEST; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
991 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
992 + m6809_abi_version = atoi (m6809_abi_version_ptr); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
993 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
994 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
995 + /* The older -mno-reg-args option is deprecated, and treated |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
996 + as -mabi=stack. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
997 + if (!TARGET_REG_ARGS) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
998 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
999 + warning (WARNING_OPT "-mno-reg-args deprecated; use -mabi=stack instead."); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1000 + m6809_abi_version = M6809_ABI_VERSION_STACK; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1001 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1002 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1003 + /* -fexceptions is unsupported */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1004 + flag_exceptions = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1005 + flag_non_call_exceptions = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1006 + flag_unwind_tables = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1007 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1008 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1009 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1010 +/** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1011 + * Output prefix that directs the assembler to use a direct-mode |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1012 + * instruction if globally enabled, address is a symbol, and symbol |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1013 + * has been marked as in direct page. Also, never do this if |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1014 + * using the indirect mode. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1015 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1016 +print_direct_prefix (FILE * file, rtx addr) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1017 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1018 + if (TARGET_DIRECT && |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1019 + (GET_CODE (addr) == SYMBOL_REF) && |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1020 + SYMBOL_REF_FLAG (addr) && |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1021 + check_direct_prefix_flag) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1022 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1023 + putc ('*', file); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1024 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1025 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1026 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1027 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1028 +/** Prints an operand (that is not an address) in assembly from RTL. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1029 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1030 +print_operand (FILE * file, rtx x, int code) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1031 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1032 + if (REG_P (x)) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1033 + /* gcc currently allocates the entire 16-bit 'd' register |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1034 + * even when it only needs an 8-bit value. So here it |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1035 + * is tricked into printing only the lower 8-bit 'b' |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1036 + * register into the assembly output. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1037 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1038 + * Eventually gcc should be modified to allocate a/b |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1039 + * independently and this hack can be removed. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1040 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1041 + * Occasionally, we may want to do an operation using |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1042 + * the 'a' register instead of 'b'; use the 'A' code |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1043 + * to specify that. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1044 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1045 + if (code == 'A') |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1046 + fputs ("a", file); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1047 + else if ((BYTE_MODE (x)) && (REGNO (x) == HARD_D_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1048 + fputs ("b", file); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1049 + else if (M_REG_P (x) && code == 'L') |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1050 + /* Soft registers can be treated like memory and accessed |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1051 + * at a particular offset. TODO : handle 'W' */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1052 + fputs (reg_names[REGNO (x)+1], file); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1053 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1054 + fputs (reg_names[REGNO (x)], file); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1055 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1056 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1057 + else if (MEM_P (x)) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1058 + last_mem_size = GET_MODE_SIZE (GET_MODE (x)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1059 + if (code == 'L') { /* LSH of word address */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1060 + if (GET_CODE (XEXP (x, 0)) == MEM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1061 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1062 + /* Offseting an indirect addressing mode is not supported */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1063 + error ("expression too complex for 6809 (offset indirect mode)"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1064 + debug_rtx (x); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1065 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1066 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1067 + x = adjust_address (x, QImode, 1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1068 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1069 + else if (code == 'M') { /* MSH of word address */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1070 + if (GET_CODE (XEXP (x, 0)) == MEM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1071 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1072 + /* Offseting an indirect addressing mode is not supported */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1073 + error ("expression too complex for 6809 (offset indirect mode)"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1074 + debug_rtx (x); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1075 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1076 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1077 + x = adjust_address (x, QImode, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1078 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1079 + else if (code == 'W') { /* least significant half of 32-bit */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1080 + x = adjust_address (x, HImode, 2); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1081 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1082 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1083 + pic_ok_for_addr_p = (code != 'C'); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1084 + output_address (XEXP (x, 0)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1085 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1086 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1087 + else if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) != DImode) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1088 + union { double d; int i[2]; } u; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1089 + u.i[0] = CONST_DOUBLE_LOW (x); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1090 + u.i[1] = CONST_DOUBLE_HIGH (x); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1091 + fprintf (file, "#%#9.9g", u.d); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1092 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1093 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1094 + else if (code == 'R') { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1095 + fprintf (file, "%s", |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1096 + m6809_get_regs_printable (INTVAL (x))); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1097 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1098 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1099 + else { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1100 + if (code == 'L') { /* LSH of word address */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1101 + x = gen_rtx_CONST_INT (VOIDmode, (INTVAL(x) & 0xff)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1102 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1103 + else if (code == 'M') { /* MSH of word address */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1104 + x = gen_rtx_CONST_INT (VOIDmode, ((INTVAL(x) >> 8) & 0xff)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1105 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1106 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1107 + putc ('#', file); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1108 + output_addr_const (file, x); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1109 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1110 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1111 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1112 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1113 +/** Prints an address operand to assembler from its RTL representation. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1114 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1115 +print_operand_address (FILE *file, rtx addr) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1116 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1117 + register rtx base = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1118 + register rtx offset = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1119 + int regno; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1120 + int indirect_flag = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1121 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1122 + check_direct_prefix_flag = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1123 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1124 + /*** check for indirect addressing ***/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1125 + if (MEM_P (addr)) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1126 + last_mem_size = GET_MODE_SIZE (GET_MODE (addr)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1127 + addr = XEXP (addr, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1128 + if (pic_ok_for_addr_p) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1129 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1130 + indirect_flag = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1131 + fprintf (file, "["); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1132 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1133 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1134 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1135 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1136 + switch (GET_CODE (addr)) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1137 + case REG: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1138 + regno = REGNO (addr); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1139 + fprintf (file, ",%s", reg_names[regno]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1140 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1141 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1142 + case PRE_DEC: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1143 + regno = REGNO (XEXP (addr, 0)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1144 + fputs (((last_mem_size == 1) ? ",-" : ",--"), file); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1145 + fprintf (file, "%s", reg_names[regno]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1146 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1147 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1148 + case POST_INC: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1149 + regno = REGNO (XEXP (addr, 0)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1150 + fprintf (file, ",%s", reg_names[regno]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1151 + fputs (((last_mem_size == 1) ? "+" : "++"), file); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1152 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1153 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1154 + case PLUS: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1155 + base = XEXP (addr, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1156 + if (MEM_P (base)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1157 + base = XEXP (base, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1158 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1159 + offset = XEXP (addr, 1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1160 + if (MEM_P (offset)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1161 + offset = XEXP (offset, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1162 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1163 + if ((CONSTANT_ADDRESS_P (base)) && (CONSTANT_ADDRESS_P (offset))) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1164 + if (!indirect_flag) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1165 + check_direct_prefix_flag = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1166 + output_addr_const (file, base); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1167 + check_direct_prefix_flag = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1168 + fputs ("+", file); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1169 + output_addr_const (file, offset); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1170 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1171 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1172 + else if ((CONSTANT_ADDRESS_P (base)) && (A_REG_P (offset))) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1173 + output_addr_const (file, base); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1174 + fprintf (file, ",%s", reg_names[REGNO (offset)]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1175 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1176 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1177 + else if ((CONSTANT_ADDRESS_P (offset)) && (A_REG_P (base))) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1178 + output_addr_const (file, offset); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1179 + fprintf (file, ",%s", reg_names[REGNO (base)]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1180 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1181 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1182 + /*** accumulator offset ***/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1183 + else if (((D_REG_P (offset)) || (Q_REG_P (offset))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1184 + && (A_REG_P (base))) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1185 + fprintf (file, "%s,%s", |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1186 + reg_names[REGNO (offset)], reg_names[REGNO (base)]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1187 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1188 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1189 + else if (((D_REG_P (base)) || (Q_REG_P (base))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1190 + && (A_REG_P (offset))) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1191 + fprintf (file, "%s,%s", |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1192 + reg_names[REGNO (base)], reg_names[REGNO (offset)]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1193 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1194 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1195 + else if (GET_CODE (base) == PRE_DEC) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1196 + regno = REGNO (XEXP (base, 0)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1197 + fputs (((last_mem_size == 1) ? ",-" : ",--"), file); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1198 + fprintf (file, "%s", reg_names[regno]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1199 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1200 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1201 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1202 + abort (); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1203 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1204 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1205 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1206 + default: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1207 + /* Set this global before calling output_addr_const() */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1208 + if (!indirect_flag) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1209 + check_direct_prefix_flag = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1210 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1211 + /* When printing a SYMBOL_REF in PIC mode, do not print the leading |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1212 + * '#' and follow it by ',pcr' to enable relative addressing. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1213 + if (flag_pic && pic_ok_for_addr_p && GET_CODE (addr) == SYMBOL_REF) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1214 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1215 + ASM_OUTPUT_SYMBOL_REF (file, addr); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1216 + fputs (",pcr", file); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1217 + pic_ok_for_addr_p = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1218 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1219 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1220 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1221 + output_addr_const (file, addr); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1222 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1223 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1224 + check_direct_prefix_flag = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1225 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1226 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1227 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1228 + if (indirect_flag) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1229 + fprintf (file, "]"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1230 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1231 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1232 +/*------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1233 + Update the CC Status |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1234 +--------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1235 + Set the cc_status for the results of an insn whose pattern is EXP. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1236 + We assume that jumps don't affect the condition codes. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1237 + All else, clobbers the condition codes, by assumption. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1238 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1239 + We assume that ALL add, minus, etc. instructions effect the condition |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1240 + codes. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1241 +-------------------------------------------------------------------*/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1242 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1243 +notice_update_cc (rtx exp, rtx insn ATTRIBUTE_UNUSED) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1244 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1245 + int src_code; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1246 + int dst_code; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1247 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1248 + /*** recognize SET insn's ***/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1249 + if (GET_CODE (exp) == SET) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1250 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1251 + src_code = GET_CODE (SET_SRC (exp)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1252 + dst_code = GET_CODE (SET_DEST (exp)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1253 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1254 + /* Jumps do not alter the cc's. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1255 + if (SET_DEST (exp) == pc_rtx) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1256 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1257 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1258 + /* Moving one register into another register (tfr): |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1259 + Doesn't alter the cc's. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1260 + if (REG_P (SET_DEST (exp)) && (REG_P (SET_SRC (exp)))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1261 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1262 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1263 + /* Moving memory into a register (load): Sets cc's. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1264 + if (REG_P (SET_DEST (exp)) && src_code == MEM) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1265 + cc_status.value1 = SET_SRC (exp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1266 + cc_status.value2 = SET_DEST (exp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1267 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1268 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1269 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1270 + /* Moving register into memory (store): Sets cc's. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1271 + if (dst_code == MEM && REG_P (SET_SRC (exp))) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1272 + cc_status.value1 = SET_SRC (exp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1273 + cc_status.value2 = SET_DEST (exp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1274 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1275 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1276 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1277 + /* Function calls clobber the cc's. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1278 + else if (GET_CODE (SET_SRC (exp)) == CALL) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1279 + CC_STATUS_INIT; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1280 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1281 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1282 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1283 + /* Tests and compares set the cc's in predictable ways. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1284 + else if (SET_DEST (exp) == cc0_rtx) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1285 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1286 + cc_status.flags = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1287 + cc_status.value1 = SET_SRC (exp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1288 + cc_status.value2 = SET_DEST (exp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1289 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1290 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1291 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1292 + else if (A_REG_P (SET_DEST (exp))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1293 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1294 + CC_STATUS_INIT; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1295 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1296 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1297 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1298 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1299 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1300 + /* Certain instructions affect the condition codes. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1301 + switch (src_code) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1302 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1303 + case PLUS: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1304 + case MINUS: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1305 + case NEG: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1306 + case ASHIFT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1307 + /* These instructions set the condition codes, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1308 + * and may modify the V bit. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1309 + cc_status.flags |= CC_NO_OVERFLOW; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1310 + /* FALLTHRU */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1311 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1312 + case AND: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1313 + case IOR: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1314 + case XOR: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1315 + case ASHIFTRT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1316 + case LSHIFTRT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1317 + /* These instructions set the condition codes, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1318 + * but cannot overflow (V=0). */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1319 + cc_status.value1 = SET_SRC (exp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1320 + cc_status.value2 = SET_DEST (exp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1321 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1322 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1323 + default: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1324 + /* Everything else is clobbered */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1325 + CC_STATUS_INIT; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1326 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1327 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1328 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1329 + } /* SET */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1330 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1331 + else if (GET_CODE (exp) == PARALLEL |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1332 + && GET_CODE (XVECEXP (exp, 0, 0)) == SET) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1333 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1334 + if (SET_DEST (XVECEXP (exp, 0, 0)) == pc_rtx) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1335 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1336 + if (SET_DEST (XVECEXP (exp, 0, 0)) == cc0_rtx) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1337 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1338 + CC_STATUS_INIT; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1339 + cc_status.value1 = SET_SRC (XVECEXP (exp, 0, 0)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1340 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1341 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1342 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1343 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1344 + /*** default action if we haven't recognized something |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1345 + and returned earlier ***/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1346 + CC_STATUS_INIT; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1347 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1348 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1349 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1350 +/** Returns nonzero if the expression EXP can be implemented using one |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1351 + * of the 6809's single operand instructions. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1352 +int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1353 +m6809_single_operand_operator (rtx exp) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1354 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1355 + rtx op1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1356 + HOST_WIDE_INT val; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1357 + enum rtx_code code; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1358 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1359 + debug_rtx(exp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1360 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1361 + code = GET_CODE (exp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1362 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1363 + /* Unary operators always qualify */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1364 + switch (code) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1365 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1366 + case NEG: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1367 + case NOT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1368 + return 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1369 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1370 + default: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1371 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1372 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1373 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1374 + /* Binary operators can only qualify if the second |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1375 + * argument is a CONST_INT of certain value. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1376 + op1 = XEXP (exp, 1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1377 + if (GET_CODE (op1) != CONST_INT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1378 + return 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1379 + val = INTVAL (op1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1380 + switch (code) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1381 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1382 + case PLUS: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1383 + case MINUS: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1384 + if (val == -1 || val == 1) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1385 + return 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1386 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1387 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1388 + case ASHIFT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1389 + case ASHIFTRT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1390 + case LSHIFTRT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1391 + case ROTATE: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1392 + case ROTATERT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1393 + if (val == 1) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1394 + return 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1395 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1396 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1397 + default: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1398 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1399 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1400 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1401 + return 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1402 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1403 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1404 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1405 +/** Return a bitarray of the hard registers which are used by a function. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1406 +unsigned int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1407 +m6809_get_live_regs (void) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1408 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1409 + unsigned int regs = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1410 + int regno; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1411 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1412 + if (frame_pointer_needed) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1413 + regs |= (1 << HARD_FRAME_POINTER_REGNUM); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1414 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1415 + for (regno = HARD_X_REGNUM; regno <= HARD_U_REGNUM; regno++) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1416 + if (df_regs_ever_live_p (regno) && ! call_used_regs[regno]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1417 + regs |= (1 << regno); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1418 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1419 + return regs; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1420 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1421 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1422 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1423 +/** Return a printable version of a list of hard registers, suitable |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1424 + * for use in a PSHx or PULx insn. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1425 +const char * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1426 +m6809_get_regs_printable (unsigned int regs) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1427 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1428 + static char list[64]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1429 + char *listp = list; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1430 + unsigned int regno; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1431 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1432 + for (regno=0; regno < FIRST_PSEUDO_REGISTER; regno++) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1433 + if ((regs & (1 << regno)) && !S_REGNO_P (regno)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1434 + listp += sprintf (listp, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1435 + (listp == list) ? "%s" : ",%s", reg_names[regno]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1436 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1437 + return list; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1438 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1439 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1440 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1441 +/** Return the total number of bytes covered by a set of hard registers. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1442 +unsigned int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1443 +m6809_get_regs_size (unsigned int regs) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1444 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1445 + unsigned int regno; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1446 + unsigned int size = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1447 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1448 + for (regno=0; regno < FIRST_PSEUDO_REGISTER; regno++) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1449 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1450 + /* Only count register in the given register set */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1451 + if (REGSET_CONTAINS_P (regno, regs)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1452 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1453 + /* Add 1 or 2 byte, depending on the size of the register. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1454 + * Since 'D' may be in both sets, check for WORD_REGSET first. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1455 + if (REGSET_CONTAINS_P(regno, WORD_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1456 + size += 2; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1457 + else if (REGSET_CONTAINS_P(regno, BYTE_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1458 + size++; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1459 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1460 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1461 + return size; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1462 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1463 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1464 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1465 +/* Given the target of call instruction in X, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1466 + * return the tree node that contains the function declaration for |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1467 + * that target. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1468 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1469 + * If the rtx or the tree do not appear valid for any reason, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1470 + * then return NULL_TREE. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1471 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1472 +static tree call_target_decl (rtx x) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1473 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1474 + tree decl; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1475 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1476 + /* Make sure the target is really a MEM. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1477 + if (!x || !MEM_P (x)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1478 + return NULL_TREE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1479 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1480 + /* Make sure the address is a SYMBOL_REF. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1481 + x = XEXP (x, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1482 + if (!x || (GET_CODE (x) != SYMBOL_REF)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1483 + return NULL_TREE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1484 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1485 + /* Get the declaration of this symbol */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1486 + decl = SYMBOL_REF_DECL (x); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1487 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1488 + /* Make sure the declaration is really a function. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1489 + if (!decl || (TREE_CODE(decl) != FUNCTION_DECL)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1490 + return NULL_TREE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1491 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1492 + return decl; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1493 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1494 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1495 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1496 +/** Returns nonzero if a function, whose declaration is in DECL, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1497 + * was declared to have the attribute given by ATTR_NAME. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1498 +int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1499 +m6809_function_has_type_attr_p (tree decl, const char *attr_name) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1500 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1501 + tree type; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1502 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1503 + type = TREE_TYPE (decl); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1504 + return lookup_attribute (attr_name, TYPE_ATTRIBUTES (type)) != NULL; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1505 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1506 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1507 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1508 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1509 +/** Returns nonzero if the current function was declared to have the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1510 + * attribute given by ATTR_NAME. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1511 +int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1512 +m6809_current_function_has_type_attr_p (const char *attr_name) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1513 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1514 + return m6809_function_has_type_attr_p (current_function_decl, attr_name); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1515 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1516 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1517 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1518 +/** Return nonzero if the current function has no return value. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1519 +int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1520 +m6809_current_function_is_void (void) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1521 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1522 + return (VOID_TYPE_P (TREE_TYPE (TREE_TYPE (current_function_decl)))); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1523 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1524 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1525 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1526 +/** Get the value of a declaration's 'bank', as set by the 'bank' |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1527 + * attribute. If no bank was declared, it returns NULL by default. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1528 +const char * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1529 +m6809_get_decl_bank (tree decl) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1530 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1531 + tree attr; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1532 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1533 + /* Lookup the 'bank' attribute. If it does not exist, then |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1534 + * return NULL */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1535 + attr = lookup_attribute ("bank", DECL_ATTRIBUTES (decl)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1536 + if (attr == NULL_TREE) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1537 + return NULL; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1538 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1539 + /* Make sure it has a value assigned to it */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1540 + attr = TREE_VALUE (attr); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1541 + if (attr == NULL_TREE) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1542 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1543 + warning (WARNING_OPT "banked function did not declare a bank number"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1544 + return NULL; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1545 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1546 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1547 + /* Return the bank name */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1548 + attr = TREE_VALUE (attr); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1549 + return TREE_STRING_POINTER (attr); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1550 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1551 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1552 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1553 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1554 +m6809_declare_function_name (FILE *asm_out_file, const char *name, tree decl) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1555 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1556 + /* Check the function declaration for special properties. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1557 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1558 + * If the function was declare with __attribute__((bank)), output |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1559 + * assembler definitions to force the function to go into the named |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1560 + * bank. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1561 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1562 + const char *bank_name = m6809_get_decl_bank (decl); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1563 + if (bank_name != NULL) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1564 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1565 + /* Declare __self_bank as a local assembler value that denotes |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1566 + * which bank the current function is in. This is required only |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1567 + * when the bank actually changes. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1568 + if (strcmp (bank_name, current_bank_name)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1569 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1570 + fprintf (asm_out_file, "__self_bank\t.equ %s\n", bank_name); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1571 + strcpy (current_bank_name, bank_name); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1572 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1573 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1574 + /* Declare a global assembler value that denotes which bank the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1575 + * named function is in. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1576 + fprintf (asm_out_file, "__%s_bank\t.gblequ %s\n", name, bank_name); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1577 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1578 + /* Force the current function into a new area */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1579 + fprintf (asm_out_file, "\t.bank bank_%s (FSFX=_%s)\n", |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1580 + bank_name, bank_name); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1581 + fprintf (asm_out_file, "\t.area bank_%s (BANK=bank_%s)\n", |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1582 + bank_name, bank_name); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1583 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1584 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1585 + /* Emit the label for the function's name */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1586 + ASM_OUTPUT_LABEL (asm_out_file, name); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1587 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1588 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1589 +#if 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1590 +/** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1591 + * Handle pragmas. Note that only the last branch pragma seen in the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1592 + * source has any affect on code generation. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1593 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1594 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1595 +#define BAD_PRAGMA(msgid, arg) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1596 + do { warning (WARNING_OPT msgid, arg); return -1; } while (0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1597 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1598 +static int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1599 +pragma_parse (const char *name, tree *sect) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1600 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1601 + tree s, x; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1602 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1603 + if (pragma_lex (&x) != CPP_OPEN_PAREN) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1604 + BAD_PRAGMA ("missing '(' after '#pragma %s' - ignored", name); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1605 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1606 + if (pragma_lex (&s) != CPP_STRING) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1607 + BAD_PRAGMA ("missing section name in '#pragma %s' - ignored", name); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1608 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1609 + if (pragma_lex (&x) != CPP_CLOSE_PAREN) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1610 + BAD_PRAGMA ("missing ')' for '#pragma %s' - ignored", name); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1611 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1612 + if (pragma_lex (&x) != CPP_EOF) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1613 + warning (WARNING_OPT "junk at end of '#pragma %s'", name); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1614 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1615 + *sect = s; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1616 + return 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1617 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1618 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1619 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1620 +/* |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1621 + * Handle #pragma section. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1622 + * This is deprecated; code should use __attribute__(section("name")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1623 + * instead. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1624 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1625 +void pragma_section (cpp_reader *pfile ATTRIBUTE_UNUSED) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1626 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1627 + tree sect; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1628 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1629 + if (pragma_parse ("section", §)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1630 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1631 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1632 + snprintf (code_section_op, 6+TREE_STRING_LENGTH (sect), |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1633 + ".area\t%s", TREE_STRING_POINTER (sect)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1634 + snprintf (data_section_op, 6+TREE_STRING_LENGTH (sect), |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1635 + ".area\t%s", TREE_STRING_POINTER (sect)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1636 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1637 + /* Mark a flag that sections have changed. Upon emitting another |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1638 + * declaration, the new .area directive will be written. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1639 + section_changed++; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1640 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1641 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1642 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1643 +/** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1644 + * Check a `double' value for validity for a particular machine mode. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1645 + * Called by the CHECK_FLOAT_VALUE() machine-dependent macro. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1646 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1647 +int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1648 +check_float_value (enum machine_mode mode, double *d, int overflow) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1649 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1650 + if (mode == SFmode) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1651 + if (*d > 1.7014117331926443e+38) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1652 + error("magnitude of constant too large for `float'"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1653 + *d = 1.7014117331926443e+38; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1654 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1655 + else if (*d < -1.7014117331926443e+38) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1656 + error("magnitude of constant too large for `float'"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1657 + *d = -1.7014117331926443e+38; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1658 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1659 + else if ((*d > 0) && (*d < 2.9387358770557188e-39)) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1660 + warning(WARNING_OPT "`float' constant truncated to zero"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1661 + *d = 0.0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1662 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1663 + else if ((*d < 0) && (*d > -2.9387358770557188e-39)) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1664 + warning(WARNING_OPT "`float' constant truncated to zero"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1665 + *d = 0.0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1666 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1667 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1668 + return overflow; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1669 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1670 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1671 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1672 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1673 +/** Declare that the target supports named output sections. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1674 +bool m6809_have_named_section = (bool)1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1675 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1676 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1677 +/** Write to the assembler file a directive to place |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1678 + * subsequent objects to a different section in the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1679 + * object file. ASxxxx uses the "area" directive for |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1680 + * this purpose. It does not however support generalized |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1681 + * alignment, and can only place items on an odd/even |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1682 + * boundary. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1683 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1684 +m6809_asm_named_section ( |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1685 + const char *name, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1686 + unsigned int flags ATTRIBUTE_UNUSED, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1687 + tree decl) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1688 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1689 + fprintf (asm_out_file, "\t.area\t%s\n", name); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1690 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1691 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1692 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1693 +enum reg_class |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1694 +m6809_preferred_reload_class (rtx x, enum reg_class regclass) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1695 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1696 + /* Check cases based on type code of rtx */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1697 + switch (GET_CODE(x)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1698 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1699 + /* |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1700 + * Observation, 2015-07-19, William Astle |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1701 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1702 + * The original comparison for range for 16 bits was wrong, adding 0x80 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1703 + * instead of 0x8000. Replaced both 8 bit and 16 bit comparisions with |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1704 + * a more straight forward range comparison - excessive cleverness isn't |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1705 + * really required here. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1706 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1707 + case CONST_INT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1708 + /* Constants that can fit into 1 byte should be |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1709 + * loaded into a Q_REGS reg */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1710 + if ((INTVAL(x) >= -128 && INTVAL(x) <= 127) && |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1711 +// if (((unsigned) (INTVAL(x) + 0x80) < 0x100) && |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1712 + (regclass > A_REGS)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1713 + return Q_REGS; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1714 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1715 + /* 16-bit constants should be loaded into A_REGS |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1716 + * when possible. gcc may already require A_REGS |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1717 + * or D_REGS for certain types of instructions. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1718 + * This case applies mostly to simple copy operations |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1719 + * to/from memory when any register will do, but |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1720 + * it's best to avoid using D register since it is |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1721 + * needed for other things. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1722 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1723 + else if ((INTVAL(x) >= -32768 && INTVAL(x) <= 32767) && |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1724 +// else if (((unsigned) (INTVAL(x) + 0x80) < 0x10000) && |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1725 + (regclass > A_REGS)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1726 + return A_REGS; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1727 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1728 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1729 + case SYMBOL_REF: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1730 + case LABEL_REF: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1731 + /* Addresses should always be loaded into A_REGS */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1732 + if (regclass >= A_REGS) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1733 + return (A_REGS); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1734 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1735 + default: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1736 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1737 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1738 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1739 + /* Check cases based on mode of rtx */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1740 + if ((GET_MODE(x) == QImode) && (regclass != A_REGS)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1741 + return Q_REGS; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1742 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1743 + /* Default: return whatever class reload suggested */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1744 + return regclass; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1745 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1746 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1747 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1748 +/** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1749 + * Check a new declaration for the "section" attribute. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1750 + * If it exists, and the target section is "direct", then mark |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1751 + * the declaration (in RTL) to indicate special treatment. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1752 + * When the variable is referenced later, we test for this flag |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1753 + * and can emit special asm text to force the assembler to use |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1754 + * short instructions. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1755 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1756 +static void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1757 +m6809_encode_section_info (tree decl, rtx rtl, int new_decl_p ATTRIBUTE_UNUSED) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1758 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1759 + tree attr, id; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1760 + const char *name; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1761 + const char *decl_name; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1762 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1763 + /* We only care about variable declarations, not functions */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1764 + if (TREE_CODE (decl) != VAR_DECL) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1765 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1766 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1767 + /* For debugging purposes only; grab the decl's name */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1768 + decl_name = IDENTIFIER_POINTER (DECL_NAME (decl)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1769 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1770 + /* Give up if the decl doesn't have any RTL */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1771 + if (!DECL_RTL (decl)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1772 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1773 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1774 + /* See if it has a section attribute */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1775 + attr = lookup_attribute ("section", DECL_ATTRIBUTES (decl)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1776 + if (!attr) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1777 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1778 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1779 + /* See if the section attribute has a value */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1780 + id = TREE_VALUE (TREE_VALUE (attr)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1781 + if (!id) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1782 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1783 + name = TREE_STRING_POINTER (id); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1784 + if (!name) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1785 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1786 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1787 + /* See if the value is 'direct'. If so, mark it. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1788 + if (!strcmp (name, "direct")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1789 + SYMBOL_REF_FLAG (XEXP (DECL_RTL (decl), 0)) = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1790 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1791 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1792 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1793 +/** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1794 + * Output code to perform a complex shift, for which there is no |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1795 + * direct support in the instruction set. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1796 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1797 + * shift1 is an instruction pattern for performing a 1-bit modification. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1798 + * This code wraps that pattern in a loop to perform the shift N times, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1799 + * where N is given by the address register in operands[2]. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1800 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1801 + * To support 16-bit shifts, shift2 can also be provided: it is |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1802 + * a second instruction to be included in the loop. 8-bit shift |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1803 + * insns will pass NULL here. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1804 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1805 + * The insn length of shift1/shift2 is assumed to be 1 byte, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1806 + * which works in all of the cases it is needed so far. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1807 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1808 +static void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1809 +m6809_gen_register_shift ( |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1810 + rtx *operands, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1811 + const char *shift1, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1812 + const char *shift2 ) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1813 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1814 + char beq_pattern[32]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1815 + char bra_pattern[32]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1816 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1817 + int shiftlen = (shift1 && shift2) ? 2 : 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1818 + int cmplen = (REGNO (operands[2]) == HARD_X_REGNUM) ? 3 : 4; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1819 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1820 + int beq_offset = 2 + shiftlen + 2; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1821 + int bra_offset = shiftlen + 2 + cmplen + 2; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1822 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1823 + sprintf (beq_pattern, "beq\t.+%d", beq_offset); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1824 + sprintf (bra_pattern, "bra\t.-%d", bra_offset); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1825 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1826 + output_asm_insn ("pshs\t%2", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1827 + output_asm_insn ("lea%2\t-1,%2", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1828 + output_asm_insn ("cmp%2\t#-1", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1829 + output_asm_insn (beq_pattern, operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1830 + if (shift1) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1831 + output_asm_insn (shift1, operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1832 + if (shift2) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1833 + output_asm_insn (shift2, operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1834 + output_asm_insn (bra_pattern, operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1835 + output_asm_insn ("puls\t%2", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1836 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1837 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1838 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1839 +/** Generate RTL for the upper 8-bits of a 16-bit constant. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1840 +rtx |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1841 +gen_rtx_const_high (rtx r) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1842 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1843 + unsigned char v = (INTVAL (r) >> 8) & 0xFF; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1844 + signed char s = (signed char)v; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1845 + return gen_int_mode (s, QImode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1846 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1847 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1848 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1849 +/** Generate RTL for the lower 8-bits of a 16-bit constant. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1850 +rtx |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1851 +gen_rtx_const_low (rtx r) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1852 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1853 + unsigned char v = INTVAL (r) & 0xFF; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1854 + signed char s = (signed char)v; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1855 + return gen_int_mode (s, QImode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1856 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1857 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1858 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1859 +/** Generate RTL to allocate/free bytes on the stack. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1860 + * CODE is given as MINUS when allocating and PLUS when freeing, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1861 + * to match the semantics of a downward-growing stack. SIZE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1862 + * is always given as a positive integer. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1863 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1864 +static rtx |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1865 +gen_rtx_stack_adjust (enum rtx_code code, int size) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1866 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1867 + if (size <= 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1868 + return NULL_RTX; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1869 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1870 + if (code == MINUS) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1871 + size = -size; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1872 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1873 + return gen_rtx_SET (Pmode, stack_pointer_rtx, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1874 + gen_rtx_PLUS (Pmode, stack_pointer_rtx, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1875 + gen_int_mode (size, HImode))); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1876 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1877 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1878 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1879 +/** Generate RTL to push/pop a set of registers. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1880 +rtx |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1881 +gen_rtx_register_pushpop (int op, int regs) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1882 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1883 + rtx nregs = gen_int_mode (regs, QImode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1884 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1885 + if (op == UNSPEC_PUSH_RS) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1886 + return gen_register_push (nregs); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1887 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1888 + return gen_register_pop (nregs); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1889 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1890 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1891 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1892 +/* Given a register set REGS, where the bit positions correspond to |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1893 + * hard register numbers, return another bitmask that represents the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1894 + * order in which those registers would be pushed/popped. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1895 + * Registers that are pushed first have higher bit positions. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1896 + * The pop order is just the reverse bitmask. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1897 + * These values are the same as the bitmasks actually used in the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1898 + * machine instructions. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1899 +static unsigned int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1900 +register_push_order (int regs) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1901 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1902 + unsigned int order = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1903 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1904 + if (REGSET_CONTAINS_P (HARD_PC_REGNUM, regs)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1905 + order |= 0x80; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1906 + if (REGSET_CONTAINS_P (HARD_U_REGNUM, regs)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1907 + order |= 0x40; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1908 + if (REGSET_CONTAINS_P (HARD_Y_REGNUM, regs)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1909 + order |= 0x20; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1910 + if (REGSET_CONTAINS_P (HARD_X_REGNUM, regs)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1911 + order |= 0x10; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1912 + if (REGSET_CONTAINS_P (HARD_DP_REGNUM, regs)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1913 + order |= 0x8; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1914 + if (REGSET_CONTAINS_P (HARD_B_REGNUM, regs)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1915 + order |= 0x4; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1916 + if (REGSET_CONTAINS_P (HARD_A_REGNUM, regs)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1917 + order |= 0x2; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1918 + if (REGSET_CONTAINS_P (HARD_CC_REGNUM, regs)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1919 + order |= 0x1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1920 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1921 + if (REGSET_CONTAINS_P (HARD_D_REGNUM, regs)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1922 + order |= (0x4 | 0x2); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1923 + return order; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1924 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1925 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1926 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1927 +/* Returns nonzero if two consecutive push or pop instructions, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1928 + * as determined by the OP, can be merged into a single instruction. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1929 + * The first instruction in the sequence pushes/pops REGS1; the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1930 + * second applies to REGS2. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1931 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1932 + * If true, the resulting instruction can use (regs1 | regs2) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1933 + * safely. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1934 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1935 +int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1936 +m6809_can_merge_pushpop_p (int op, int regs1, int regs2) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1937 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1938 + /* Register sets must not overlap */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1939 + if (regs1 & regs2) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1940 + return 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1941 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1942 + if (op == UNSPEC_PUSH_RS) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1943 + return (register_push_order (regs1) > register_push_order (regs2)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1944 + else if (op == UNSPEC_POP_RS) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1945 + return (register_push_order (regs1) < register_push_order (regs2)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1946 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1947 + return 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1948 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1949 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1950 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1951 +/** Emit instructions for making a library call. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1952 + * MODE is the mode of the operation. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1953 + * NAME is the library function name. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1954 + * OPERANDS is the rtx array provided by the recognizer. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1955 + * COUNT is the number of input operands to the call, and |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1956 + * should be 1 for a unary op or 2 for a binary op. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1957 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1958 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1959 +emit_libcall_insns (enum machine_mode mode, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1960 + const char *name, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1961 + rtx *operands, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1962 + int count) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1963 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1964 + /* Generate an rtx for the call target. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1965 + rtx symbol = gen_rtx_SYMBOL_REF (Pmode, name); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1966 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1967 + /* Emit the library call. Slightly different based |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1968 + on the number of operands */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1969 + if (count == 2) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1970 + emit_library_call (symbol, LCT_NORMAL, mode, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1971 + 2, operands[1], mode, operands[2], mode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1972 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1973 + emit_library_call (symbol, LCT_NORMAL, mode, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1974 + 1, operands[1], mode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1975 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1976 + /* The library call is expected to put its result |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1977 + in LIBCALL_VALUE, so need to copy it into the destination. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1978 + emit_move_insn (operands[0], LIBCALL_VALUE(mode)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1979 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1980 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1981 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1982 +/** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1983 + * A small helper function that writes out a single branch instruction. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1984 + * OPCODE is the short name, e.g. "ble". |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1985 + * OPERANDS has the rtx for the target label. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1986 + * LONG_P is nonzero if we are emitting a long branch, and need to |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1987 + * prepend an 'l' to the opcode name. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1988 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1989 +void output_branch_insn1 (const char *opcode, rtx *operands, int long_p) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1990 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1991 + char pattern[64]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1992 + sprintf (pattern, "%s%s\t%%l0", long_p ? "l" : "", opcode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1993 + output_asm_insn (pattern, operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1994 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1995 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1996 +/** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1997 + * Output a branch/conditional branch insn of the proper |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1998 + * length. code identifies the particular branch insn. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
1999 + * operands holds the branch target in operands[0]. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2000 + * length says what the size of this insn should be. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2001 + * Based on the length, we know whether it should be a |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2002 + * short (8-bit) or long (16-bit) branch. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2003 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2004 +const char * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2005 +output_branch_insn (enum rtx_code code, rtx *operands, int length) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2006 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2007 + int shortform; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2008 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2009 + /* Decide whether or not to use the long or short form. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2010 + * Calculate automatically based on insn lengths. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2011 + shortform = ((length > 2) ? 0 : 1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2012 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2013 + /* Determine the proper opcode. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2014 + * Use the short (2-byte) opcode if the target is within |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2015 + * reach. Otherwise, use jmp (3-byte opcode), unless |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2016 + * compiling with -fpic, in which case we'll need to use |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2017 + * lbra (4-byte opcode). |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2018 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2019 + switch (code) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2020 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2021 + case LABEL_REF: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2022 + if (shortform) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2023 + output_branch_insn1 ("bra", operands, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2024 + else if (flag_pic) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2025 + output_branch_insn1 ("bra", operands, 1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2026 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2027 + output_branch_insn1 ("jmp", operands, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2028 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2029 + case EQ: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2030 + output_branch_insn1 ("beq", operands, !shortform); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2031 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2032 + case NE: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2033 + output_branch_insn1 ("bne", operands, !shortform); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2034 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2035 + case GT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2036 + output_branch_insn1 ("bgt", operands, !shortform); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2037 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2038 + case GTU: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2039 + output_branch_insn1 ("bhi", operands, !shortform); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2040 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2041 + case LT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2042 + if (cc_prev_status.flags & CC_NO_OVERFLOW) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2043 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2044 + output_branch_insn1 ("bmi", operands, !shortform); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2045 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2046 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2047 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2048 + output_branch_insn1 ("blt", operands, !shortform); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2049 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2050 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2051 + case LTU: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2052 + output_branch_insn1 ("blo", operands, !shortform); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2053 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2054 + case GE: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2055 + if (cc_prev_status.flags & CC_NO_OVERFLOW) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2056 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2057 + output_branch_insn1 ("bpl", operands, !shortform); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2058 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2059 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2060 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2061 + output_branch_insn1 ("bge", operands, !shortform); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2062 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2063 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2064 + case GEU: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2065 + output_branch_insn1 ("bhs", operands, !shortform); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2066 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2067 + case LE: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2068 + if (cc_prev_status.flags & CC_NO_OVERFLOW) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2069 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2070 + output_branch_insn1 ("bmi", operands, !shortform); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2071 + output_branch_insn1 ("beq", operands, !shortform); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2072 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2073 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2074 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2075 + output_branch_insn1 ("ble", operands, !shortform); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2076 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2077 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2078 + case LEU: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2079 + output_branch_insn1 ("bls", operands, !shortform); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2080 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2081 + default: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2082 + abort(); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2083 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2084 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2085 + return ""; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2086 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2087 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2088 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2089 +/** Returns the "cost" of an RTL expression. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2090 + * In general, the expression "COSTS_N_INSNS(1)" is used to represent |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2091 + * the cost of a fast 8-bit arithmetic instruction that operates on |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2092 + * a reg/mem or a reg/immed. Other costs are relative to this. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2093 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2094 + * Notes: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2095 + * - The cost of a REG is always zero; this cannot be changed. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2096 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2097 + * - On the 6809, instructions on two registers will nearly always take |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2098 + * longer than those that operate on a register and a constant/memory, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2099 + * because of the way the instruction set is structured. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2100 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2101 + * TODO: multiply HImode by 2 should be done via shifts, instead of add. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2102 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2103 +static bool |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2104 +m6809_rtx_costs (rtx X, int code, int outer_code ATTRIBUTE_UNUSED, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2105 + int *total, bool speed) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2106 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2107 + int has_const_arg = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2108 + HOST_WIDE_INT const_arg; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2109 + enum machine_mode mode; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2110 + int nargs = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2111 + rtx op0, op1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2112 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2113 + /* Data RTXs return a value between 0-3, depending on complexity. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2114 + All of these are less than COSTS_N_INSNS(1). */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2115 + switch (code) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2116 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2117 + case CC0: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2118 + case PC: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2119 + *total = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2120 + return true; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2121 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2122 + case CONST_INT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2123 + if (X == const0_rtx) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2124 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2125 + *total = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2126 + return true; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2127 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2128 + else if ((unsigned) INTVAL (X) < 077) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2129 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2130 + *total = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2131 + return true; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2132 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2133 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2134 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2135 + *total = 2; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2136 + return true; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2137 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2138 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2139 + case LABEL_REF: case CONST: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2140 + *total = 2; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2141 + return true; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2142 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2143 + case SYMBOL_REF: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2144 + /* References to memory are made cheaper if they have |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2145 + * the 'direct' mode attribute set */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2146 + *total = (SYMBOL_REF_FLAG (X)) ? 1 : 2; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2147 + return true; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2148 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2149 + case MEM: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2150 + /* See what form of address was given */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2151 + X = XEXP (X, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2152 + switch (GET_CODE (X)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2153 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2154 + case SYMBOL_REF: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2155 + *total = (SYMBOL_REF_FLAG (X)) ? 1 : 2; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2156 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2157 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2158 + case CONST_INT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2159 + *total = 2; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2160 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2161 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2162 + case MEM: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2163 + *total = COSTS_N_INSNS (1) + 2; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2164 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2165 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2166 + default: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2167 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2168 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2169 + return true; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2170 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2171 + case CONST_DOUBLE: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2172 + /* TODO : not sure about this value. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2173 + *total = 3; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2174 + return true; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2175 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2176 + default: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2177 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2178 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2179 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2180 + /* Decode the rtx */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2181 + mode = GET_MODE (X); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2182 + op0 = XEXP (X, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2183 + op1 = XEXP (X, 1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2184 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2185 + /* We don't implement anything in SImode or greater. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2186 + if (GET_MODE_SIZE (mode) >= GET_MODE_SIZE (SImode)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2187 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2188 + *total = COSTS_N_INSNS (100); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2189 + return true; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2190 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2191 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2192 + /* Figure out if there is a constant argument, and its value. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2193 + if (GET_RTX_CLASS (code) == RTX_BIN_ARITH |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2194 + || GET_RTX_CLASS (code) == RTX_COMM_ARITH) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2195 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2196 + nargs = 2; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2197 + if (GET_CODE (op1) == CONST_INT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2198 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2199 + has_const_arg = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2200 + const_arg = INTVAL (op1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2201 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2202 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2203 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2204 + /* Penalize a reg/reg operation by adding MEMORY_MOVE_COST, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2205 + * Ignore soft registers, since these are really in memory. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2206 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2207 + * TODO: penalize HImode reg/reg for most operations, except maybe |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2208 + * additions since index registers allow for that. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2209 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2210 + * TODO: shifts by constant N do not always require N instructions; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2211 + * some of this can be done cheaper. The number of actual insns can be |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2212 + * predicted well. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2213 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2214 + if (nargs == 2 && REAL_REG_P (op0) && REAL_REG_P (op1)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2215 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2216 + *total = MEMORY_MOVE_COST (mode, Q_REGS, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2217 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2218 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2219 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2220 + *total = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2221 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2222 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2223 + /* Operator RTXs are counted as COSTS_N_INSNS(N), where N is |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2224 + the estimated number of actual machine instructions needed to |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2225 + perform the computation. Some small adjustments are made since |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2226 + some "instructions" are more complex than others. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2227 + switch (code) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2228 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2229 + case PLUS: case MINUS: case COMPARE: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2230 + /* 6809 handles these natively in QImode, and in HImode as long |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2231 + * as operand 1 is constant. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2232 + if (mode == QImode || (mode == HImode && has_const_arg)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2233 + *total += COSTS_N_INSNS (1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2234 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2235 + *total += COSTS_N_INSNS (GET_MODE_SIZE (mode)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2236 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2237 + /* -1, 0, and 1 can be done using inherent instructions |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2238 + * for PLUS and MINUS in QImode, so don't add extra cost. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2239 + if (has_const_arg |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2240 + && (mode == QImode || mode == HImode) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2241 + && (const_arg == -1 || const_arg == 0 || const_arg == 1) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2242 + && (code == PLUS || code == MINUS)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2243 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2244 + return true; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2245 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2246 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2247 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2248 + case AND: case IOR: case XOR: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2249 + case NEG: case NOT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2250 + /* 6809 handles these natively in QImode, but requires |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2251 + * splitting in HImode. Treat these as 2 insns. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2252 + *total += COSTS_N_INSNS (1) * GET_MODE_SIZE (mode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2253 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2254 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2255 + case ASHIFT: case ASHIFTRT: case LSHIFTRT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2256 + case ROTATE: case ROTATERT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2257 + /* 6809 can do shift/rotates of a QImode by a constant in |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2258 + * 1 insn times the shift count, or in HImode by a constant |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2259 + * by splitting to 2 insns. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2260 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2261 + * Shift by a nonconstant will take significantly longer |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2262 + * than any of these. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2263 + if (has_const_arg) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2264 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2265 + const_arg %= (GET_MODE_SIZE (mode) * 8); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2266 + if (const_arg == 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2267 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2268 + *total += COSTS_N_INSNS(1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2269 + return true; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2270 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2271 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2272 + /* HImode shifts greater than 8 get optimized due |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2273 + * to register transfer from b to a; this cuts down the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2274 + * cost. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2275 + if (const_arg >= 8) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2276 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2277 + *total += COSTS_N_INSNS (1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2278 + const_arg -= 8; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2279 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2280 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2281 + /* The computed cost is 'const_arg' 1-bit shifts, doubled |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2282 + if in HImode, minus the cost of the constant itself which |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2283 + will be added in later but really shouldn't be. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2284 + *total += COSTS_N_INSNS (const_arg) * GET_MODE_SIZE (mode) - 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2285 + return true; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2286 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2287 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2288 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2289 + /* It may take up to 7 iterations of about 6-7 real |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2290 + * instructions, so make this expensive. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2291 + *total += COSTS_N_INSNS (50); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2292 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2293 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2294 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2295 + case MULT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2296 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2297 + /* Multiply is cheap when both arguments are 8-bits. They |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2298 + could be QImode, or QImode widened to HImode, or a constant |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2299 + that fits into 8-bits. As long as both operands qualify, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2300 + we can use a single mul instruction. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2301 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2302 + Assume that fast multiply can be used, and change this if we find |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2303 + differently... */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2304 + int ok_for_qihi3 = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2305 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2306 + /* Check the first operand */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2307 + switch (GET_MODE (op0)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2308 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2309 + case QImode: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2310 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2311 + case HImode: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2312 + if (GET_CODE (op0) != SIGN_EXTEND && GET_CODE (op0) != ZERO_EXTEND) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2313 + ok_for_qihi3 = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2314 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2315 + default: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2316 + ok_for_qihi3 = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2317 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2318 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2319 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2320 + /* Likewise, check the second operand. This is where constants may appear. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2321 + switch (GET_MODE (op1)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2322 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2323 + case QImode: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2324 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2325 + case HImode: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2326 + if (GET_CODE (op1) != SIGN_EXTEND && GET_CODE (op1) != ZERO_EXTEND) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2327 + ok_for_qihi3 = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2328 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2329 + case VOIDmode: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2330 + if (!CONST_OK_FOR_LETTER_P (const_arg, 'K')) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2331 + ok_for_qihi3 = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2332 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2333 + default: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2334 + ok_for_qihi3 = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2335 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2336 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2337 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2338 + /* Fast multiply takes about 4 times as many cycles as a normal |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2339 + arithmetic operation. Otherwise, it will take an expensive libcall. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2340 + if (ok_for_qihi3) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2341 + *total += COSTS_N_INSNS (4); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2342 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2343 + *total = COSTS_N_INSNS (50); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2344 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2345 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2346 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2347 + case DIV: case UDIV: case MOD: case UMOD: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2348 + /* These all require more expensive libcalls. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2349 + *total += COSTS_N_INSNS (100); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2350 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2351 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2352 + /* TODO : TRUNCATE, SIGN_EXTEND, and ZERO_EXTEND */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2353 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2354 + /* These can normally be done with autoincrement, etc., so |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2355 + * don't charge for them. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2356 + case PRE_DEC: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2357 + case PRE_INC: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2358 + case POST_DEC: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2359 + case POST_INC: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2360 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2361 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2362 + default: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2363 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2364 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2365 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2366 + /* Always return false, and let the caller gather the costs |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2367 + * of the operands */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2368 + return false; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2369 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2370 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2371 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2372 +static tree |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2373 +m6809_handle_fntype_attribute (tree *node, tree name, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2374 + tree args ATTRIBUTE_UNUSED, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2375 + int flags ATTRIBUTE_UNUSED, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2376 + bool *no_add_attrs) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2377 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2378 + if (TREE_CODE (*node) != FUNCTION_TYPE) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2379 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2380 + warning (WARNING_OPT "'%s' only valid for functions", |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2381 + IDENTIFIER_POINTER (name)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2382 + *no_add_attrs = TRUE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2383 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2384 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2385 + return NULL_TREE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2386 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2387 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2388 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2389 +static tree |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2390 +m6809_handle_data_type_attribute (tree *node ATTRIBUTE_UNUSED, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2391 + tree name ATTRIBUTE_UNUSED, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2392 + tree args ATTRIBUTE_UNUSED, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2393 + int flags ATTRIBUTE_UNUSED, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2394 + bool *no_add_attrs ATTRIBUTE_UNUSED) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2395 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2396 + return NULL_TREE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2397 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2398 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2399 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2400 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2401 +static tree |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2402 +m6809_handle_default_attribute (tree *node ATTRIBUTE_UNUSED, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2403 + tree name ATTRIBUTE_UNUSED, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2404 + tree args ATTRIBUTE_UNUSED, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2405 + int flags ATTRIBUTE_UNUSED, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2406 + bool *no_add_attrs ATTRIBUTE_UNUSED ) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2407 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2408 + return NULL_TREE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2409 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2410 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2411 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2412 +/* Table of valid machine attributes */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2413 +const struct attribute_spec m6809_attribute_table[] = { /* |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2414 +{ name, min, max, decl, type, fntype, handler } */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2415 +{ "interrupt", 0, 0, false, true, true, m6809_handle_fntype_attribute }, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2416 +{ "naked", 0, 0, false, true, true, m6809_handle_fntype_attribute }, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2417 +{ "far", 0, 1, false, true, true, m6809_handle_fntype_attribute }, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2418 +{ "bank", 0, 1, true, false, false, m6809_handle_default_attribute }, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2419 +{ "boolean", 0, 0, false, true, false, m6809_handle_data_type_attribute }, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2420 +{ NULL, 0, 0, false, true, false, NULL }, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2421 +}; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2422 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2423 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2424 +/** Initialize builtin routines for the 6809. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2425 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2426 +m6809_init_builtins (void) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2427 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2428 + /* Create type trees for each function signature required. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2429 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2430 + * void_ftype_void = void f(void) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2431 + * void_ftype_uchar = void f(unsigned char) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2432 + * uchar_ftype_uchar2 = unsigned char f (unsigned char, unsigned char) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2433 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2434 + tree void_ftype_void = |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2435 + build_function_type (void_type_node, void_list_node); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2436 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2437 + tree void_ftype_uchar = |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2438 + build_function_type (void_type_node, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2439 + tree_cons (NULL_TREE, unsigned_char_type_node, void_list_node)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2440 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2441 + tree uchar_ftype_uchar2 = |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2442 + build_function_type (unsigned_char_type_node, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2443 + tree_cons (NULL_TREE, unsigned_char_type_node, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2444 + tree_cons (NULL_TREE, unsigned_char_type_node, void_list_node))); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2445 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2446 + /* Register each builtin function. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2447 + add_builtin_function ("__builtin_swi", void_ftype_void, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2448 + M6809_SWI, BUILT_IN_MD, NULL, NULL_TREE); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2449 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2450 + add_builtin_function ("__builtin_swi2", void_ftype_void, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2451 + M6809_SWI2, BUILT_IN_MD, NULL, NULL_TREE); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2452 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2453 + add_builtin_function ("__builtin_swi3", void_ftype_void, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2454 + M6809_SWI3, BUILT_IN_MD, NULL, NULL_TREE); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2455 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2456 + add_builtin_function ("__builtin_cwai", void_ftype_uchar, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2457 + M6809_CWAI, BUILT_IN_MD, NULL, NULL_TREE); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2458 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2459 + add_builtin_function ("__builtin_sync", void_ftype_void, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2460 + M6809_SYNC, BUILT_IN_MD, NULL, NULL_TREE); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2461 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2462 + add_builtin_function ("__builtin_nop", void_ftype_void, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2463 + M6809_NOP, BUILT_IN_MD, NULL, NULL_TREE); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2464 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2465 + add_builtin_function ("__builtin_blockage", void_ftype_void, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2466 + M6809_BLOCKAGE, BUILT_IN_MD, NULL, NULL_TREE); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2467 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2468 + add_builtin_function ("__builtin_add_decimal", uchar_ftype_uchar2, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2469 + M6809_ADD_DECIMAL, BUILT_IN_MD, NULL, NULL_TREE); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2470 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2471 + add_builtin_function ("__builtin_add_carry", uchar_ftype_uchar2, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2472 + M6809_ADD_CARRY, BUILT_IN_MD, NULL, NULL_TREE); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2473 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2474 + add_builtin_function ("__builtin_sub_carry", uchar_ftype_uchar2, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2475 + M6809_SUB_CARRY, BUILT_IN_MD, NULL, NULL_TREE); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2476 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2477 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2478 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2479 +/** Used by m6809_expand_builtin, given a tree ARGLIST which |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2480 + * refers to the operands of a builtin call, return an rtx |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2481 + * that represents the nth operand, as denoted by OPNUM, which |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2482 + * is a zero-based integer. MODE gives the expected mode |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2483 + * of the operand. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2484 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2485 + * This rtx is suitable for use in the emitted RTL for the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2486 + * builtin instruction. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2487 +rtx |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2488 +m6809_builtin_operand (tree arglist, enum machine_mode mode, int opnum) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2489 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2490 + tree arg; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2491 + rtx r; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2492 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2493 + arg = CALL_EXPR_ARG (arglist, opnum); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2494 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2495 + /* Convert the tree to RTL */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2496 + r = expand_expr (arg, NULL_RTX, mode, EXPAND_NORMAL); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2497 + if (r == NULL_RTX) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2498 + return NULL_RTX; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2499 + return r; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2500 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2501 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2502 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2503 +/** Expand a builtin that was registered in init_builtins into |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2504 + * RTL. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2505 +rtx |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2506 +m6809_expand_builtin (tree exp, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2507 + rtx target, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2508 + rtx subtarget ATTRIBUTE_UNUSED, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2509 + enum machine_mode mode ATTRIBUTE_UNUSED, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2510 + int ignore ATTRIBUTE_UNUSED ) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2511 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2512 + tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2513 + tree arglist = exp; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2514 + unsigned int fcode = DECL_FUNCTION_CODE (fndecl); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2515 + rtx r0, r1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2516 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2517 + switch (fcode) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2518 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2519 + case M6809_SWI: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2520 + r0 = gen_rtx_CONST_INT (VOIDmode, 1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2521 + emit_insn (target = gen_m6809_swi (r0)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2522 + return target; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2523 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2524 + case M6809_SWI2: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2525 + r0 = gen_rtx_CONST_INT (VOIDmode, 2); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2526 + emit_insn (target = gen_m6809_swi (r0)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2527 + return target; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2528 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2529 + case M6809_SWI3: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2530 + r0 = gen_rtx_CONST_INT (VOIDmode, 3); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2531 + emit_insn (target = gen_m6809_swi (r0)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2532 + return target; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2533 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2534 + case M6809_CWAI: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2535 + r0 = m6809_builtin_operand (arglist, QImode, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2536 + emit_insn (target = gen_m6809_cwai (r0)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2537 + return target; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2538 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2539 + case M6809_SYNC: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2540 + emit_insn (target = gen_m6809_sync ()); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2541 + return target; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2542 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2543 + case M6809_ADD_CARRY: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2544 + r0 = m6809_builtin_operand (arglist, QImode, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2545 + r1 = m6809_builtin_operand (arglist, QImode, 1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2546 + if (!target) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2547 + target = gen_reg_rtx (QImode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2548 + emit_insn (gen_addqi3_carry (target, r0, r1)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2549 + return target; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2550 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2551 + case M6809_SUB_CARRY: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2552 + r0 = m6809_builtin_operand (arglist, QImode, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2553 + r1 = m6809_builtin_operand (arglist, QImode, 1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2554 + if (!target) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2555 + target = gen_reg_rtx (QImode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2556 + emit_insn (gen_subqi3_carry (target, r0, r1)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2557 + return target; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2558 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2559 + case M6809_NOP: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2560 + emit_insn (target = gen_nop ()); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2561 + return target; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2562 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2563 + case M6809_BLOCKAGE: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2564 + emit_insn (target = gen_blockage ()); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2565 + return target; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2566 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2567 + case M6809_ADD_DECIMAL: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2568 + r0 = m6809_builtin_operand (arglist, QImode, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2569 + r1 = m6809_builtin_operand (arglist, QImode, 1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2570 + if (!target) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2571 + target = gen_reg_rtx (QImode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2572 + emit_insn (gen_addqi3_decimal (target, r0, r1)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2573 + return target; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2574 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2575 + default: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2576 + warning (WARNING_OPT "unknown builtin expansion ignored"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2577 + return NULL_RTX; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2578 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2579 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2580 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2581 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2582 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2583 +/* Returns nonzero if 'x' represents a function that was declared |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2584 + * as __noreturn__. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2585 +int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2586 +noreturn_functionp (rtx x) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2587 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2588 + tree decl = call_target_decl (x); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2589 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2590 + if (decl == NULL_TREE) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2591 + return 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2592 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2593 + return TREE_THIS_VOLATILE (decl); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2594 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2595 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2596 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2597 +const char * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2598 +far_function_type_p (tree type) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2599 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2600 + tree attr; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2601 + const char *page; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2602 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2603 + /* Return whether or not this decl has the far attribute */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2604 + attr = lookup_attribute ("far", TYPE_ATTRIBUTES (type)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2605 + if (attr == NULL_TREE) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2606 + return NULL; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2607 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2608 + /* If it is far, check for a value */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2609 + attr = TREE_VALUE (attr); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2610 + if (attr == NULL_TREE) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2611 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2612 + warning (WARNING_OPT "far code page not specified, using local value"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2613 + return far_code_page; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2614 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2615 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2616 + /* We have a TREE_LIST of attribute values, get the first one. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2617 + * It should be an INTEGER_CST. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2618 + attr = TREE_VALUE (attr); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2619 + page = TREE_STRING_POINTER (attr); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2620 + return page; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2621 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2622 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2623 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2624 +/* For a far function, returns the identifier that states which page |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2625 + * it resides in. Otherwise, returns NULL for ordinary functions. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2626 +const char * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2627 +far_functionp (rtx x) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2628 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2629 + tree decl, decl_type; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2630 + const char *page; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2631 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2632 + /* Find the FUNCTION_DECL corresponding to the rtx being called. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2633 + decl = call_target_decl (x); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2634 + if (decl == NULL_TREE) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2635 + return NULL; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2636 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2637 + /* See if the function has the new 'banked' attribute. These |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2638 + * are numeric instead of text */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2639 + page = m6809_get_decl_bank (decl); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2640 + if (page) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2641 + return page; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2642 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2643 + /* No, lookup the type of the function and see if the type |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2644 + * specifies far or not. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2645 + decl_type = TREE_TYPE (decl); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2646 + if (decl_type == NULL_TREE) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2647 + return NULL; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2648 + return far_function_type_p (decl_type); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2649 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2650 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2651 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2652 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2653 +/** Outputs the assembly language for a far call. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2654 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2655 +output_far_call_insn (rtx *operands, int has_return) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2656 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2657 + static char page_data[64]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2658 + const char *called_page; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2659 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2660 + /* The logic is the same for functions whether or not there |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2661 + * is a return value. Skip over the return value in this |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2662 + * case, so that the call location is always operands[0]. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2663 + if (has_return) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2664 + operands++; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2665 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2666 + /* Get the name of the page being called */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2667 + called_page = far_functionp (operands[0]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2668 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2669 +#if 0 /* TODO : broken logic */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2670 + /* See if the called page name is a 'bank' */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2671 + if (isdigit (*called_page)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2672 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2673 + /* New style banking */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2674 + if (!strcmp (called_page, current_bank_name)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2675 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2676 + /* Same page */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2677 + output_asm_insn ("jsr\t%0", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2678 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2679 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2680 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2681 + /* Different page */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2682 + output_asm_insn ("jsr\t__far_call_handler\t;new style", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2683 + output_asm_insn ("\t.dw\t%0", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2684 + sprintf (page_data, "\t.db\t%s", called_page); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2685 + output_asm_insn (page_data, operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2686 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2687 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2688 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2689 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2690 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2691 + /* Are we calling a different page than we are running in? */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2692 + if (!strcmp (called_page, far_code_page)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2693 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2694 + /* Same page : no need to execute a far call */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2695 + if (flag_pic) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2696 + output_asm_insn ("lbsr\t%C0", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2697 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2698 + output_asm_insn ("jsr\t%0", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2699 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2700 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2701 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2702 + /* Different page : need to emit far call thunk */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2703 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2704 + /* First output a call to the thunk for making far calls. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2705 + if (flag_pic) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2706 + output_asm_insn ("lbsr\t__far_call_handler", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2707 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2708 + output_asm_insn ("jsr\t__far_call_handler\t;old style", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2709 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2710 + /* Now output the name of the call site */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2711 + output_asm_insn ("\t.dw\t%C0", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2712 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2713 + /* Finally output the page number */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2714 + sprintf (page_data, "\t.db\t%s", far_functionp (operands[0])); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2715 + output_asm_insn (page_data, operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2716 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2717 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2718 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2719 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2720 +int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2721 +m6809_init_cumulative_args (CUMULATIVE_ARGS cum ATTRIBUTE_UNUSED, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2722 + tree fntype, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2723 + rtx libname ATTRIBUTE_UNUSED) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2724 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2725 + cum = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2726 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2727 + /* For far functions, the current implementation does not allow for |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2728 + * stack parameters. So note whenever the called function is far |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2729 + * and in a different page than the current one; such a function |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2730 + * should give an error if a stack parameter is generated. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2731 + if (fntype) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2732 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2733 + const char *called_page = far_function_type_p (fntype); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2734 + if (called_page && strcmp (called_page, far_code_page) && !TARGET_FAR_STACK_PARAM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2735 + cum |= CUM_STACK_INVALID; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2736 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2737 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2738 + if (fntype && TYPE_ARG_TYPES (fntype) != 0 && |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2739 + (TREE_VALUE (tree_last (TYPE_ARG_TYPES (fntype))) != void_type_node)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2740 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2741 + /* has variable arguments, cannot use registers */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2742 + cum |= (CUM_X_MASK | CUM_B_MASK | CUM_STACK_ONLY); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2743 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2744 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2745 + if (m6809_abi_version == M6809_ABI_VERSION_STACK) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2746 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2747 + /* cannot use registers ; only use the stack */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2748 + cum |= (CUM_STACK_ONLY | CUM_X_MASK | CUM_B_MASK); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2749 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2750 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2751 + return cum; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2752 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2753 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2754 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2755 +rtx |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2756 +m6809_function_arg_on_stack (CUMULATIVE_ARGS *cump) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2757 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2758 + if (*cump & CUM_STACK_INVALID) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2759 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2760 + *cump &= ~CUM_STACK_INVALID; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2761 + error ("far function needs stack, will not work"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2762 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2763 + return NULL_RTX; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2764 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2765 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2766 +void m6809_asm_trampoline_template(FILE *f) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2767 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2768 + fprintf(f, "ldy #0000\n"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2769 + fprintf(f, "jmp 0x0000\n"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2770 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2771 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2772 +/* |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2773 + * Trampoline output: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2774 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2775 + * ldu #&cxt 4 bytes --LDY- ?? ?? |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2776 + * jmp fnaddr 3 bytes JMP ?? ?? |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2777 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2778 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2779 +m6809_initialize_trampoline (rtx tramp, tree fndecl, rtx cxt) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2780 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2781 + rtx fnaddr = XEXP (DECL_RTL (fndecl), 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2782 + /* TODO - optimize by generating the entire trampoline code here, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2783 + * and removing the template altogether, since there are only two |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2784 + * bytes there that matter. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2785 + emit_move_insn (gen_rtx_MEM (HImode, plus_constant (tramp, 2)), cxt); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2786 + emit_move_insn (gen_rtx_MEM (HImode, plus_constant (tramp, 5)), fnaddr); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2787 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2788 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2789 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2790 +/** Echo the version of the compiler and the name of the source file |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2791 + * at the beginning of each assembler output file. asm_out_file |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2792 + * is a global FILE * pointing to the output stream. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2793 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2794 +m6809_asm_file_start (void) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2795 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2796 + const char *module_name; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2797 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2798 + fprintf (asm_out_file, "\n;;; gcc for m6809 : %s %s\n", |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2799 + __DATE__, __TIME__); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2800 + fprintf (asm_out_file, ";;; %s\n", version_string); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2801 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2802 + fprintf (asm_out_file, ";;; ABI version %d\n", m6809_abi_version); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2803 + fprintf (asm_out_file, ";;; %s\n", |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2804 + (TARGET_BYTE_INT ? "-mint8" : "-mint16")); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2805 + if (TARGET_EXPERIMENT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2806 + fprintf (asm_out_file, ";;; -mexperiment\n"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2807 + if (TARGET_WPC) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2808 + fprintf (asm_out_file, ";;; -mwpc\n"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2809 + if (TARGET_6309) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2810 + fprintf (asm_out_file, ";;; -m6309\n"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2811 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2812 + /* Print the name of the module, which is taken as the base name |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2813 + * of the input file. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2814 + * See the 'User-Defined Symbols' section of the assembler |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2815 + * documentation for the rules on valid symbols. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2816 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2817 + module_name = lbasename (main_input_filename); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2818 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2819 + fprintf (asm_out_file, "\t.module\t"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2820 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2821 + if (*module_name >= '0' && *module_name <= '9') |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2822 + fprintf (asm_out_file, "_"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2823 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2824 + while (*module_name) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2825 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2826 + if ((*module_name >= '0' && *module_name <= '9') |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2827 + || (*module_name >= 'A' && *module_name <= 'Z') |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2828 + || (*module_name >= 'a' && *module_name <= 'z') |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2829 + || *module_name == '$' |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2830 + || *module_name == '.' |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2831 + || *module_name == '_') |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2832 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2833 + fprintf (asm_out_file, "%c", *module_name); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2834 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2835 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2836 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2837 + fprintf (asm_out_file, "_"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2838 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2839 + module_name++; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2840 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2841 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2842 + fprintf (asm_out_file, "\n"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2843 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2844 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2845 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2846 +/** Returns true if prologue/epilogue code is required for the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2847 + * current function being compiled. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2848 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2849 + * This is just the inverse of whether the function is declared as |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2850 + * 'naked'. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2851 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2852 +int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2853 +prologue_epilogue_required (void) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2854 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2855 + return !m6809_current_function_has_type_attr_p ("naked") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2856 + && !m6809_current_function_has_type_attr_p ("noreturn"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2857 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2858 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2859 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2860 +/** Expand RTL for function entry */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2861 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2862 +emit_prologue_insns (void) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2863 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2864 + rtx insn; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2865 + unsigned int live_regs = m6809_get_live_regs (); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2866 + unsigned int frame_size = get_frame_size (); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2867 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2868 + /* Save all registers used, including the frame pointer */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2869 + if (live_regs && !m6809_current_function_has_type_attr_p ("interrupt")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2870 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2871 + insn = emit_insn ( |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2872 + gen_rtx_register_pushpop (UNSPEC_PUSH_RS, live_regs)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2873 + RTX_FRAME_RELATED_P (insn) = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2874 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2875 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2876 + /* Allocate space for local variables */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2877 + if (frame_size != 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2878 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2879 + insn = emit_insn (gen_rtx_stack_adjust (MINUS, frame_size)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2880 + RTX_FRAME_RELATED_P (insn) = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2881 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2882 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2883 + /* Set the frame pointer if it is needed */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2884 + if (frame_pointer_needed) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2885 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2886 + insn = emit_move_insn (hard_frame_pointer_rtx, stack_pointer_rtx); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2887 + RTX_FRAME_RELATED_P (insn) = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2888 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2889 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2890 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2891 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2892 +/** Expand RTL for function exit */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2893 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2894 +emit_epilogue_insns (bool sibcall_p) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2895 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2896 + unsigned int live_regs = m6809_get_live_regs (); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2897 + unsigned int frame_size = get_frame_size (); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2898 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2899 + if (frame_size != 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2900 + emit_insn (gen_rtx_stack_adjust (PLUS, frame_size)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2901 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2902 + if (sibcall_p) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2903 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2904 + if (live_regs) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2905 + emit_insn (gen_rtx_register_pushpop (UNSPEC_POP_RS, live_regs)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2906 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2907 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2908 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2909 + if (live_regs && !m6809_current_function_has_type_attr_p ("interrupt")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2910 + emit_insn ( |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2911 + gen_rtx_register_pushpop (UNSPEC_POP_RS, PC_REGBIT | live_regs)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2912 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2913 + if (m6809_current_function_has_type_attr_p ("interrupt")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2914 + emit_jump_insn (gen_return_rti ()); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2915 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2916 + emit_jump_insn (gen_return_rts ()); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2917 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2918 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2919 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2920 +#if 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2921 +/** Predefine some preprocessor names according to the currently |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2922 + * selected compiler options */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2923 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2924 +m6809_cpu_cpp_builtins (void) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2925 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2926 + if (TARGET_6309) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2927 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2928 + builtin_define_std ("__M6309__"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2929 + builtin_define_std ("__m6309__"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2930 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2931 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2932 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2933 + builtin_define_std ("__M6809__"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2934 + builtin_define_std ("__m6809__"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2935 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2936 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2937 + if (TARGET_BYTE_INT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2938 + builtin_define_std ("__int8__"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2939 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2940 + builtin_define_std ("__int16__"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2941 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2942 + switch (m6809_abi_version) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2943 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2944 + case M6809_ABI_VERSION_STACK: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2945 + builtin_define_std ("__regargs__"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2946 + builtin_define_std ("__ABI_STACK__"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2947 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2948 + case M6809_ABI_VERSION_REGS: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2949 + builtin_define_std ("__ABI_REGS__"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2950 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2951 + case M6809_ABI_VERSION_BX: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2952 + builtin_define_std ("__ABI_BX__"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2953 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2954 + default: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2955 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2956 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2957 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2958 + if (TARGET_WPC) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2959 + builtin_define_std ("__WPC__"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2960 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2961 + if (TARGET_DRET) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2962 + builtin_define_std ("__DRET__"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2963 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2964 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2965 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2966 +#define MAX_ASM_ASCII_STRING 48 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2967 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2968 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2969 +m6809_output_ascii (FILE *fp, const char *str, unsigned long size) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2970 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2971 + unsigned long i; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2972 + bool use_ascii = true; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2973 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2974 + /* If the size is too large, then break this up into multiple |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2975 + outputs. The assembler can only output roughly 48 bytes at a |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2976 + time. Note that if there are lots of escape sequences in |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2977 + the string, this may fail. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2978 + if (size > MAX_ASM_ASCII_STRING) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2979 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2980 + m6809_output_ascii (fp, str, MAX_ASM_ASCII_STRING); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2981 + m6809_output_ascii (fp, str + MAX_ASM_ASCII_STRING, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2982 + size - MAX_ASM_ASCII_STRING); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2983 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2984 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2985 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2986 + /* Check for 8-bit codes, which cannot be embedded in an .ascii */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2987 + for (i = 0; i < size; i++) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2988 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2989 + int c = str[i] & 0377; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2990 + if (c >= 0x80) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2991 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2992 + use_ascii = false; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2993 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2994 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2995 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2996 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2997 + if (use_ascii) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2998 + fprintf (fp, "\t.ascii \""); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
2999 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3000 + for (i = 0; i < size; i++) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3001 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3002 + int c = str[i] & 0377; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3003 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3004 + if (use_ascii) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3005 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3006 + /* Just output the plain character if it is printable, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3007 + otherwise output the escape code for the character. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3008 + The assembler recognizes the same C-style octal escape sequences, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3009 + except that it only supports 7-bit codes. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3010 + if (c >= ' ' && c < 0177 && c != '\\' && c != '"') |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3011 + putc (c, fp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3012 + else switch (c) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3013 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3014 + case '\n': |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3015 +#ifndef TARGET_COCO |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3016 + fputs ("\\n", fp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3017 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3018 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3019 + /* On the CoCo, we fallthrough and treat '\n' like '\r'. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3020 + case '\r': |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3021 + fputs ("\\r", fp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3022 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3023 + case '\t': |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3024 + fputs ("\\t", fp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3025 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3026 + case '\f': |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3027 + fputs ("\\f", fp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3028 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3029 + case 0: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3030 + fputs ("\\0", fp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3031 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3032 + default: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3033 + fprintf (fp, "\\%03o", c); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3034 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3035 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3036 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3037 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3038 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3039 + fprintf (fp, "\t.byte\t0x%02X\n", c); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3040 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3041 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3042 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3043 + if (use_ascii) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3044 + fprintf (fp, "\"\n"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3045 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3046 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3047 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3048 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3049 +m6809_output_quoted_string (FILE *asm_file, const char *string) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3050 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3051 + char c; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3052 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3053 + if (strlen (string) > MAX_ASM_ASCII_STRING) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3054 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3055 + /* The string length is too large. We'll have to truncate it. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3056 + This is only called from debugging functions, so it's usually |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3057 + not critical. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3058 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3059 + char truncated_string[MAX_ASM_ASCII_STRING+1]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3060 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3061 + /* Copy as many characters as we can. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3062 + strncpy (truncated_string, string, MAX_ASM_ASCII_STRING); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3063 + truncated_string[MAX_ASM_ASCII_STRING] = '\0'; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3064 + string = truncated_string; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3065 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3066 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3067 + /* Copied from toplev.c */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3068 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3069 + putc ('\"', asm_file); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3070 + while ((c = *string++) != 0) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3071 + if (ISPRINT (c)) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3072 + if (c == '\"' || c == '\\') |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3073 + putc ('\\', asm_file); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3074 + putc (c, asm_file); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3075 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3076 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3077 + fprintf (asm_file, "\\%03o", (unsigned char) c); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3078 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3079 + putc ('\"', asm_file); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3080 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3081 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3082 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3083 +/** Output the assembly code for a shift instruction where the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3084 + * shift count is not constant. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3085 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3086 +m6809_output_shift_insn (int rtx_code, rtx *operands) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3087 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3088 + struct shift_opcode *op; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3089 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3090 + if (GET_CODE (operands[2]) == CONST_INT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3091 + abort (); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3092 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3093 + if (optimize_size && GET_MODE (operands[0]) == HImode) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3094 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3095 + switch (rtx_code) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3096 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3097 + case ASHIFT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3098 + output_asm_insn ("jsr\t_ashlhi3", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3099 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3100 + case ASHIFTRT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3101 + output_asm_insn ("jsr\t_ashrhi3", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3102 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3103 + case LSHIFTRT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3104 + output_asm_insn ("jsr\t_lshrhi3", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3105 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3106 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3107 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3108 + else if (GET_MODE (operands[0]) == HImode) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3109 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3110 + switch (rtx_code) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3111 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3112 + case ASHIFT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3113 + m6809_gen_register_shift (operands, "aslb", "rola"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3114 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3115 + case ASHIFTRT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3116 + m6809_gen_register_shift (operands, "asra", "rorb"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3117 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3118 + case LSHIFTRT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3119 + m6809_gen_register_shift (operands, "lsra", "rorb"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3120 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3121 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3122 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3123 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3124 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3125 + switch (rtx_code) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3126 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3127 + case ASHIFT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3128 + m6809_gen_register_shift (operands, "aslb", NULL); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3129 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3130 + case ASHIFTRT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3131 + m6809_gen_register_shift (operands, "asrb", NULL); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3132 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3133 + case LSHIFTRT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3134 + m6809_gen_register_shift (operands, "lsrb", NULL); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3135 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3136 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3137 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3138 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3139 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3140 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3141 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3142 +m6809_emit_move_insn (rtx dst, rtx src) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3143 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3144 + emit_insn (gen_rtx_SET (VOIDmode, dst, src)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3145 + if (ACC_A_REG_P (dst)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3146 + emit_insn (gen_rtx_USE (VOIDmode, dst)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3147 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3148 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3149 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3150 +/** Split a complex shift instruction into multiple CPU |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3151 + * shift instructions. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3152 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3153 +m6809_split_shift (enum rtx_code code, rtx *operands) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3154 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3155 + enum machine_mode mode; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3156 + int count; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3157 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3158 + mode = GET_MODE (operands[0]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3159 + count = INTVAL (operands[2]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3160 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3161 + /* Handle a shift count outside the range of 0 .. N-1, where |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3162 + * N is the mode size in bits. We normalize the count, and |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3163 + * for negative counts we also invert the direction of the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3164 + * shift. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3165 + if ((count < 0) || (count >= 8 * GET_MODE_SIZE (mode))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3166 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3167 + if (count < 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3168 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3169 + count = -count; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3170 + code = (code == ASHIFT) ? ASHIFTRT : ASHIFT; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3171 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3172 + count %= (8 * GET_MODE_SIZE (mode)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3173 + m6809_emit_move_insn (operands[0], |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3174 + gen_rtx_fmt_ee (code, mode, operands[1], |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3175 + gen_rtx_CONST_INT (VOIDmode, count))); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3176 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3177 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3178 + /* Handle shift by zero explicitly as a no-op. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3179 + if (count == 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3180 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3181 + emit_insn (gen_nop ()); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3182 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3183 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3184 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3185 + /* Decompose the shift by a constant N > 8 into two |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3186 + * shifts, first by 8 and then by N-8. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3187 + * This "speeds up" the process for large shifts that would be |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3188 + * handled below, but allows for some optimization. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3189 + * In some cases shift by 8 can be implemented fast. If an |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3190 + * instruction to shift by 8 is defined, it will be used here; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3191 + * otherwise it will be further decomposed as below. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3192 + if (mode == HImode && count > 8) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3193 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3194 + rtx output = operands[0]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3195 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3196 + m6809_emit_move_insn (operands[0], |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3197 + gen_rtx_fmt_ee (code, mode, operands[1], |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3198 + gen_rtx_CONST_INT (VOIDmode, 8))); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3199 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3200 + /* Unsigned shifts always produce a zero in either the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3201 + * upper or lower half of the output; then, that part |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3202 + * does not need to be shifted anymore. We modify the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3203 + * output and the subsequent instructions to operate in |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3204 + * QImode only on the relevant part. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3205 + if (REG_P (output)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3206 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3207 + if (code == ASHIFT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3208 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3209 + output = gen_rtx_REG (QImode, HARD_A_REGNUM); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3210 + mode = QImode; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3211 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3212 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3213 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3214 + output = gen_rtx_REG (QImode, HARD_D_REGNUM); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3215 + mode = QImode; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3216 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3217 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3218 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3219 + m6809_emit_move_insn (output, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3220 + gen_rtx_fmt_ee (code, mode, copy_rtx (output), |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3221 + gen_rtx_CONST_INT (VOIDmode, count-8))); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3222 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3223 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3224 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3225 + /* Rewrite the unsigned shift of an 8-bit register by a large constant N |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3226 + * (near to the maximum of 8) as a rotate and mask. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3227 + if (mode == QImode && REG_P (operands[0]) && count >= ((code == ASHIFTRT) ? 7 : 6)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3228 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3229 + unsigned int mask; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3230 + unsigned int was_signed = (code == ASHIFTRT); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3231 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3232 + code = (code == ASHIFT) ? ROTATERT : ROTATE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3233 + if (code == ROTATE) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3234 + mask = (count == 6) ? 0x03 : 0x01; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3235 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3236 + mask = (count == 6) ? 0xC0 - 0x100 : 0x80 - 0x100; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3237 + count = 9 - count; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3238 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3239 + do { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3240 + m6809_emit_move_insn (operands[0], |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3241 + gen_rtx_fmt_ee (code, QImode, operands[1], const1_rtx)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3242 + } while (--count != 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3243 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3244 + m6809_emit_move_insn (operands[0], |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3245 + gen_rtx_fmt_ee (AND, QImode, operands[1], |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3246 + gen_rtx_CONST_INT (VOIDmode, mask))); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3247 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3248 + if (was_signed) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3249 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3250 + emit_insn (gen_negqi2 (operands[0], copy_rtx (operands[0]))); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3251 + if (ACC_A_REG_P (operands[0])) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3252 + emit_insn (gen_rtx_USE (VOIDmode, operands[0])); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3253 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3254 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3255 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3256 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3257 + /* Decompose the shift by any constant N > 1 into a sequence |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3258 + * of N shifts. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3259 + * This is done recursively, by creating a shift by 1 and a |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3260 + * shift by N-1, as long as N>1. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3261 + if (count > 1) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3262 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3263 + m6809_emit_move_insn (operands[0], |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3264 + gen_rtx_fmt_ee (code, mode, operands[1], const1_rtx)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3265 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3266 + m6809_emit_move_insn (operands[0], |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3267 + gen_rtx_fmt_ee (code, mode, operands[1], |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3268 + gen_rtx_CONST_INT (VOIDmode, count-1))); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3269 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3270 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3271 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3272 + /* Decompose the single shift of a 16-bit quantity into two |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3273 + * CPU instructions, one for each 8-bit half. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3274 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3275 + if (mode == HImode && count == 1) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3276 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3277 + rtx first, second; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3278 + enum rtx_code rotate_code; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3279 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3280 + rotate_code = (code == ASHIFT) ? ROTATE : ROTATERT; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3281 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3282 + /* Split the operand into two 8-bit entities. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3283 + * FIRST is the one that will get shifted via a regular CPU |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3284 + * instruction. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3285 + * SECOND is the one that will have the result of the first shift |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3286 + * rotated in. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3287 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3288 + * We initialize first and second as if we are doing a left shift, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3289 + * then swap the operands if it's a right shift. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3290 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3291 + if (REG_P (operands[0])) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3292 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3293 + first = gen_rtx_REG (QImode, HARD_D_REGNUM); /* HARD_B_REGNUM? */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3294 + second = gen_rtx_REG (QImode, HARD_A_REGNUM); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3295 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3296 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3297 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3298 + first = adjust_address (operands[0], QImode, 1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3299 + second = adjust_address (operands[0], QImode, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3300 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3301 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3302 + if (rotate_code == ROTATERT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3303 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3304 + rtx tmp; tmp = first; first = second; second = tmp; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3305 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3306 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3307 + /* Decompose into a shift and a rotate instruction. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3308 + m6809_emit_move_insn (first, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3309 + gen_rtx_fmt_ee (code, QImode, copy_rtx (first), const1_rtx)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3310 + m6809_emit_move_insn (second, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3311 + gen_rtx_fmt_ee (rotate_code, QImode, copy_rtx (second), const1_rtx)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3312 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3313 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3314 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3315 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3316 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3317 +/** Adjust register usage based on compile-time flags. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3318 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3319 +m6809_conditional_register_usage (void) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3320 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3321 + unsigned int soft_regno; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3322 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3323 +#ifdef CONFIG_SOFT_REGS_ALWAYS |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3324 + m6809_soft_regs = CONFIG_SOFT_REGS_ALWAYS; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3325 +#else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3326 + if (!m6809_soft_reg_count) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3327 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3328 + m6809_soft_regs = atoi (m6809_soft_reg_count); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3329 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3330 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3331 + if (m6809_soft_regs == 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3332 + return; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3333 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3334 + if (m6809_soft_regs > NUM_M_REGS) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3335 + m6809_soft_regs = NUM_M_REGS; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3336 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3337 + /* Registers are marked FIXED by default. Free up if |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3338 + the user wishes. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3339 + for (soft_regno = 1; soft_regno < m6809_soft_regs; soft_regno++) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3340 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3341 + fixed_regs[SOFT_M0_REGNUM + soft_regno] = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3342 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3343 + /* Mark the softregs as call-clobbered, so that they need |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3344 + * not be saved/restored on function entry/exit. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3345 + call_used_regs[SOFT_M0_REGNUM + soft_regno] = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3346 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3347 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3348 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3349 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3350 +/** Return a RTX representing how to return a value from a function. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3351 + VALTYPE gives the type of the value, FUNC identifies the function |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3352 + itself. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3353 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3354 + In general, we only care about the width of the result. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3355 +rtx |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3356 +m6809_function_value (const tree valtype, const tree func ATTRIBUTE_UNUSED) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3357 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3358 + unsigned int regno; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3359 + enum machine_mode mode; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3360 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3361 + /* Get the mode (i.e. width) of the result. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3362 + mode = TYPE_MODE (valtype); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3363 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3364 + if (lookup_attribute ("boolean", TYPE_ATTRIBUTES (valtype))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3365 + regno = HARD_Z_REGNUM; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3366 + else if (mode == QImode || (TARGET_DRET && mode == HImode)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3367 + regno = HARD_D_REGNUM; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3368 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3369 + regno = HARD_X_REGNUM; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3370 + return gen_rtx_REG (mode, regno); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3371 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3372 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3373 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3374 +/** Return 1 if REGNO is possibly needed to return the result |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3375 +of a function, 0 otherwise. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3376 +int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3377 +m6809_function_value_regno_p (unsigned int regno) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3378 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3379 + if (regno == HARD_Z_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3380 + return 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3381 + else if ((TARGET_BYTE_INT || TARGET_DRET) && regno == HARD_D_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3382 + return 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3383 + else if (!TARGET_DRET && regno == HARD_X_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3384 + return 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3385 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3386 + return 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3387 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3388 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3389 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3390 +#ifdef TRACE_PEEPHOLE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3391 +int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3392 +m6809_match_peephole2 (unsigned int peephole_id, unsigned int stage) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3393 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3394 + if (stage == PEEP_END) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3395 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3396 + printf ("%s: peephole %d pattern and predicate matched\n", |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3397 + main_input_filename, peephole_id); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3398 + fflush (stdout); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3399 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3400 + else if (stage == PEEP_COND) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3401 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3402 + printf ("%s: peephole %d? at least pattern matched\n", |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3403 + main_input_filename, peephole_id); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3404 + fflush (stdout); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3405 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3406 + return 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3407 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3408 +#else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3409 +int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3410 +m6809_match_peephole2 (unsigned int peephole_id ATTRIBUTE_UNUSED, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3411 + unsigned int stage ATTRIBUTE_UNUSED) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3412 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3413 + return 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3414 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3415 +#endif /* TRACE_PEEPHOLE */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3416 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3417 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3418 +/** Return 1 if it is OK to store a value of MODE in REGNO. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3419 +int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3420 +m6809_hard_regno_mode_ok (unsigned int regno, enum machine_mode mode) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3421 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3422 + /* Soft registers, as they are just memory, can really hold |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3423 + values of any type. However we restrict them to values of |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3424 + size HImode or QImode to prevent exhausting them for larger |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3425 + values. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3426 + Word values cannot be placed into the first soft register, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3427 + as it is the low byte that is being placed there, which |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3428 + corrupts the (non-soft) register before it. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3429 + if (M_REGNO_P (regno)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3430 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3431 + switch (GET_MODE_SIZE (mode)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3432 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3433 + case 1: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3434 + return 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3435 + case 2: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3436 + return regno != SOFT_M0_REGNUM; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3437 + default: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3438 + return 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3439 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3440 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3441 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3442 + /* VOIDmode can be stored anywhere */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3443 + else if (mode == VOIDmode) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3444 + return 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3445 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3446 + /* Zero is a reserved register, but problems occur if we don't |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3447 + say yes here??? */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3448 + else if (regno == 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3449 + return 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3450 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3451 + /* For other registers, return true only if the requested size |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3452 + exactly matches the hardware size. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3453 + else if ((G_REGNO_P (regno)) && (GET_MODE_SIZE (mode) == 2)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3454 + return 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3455 + else if ((BYTE_REGNO_P (regno)) && (GET_MODE_SIZE (mode) == 1)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3456 + return 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3457 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3458 + return 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3459 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3460 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3461 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3462 +/* exp is the call expression. DECL is the called function, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3463 + * or NULL for an indirect call */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3464 +bool |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3465 +m6809_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3466 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3467 + tree type, arg; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3468 + const char *name; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3469 + bool result = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3470 + int argcount = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3471 + int step = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3472 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3473 + /* If there is no DECL, it is an indirect call. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3474 + * Never optimize this??? */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3475 + if (decl == NULL) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3476 + goto done; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3477 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3478 + /* Never allow an interrupt handler to be optimized this way. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3479 + if (m6809_function_has_type_attr_p (decl, "interrupt")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3480 + goto done; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3481 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3482 + /* Skip sibcall if the type can't be found for |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3483 + * some reason */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3484 + step++; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3485 + name = IDENTIFIER_POINTER (DECL_NAME (decl)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3486 + type = TREE_TYPE (decl); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3487 + if (type == NULL) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3488 + goto done; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3489 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3490 + /* Skip sibcall if the target is a far function */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3491 + step++; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3492 + if (far_function_type_p (type) != NULL) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3493 + goto done; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3494 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3495 + /* Skip sibcall if the called function's arguments are |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3496 + * variable */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3497 + step++; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3498 + if (TYPE_ARG_TYPES (type) == NULL) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3499 + goto done; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3500 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3501 + /* Allow sibcalls in other cases. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3502 + result = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3503 +done: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3504 + /* printf ("%s ok for sibcall? %s, step %d, args %d\n", name, result ? "yes" : "no", step, argcount); */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3505 + return result; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3506 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3507 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3508 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3509 +/** Emit code for the 'casesi' pattern. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3510 + * This pattern is only used in 8-bit mode, and can be disabled |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3511 + * with -mold-case there as well. The rationale for this is to |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3512 + * do a better job than the simpler but well-tested 'tablejump' |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3513 + * method. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3514 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3515 + * For small jumptables, where the switch expression is an |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3516 + * 8-bit value, the lookup can be done more efficiently |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3517 + * using the "B,X" style index mode. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3518 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3519 +m6809_do_casesi (rtx index, rtx lower_bound, rtx range, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3520 + rtx table_label, rtx default_label) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3521 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3522 + enum machine_mode mode; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3523 + rtx scaled; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3524 + rtx table_in_reg; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3525 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3526 + /* expr.c has to be patched so that it does not promote |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3527 + * the expression to SImode, but rather to HImode. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3528 + * Fail now if that isn't the case. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3529 + if (GET_MODE_SIZE (GET_MODE (index)) > GET_MODE_SIZE (HImode)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3530 + error ("try_casesi promotion bug"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3531 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3532 + /* Determine whether or not we are going to work primarily in |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3533 + * QImode or HImode. This depends on the size of the index |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3534 + * into the lookup table. QImode can only be used when the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3535 + * index is less than 0x40, since it will be doubled but |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3536 + * must remain unsigned. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3537 + if ((GET_CODE (range) == CONST_INT) && (INTVAL (range) < 0x40)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3538 + mode = QImode; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3539 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3540 + mode = HImode; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3541 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3542 + /* Convert to QImode if necessary */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3543 + if (mode == QImode) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3544 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3545 + index = gen_lowpart_general (mode, index); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3546 + lower_bound = gen_lowpart_general (mode, lower_bound); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3547 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3548 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3549 + /* Translate from case value to table index by subtraction */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3550 + if (lower_bound != const0_rtx) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3551 + index = expand_binop (mode, sub_optab, index, lower_bound, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3552 + NULL_RTX, 0, OPTAB_LIB_WIDEN); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3553 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3554 + /* Emit compare-and-jump to test for index out-of-range */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3555 + emit_cmp_and_jump_insns (index, range, GTU, NULL_RTX, mode, 1, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3556 + default_label); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3557 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3558 + /* Put the table address is in a register */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3559 + table_in_reg = gen_reg_rtx (Pmode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3560 + emit_move_insn (table_in_reg, gen_rtx_LABEL_REF (Pmode, table_label)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3561 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3562 + /* Emit table lookup and jump */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3563 + if (mode == QImode) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3564 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3565 + /* Scale the index */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3566 + scaled = gen_reg_rtx (QImode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3567 + emit_insn (gen_ashlqi3 (scaled, index, const1_rtx)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3568 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3569 + /* Emit the jump */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3570 + emit_jump_insn (gen_tablejump_short_offset (scaled, table_in_reg)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3571 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3572 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3573 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3574 + /* Scale the index */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3575 + emit_insn (gen_ashlhi3 (index, index, const1_rtx)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3576 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3577 + /* Emit the jump */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3578 + emit_jump_insn (gen_tablejump_long_offset (index, table_in_reg)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3579 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3580 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3581 + /* Copied from expr.c */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3582 + if (!CASE_VECTOR_PC_RELATIVE && !flag_pic) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3583 + emit_barrier (); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3584 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3585 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3586 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3587 +/** Output the assembly code for a 32-bit add/subtract. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3588 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3589 +m6809_output_addsi3 (int rtx_code, rtx *operands) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3590 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3591 + rtx xoperands[8]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3592 + rtx dst = operands[0]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3593 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3594 + /* Prepare the operands by splitting each SImode into two HImodes |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3595 + that can be operated independently. The high word of operand 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3596 + is further divided into two QImode components for use with 'adc' |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3597 + style instructions. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3598 + xoperands[7] = operands[3]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3599 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3600 + xoperands[0] = adjust_address (dst, HImode, 2); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3601 + xoperands[3] = adjust_address (dst, HImode, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3602 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3603 +#if 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3604 + xoperands[2] = adjust_address (operands[1], HImode, 2); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3605 + xoperands[6] = adjust_address (operands[1], HImode, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3606 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3607 + /* Operand 2 may be a MEM or a CONST_INT */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3608 + if (GET_CODE (operands[2]) == CONST_INT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3609 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3610 + xoperands[1] = gen_int_mode (INTVAL (operands[2]) & 0xFFFF, HImode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3611 + xoperands[4] = gen_int_mode ((INTVAL (operands[2]) >> 24) & 0xFF, QImode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3612 + xoperands[5] = gen_int_mode ((INTVAL (operands[2]) >> 16) & 0xFF, QImode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3613 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3614 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3615 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3616 + xoperands[1] = adjust_address (operands[2], HImode, 2); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3617 + xoperands[4] = adjust_address (operands[2], QImode, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3618 + xoperands[5] = adjust_address (operands[2], QImode, 1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3619 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3620 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3621 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3622 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3623 +#if 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3624 + xoperands[1] = adjust_address (operands[1], HImode, 2); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3625 + xoperands[4] = adjust_address (operands[1], QImode, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3626 + xoperands[5] = adjust_address (operands[1], QImode, 1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3627 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3628 + /* Operand 2 may be a MEM or a CONST_INT */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3629 + if (GET_CODE (operands[2]) == CONST_INT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3630 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3631 + xoperands[2] = gen_int_mode ((INTVAL (operands[2])) & 0xFFFF, HImode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3632 + xoperands[6] = gen_int_mode ((INTVAL (operands[2]) >> 16) & 0xFFFF, HImode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3633 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3634 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3635 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3636 + xoperands[2] = adjust_address (operands[2], HImode, 2); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3637 + xoperands[6] = adjust_address (operands[2], HImode, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3638 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3639 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3640 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3641 + /* Output the assembly code. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3642 + if (rtx_code == PLUS) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3643 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3644 + output_asm_insn ("ld%7\t%2", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3645 + output_asm_insn ("add%7\t%1", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3646 + output_asm_insn ("st%7\t%0", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3647 + output_asm_insn ("ld%7\t%6", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3648 + output_asm_insn ("adcb\t%5", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3649 + output_asm_insn ("adca\t%4", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3650 + output_asm_insn ("st%7\t%3", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3651 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3652 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3653 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3654 + output_asm_insn ("ld%7\t%2", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3655 + output_asm_insn ("sub%7\t%1", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3656 + output_asm_insn ("st%7\t%0", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3657 + output_asm_insn ("ld%7\t%6", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3658 + output_asm_insn ("sbcb\t%5", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3659 + output_asm_insn ("sbca\t%4", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3660 + output_asm_insn ("st%7\t%3", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3661 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3662 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3663 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3664 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3665 +#if 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3666 +/** Output the assembly code for a 32-bit shift. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3667 +Operands 0 and 1 must be the same rtx, forced by a matching |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3668 +constraint. Operand 2 must be a CONST_INT. Operand 3 is |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3669 +"d" in case a temporary reg is needed. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3670 +void |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3671 +m6809_output_shiftsi3 (int rtx_code, rtx *operands) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3672 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3673 + unsigned int count = INTVAL (operands[2]) % 32; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3674 + unsigned int size = 4; /* sizeof (SImode) */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3675 + int s; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3676 + rtx xoperands[4]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3677 + int op; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3678 + int start, end, step; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3679 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3680 + /* Initialize */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3681 + if (rtx_code == ASHIFT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3682 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3683 + start = size-1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3684 + end = -1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3685 + step = -1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3686 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3687 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3688 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3689 + start = 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3690 + end = size; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3691 + step = 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3692 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3693 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3694 + xoperands[2] = operands[2]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3695 + xoperands[3] = operands[3]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3696 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3697 + if (count <= 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3698 + abort (); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3699 + if (rtx_code == ROTATE || rtx_code == ROTATERT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3700 + abort (); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3701 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3702 + /* Extract bit shifts over 16 bits by HImode moves. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3703 + if (count >= 16) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3704 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3705 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3706 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3707 + /* Extract bit shifts over 8 bits by QImode moves. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3708 + if (count >= 8) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3709 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3710 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3711 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3712 + /* Iterate over the number of bits to be shifted. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3713 + while (count > 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3714 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3715 + /* Each bit to be shifted requires 1 proper bit shift |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3716 + and 3 rotates. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3717 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3718 + /* First, do the arithmetic/logical shift. Left shifts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3719 + start from the LSB; right shifts start from the MSB. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3720 + xoperands[0] = adjust_address (operands[0], QImode, start); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3721 + switch (rtx_code) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3722 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3723 + case ASHIFT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3724 + output_asm_insn ("asl\t%0", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3725 + start--; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3726 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3727 + case ASHIFTRT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3728 + output_asm_insn ("asr\t%0", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3729 + start++; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3730 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3731 + case LSHIFTRT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3732 + output_asm_insn ("lsr\t%0", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3733 + start++; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3734 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3735 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3736 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3737 + /* Next, rotate the other bytes */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3738 + for (s = start; s != end; s += step) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3739 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3740 + xoperands[0] = adjust_address (operands[0], QImode, s); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3741 + switch (rtx_code) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3742 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3743 + case ASHIFT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3744 + output_asm_insn ("rol\t%0", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3745 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3746 + case ASHIFTRT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3747 + case LSHIFTRT: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3748 + output_asm_insn ("ror\t%0", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3749 + break; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3750 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3751 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3752 + count--; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3753 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3754 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3755 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3756 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3757 +int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3758 +power_of_two_p (unsigned int n) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3759 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3760 + return (n & (n-1)) == 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3761 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3762 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3763 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3764 +int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3765 +m6809_can_eliminate (int from, int to) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3766 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3767 + if (from == ARG_POINTER_REGNUM && to == STACK_POINTER_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3768 + return !frame_pointer_needed; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3769 + return 1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3770 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3771 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3772 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3773 +int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3774 +m6809_initial_elimination_offset (int from, int to) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3775 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3776 + switch (from) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3777 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3778 + case ARG_POINTER_REGNUM: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3779 + return get_frame_size () + m6809_get_regs_size (m6809_get_live_regs ()); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3780 + case FRAME_POINTER_REGNUM: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3781 + return get_frame_size (); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3782 + default: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3783 + gcc_unreachable (); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3784 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3785 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3786 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3787 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3788 +bool |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3789 +m6809_frame_pointer_required (void) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3790 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3791 + return false; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3792 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3793 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3794 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3795 +/* Defines the target-specific hooks structure. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3796 +struct gcc_target targetm = TARGET_INITIALIZER; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3797 diff -urN gcc-4.6.4-clean/gcc/config/m6809/m6809.h gcc-4.6.4/gcc/config/m6809/m6809.h |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3798 --- gcc-4.6.4-clean/gcc/config/m6809/m6809.h 1969-12-31 17:00:00.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3799 +++ gcc-4.6.4/gcc/config/m6809/m6809.h 2015-07-20 21:56:53.518727644 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3800 @@ -0,0 +1,1352 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3801 +/* Definitions of target machine for GNU compiler. MC6809 version. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3802 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3803 + MC6809 Version by Tom Jones (jones@sal.wisc.edu) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3804 + Space Astronomy Laboratory |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3805 + University of Wisconsin at Madison |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3806 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3807 + minor changes to adapt it to gcc-2.5.8 by Matthias Doerfel |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3808 + ( msdoerfe@informatik.uni-erlangen.de ) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3809 + also added #pragma interrupt (inspired by gcc-6811) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3810 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3811 + minor changes to adapt it to gcc-2.8.0 by Eric Botcazou |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3812 + (ebotcazou@multimania.com) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3813 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3814 + minor changes to adapt it to egcs-1.1.2 by Eric Botcazou |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3815 + (ebotcazou@multimania.com) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3816 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3817 + minor changes to adapt it to gcc-2.95.3 by Eric Botcazou |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3818 + (ebotcazou@multimania.com) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3819 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3820 + changes for gcc-3.1.1 by ??? |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3821 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3822 + further changes for gcc-3.1.1 and beyond by Brian Dominy |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3823 + (brian@oddchange.com) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3824 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3825 + even more changes for gcc-4.6.1 by William Astle (lost@l-w.ca) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3826 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3827 +This file is part of GCC. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3828 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3829 +GCC is free software; you can redistribute it and/or modify |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3830 +it under the terms of the GNU General Public License as published by |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3831 +the Free Software Foundation; either version 3, or (at your option) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3832 +any later version. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3833 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3834 +GCC is distributed in the hope that it will be useful, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3835 +but WITHOUT ANY WARRANTY; without even the implied warranty of |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3836 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3837 +GNU General Public License for more details. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3838 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3839 +You should have received a copy of the GNU General Public License |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3840 +along with GCC; see the file COPYING3. If not see |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3841 +<http://www.gnu.org/licenses/>. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3842 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3843 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3844 +/* Helper macros for creating strings with macros */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3845 +#define C_STRING(x) C_STR(x) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3846 +#define C_STR(x) #x |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3847 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3848 +/* Certain parts of GCC include host-side includes, which is bad. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3849 + * Some things that get pulled in need to be undone. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3850 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3851 +#undef HAVE_GAS_HIDDEN |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3852 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3853 +/* Names to predefine in the preprocessor for this target machine. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3854 +/*#define TARGET_CPU_CPP_BUILTINS() m6809_cpu_cpp_builtins () */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3855 +#define TARGET_CPU_CPP_BUILTINS() do \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3856 + { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3857 + if (TARGET_6309) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3858 + { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3859 + builtin_define_std ("__M6309__"); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3860 + builtin_define_std ("__m6309__"); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3861 + } \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3862 + else \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3863 + { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3864 + builtin_define_std ("__M6809__"); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3865 + builtin_define_std ("__m6809__"); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3866 + } \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3867 + \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3868 + if (TARGET_BYTE_INT) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3869 + builtin_define_std ("__int8__"); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3870 + else \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3871 + builtin_define_std ("__int16__"); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3872 + \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3873 + switch (m6809_abi_version) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3874 + { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3875 + case M6809_ABI_VERSION_STACK: \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3876 + builtin_define_std ("__regargs__"); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3877 + builtin_define_std ("__ABI_STACK__"); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3878 + break; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3879 + case M6809_ABI_VERSION_REGS: \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3880 + builtin_define_std ("__ABI_REGS__"); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3881 + break; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3882 + case M6809_ABI_VERSION_BX: \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3883 + builtin_define_std ("__ABI_BX__"); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3884 + break; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3885 + default: \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3886 + break; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3887 + } \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3888 + \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3889 + if (TARGET_WPC) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3890 + builtin_define_std ("__WPC__"); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3891 + \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3892 + if (TARGET_DRET) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3893 + builtin_define_std ("__DRET__"); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3894 + } while (0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3895 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3896 +/* As an embedded target, we have no libc. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3897 +#ifndef inhibit_libc |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3898 +#define inhibit_libc |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3899 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3900 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3901 +/* Print subsidiary information on the compiler version in use. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3902 +#define TARGET_VERSION fprintf (stderr, " (MC6809)"); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3903 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3904 +/* Run-time compilation parameters selecting different hardware subsets. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3905 +/*extern int target_flags; */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3906 +extern short *reg_renumber; /* def in local_alloc.c */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3907 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3908 +/* Runtime current values of section names */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3909 +extern int section_changed; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3910 +extern char code_section_op[], data_section_op[], bss_section_op[]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3911 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3912 +#define WARNING_OPT 0, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3913 +/*extern const char *m6809_abi_version_ptr; */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3914 +extern unsigned int m6809_soft_regs; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3915 +extern unsigned int m6809_abi_version; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3916 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3917 +/* ABI versions */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3918 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3919 +#define M6809_ABI_VERSION_STACK 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3920 +#define M6809_ABI_VERSION_REGS 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3921 +#define M6809_ABI_VERSION_BX 2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3922 +#define M6809_ABI_VERSION_LATEST (M6809_ABI_VERSION_BX) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3923 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3924 +/* Allow $ in identifiers */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3925 +#define DOLLARS_IN_IDENTIFIERS 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3926 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3927 +/*-------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3928 + Target machine storage layout |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3929 +--------------------------------------------------------------*/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3930 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3931 +/* Define this if most significant bit is lowest numbered |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3932 + in instructions that operate on numbered bit-fields. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3933 +#define BITS_BIG_ENDIAN 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3934 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3935 +/* Define to 1 if most significant byte of a word is the lowest numbered. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3936 +#define BYTES_BIG_ENDIAN 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3937 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3938 +/* Define to 1 if most significant word of a multiword value is the lowest numbered. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3939 +#define WORDS_BIG_ENDIAN 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3940 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3941 +/* Number of bits in an addressible storage unit */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3942 +#define BITS_PER_UNIT 8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3943 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3944 +/* Width in bits of a "word", or the contents of a machine register. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3945 + * Although the 6809 has a few byte registers, define this to 16-bits |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3946 + * since this is the natural size of most registers. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3947 +#define BITS_PER_WORD 16 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3948 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3949 +/* Width of a word, in units (bytes). */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3950 +#define UNITS_PER_WORD (BITS_PER_WORD/8) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3951 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3952 +/* Width in bits of a pointer. See also the macro `Pmode' defined below. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3953 +#define POINTER_SIZE 16 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3954 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3955 +/* Allocation boundary (bits) for storing pointers in memory. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3956 +#define POINTER_BOUNDARY 8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3957 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3958 +/* Allocation boundary (bits) for storing arguments in argument list. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3959 +/* PARM_BOUNDARY is divided by BITS_PER_WORD in expr.c -- tej */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3960 +#define PARM_BOUNDARY 8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3961 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3962 +/* Boundary (bits) on which stack pointer should be aligned. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3963 +#define STACK_BOUNDARY 8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3964 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3965 +/* Allocation boundary (bits) for the code of a function. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3966 +#define FUNCTION_BOUNDARY 8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3967 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3968 +/* Alignment of field after `int : 0' in a structure. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3969 +#define EMPTY_FIELD_BOUNDARY 8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3970 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3971 +/* Every structure's size must be a multiple of this. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3972 +#define STRUCTURE_SIZE_BOUNDARY 8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3973 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3974 +/* Largest mode size to use when putting an object, including |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3975 + * a structure, into a register. By limiting this to 16, no |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3976 + * 32-bit objects will ever be allocated to a pair of hard |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3977 + * registers. This is a good thing, since there aren't that |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3978 + * many of them. 32-bit objects are only needed for floats |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3979 + * and "long long"s. Larger values have been tried and did not |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3980 + * work. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3981 +#define MAX_FIXED_MODE_SIZE 16 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3982 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3983 +/* No data type wants to be aligned rounder than this. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3984 +#define BIGGEST_ALIGNMENT 8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3985 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3986 +/* Define this if move instructions will actually fail to work |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3987 + when given unaligned data. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3988 +#define STRICT_ALIGNMENT 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3989 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3990 +/*-------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3991 + Standard register usage. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3992 +--------------------------------------------------------------*/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3993 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3994 +/* Register values as bitmasks. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3995 + * TODO : merge D_REGBIT and B_REGBIT, and treat this as the same |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3996 + * register. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3997 +#define RSVD1_REGBIT (1 << HARD_RSVD1_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3998 +#define D_REGBIT (1 << HARD_D_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
3999 +#define X_REGBIT (1 << HARD_X_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4000 +#define Y_REGBIT (1 << HARD_Y_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4001 +#define U_REGBIT (1 << HARD_U_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4002 +#define S_REGBIT (1 << HARD_S_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4003 +#define PC_REGBIT (1 << HARD_PC_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4004 +#define Z_REGBIT (1 << HARD_Z_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4005 +#define A_REGBIT (1 << HARD_A_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4006 +#define B_REGBIT (1 << HARD_B_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4007 +#define CC_REGBIT (1 << HARD_CC_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4008 +#define DP_REGBIT (1 << HARD_DP_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4009 +#define SOFT_FP_REGBIT (1 << SOFT_FP_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4010 +#define SOFT_AP_REGBIT (1 << SOFT_AP_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4011 +#define M_REGBIT(n) (1 << (SOFT_M0_REGNUM + n)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4012 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4013 +/* Macros for dealing with set of registers. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4014 + * A register set is just a bitwise-OR of all the register |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4015 + * bitmask values. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4016 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4017 +/* Which registers can hold 8-bits */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4018 +#define BYTE_REGSET \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4019 + (Z_REGBIT | A_REGBIT | D_REGBIT | CC_REGBIT | DP_REGBIT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4020 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4021 +/* Which registers can hold 16-bits. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4022 + * Note: D_REGBIT is defined as both an 8-bit and 16-bit register */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4023 +#define WORD_REGSET \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4024 + (D_REGBIT | X_REGBIT | Y_REGBIT | U_REGBIT | S_REGBIT | PC_REGBIT | SOFT_FP_REGBIT | SOFT_AP_REGBIT | RSVD1_REGBIT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4025 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4026 +/* Returns nonzero if a given REGNO is in the REGSET. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4027 +#define REGSET_CONTAINS_P(regno, regset) (((1 << (regno)) & (regset)) != 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4028 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4029 +/* Defines related to the number of soft registers supported. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4030 + * The actual number used may be less depending on -msoft-reg-count. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4031 + * If you change one of these, you should change them all. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4032 +#define NUM_M_REGS 8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4033 +#define M_REGS_FIXED 1, 1, 1, 1, 1, 1, 1, 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4034 +#define M_REGS_CALL_USED 1, 1, 1, 1, 1, 1, 1, 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4035 +#define HARD_M_REGNUMS \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4036 + SOFT_M0_REGNUM+0, SOFT_M0_REGNUM+1, SOFT_M0_REGNUM+2, SOFT_M0_REGNUM+3, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4037 + SOFT_M0_REGNUM+4, SOFT_M0_REGNUM+5, SOFT_M0_REGNUM+6, SOFT_M0_REGNUM+7 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4038 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4039 +#define SOFT_M_REGBITS (((1UL << NUM_M_REGS) - 1) << (SOFT_M0_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4040 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4041 +/* Number of actual hardware registers. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4042 + The hardware registers are assigned numbers for the compiler |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4043 + from 0 to just below FIRST_PSEUDO_REGISTER. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4044 + All registers that the compiler knows about must be given numbers, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4045 + even those that are not normally considered general registers. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4046 + Make sure the constant below matches the value of SOFT_M0_REGNUM; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4047 + for some reason, GCC won't compile if that name is used here directly. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4048 +#ifdef SOFT_M0_REGNUM |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4049 +#if (SOFT_M0_REGNUM != 14) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4050 +#error "bad register numbering" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4051 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4052 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4053 +#define FIRST_PSEUDO_REGISTER (14 + NUM_M_REGS) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4054 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4055 +/* 1 for registers that have pervasive standard uses |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4056 + and are not available for the register allocator. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4057 + The psuedoregisters (M_REGS) are declared fixed here, but |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4058 + will be unfixed if -msoft-reg-count is seen later. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4059 +#define FIXED_REGISTERS \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4060 + {1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, M_REGS_FIXED, } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4061 + /* -, X, Y, U, S, PC,D, Z, A, B, C, DP,FP,AP,M... */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4062 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4063 +/* 1 for registers not available across function calls. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4064 + These must include the FIXED_REGISTERS and also any |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4065 + registers that can be used without being saved. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4066 + The latter must include the registers where values are returned |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4067 + and the register where structure-value addresses are passed. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4068 + Aside from that, you can include as many other registers as you like. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4069 +#define CALL_USED_REGISTERS \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4070 + {1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, M_REGS_CALL_USED, } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4071 + /* -, X, Y, U, S, PC,D, Z, A, B, C, DP,FP,AP,M... */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4072 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4073 +/* Return number of consecutive hard regs needed starting at reg REGNO |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4074 + to hold something of mode MODE. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4075 + For the 6809, we distinguish between word-length and byte-length |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4076 + registers. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4077 +#define HARD_REGNO_NREGS(REGNO, MODE) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4078 + (REGSET_CONTAINS_P (REGNO, WORD_REGSET) ? \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4079 + ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4080 + (GET_MODE_SIZE (MODE))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4081 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4082 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4083 +/* Value is 1 if hard register REGNO can hold a value |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4084 +of machine-mode MODE. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4085 +#define HARD_REGNO_MODE_OK(REGNO, MODE) m6809_hard_regno_mode_ok (REGNO, MODE) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4086 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4087 +/* Value is 1 if it is a good idea to tie two pseudo registers |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4088 + when one has mode MODE1 and one has mode MODE2. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4089 + If HARD_REGNO_MODE_OK could produce different values for MODE1 and MODE2, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4090 + for any hard reg, then this must be 0 for correct output. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4091 +#define MODES_TIEABLE_P(MODE1, MODE2) 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4092 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4093 +/* Specify the registers used for certain standard purposes. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4094 + The values of these macros are register numbers. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4095 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4096 +/* program counter if referenced as a register */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4097 +#define PC_REGNUM HARD_PC_REGNUM |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4098 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4099 +/* Register to use for pushing function arguments. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4100 +#define STACK_POINTER_REGNUM HARD_S_REGNUM |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4101 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4102 +/* Base register for access to local variables of the function. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4103 + * Before reload, FRAME_POINTER_REGNUM will be used. Later, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4104 + * the elimination pass will convert these to STACK_POINTER_REGNUM |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4105 + * if possible, or else HARD_FRAME_POINTER_REGNUM. The idea is to |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4106 + * avoid tying up a hard register (U) for the frame pointer if |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4107 + * it can be eliminated entirely, making it available for use as |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4108 + * a general register. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4109 +#define FRAME_POINTER_REGNUM SOFT_FP_REGNUM |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4110 +#define HARD_FRAME_POINTER_REGNUM HARD_U_REGNUM |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4111 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4112 +/* Define a table of possible eliminations. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4113 + * The idea is to try to avoid using hard registers for the argument |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4114 + * and frame pointers if they can be derived from the stack pointer |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4115 + * instead, which already has a hard register reserved for it. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4116 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4117 + * The order of entries in this table will try to convert |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4118 + * ARG_POINTER_REGNUM and FRAME_POINTER_REGNUM into stack pointer |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4119 + * references first, but if that fails, they will be converted to use |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4120 + * HARD_FRAME_POINTER_REGNUM. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4121 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4122 +#define ELIMINABLE_REGS \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4123 +{{ ARG_POINTER_REGNUM, STACK_POINTER_REGNUM }, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4124 + { ARG_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM }, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4125 + { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM }, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4126 + { FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM }} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4127 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4128 +/* #define CAN_ELIMINATE(FROM, TO) m6809_can_eliminate (FROM, TO) */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4129 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4130 +/* Define how to offset the frame or argument pointer to turn it |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4131 + * into a stack pointer reference. This is based on the way that |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4132 + * the frame is constructed in the function prologue. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4133 +#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4134 + (OFFSET) = m6809_initial_elimination_offset (FROM, TO) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4135 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4136 +/* Base register for access to arguments of the function. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4137 + * This is only used prior to reload; no instructions will ever |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4138 + * be output referring to this register. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4139 +#define ARG_POINTER_REGNUM SOFT_AP_REGNUM |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4140 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4141 +/* Register in which static-chain is passed to a function. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4142 +#define STATIC_CHAIN_REGNUM HARD_Y_REGNUM |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4143 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4144 +/* #define CONDITIONAL_REGISTER_USAGE (m6809_conditional_register_usage ()) */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4145 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4146 +/* Order in which hard registers are allocated to pseudos. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4147 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4148 + * Since the D register is the only valid reg for 8-bit values |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4149 + * now, avoid using it for 16-bit values by putting it after all |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4150 + * other 16-bits. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4151 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4152 + * Prefer X first since the first 16-bit function argument goes |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4153 + * there. We may be able to pass in to a subroutine without |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4154 + * a copy. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4155 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4156 + * Prefer U over Y since instructions using Y take one extra |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4157 + * byte, and thus one extra cycle to execute. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4158 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4159 +#define REG_ALLOC_ORDER \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4160 + { HARD_X_REGNUM, HARD_U_REGNUM, HARD_Y_REGNUM, HARD_D_REGNUM, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4161 + HARD_M_REGNUMS, HARD_S_REGNUM, HARD_PC_REGNUM, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4162 + HARD_B_REGNUM, HARD_A_REGNUM, HARD_CC_REGNUM, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4163 + HARD_DP_REGNUM, SOFT_FP_REGNUM, SOFT_AP_REGNUM, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4164 + 6, HARD_Z_REGNUM } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4165 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4166 +/*-------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4167 + classes of registers |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4168 +--------------------------------------------------------------*/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4169 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4170 +/* Define the classes of registers for register constraints in the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4171 + machine description. Also define ranges of constants. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4172 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4173 + One of the classes must always be named ALL_REGS and include all hard regs. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4174 + If there is more than one class, another class must be named NO_REGS |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4175 + and contain no registers. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4176 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4177 + The name GENERAL_REGS must be the name of a class (or an alias for |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4178 + another name such as ALL_REGS). This is the class of registers |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4179 + that is allowed by "g" or "r" in a register constraint. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4180 + Also, registers outside this class are allocated only when |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4181 + instructions express preferences for them. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4182 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4183 + The classes must be numbered in nondecreasing order; that is, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4184 + a larger-numbered class must never be contained completely |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4185 + in a smaller-numbered class. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4186 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4187 + For any two classes, it is very desirable that there be another |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4188 + class that represents their union. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4189 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4190 +enum reg_class { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4191 + NO_REGS, /* The trivial class with no registers in it */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4192 + D_REGS, /* 16-bit (word (HI)) data (D) */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4193 + ACC_A_REGS, /* The A register */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4194 + ACC_B_REGS, /* The B register */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4195 + X_REGS, /* The X register */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4196 + Z_REGS, /* The Z (zero-bit) register */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4197 + Q_REGS, /* 8-bit (byte (QI)) data (A,B) */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4198 + M_REGS, /* 8-bit (byte (QI)) soft registers */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4199 + CC_REGS, /* 8-bit condition code register */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4200 + I_REGS, /* An index register (A,B,D) */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4201 + T_REGS, /* 16-bit addresses, not including stack or PC (X,Y,U) */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4202 + A_REGS, /* 16-bit addresses (X,Y,U,S,PC) */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4203 + S_REGS, /* 16-bit soft registers (FP, AP) */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4204 + P_REGS, /* 16-bit pushable registers (D,X,Y,U); omit PC and S */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4205 + G_REGS, /* 16-bit data and address (D,X,Y,U,S,PC) */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4206 + ALL_REGS, /* All registers */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4207 + LIM_REG_CLASSES |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4208 +}; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4209 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4210 +#define N_REG_CLASSES (int) LIM_REG_CLASSES |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4211 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4212 +/* Since GENERAL_REGS is a smaller class than ALL_REGS, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4213 + it is not an alias to ALL_REGS, but to G_REGS. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4214 +#define GENERAL_REGS G_REGS |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4215 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4216 +/* Give names of register classes as strings for dump file. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4217 +#define REG_CLASS_NAMES \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4218 + { "NO_REGS", "D_REGS", "ACC_A_REGS", "ACC_B_REGS", "X_REGS", "Z_REGS", "Q_REGS", "M_REGS", \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4219 + "CC_REGS", "I_REGS", "T_REGS", "A_REGS", "S_REGS", "P_REGS", "G_REGS", \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4220 + "ALL_REGS" } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4221 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4222 +/* Define which registers fit in which classes. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4223 + This is an initializer for a vector of HARD_REG_SET |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4224 + of length N_REG_CLASSES. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4225 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4226 +#define D_REGSET (D_REGBIT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4227 +#define ACC_A_REGSET (A_REGBIT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4228 +#define ACC_B_REGSET (D_REGBIT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4229 +#define X_REGSET (X_REGBIT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4230 +#define Z_REGSET (Z_REGBIT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4231 +#define Q_REGSET (D_REGBIT | A_REGBIT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4232 +#define M_REGSET (SOFT_M_REGBITS) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4233 +#define CC_REGSET (CC_REGBIT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4234 +#define I_REGSET (A_REGBIT | B_REGBIT | D_REGBIT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4235 +#define T_REGSET (X_REGBIT | Y_REGBIT | U_REGBIT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4236 +#define A_REGSET (X_REGBIT | Y_REGBIT | U_REGBIT | S_REGBIT | PC_REGBIT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4237 +#define S_REGSET (SOFT_FP_REGBIT | SOFT_AP_REGBIT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4238 +#define P_REGSET (D_REGBIT | X_REGBIT | Y_REGBIT | U_REGBIT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4239 +#define G_REGSET \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4240 + (D_REGSET | Q_REGSET | I_REGSET | A_REGSET | M_REGSET | S_REGSET) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4241 +#define ALL_REGSET (G_REGSET) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4242 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4243 +#define REG_CLASS_CONTENTS { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4244 + {0}, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4245 + {D_REGSET}, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4246 + {ACC_A_REGSET}, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4247 + {ACC_B_REGSET}, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4248 + {X_REGSET}, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4249 + {Z_REGSET}, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4250 + {Q_REGSET}, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4251 + {M_REGSET}, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4252 + {CC_REGSET}, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4253 + {I_REGSET}, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4254 + {T_REGSET}, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4255 + {A_REGSET}, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4256 + {S_REGSET}, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4257 + {P_REGSET}, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4258 + {G_REGSET}, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4259 + {ALL_REGSET}, \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4260 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4261 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4262 +/* The same information, inverted. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4263 + * This is defined to use the REG_CLASS_CONTENTS defines above, so that |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4264 + * these two sets of definitions are always consistent. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4265 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4266 +#define REGNO_REG_CLASS(REGNO) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4267 + (D_REGNO_P (REGNO) ? D_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4268 + (Z_REGNO_P (REGNO) ? Z_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4269 + (ACC_A_REGNO_P (REGNO) ? ACC_A_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4270 + (ACC_B_REGNO_P (REGNO) ? ACC_B_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4271 + (X_REGNO_P (REGNO) ? X_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4272 + (Q_REGNO_P (REGNO) ? Q_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4273 + (M_REGNO_P (REGNO) ? M_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4274 + (CC_REGNO_P (REGNO) ? CC_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4275 + (I_REGNO_P (REGNO) ? I_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4276 + (T_REGNO_P (REGNO) ? T_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4277 + (A_REGNO_P (REGNO) ? A_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4278 + (S_REGNO_P (REGNO) ? S_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4279 + (P_REGNO_P (REGNO) ? P_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4280 + (G_REGNO_P (REGNO) ? G_REGS : ALL_REGS)))))))))))))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4281 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4282 +#define D_REGNO_P(REGNO) (REGSET_CONTAINS_P (REGNO, D_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4283 +#define ACC_A_REGNO_P(REGNO) (REGSET_CONTAINS_P (REGNO, ACC_A_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4284 +#define ACC_B_REGNO_P(REGNO) (REGSET_CONTAINS_P (REGNO, ACC_B_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4285 +#define X_REGNO_P(REGNO) (REGSET_CONTAINS_P (REGNO, X_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4286 +#define Z_REGNO_P(REGNO) (REGSET_CONTAINS_P (REGNO, Z_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4287 +#define Q_REGNO_P(REGNO) (REGSET_CONTAINS_P (REGNO, Q_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4288 +#define M_REGNO_P(REGNO) (REGSET_CONTAINS_P (REGNO, M_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4289 +#define CC_REGNO_P(REGNO) (REGSET_CONTAINS_P (REGNO, CC_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4290 +#define I_REGNO_P(REGNO) (REGSET_CONTAINS_P (REGNO, I_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4291 +#define T_REGNO_P(REGNO) (REGSET_CONTAINS_P (REGNO, T_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4292 +#define A_REGNO_P(REGNO) (REGSET_CONTAINS_P (REGNO, A_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4293 +#define S_REGNO_P(REGNO) (REGSET_CONTAINS_P (REGNO, S_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4294 +#define P_REGNO_P(REGNO) (REGSET_CONTAINS_P (REGNO, P_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4295 +#define G_REGNO_P(REGNO) (REGSET_CONTAINS_P (REGNO, G_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4296 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4297 +/* Macros that test an rtx 'X' to see if it's in a particular |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4298 + * register class. 'X' need not be a REG necessarily. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4299 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4300 +#define D_REG_P(X) (REG_P (X) && D_REGNO_P (REGNO (X))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4301 +#define ACC_A_REG_P(X) (REG_P (X) && ACC_A_REGNO_P (REGNO (X))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4302 +#define ACC_B_REG_P(X) (REG_P (X) && ACC_B_REGNO_P (REGNO (X))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4303 +#define X_REG_P(X) (REG_P (X) && X_REGNO_P (REGNO (X))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4304 +#define Z_REG_P(X) (REG_P (X) && Z_REGNO_P (REGNO (X))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4305 +#define I_REG_P(X) (REG_P (X) && I_REGNO_P (REGNO (X))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4306 +#define T_REG_P(X) (REG_P (X) && T_REGNO_P (REGNO (X))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4307 +#define A_REG_P(X) (REG_P (X) && A_REGNO_P (REGNO (X))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4308 +#define S_REG_P(X) (REG_P (X) && S_REGNO_P (REGNO (X))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4309 +#define P_REG_P(X) (REG_P (X) && P_REGNO_P (REGNO (X))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4310 +#define Q_REG_P(X) (REG_P (X) && Q_REGNO_P (REGNO (X))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4311 +#define M_REG_P(X) (REG_P (X) && M_REGNO_P (REGNO (X))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4312 +#define CC_REG_P(X) (REG_P (X) && CC_REGNO_P (REGNO (X))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4313 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4314 +/* Redefine this in terms of BYTE_REGSET */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4315 +#define BYTE_REGNO_P(REGNO) (REGSET_CONTAINS_P (REGNO, BYTE_REGSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4316 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4317 +/* The class value for index registers, and the one for base regs. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4318 +#define INDEX_REG_CLASS I_REGS |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4319 +#define BASE_REG_CLASS A_REGS |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4320 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4321 +/* Get reg_class from a letter in the machine description. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4322 +#define REG_CLASS_FROM_LETTER(C) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4323 + (((C) == 'a' ? A_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4324 + ((C) == 'd' ? D_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4325 + ((C) == 'x' ? I_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4326 + ((C) == 't' ? M_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4327 + ((C) == 'c' ? CC_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4328 + ((C) == 'A' ? ACC_A_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4329 + ((C) == 'B' ? ACC_B_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4330 + ((C) == 'v' ? X_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4331 + ((C) == 'u' ? S_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4332 + ((C) == 'U' ? P_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4333 + ((C) == 'T' ? T_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4334 + ((C) == 'z' ? Z_REGS : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4335 + ((C) == 'q' ? Q_REGS : NO_REGS)))))))))))))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4336 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4337 +/*-------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4338 + The letters I through O in a register constraint string |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4339 + can be used to stand for particular ranges of immediate operands. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4340 + This macro defines what the ranges are. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4341 + C is the letter, and VALUE is a constant value. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4342 + Return 1 if VALUE is in the range specified by C. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4343 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4344 + For the 6809, J, K, L are used for indexed addressing. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4345 + `I' is used for the constant 1. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4346 + `J' is used for the 5-bit offsets. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4347 + `K' is used for the 8-bit offsets. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4348 + `L' is used for the range of signed numbers that fit in 16 bits. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4349 + `M' is used for the exact value '8'. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4350 + `N' is used for the constant -1. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4351 + `O' is used for the constant 0. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4352 +--------------------------------------------------------------*/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4353 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4354 +#define CONST_OK_FOR_LETTER_P(VALUE, C) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4355 + ((C) == 'I' ? ((VALUE) == 1) : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4356 + (C) == 'J' ? ((VALUE) >= -16 && (VALUE) <= 15) : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4357 + (C) == 'K' ? ((VALUE) >= -128 && (VALUE) <= 127) : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4358 + (C) == 'L' ? ((VALUE) >= -32768 && (VALUE) <= 32767) : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4359 + (C) == 'M' ? ((VALUE) == 8) : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4360 + (C) == 'N' ? ((VALUE) == -1) : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4361 + (C) == 'O' ? ((VALUE) == 0) : 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4362 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4363 +/* Similar, but for floating constants, and defining letters G and H. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4364 + No floating-point constants are valid on MC6809. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4365 +#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4366 + ((C) == 'G' ? (GET_MODE_CLASS (GET_MODE (VALUE)) == MODE_FLOAT \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4367 + && VALUE == CONST0_RTX (GET_MODE (VALUE))) : 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4368 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4369 +/* Given an rtx X being reloaded into a reg required to be |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4370 + in class CLASS, return the class of reg to actually use. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4371 + In general this is just CLASS; but on some machines |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4372 + in some cases it is preferable to use a more restrictive class. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4373 +#define PREFERRED_RELOAD_CLASS(X,CLASS) m6809_preferred_reload_class(X,CLASS) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4374 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4375 +#define SMALL_REGISTER_CLASSES 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4376 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4377 +/* Return the maximum number of consecutive registers |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4378 + needed to represent mode MODE in a register of class CLASS. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4379 +#define CLASS_MAX_NREGS(CLASS, MODE) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4380 + ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4381 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4382 +/*-------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4383 + Stack layout; function entry, exit and calling. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4384 +--------------------------------------------------------------*/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4385 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4386 +/* Define this if pushing a word on the stack |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4387 + makes the stack pointer a smaller address. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4388 +#define STACK_GROWS_DOWNWARD |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4389 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4390 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4391 +/* Define this if the nominal address of the stack frame |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4392 + is at the high-address end of the local variables; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4393 + that is, each additional local variable allocated |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4394 + goes at a more negative offset in the frame. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4395 +#define FRAME_GROWS_DOWNWARD 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4396 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4397 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4398 +/* Offset within stack frame to start allocating local variables at. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4399 + If FRAME_GROWS_DOWNWARD, this is the offset to the END of the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4400 + first local allocated. Otherwise, it is the offset to the BEGINNING |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4401 + of the first local allocated. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4402 +#define STARTING_FRAME_OFFSET 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4403 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4404 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4405 +/* Always push stack arguments for now. Accumulation is not yet working. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4406 +#define PUSH_ROUNDING(BYTES) (BYTES) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4407 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4408 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4409 +/* Offset of first parameter from the argument pointer register value. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4410 + * ARG_POINTER_REGNUM is defined to point to the return address pushed |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4411 + * onto the stack, so we must offset by 2 bytes to get to the arguments. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4412 +#define FIRST_PARM_OFFSET(FNDECL) 2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4413 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4414 +/* Value is 1 if returning from a function call automatically |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4415 + pops the arguments described by the number-of-args field in the call. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4416 + FUNTYPE is the data type of the function (as a tree), |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4417 + or for a library call it is an identifier node for the subroutine name. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4418 +/* #define RETURN_POPS_ARGS(FUNDECL,FUNTYPE,SIZE) 0 */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4419 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4420 +/* Define how to find the value returned by a function. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4421 + VALTYPE is the data type of the value (as a tree). |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4422 + If the precise function being called is known, FUNC is its FUNCTION_DECL; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4423 + otherwise, FUNC is 0. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4424 +#define FUNCTION_VALUE(VALTYPE, FUNC) m6809_function_value (VALTYPE, FUNC) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4425 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4426 +/* Define how to find the value returned by a library function |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4427 + assuming the value has mode MODE. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4428 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4429 +/* All return values are in the X-register. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4430 +#define LIBCALL_VALUE(MODE) gen_rtx_REG (MODE, HARD_X_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4431 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4432 +/* Define this if using the nonreentrant convention for returning |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4433 + structure and union values. No; it is inefficient and buggy. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4434 +#undef PCC_STATIC_STRUCT_RETURN |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4435 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4436 +/* 1 if N is a possible register number for a function value. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4437 +#define FUNCTION_VALUE_REGNO_P(N) m6809_function_value_regno_p (N) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4438 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4439 +/* Define this to be true when FUNCTION_VALUE_REGNO_P is true for |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4440 + more than one register. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4441 +#define NEEDS_UNTYPED_CALL 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4442 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4443 +/* 1 if N is a possible register number for function argument passing. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4444 +#define FUNCTION_ARG_REGNO_P(N) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4445 + ((m6809_abi_version != M6809_ABI_VERSION_STACK) ? \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4446 + (((N) == HARD_D_REGNUM) || ((N) == HARD_X_REGNUM)) : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4447 + 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4448 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4449 +/*-------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4450 + Argument Lists |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4451 +--------------------------------------------------------------*/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4452 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4453 +/* Cumulative arguments are tracked in a single integer, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4454 + * which is the number of bytes of arguments scanned so far, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4455 + * plus which registers have already been used. The register |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4456 + * info is kept in some of the upper bits */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4457 +#define CUMULATIVE_ARGS unsigned int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4458 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4459 +#define CUM_STACK_ONLY 0x80000000 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4460 +#define CUM_X_MASK 0x40000000 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4461 +#define CUM_B_MASK 0x20000000 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4462 +#define CUM_STACK_INVALID 0x10000000 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4463 +#define CUM_STACK_MASK 0xFFFFFFF |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4464 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4465 +#define CUM_ADVANCE_8BIT(cum) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4466 + (((cum) & CUM_B_MASK) ? (cum)++ : ((cum) |= CUM_B_MASK)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4467 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4468 +#define CUM_ADVANCE_16BIT(cum) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4469 + (((cum) & CUM_X_MASK) ? (cum) += 2 : ((cum) |= CUM_X_MASK)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4470 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4471 +/* Initialize a variable CUM of type CUMULATIVE_ARGS |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4472 + for a call to a function whose data type is FNTYPE. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4473 + For a library call, FNTYPE is 0. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4474 + N_NAMED was added in gcc 3.4 and is not used currently. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4475 +#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT,N_NAMED) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4476 + ((CUM) = m6809_init_cumulative_args (CUM, FNTYPE, LIBNAME)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4477 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4478 +#define FUNCTION_ARG_SIZE(MODE, TYPE) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4479 + ((MODE) != BLKmode ? GET_MODE_SIZE (MODE) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4480 + : (unsigned) int_size_in_bytes (TYPE)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4481 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4482 +/* Update the data in CUM to advance over an argument |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4483 + of mode MODE and data type TYPE. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4484 + (TYPE is null for libcalls where that information may not be available.) */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4485 +#define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4486 + (((MODE == QImode) && !((CUM) & CUM_STACK_ONLY)) ? \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4487 + CUM_ADVANCE_8BIT (CUM) : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4488 + ((MODE == HImode) && !((CUM) & CUM_STACK_ONLY)) ? \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4489 + CUM_ADVANCE_16BIT (CUM) : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4490 + ((CUM) = ((CUM) + (TYPE ? int_size_in_bytes (TYPE) : 2)))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4491 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4492 +/* Define where to put the arguments to a function. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4493 + Value is zero to push the argument on the stack, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4494 + or a hard register rtx in which to store the argument. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4495 + This macro is used _before_ FUNCTION_ARG_ADVANCE. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4496 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4497 + For the 6809, the first 8-bit function argument can be placed into B, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4498 + and the first 16-bit arg can go into X. All other arguments |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4499 + will be pushed onto the stack. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4500 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4501 + Command-line options can adjust this behavior somewhat. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4502 + */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4503 +#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4504 + ((MODE == VOIDmode) ? NULL_RTX : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4505 + ((MODE == BLKmode) || (GET_MODE_SIZE (MODE) > 2)) ? NULL_RTX : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4506 + ((MODE == QImode) && !((CUM) & (CUM_STACK_ONLY | CUM_B_MASK))) ? \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4507 + gen_rtx_REG (QImode, HARD_D_REGNUM) : \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4508 + ((MODE == HImode) && !((CUM) & (CUM_STACK_ONLY | CUM_X_MASK))) ? \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4509 + gen_rtx_REG (HImode, HARD_X_REGNUM) : m6809_function_arg_on_stack (&CUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4510 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4511 +/* Output assembler code to FILE to increment profiler label # LABELNO |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4512 + for profiling a function entry. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4513 +#define FUNCTION_PROFILER(FILE, LABELNO) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4514 + fprintf (FILE, "\tldd\t#LP%u\n\tjsr\tmcount\n", (LABELNO)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4515 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4516 +/* Stack pointer must be correct on function exit */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4517 +#define EXIT_IGNORE_STACK 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4518 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4519 +/***************************************************************************** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4520 +** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4521 +** Trampolines for Nested Functions |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4522 +** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4523 +*****************************************************************************/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4524 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4525 +/* Length in units of the trampoline for entering a nested function. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4526 +#define TRAMPOLINE_SIZE 7 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4527 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4528 +/*-------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4529 + Addressing modes, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4530 + and classification of registers for them. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4531 +--------------------------------------------------------------*/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4532 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4533 +/* 6809 has postincrement and predecrement addressing modes */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4534 +#define HAVE_POST_INCREMENT 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4535 +#define HAVE_PRE_DECREMENT 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4536 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4537 +/* Whether or not to use index registers is configurable. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4538 + * Experiments show that things work better when this is off, so |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4539 + * that's the way it is for now. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4540 +#undef USE_INDEX_REGISTERS |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4541 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4542 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4543 +/* Macros to check register numbers against specific register classes. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4544 +#define REG_VALID_FOR_BASE_P(REGNO) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4545 + (((REGNO) < FIRST_PSEUDO_REGISTER) && A_REGNO_P (REGNO)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4546 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4547 +/* MC6809 index registers do not allow scaling, */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4548 +/* but there is "accumulator-offset" mode. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4549 +#ifdef USE_INDEX_REGISTERS |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4550 +#define REG_VALID_FOR_INDEX_P(REGNO) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4551 + (((REGNO) < FIRST_PSEUDO_REGISTER) && I_REGNO_P (REGNO)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4552 +#else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4553 +#define REG_VALID_FOR_INDEX_P(REGNO) 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4554 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4555 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4556 +/* Internal macro, the nonstrict definition for REGNO_OK_FOR_BASE_P */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4557 +#define REGNO_OK_FOR_BASE_NONSTRICT_P(REGNO) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4558 + ((REGNO) >= FIRST_PSEUDO_REGISTER \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4559 + || REG_VALID_FOR_BASE_P (REGNO) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4560 + || (REGNO) == FRAME_POINTER_REGNUM \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4561 + || (REGNO) == HARD_FRAME_POINTER_REGNUM \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4562 + || (REGNO) == ARG_POINTER_REGNUM \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4563 + || (reg_renumber && REG_VALID_FOR_BASE_P (reg_renumber[REGNO]))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4564 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4565 +/* Internal macro, the nonstrict definition for REGNO_OK_FOR_INDEX_P */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4566 +#define REGNO_OK_FOR_INDEX_NONSTRICT_P(REGNO) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4567 + ((REGNO) >= FIRST_PSEUDO_REGISTER \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4568 + || REG_VALID_FOR_INDEX_P (REGNO) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4569 + || (reg_renumber && REG_VALID_FOR_INDEX_P (reg_renumber[REGNO]))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4570 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4571 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4572 +/* Internal macro, the strict definition for REGNO_OK_FOR_BASE_P */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4573 +#define REGNO_OK_FOR_BASE_STRICT_P(REGNO) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4574 + ((REGNO) < FIRST_PSEUDO_REGISTER ? REG_VALID_FOR_BASE_P (REGNO) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4575 + : (reg_renumber && REG_VALID_FOR_BASE_P (reg_renumber[REGNO]))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4576 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4577 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4578 +/* Internal macro, the strict definition for REGNO_OK_FOR_INDEX_P */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4579 +#define REGNO_OK_FOR_INDEX_STRICT_P(REGNO) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4580 + ((REGNO) < FIRST_PSEUDO_REGISTER ? REG_VALID_FOR_INDEX_P (REGNO) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4581 + : (reg_renumber && REG_VALID_FOR_INDEX_P (reg_renumber[REGNO]))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4582 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4583 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4584 +#define REGNO_OK_FOR_BASE_P(REGNO) REGNO_OK_FOR_BASE_STRICT_P (REGNO) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4585 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4586 +#define REGNO_OK_FOR_INDEX_P(REGNO) REGNO_OK_FOR_INDEX_STRICT_P (REGNO) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4587 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4588 +#define REG_OK_FOR_BASE_STRICT_P(X) REGNO_OK_FOR_BASE_STRICT_P (REGNO (X)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4589 +#define REG_OK_FOR_BASE_NONSTRICT_P(X) REGNO_OK_FOR_BASE_NONSTRICT_P (REGNO (X)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4590 +#define REG_OK_FOR_INDEX_STRICT_P(X) REGNO_OK_FOR_INDEX_STRICT_P (REGNO (X)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4591 +#define REG_OK_FOR_INDEX_NONSTRICT_P(X) REGNO_OK_FOR_INDEX_NONSTRICT_P (REGNO (X)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4592 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4593 +#ifndef REG_OK_STRICT |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4594 +#define REG_OK_FOR_BASE_P(X) REG_OK_FOR_BASE_NONSTRICT_P(X) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4595 +#ifdef USE_INDEX_REGISTERS |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4596 +#define REG_OK_FOR_INDEX_P(X) REG_OK_FOR_INDEX_NONSTRICT_P(X) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4597 +#else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4598 +#define REG_OK_FOR_INDEX_P(X) 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4599 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4600 +#else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4601 +#define REG_OK_FOR_BASE_P(X) REG_OK_FOR_BASE_STRICT_P (X) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4602 +#ifdef USE_INDEX_REGISTERS |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4603 +#define REG_OK_FOR_INDEX_P(X) REG_OK_FOR_INDEX_STRICT_P (X) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4604 +#else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4605 +#define REG_OK_FOR_INDEX_P(X) 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4606 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4607 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4608 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4609 +/* Maximum number of registers that can appear in a valid memory address */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4610 +#ifdef USE_INDEX_REGISTERS |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4611 +#define MAX_REGS_PER_ADDRESS 2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4612 +#else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4613 +#define MAX_REGS_PER_ADDRESS 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4614 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4615 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4616 +/* 1 if X is an rtx for a constant that is a valid address. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4617 + * We allow any constant, plus the sum of any two constants (this allows |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4618 + * offsetting a symbol ref) */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4619 +#define CONSTANT_ADDRESS_P(X) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4620 + ((CONSTANT_P (X)) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4621 + || ((GET_CODE (X) == PLUS) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4622 + && (CONSTANT_P (XEXP (X, 0))) && (CONSTANT_P (XEXP (X, 1))))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4623 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4624 +/* Nonzero if the constant value X is a legitimate general operand. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4625 + It is given that X satisfies CONSTANT_P or is a CONST_DOUBLE. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4626 +/* Any single-word constant is ok; the only contexts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4627 + allowing general_operand of mode DI or DF are movdi and movdf. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4628 +#define LEGITIMATE_CONSTANT_P(X) (GET_CODE (X) != CONST_DOUBLE) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4629 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4630 +/* Nonzero if the X is a legitimate immediate operand in PIC mode. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4631 +#define LEGITIMATE_PIC_OPERAND_P(X) !symbolic_operand (X, VOIDmode) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4632 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4633 +/*-------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4634 + Test for valid memory addresses |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4635 +--------------------------------------------------------------*/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4636 +/* GO_IF_LEGITIMATE_ADDRESS recognizes an RTL expression |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4637 + that is a valid memory address for an instruction. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4638 + The MODE argument is the machine mode for the MEM expression |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4639 + that wants to use this address. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4640 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4641 +/*-------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4642 + Valid addresses are either direct or indirect (MEM) versions |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4643 + of the following forms. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4644 + constant N |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4645 + register ,X |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4646 + constant indexed N,X |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4647 + accumulator indexed D,X |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4648 + auto_increment ,X++ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4649 + auto_decrement ,--X |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4650 +--------------------------------------------------------------*/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4651 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4652 +#define REGISTER_ADDRESS_P(X) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4653 + (REG_P (X) && REG_OK_FOR_BASE_P (X)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4654 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4655 +#define EXTENDED_ADDRESS_P(X) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4656 + CONSTANT_ADDRESS_P (X) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4657 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4658 +#define LEGITIMATE_BASE_P(X) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4659 + ((REG_P (X) && REG_OK_FOR_BASE_P (X)) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4660 + || (GET_CODE (X) == SIGN_EXTEND \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4661 + && GET_CODE (XEXP (X, 0)) == REG \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4662 + && GET_MODE (XEXP (X, 0)) == HImode \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4663 + && REG_OK_FOR_BASE_P (XEXP (X, 0)))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4664 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4665 +#define LEGITIMATE_OFFSET_P(X) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4666 + (CONSTANT_ADDRESS_P (X) || (REG_P (X) && REG_OK_FOR_INDEX_P (X))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4667 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4668 +/* 1 if X is the sum of a base register and an offset. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4669 +#define INDEXED_ADDRESS(X) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4670 + ((GET_CODE (X) == PLUS \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4671 + && LEGITIMATE_BASE_P (XEXP (X, 0)) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4672 + && LEGITIMATE_OFFSET_P (XEXP (X, 1))) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4673 + || (GET_CODE (X) == PLUS \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4674 + && LEGITIMATE_BASE_P (XEXP (X, 1)) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4675 + && LEGITIMATE_OFFSET_P (XEXP (X, 0)))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4676 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4677 +#define STACK_REG_P(X) (REG_P(X) && REGNO(X) == HARD_S_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4678 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4679 +#define STACK_PUSH_P(X) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4680 + (MEM_P (X) && GET_CODE (XEXP (X, 0)) == PRE_DEC && STACK_REG_P (XEXP (XEXP (X, 0), 0))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4681 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4682 +#define STACK_POP_P(X) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4683 + (MEM_P (X) && GET_CODE (XEXP (X, 0)) == POST_INC && STACK_REG_P (XEXP (XEXP (X, 0), 0))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4684 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4685 +#define PUSH_POP_ADDRESS_P(X) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4686 + (((GET_CODE (X) == PRE_DEC) || (GET_CODE (X) == POST_INC)) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4687 + && (LEGITIMATE_BASE_P (XEXP (X, 0)))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4688 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4689 +/* Go to ADDR if X is a valid address. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4690 +#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4691 +{ \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4692 + if (REGISTER_ADDRESS_P(X)) goto ADDR; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4693 + if (PUSH_POP_ADDRESS_P (X)) goto ADDR; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4694 + if (EXTENDED_ADDRESS_P (X)) goto ADDR; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4695 + if (INDEXED_ADDRESS (X)) goto ADDR; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4696 + if (MEM_P (X) && REGISTER_ADDRESS_P(XEXP (X, 0))) goto ADDR; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4697 + if (MEM_P (X) && PUSH_POP_ADDRESS_P (XEXP (X, 0))) goto ADDR; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4698 + if (MEM_P (X) && EXTENDED_ADDRESS_P (XEXP (X, 0))) goto ADDR; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4699 + if (MEM_P (X) && INDEXED_ADDRESS (XEXP (X, 0))) goto ADDR; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4700 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4701 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4702 +/*-------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4703 + Address Fix-up |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4704 +--------------------------------------------------------------*/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4705 +/* Go to LABEL if ADDR (a legitimate address expression) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4706 + has an effect that depends on the machine mode it is used for. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4707 + In the latest GCC, this case is already handled by the core code |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4708 + so no action is required here. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4709 +#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR,LABEL) {} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4710 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4711 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4712 +/*-------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4713 + Miscellaneous Parameters |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4714 +--------------------------------------------------------------*/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4715 +/* Specify the machine mode that this machine uses |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4716 + for the index in the tablejump instruction. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4717 +#define CASE_VECTOR_MODE Pmode |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4718 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4719 +/* Define this as 1 if `char' should by default be signed; else as 0. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4720 +#define DEFAULT_SIGNED_CHAR 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4721 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4722 +/* This flag, if defined, says the same insns that convert to a signed fixnum |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4723 + also convert validly to an unsigned one. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4724 +#define FIXUNS_TRUNC_LIKE_FIX_TRUNC |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4725 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4726 +/* Max number of bytes we can move from memory to memory/register |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4727 + in one reasonably fast instruction. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4728 +#define MOVE_MAX 2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4729 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4730 +/* Int can be 8 or 16 bits (default is 16) */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4731 +#define INT_TYPE_SIZE (TARGET_BYTE_INT ? 8 : 16) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4732 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4733 +/* Short is always 16 bits */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4734 +#define SHORT_TYPE_SIZE (TARGET_BYTE_INT ? 8 : 16) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4735 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4736 +/* Size (bits) of the type "long" on target machine */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4737 +#define LONG_TYPE_SIZE (TARGET_BYTE_INT ? 16 : 32) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4738 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4739 +/* Size (bits) of the type "long long" on target machine */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4740 +#define LONG_LONG_TYPE_SIZE 32 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4741 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4742 +/* Size (bits) of the type "char" on target machine */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4743 +#define CHAR_TYPE_SIZE 8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4744 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4745 +/* Size (bits) of the type "float" on target machine */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4746 +#define FLOAT_TYPE_SIZE 32 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4747 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4748 +/* Size (bits) of the type "double" on target machine. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4749 + * Note that the C standard does not require that doubles |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4750 + * hold any more bits than float. Since the 6809 has so few |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4751 + * registers, we cannot really support more than 32-bits. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4752 +#define DOUBLE_TYPE_SIZE 32 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4753 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4754 +/* Size (bits) of the type "long double" on target machine */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4755 +#define LONG_DOUBLE_TYPE_SIZE 32 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4756 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4757 +/* Define the type used for "size_t". With a 64KB address space, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4758 + * only a 16-bit value here makes sense. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4759 +#define SIZE_TYPE (TARGET_BYTE_INT ? "long unsigned int" : "unsigned int") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4760 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4761 +/* Likewise, the difference between two pointers is also a 16-bit |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4762 + * signed value. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4763 +#define PTRDIFF_TYPE (TARGET_BYTE_INT ? "long int" : "int") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4764 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4765 +/* Nonzero if access to memory by bytes is slow and undesirable. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4766 +#define SLOW_BYTE_ACCESS 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4767 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4768 +/* Define if shifts truncate the shift count |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4769 + which implies one can omit a sign-extension or zero-extension |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4770 + of a shift count. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4771 +#define SHIFT_COUNT_TRUNCATED 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4772 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4773 +/* Value is 1 if truncating an integer of INPREC bits to OUTPREC bits |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4774 + is done just by pretending it is already truncated. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4775 +#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4776 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4777 +/* It is as good to call a constant function address as to |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4778 + call an address kept in a register. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4779 +#define NO_FUNCTION_CSE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4780 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4781 +/* Specify the machine mode that pointers have. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4782 + After generation of rtl, the compiler makes no further distinction |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4783 + between pointers and any other objects of this machine mode. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4784 +#define Pmode HImode |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4785 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4786 +/* A function address in a call instruction |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4787 + is a byte address (for indexing purposes) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4788 + so give the MEM rtx a byte's mode. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4789 +#define FUNCTION_MODE HImode |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4790 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4791 +/* Define the cost of moving a value from a register in CLASS1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4792 + * to CLASS2, of a given MODE. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4793 + * |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4794 + * On the 6809, hard register transfers are all basically equivalent. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4795 + * But soft register moves are treated more like memory moves. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4796 +#define REGISTER_MOVE_COST(MODE, CLASS1, CLASS2) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4797 + (((CLASS1 == M_REGS) || (CLASS2 == M_REGS)) ? 4 : 7) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4798 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4799 +/* Define the cost of moving a value between a register and memory. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4800 +#define MEMORY_MOVE_COST(MODE, CLASS, IN) 5 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4801 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4802 +/* Check a `double' value for validity for a particular machine mode. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4803 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4804 +#define CHECK_FLOAT_VALUE(MODE, D, OVERFLOW) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4805 + ((OVERFLOW) = check_float_value (MODE, &D, OVERFLOW)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4806 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4807 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4808 +/*-------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4809 + machine-dependent |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4810 +--------------------------------------------------------------*/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4811 +/* Tell final.c how to eliminate redundant test instructions. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4812 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4813 +/* Here we define machine-dependent flags and fields in cc_status |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4814 + (see `conditions.h'). */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4815 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4816 +/* Store in cc_status the expressions |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4817 + that the condition codes will describe |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4818 + after execution of an instruction whose pattern is EXP. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4819 + Do not alter them if the instruction would not alter the cc's. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4820 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4821 +/* On the 6809, most of the insns to store in an address register |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4822 + fail to set the cc's. However, in some cases these instructions |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4823 + can make it possibly invalid to use the saved cc's. In those |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4824 + cases we clear out some or all of the saved cc's so they won't be used. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4825 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4826 +#define NOTICE_UPDATE_CC(EXP, INSN) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4827 + notice_update_cc((EXP), (INSN)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4828 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4829 +/***************************************************************************** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4830 +** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4831 +** pragma support |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4832 +** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4833 +*****************************************************************************/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4834 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4835 +#if 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4836 +#define REGISTER_TARGET_PRAGMAS() \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4837 +do { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4838 + extern void pragma_section PARAMS ((cpp_reader *)); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4839 + c_register_pragma (0, "section", pragma_section); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4840 +} while (0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4841 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4842 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4843 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4844 +/*-------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4845 + ASSEMBLER FORMAT |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4846 +--------------------------------------------------------------*/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4847 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4848 +#define FMT_HOST_WIDE_INT "%ld" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4849 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4850 +/* Output to assembler file text saying following lines |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4851 + may contain character constants, extra white space, comments, etc. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4852 +#define ASM_APP_ON ";----- asm -----\n" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4853 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4854 +/* Output to assembler file text saying following lines |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4855 + no longer contain unusual constructs. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4856 +#define ASM_APP_OFF ";--- end asm ---\n" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4857 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4858 +/* Use a semicolon to begin a comment. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4859 +#define ASM_COMMENT_START "; " |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4860 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4861 +/* Output assembly directives to switch to section 'name' */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4862 +#undef TARGET_ASM_NAMED_SECTION |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4863 +#define TARGET_ASM_NAMED_SECTION m6809_asm_named_section |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4864 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4865 +#undef TARGET_HAVE_NAMED_SECTION |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4866 +#define TARGET_HAVE_NAMED_SECTION m6809_have_named_section |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4867 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4868 +/* Output before read-only data. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4869 +#define TEXT_SECTION_ASM_OP (code_section_op) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4870 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4871 +/* Output before writable data. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4872 +#define DATA_SECTION_ASM_OP (data_section_op) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4873 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4874 +/* Output before uninitialized data. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4875 +#define BSS_SECTION_ASM_OP (bss_section_op) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4876 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4877 +/* Support the ctors and dtors sections for g++. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4878 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4879 +#undef CTORS_SECTION_ASM_OP |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4880 +#define CTORS_SECTION_ASM_OP "\t.area .ctors" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4881 +#undef DTORS_SECTION_ASM_OP |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4882 +#define DTORS_SECTION_ASM_OP "\t.area .dtors" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4883 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4884 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4885 +#undef DO_GLOBAL_CTORS_BODY |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4886 +#undef DO_GLOBAL_DTORS_BODY |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4887 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4888 +#define HAS_INIT_SECTION |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4889 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4890 +/* This is how to output an assembler line |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4891 + that says to advance the location counter |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4892 + to a multiple of 2**LOG bytes. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4893 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4894 +#define ASM_OUTPUT_ALIGN(FILE,LOG) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4895 + if ((LOG) > 1) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4896 + fprintf (FILE, "\t.bndry %u\n", 1 << (LOG)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4897 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4898 +/* The .set foo,bar construct doesn't work by default */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4899 +#undef SET_ASM_OP |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4900 +#define ASM_OUTPUT_DEF(FILE, LABEL1, LABEL2) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4901 + do \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4902 + { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4903 + fputc ('\t', FILE); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4904 + assemble_name (FILE, LABEL1); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4905 + fputs (" = ", FILE); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4906 + assemble_name (FILE, LABEL2); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4907 + fputc ('\n', FILE); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4908 + } \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4909 + while (0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4910 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4911 +/* How to refer to registers in assembler output. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4912 + This sequence is indexed by compiler's hard-register-number (see above). */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4913 +#define MNAME(x) [SOFT_M0_REGNUM+(x)] = "*m" C_STRING(x) , |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4914 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4915 +#define REGISTER_NAMES { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4916 + [HARD_D_REGNUM]= "d", \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4917 + [HARD_X_REGNUM]= "x", \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4918 + [HARD_Y_REGNUM]= "y", \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4919 + [HARD_U_REGNUM]= "u", \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4920 + [HARD_S_REGNUM]= "s", \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4921 + [HARD_PC_REGNUM]= "pc", \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4922 + [HARD_A_REGNUM]= "a", \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4923 + [HARD_B_REGNUM]= "b", \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4924 + [HARD_CC_REGNUM]= "cc",\ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4925 + [HARD_DP_REGNUM]= "dp", \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4926 + [SOFT_FP_REGNUM]= "soft_fp", \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4927 + [SOFT_AP_REGNUM]= "soft_ap", \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4928 + MNAME(0) MNAME(1) MNAME(2) MNAME(3) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4929 + MNAME(4) MNAME(5) MNAME(6) MNAME(7) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4930 + [HARD_RSVD1_REGNUM] = "-", \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4931 + [HARD_Z_REGNUM] = "z" /* bit 2 of CC */ } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4932 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4933 +/***************************************************************************** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4934 +** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4935 +** Debug Support |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4936 +** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4937 +*****************************************************************************/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4938 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4939 +/* Default to DBX-style debugging */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4940 +#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4941 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4942 +#define DBX_DEBUGGING_INFO |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4943 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4944 +#define DEFAULT_GDB_EXTENSIONS 0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4945 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4946 +#define ASM_STABS_OP ";\t.stabs\t" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4947 +#define ASM_STABD_OP ";\t.stabd\t" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4948 +#define ASM_STABN_OP ";\t.stabn\t" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4949 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4950 +#define DBX_CONTIN_LENGTH 54 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4951 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4952 +#define DBX_OUTPUT_MAIN_SOURCE_FILENAME(ASMFILE, FILENAME) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4953 +do { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4954 + const char *p = FILENAME; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4955 + while ((p = strchr (p, '/')) != NULL) { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4956 + p = FILENAME = p+1; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4957 + } \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4958 + fprintf (ASMFILE, "%s", ASM_STABS_OP); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4959 + output_quoted_string (ASMFILE, FILENAME); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4960 + fprintf (ASMFILE, ",%d,0,0,", N_SO); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4961 + assemble_name (ASMFILE, ltext_label_name); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4962 + fputc ('\n', ASMFILE); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4963 + switch_to_section (text_section); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4964 + (*targetm.asm_out.internal_label) (ASMFILE, "Ltext", 0); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4965 +} while (0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4966 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4967 +/* With -g, GCC sometimes outputs string literals that are longer than |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4968 + * the assembler can handle. Without actual debug support, these are |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4969 + * not really required. Redefine the function to output strings to |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4970 + * output as much as possible. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4971 +#define OUTPUT_QUOTED_STRING(FILE, STR) m6809_output_quoted_string (FILE, STR) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4972 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4973 +/***************************************************************************** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4974 +** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4975 +** Output and Generation of Labels |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4976 +** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4977 +*****************************************************************************/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4978 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4979 +/* Prefixes for various assembly-time objects */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4980 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4981 +#define REGISTER_PREFIX "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4982 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4983 +#define LOCAL_LABEL_PREFIX "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4984 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4985 +#define USER_LABEL_PREFIX "_" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4986 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4987 +#define IMMEDIATE_PREFIX "#" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4988 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4989 +/* This is how to output the definition of a user-level label named NAME, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4990 + such as the label on a static function or variable NAME. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4991 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4992 +#define ASM_OUTPUT_LABEL(FILE,NAME) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4993 +do { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4994 + if (section_changed) { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4995 + fprintf (FILE, "\n%s\n\n", code_section_op); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4996 + section_changed = 0; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4997 + } \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4998 + assemble_name (FILE, NAME); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
4999 + fputs (":\n", FILE); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5000 +} while (0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5001 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5002 +/* This is how to output the label for a function definition. It |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5003 + invokes ASM_OUTPUT_LABEL, but may examine the DECL tree node for |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5004 + other properties. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5005 +#define ASM_DECLARE_FUNCTION_NAME(FILE,NAME,DECL) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5006 + m6809_declare_function_name (FILE,NAME,DECL) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5007 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5008 +/* This is how to output a command to make the user-level label |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5009 + named NAME defined for reference from other files. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5010 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5011 +#define GLOBAL_ASM_OP "\t.globl " |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5012 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5013 +/* This is how to output a reference to a user label named NAME. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5014 +#define ASM_OUTPUT_LABELREF(FILE,NAME) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5015 + fprintf (FILE, "_%s", NAME) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5016 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5017 +/* This is how to output a reference to a symbol ref |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5018 + * Check to see if the symbol is in the direct page */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5019 +#define ASM_OUTPUT_SYMBOL_REF(FILE,sym) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5020 +{ \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5021 + print_direct_prefix (FILE, sym); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5022 + assemble_name (FILE, XSTR (sym, 0)); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5023 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5024 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5025 +/* External references aren't necessary, so don't emit anything */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5026 +#define ASM_OUTPUT_EXTERNAL(FILE,DECL,NAME) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5027 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5028 +/* This is how to store into the string LABEL |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5029 + the symbol_ref name of an internal numbered label where |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5030 + PREFIX is the class of label and NUM is the number within the class. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5031 + This is suitable for output with `assemble_name'. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5032 +#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5033 + sprintf (LABEL, "*%s%lu", PREFIX, (unsigned long int)NUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5034 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5035 +/* This is how to output an assembler line defining an `int' constant. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5036 +#define ASM_OUTPUT_INT(FILE,VALUE) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5037 +( fprintf (FILE, "\t.word "), \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5038 + output_addr_const (FILE, (VALUE)), \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5039 + fprintf (FILE, "\n")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5040 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5041 +/* Likewise for `char' and `short' constants. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5042 +#define ASM_OUTPUT_SHORT(FILE,VALUE) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5043 +( fprintf (FILE, "\t.word "), \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5044 + output_addr_const (FILE, (VALUE)), \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5045 + fprintf (FILE, "\n")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5046 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5047 +/* This is how to output a string. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5048 +#define ASM_OUTPUT_ASCII(FILE,STR,SIZE) m6809_output_ascii (FILE, STR, SIZE) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5049 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5050 +/* This is how to output an insn to push a register on the stack. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5051 + It need not be very fast code. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5052 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5053 +#define ASM_OUTPUT_REG_PUSH(FILE,REGNO) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5054 + fprintf (FILE, "\tpshs\t%s\n", reg_names[REGNO]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5055 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5056 +/* This is how to output an insn to pop a register from the stack. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5057 + It need not be very fast code. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5058 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5059 +#define ASM_OUTPUT_REG_POP(FILE,REGNO) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5060 + fprintf (FILE, "\tpuls\t%s\n", reg_names[REGNO]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5061 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5062 +/* This is how to output an element of a case-vector that is absolute. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5063 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5064 +#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5065 + fprintf (FILE, "\t.word L%u\n", VALUE) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5066 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5067 +/* This is how to output an element of a case-vector that is relative. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5068 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5069 +#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5070 + fprintf (FILE, "\t.word L%u-L%u\n", VALUE, REL) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5071 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5072 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5073 +/***************************************************************************** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5074 +** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5075 +** Assembler Commands for Alignment |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5076 +** |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5077 +*****************************************************************************/ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5078 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5079 +/* ASM_OUTPUT_SKIP is supposed to zero initialize the data. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5080 + * So use the .byte and .word directives instead of .blkb */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5081 +#define ASM_OUTPUT_SKIP(FILE,SIZE) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5082 + do { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5083 + int __size = SIZE; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5084 + while (__size > 0) { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5085 + if (__size >= 2) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5086 + { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5087 + fprintf (FILE, "\t.word\t0\t;skip space %d\n", __size); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5088 + __size -= 2; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5089 + } \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5090 + else \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5091 + { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5092 + fprintf (FILE, "\t.byte\t0\t;skip space\n"); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5093 + __size--; \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5094 + } \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5095 + } \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5096 + } while (0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5097 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5098 +/* This says how to output an assembler line |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5099 + to define a global common symbol. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5100 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5101 +#define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5102 + do { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5103 + switch_to_section (bss_section); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5104 + fputs ("\t.globl\t", FILE); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5105 + assemble_name ((FILE), (NAME)); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5106 + fputs ("\n", FILE); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5107 + assemble_name ((FILE), (NAME)); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5108 + fprintf ((FILE), ":\t.blkb\t" FMT_HOST_WIDE_INT "\n", (ROUNDED));} while(0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5109 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5110 +/* This says how to output an assembler line |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5111 + to define a local common symbol. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5112 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5113 +#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5114 +do { \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5115 + switch_to_section (bss_section); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5116 + assemble_name ((FILE), (NAME)); \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5117 + fprintf ((FILE), ":\t.blkb\t" FMT_HOST_WIDE_INT "\n", (ROUNDED));} while(0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5118 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5119 +/* Store in OUTPUT a string (made with alloca) containing |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5120 + an assembler-name for a local static variable named NAME. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5121 + LABELNO is an integer which is different for each call. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5122 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5123 +#define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5124 +( (OUTPUT) = (char *) alloca (strlen ((NAME)) + 10), \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5125 + sprintf ((OUTPUT), "%s.%lu", (NAME), (unsigned long int)(LABELNO))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5126 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5127 +/* Print an instruction operand X on file FILE. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5128 + CODE is the code from the %-spec for printing this operand. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5129 + If `%z3' was used to print operand 3, then CODE is 'z'. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5130 +#define PRINT_OPERAND(FILE, X, CODE) print_operand (FILE, X, CODE) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5131 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5132 +/* Print a memory operand whose address is X, on file FILE. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5133 +#define PRINT_OPERAND_ADDRESS(FILE, ADDR) print_operand_address (FILE, ADDR) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5134 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5135 +/* Don't let stack pushes build up too much. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5136 +#define MAX_PENDING_STACK 8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5137 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5138 +/* Define values for builtin operations */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5139 +enum m6809_builtins |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5140 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5141 + M6809_SWI, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5142 + M6809_SWI2, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5143 + M6809_SWI3, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5144 + M6809_CWAI, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5145 + M6809_SYNC, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5146 + M6809_ADD_CARRY, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5147 + M6809_SUB_CARRY, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5148 + M6809_ADD_DECIMAL, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5149 + M6809_NOP, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5150 + M6809_BLOCKAGE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5151 +}; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5152 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5153 diff -urN gcc-4.6.4-clean/gcc/config/m6809/m6809.md gcc-4.6.4/gcc/config/m6809/m6809.md |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5154 --- gcc-4.6.4-clean/gcc/config/m6809/m6809.md 1969-12-31 17:00:00.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5155 +++ gcc-4.6.4/gcc/config/m6809/m6809.md 2015-07-20 22:05:21.702720231 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5156 @@ -0,0 +1,2359 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5157 +;; GCC machine description for Motorola 6809 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5158 +;; Copyright (C) 1989, 2005, 2006, 2007, 2008, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5159 +;; 2009 Free Software Foundation, Inc. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5160 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5161 +;; Mostly by Brian Dominy (brian@oddchange.com) with substantial renovations |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5162 +;; by William Astle (lost@l-w.ca). |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5163 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5164 +;; Based on earlier work by Tom Jones (jones@sal.wisc.edu) and |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5165 +;; Matthias Doerfel (msdoerfe@informatik.uni-erlangen.de) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5166 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5167 +;; This file is part of GCC. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5168 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5169 +;; GCC is free software; you can redistribute it and/or modify |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5170 +;; it under the terms of the GNU General Public License as published by |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5171 +;; the Free Software Foundation; either version 3, or (at your option) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5172 +;; any later version. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5173 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5174 +;; GCC is distributed in the hope that it will be useful, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5175 +;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5176 +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5177 +;; GNU General Public License for more details. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5178 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5179 +;; You should have received a copy of the GNU General Public License |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5180 +;; along with GCC; see the file COPYING3. If not see |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5181 +;; <http://www.gnu.org/licenses/>. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5182 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5183 +;; General information: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5184 +;; -------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5185 +;; * This backend is mostly a rewrite from earlier (3.1.1 and before) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5186 +;; versions. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5187 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5188 +;; * The 'A' and 'B' registers are treated as a single register by the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5189 +;; register allocator; hence, the instruction templates assume that |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5190 +;; both can be modified if either one is available for use. No |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5191 +;; attempt is made to split instructions to refer to a particular half |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5192 +;; of the register. It is always referred to as the 'D' register, even |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5193 +;; in QImode (when it will be displayed as 'B'). |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5194 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5195 +;; * There is full support for proper branch instruction generation, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5196 +;; based on instruction lengths. However, many instruction patterns |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5197 +;; are still overloaded to emit lots of real instructions, which can |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5198 +;; make the length calculation difficult; in those cases, I've tried |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5199 +;; to be pessimistic and assume the worst-case. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5200 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5201 +;; * The instruction type attributes are only defined for branch |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5202 +;; vs. non branch instructions for now, since there is seemingly no |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5203 +;; reason to define these for other types anyway. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5204 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5205 +;; * The limited number of total registers presents the greatest |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5206 +;; challenge. There are 'soft registers' -- memory locations |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5207 +;; used to simulate real regs -- which can be helpful. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5208 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5209 +;; * Position-independent code (PIC) is supported and has been tested |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5210 +;; but not to the extent of absolute code generation. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5211 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5212 +;; * All of the 6809 special opcodes, e.g. SWI and SYNC, are defined |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5213 +;; as UNSPEC instructions, and can be accessed from C code using |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5214 +;; __builtin_xxxx() style functions. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5215 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5216 +;; What still needs to be done: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5217 +;; ---------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5218 +;; * Replace remaining instances of (define_peephole) with |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5219 +;; (define_peephole2), or remove them completely if they are not |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5220 +;; matching anyway. Add more peepholes for things actually encountered. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5221 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5222 +;; * Indexing addressing can lead to crashes in complex functions when |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5223 +;; register pressure is high. Only the 'D' register can actually be |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5224 +;; used as an index register, and its demand by other instructions |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5225 +;; can sometimes mean that it is impossible to satisfy constraints. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5226 +;; Currently, indexing is completely disabled to avoid these types |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5227 +;; of problems, although code is slightly more inefficient in some |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5228 +;; working cases. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5229 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5230 +;; * 32-bit math is terribly inefficient. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5231 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5232 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5233 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5234 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5235 +;;- Constants |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5236 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5237 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5238 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5239 +; Define constants for hard register numbers. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5240 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5241 +(define_constants [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5242 + (HARD_RSVD1_REGNUM 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5243 + (HARD_X_REGNUM 1) (HARD_Y_REGNUM 2) (HARD_U_REGNUM 3) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5244 + (HARD_S_REGNUM 4) (HARD_PC_REGNUM 5) (HARD_D_REGNUM 6) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5245 + (HARD_Z_REGNUM 7) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5246 + (HARD_A_REGNUM 8) (HARD_B_REGNUM 9) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5247 + (HARD_CC_REGNUM 10) (HARD_DP_REGNUM 11) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5248 + (SOFT_FP_REGNUM 12) (SOFT_AP_REGNUM 13) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5249 + (SOFT_M0_REGNUM 14) (SOFT_M1_REGNUM 15) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5250 + (SOFT_M2_REGNUM 16) (SOFT_M3_REGNUM 17) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5251 +]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5252 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5253 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5254 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5255 +; The range in which a short branch insn can be used. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5256 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5257 +(define_constants [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5258 + (MIN_SHORT_BRANCH_OFFSET -127) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5259 + (MAX_SHORT_BRANCH_OFFSET 128) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5260 +]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5261 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5262 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5263 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5264 +; The lengths of various types of real 6809 instructions. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5265 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5266 +; By default, ordinary insns are 4 bytes long. This is often not |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5267 +; right, and the insn patterns below will redefine this to the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5268 +; correct value. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5269 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5270 +; Branch instruction lengths (conditional and unconditionals) are |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5271 +; well known and declared here. The short insns are used when the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5272 +; offset is within the range declared above (between MIN_SHORT |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5273 +; and MAX_SHORT) ; otherwise the long form is used. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5274 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5275 +(define_constants [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5276 + (DEFAULT_INSN_LENGTH 4) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5277 + (SHORT_CBRANCH_LENGTH 2) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5278 + (LONG_CBRANCH_LENGTH 4) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5279 + (SHORT_BRANCH_LENGTH 2) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5280 + (LONG_BRANCH_LENGTH 3) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5281 +]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5282 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5283 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5284 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5285 +; Constants for insn cycle counts. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5286 +; Note that these counts all assume 1-byte opcodes. 2-byte |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5287 +; opcodes require 1 extra cycles for fetching the extra byte. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5288 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5289 +(define_constants [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5290 + ;; The default insn length, when it cannot be calculated. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5291 + ;; Take a conservative approach and estimate high. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5292 + (DEFAULT_INSN_CYCLES 10) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5293 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5294 + ;; Cycle counts for ALU and load operations. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5295 + (ALU_INHERENT_CYCLES 2) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5296 + (ALU_IMMED_CYCLES 2) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5297 + (ALU_DIRECT_CYCLES 4) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5298 + (ALU_INDEXED_BASE_CYCLES 4) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5299 + (ALU_EXTENDED_CYCLES 5) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5300 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5301 + ;; If an ALU operation is on a 16-bit register (D), then |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5302 + ;; add this number of cycles to the total count. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5303 + (ALU_16BIT_CYCLES 2) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5304 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5305 + ;; A load of a 16-bit register incurs this extra amount. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5306 + (LOAD_16BIT_CYCLES 1) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5307 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5308 + ;; Cycle counts for memory-only operations (bit shifts, clear, test) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5309 + (MEM_DIRECT_CYCLES 6) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5310 + (MEM_INDEXED_BASE_CYCLES 6) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5311 + (MEM_EXTENDED_CYCLES 7) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5312 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5313 + ;; Cycle count for any reg-reg transfer (regardless of size) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5314 + (EXG_CYCLES 8) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5315 + (TFR_CYCLES 6) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5316 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5317 + ;; Cycle count for a condition code update (andcc/orcc) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5318 + (CC_CYCLES 3) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5319 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5320 + (JMP_DIRECT_CYCLES 3) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5321 + (JMP_INDEXED_BASE_CYCLES 3) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5322 + (JMP_EXTENDED_CYCLES 4) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5323 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5324 + (JSR_DIRECT_CYCLES 7) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5325 + (JSR_INDEXED_BASE_CYCLES 7) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5326 + (JSR_EXTENDED_CYCLES 8) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5327 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5328 + (LEA_BASE_CYCLES 4) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5329 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5330 + ;; Cycle count for a psh/pul operations. Add to this the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5331 + ;; total number of bytes moved for the correct count. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5332 + (PSH_PUL_CYCLES 5) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5333 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5334 + ;; Miscellaneous cycle counts |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5335 + (CWAI_CYCLES 20) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5336 + (MUL_CYCLES 11) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5337 + (NOP_CYCLES 2) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5338 + (RTI_CYCLES 15) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5339 + (RTS_CYCLES 5) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5340 + (SWI_CYCLES 20) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5341 + (SYNC_CYCLES 4) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5342 +]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5343 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5344 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5345 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5346 +; An enumeration of values for each "unspec"; i.e. unspecified |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5347 +; instruction. These represent insns that are meaningful on the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5348 +; 6809 but which have no intrinsic meaning to GCC itself. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5349 +; These insns can be generated explicitly using the __builtin_xxx |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5350 +; syntax; they are also implicitly generated by the backend |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5351 +; as needed to implement other insns. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5352 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5353 +(define_constants [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5354 + (UNSPEC_BLOCKAGE 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5355 + (UNSPEC_PUSH_RS 1) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5356 + (UNSPEC_POP_RS 2) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5357 + (UNSPEC_SWI 3) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5358 + (UNSPEC_CWAI 4) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5359 + (UNSPEC_ADD_CARRY 5) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5360 + (UNSPEC_SUB_CARRY 6) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5361 + (UNSPEC_SYNC 7) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5362 + (UNSPEC_ADD_DECIMAL 8) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5363 +]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5364 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5365 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5366 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5367 +;;- Predicates |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5368 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5369 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5370 +(include "predicates.md") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5371 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5372 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5373 +;;- Attributes |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5374 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5375 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5376 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5377 +;; The type attribute is used to distinguish between different |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5378 +;; types of branch instructions, so that their lengths can be |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5379 +;; calculated correctly. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5380 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5381 +(define_attr "type" "branch,cbranch,unknown" (const_string "unknown")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5382 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5383 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5384 +;; The length of a branch instruction is calculated based on how |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5385 +;; far away the branch target is. Lengths of other insns default |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5386 +;; to 4. set_attr is used in instruction templates to specify |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5387 +;; the length when it is known exactly. When not sure, err on |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5388 +;; the high side to avoid compile errors. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5389 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5390 +(define_attr "length" "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5391 + (cond [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5392 + (eq_attr "type" "branch") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5393 + (if_then_else (lt (minus (match_dup 0) (pc)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5394 + (const_int MIN_SHORT_BRANCH_OFFSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5395 + (const_int LONG_BRANCH_LENGTH) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5396 + (if_then_else (gt (minus (match_dup 0) (pc)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5397 + (const_int MAX_SHORT_BRANCH_OFFSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5398 + (const_int LONG_BRANCH_LENGTH) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5399 + (const_int SHORT_BRANCH_LENGTH))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5400 + (eq_attr "type" "cbranch") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5401 + (if_then_else (lt (minus (match_dup 0) (pc)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5402 + (const_int MIN_SHORT_BRANCH_OFFSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5403 + (const_int LONG_CBRANCH_LENGTH) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5404 + (if_then_else (gt (minus (match_dup 0) (pc)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5405 + (const_int MAX_SHORT_BRANCH_OFFSET)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5406 + (const_int LONG_CBRANCH_LENGTH) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5407 + (const_int SHORT_CBRANCH_LENGTH))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5408 + ] (const_int DEFAULT_INSN_LENGTH))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5409 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5410 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5411 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5412 +;; The default attributes for 'asm' statements. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5413 +;; The default length is the longest possible single 6809 instruction, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5414 +;; which is 5 bytes. GCC will automatically multiply this by the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5415 +;; number of real insns contained in an asm statement. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5416 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5417 +(define_asm_attributes |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5418 + [(set_attr "length" "5") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5419 + (set_attr "type" "unknown")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5420 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5421 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5422 +;; An attribute for the number of cycles that it takes an instruction |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5423 +;; to execute. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5424 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5425 +(define_attr "cycles" "" (const_int DEFAULT_INSN_CYCLES)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5426 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5427 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5428 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5429 +;;- Instruction patterns. When multiple patterns apply, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5430 +;;- the first one in the file is chosen. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5431 +;;- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5432 +;;- See file "rtl.def" for documentation on define_insn, match_*, et. al. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5433 +;;- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5434 +;;- Note: NOTICE_UPDATE_CC in m6809.h handles condition code updates |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5435 +;;- for most instructions. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5436 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5437 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5438 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5439 +;;- Test |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5440 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5441 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5442 +;; cmpx is 3 bytes, not 4 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5443 +(define_insn "*tsthi_x" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5444 + [(set (cc0) (match_operand:HI 0 "register_operand_x" "v"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5445 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5446 + "cmpx\t#0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5447 + [(set_attr "length" "3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5448 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5449 +;; subd #0 is 3 bytes, better than cmpd #0 which is 4 bytes |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5450 +(define_insn "*tsthi_d" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5451 + [(set (cc0) (match_operand:HI 0 "register_operand_d" "d"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5452 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5453 + "subd\t#0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5454 + [(set_attr "length" "3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5455 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5456 +(define_insn "*tsthi" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5457 + [(set (cc0) (match_operand:HI 0 "register_operand" "a"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5458 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5459 + "cmp%0\t#0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5460 + [(set_attr "length" "4")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5461 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5462 +(define_insn "*bitqi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5463 + [(set (cc0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5464 + (and:QI (match_operand:QI 0 "register_operand" "%q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5465 + (match_operand:QI 1 "general_operand" "mi")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5466 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5467 + "bit%0\t%1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5468 + [(set_attr "length" "3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5469 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5470 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5471 +(define_insn "tstqi" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5472 + [(set (cc0) (match_operand:QI 0 "nonimmediate_operand" "q,mt"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5473 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5474 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5475 + tst%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5476 + tst\t%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5477 + [(set_attr "length" "1,3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5478 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5479 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5480 +;;- Compare instructions |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5481 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5482 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5483 +;; - cmphi for register to memory or register compares |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5484 +(define_insn "cmphi" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5485 + [(set (cc0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5486 + (compare |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5487 + (match_operand:HI 0 "general_operand" "da, mi, ??Ud") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5488 + (match_operand:HI 1 "general_operand" "mi, da, dU")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5489 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5490 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5491 + if ((REG_P (operands[0])) && (REG_P (operands[1]))) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5492 + output_asm_insn ("pshs\t%1\t;cmphi: R:%1 with R:%0", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5493 + return "cmp%0\t,s++\t;cmphi:"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5494 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5495 + if (GET_CODE (operands[0]) == REG) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5496 + return "cmp%0\t%1\t;cmphi:"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5497 + else { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5498 + cc_status.flags |= CC_REVERSED; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5499 + return "cmp%1\t%0\t;cmphi:(R)"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5500 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5501 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5502 + [(set_attr "length" "5,5,7")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5503 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5504 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5505 +(define_insn "cmpqi" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5506 + [(set (cc0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5507 + (compare (match_operand:QI 0 "whole_general_operand" "q,q, q,O,mt,K") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5508 + (match_operand:QI 1 "whole_general_operand" "O,mt,K,q,q, q")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5509 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5510 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5511 + if (REG_P (operands[0]) && !M_REG_P (operands[0])) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5512 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5513 + if (operands[1] == const0_rtx) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5514 + return "tst%0\t;cmpqi:(ZERO)"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5515 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5516 + return "cmp%0\t%1\t;cmpqi:"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5517 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5518 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5519 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5520 + cc_status.flags |= CC_REVERSED; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5521 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5522 + if (operands[0] == const0_rtx) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5523 + return "tst%1\t;cmpqi:(RZERO)"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5524 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5525 + return "cmp%1\t%0\t;cmpqi:(R)"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5526 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5527 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5528 + [(set_attr "length" "1,3,2,1,3,2")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5529 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5530 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5531 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5532 +;;- Compare/branch pattern |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5533 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5534 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5535 +(define_expand "cbranchhi4" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5536 + [(set (cc0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5537 + (compare |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5538 + (match_operand:HI 1 "general_operand" "da, mi, ??Ud") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5539 + (match_operand:HI 2 "general_operand" "mi, da, dU"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5540 + (set (pc) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5541 + (if_then_else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5542 + (match_operator 0 "ordered_comparison_operator" [(cc0) (const_int 0)]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5543 + (label_ref (match_operand 3 "" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5544 + (pc)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5545 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5546 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5547 +) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5548 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5549 +(define_expand "cbranchqi4" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5550 + [(set (cc0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5551 + (compare |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5552 + (match_operand:QI 1 "whole_general_operand" "q,q, q,O,mt,K") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5553 + (match_operand:QI 2 "whole_general_operand" "O,mt,K,q,q, q"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5554 + (set (pc) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5555 + (if_then_else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5556 + (match_operator 0 "ordered_comparison_operator" [(cc0) (const_int 0)]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5557 + (label_ref (match_operand 3 "" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5558 + (pc)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5559 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5560 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5561 +) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5562 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5563 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5564 +;;- Move |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5565 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5566 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5567 +; this looks good (obviously not finished) but I still see 'movsi' |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5568 +; places in udivsi3 where it's broken |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5569 +; (define_insn "pushsi1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5570 +; [(set (mem:SI (pre_dec (reg:HI HARD_S_REGNUM))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5571 +; (match_operand:SI 0 "general_operand" "o")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5572 +; (set (reg:HI HARD_S_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5573 +; (plus:HI (reg:HI HARD_S_REGNUM) (const_int -4))) ] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5574 +; "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5575 +; "; pushsi %0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5576 +; [(set_attr "length" "12")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5577 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5578 +; (define_insn "popsi1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5579 +; [(set (match_operand:SI 0 "general_operand" "=o") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5580 +; (mem:SI (post_inc (reg:HI HARD_S_REGNUM)))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5581 +; (set (reg:HI HARD_S_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5582 +; (plus:HI (reg:HI HARD_S_REGNUM) (const_int 4))) ] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5583 +; "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5584 +; "; popsi %0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5585 +; [(set_attr "length" "12")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5586 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5587 +; (define_insn "movsi" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5588 +; [(set (match_operand:SI 0 "nonimmediate_operand" "=o") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5589 +; (match_operand:SI 1 "general_operand" " oi"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5590 +; "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5591 +; "; movsi %0 <- %1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5592 +; [(set_attr "length" "1")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5593 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5594 +; this doesn't work |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5595 +; (define_expand "movsi" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5596 +; [(parallel [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5597 +; (set (match_operand:SI 0 "nonimmediate_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5598 +; (match_operand:SI 1 "general_operand" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5599 +; (clobber (match_scratch:HI 2 ""))])] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5600 +; "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5601 +; { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5602 +; rtx insn; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5603 +; if (STACK_PUSH_P (operands[0]) || STACK_POP_P (operands[1])) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5604 +; { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5605 +; REG_NOTES (insn) = alloc_EXPR_LIST (REG_INC, stack_pointer_rtx, REG_NOTES (insn)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5606 +; } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5607 +; insn = emit_move_multi_word (SImode, operands[0], operands[1]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5608 +; DONE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5609 +; }) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5610 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5611 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5612 +(define_expand "movhi" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5613 + [(set (match_operand:HI 0 "nonimmediate_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5614 + (match_operand:HI 1 "general_operand" ""))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5615 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5616 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5617 + /* One of the ops has to be in a register prior to reload */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5618 + if (!register_operand (operand0, HImode) && |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5619 + !register_operand (operand1, HImode)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5620 + operands[1] = copy_to_mode_reg (HImode, operand1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5621 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5622 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5623 +;;; Try a splitter to handle failure cases where we try to move |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5624 +;;; an immediate constant (zero usually) directly to memory. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5625 +;;; This absolutely requires an intermediate register. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5626 +(define_split |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5627 + [(set (match_operand:HI 0 "memory_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5628 + (match_operand:HI 1 "immediate_operand" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5629 + (clobber (match_operand:HI 2 "register_operand" ""))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5630 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5631 + [(set (match_dup 2) (match_dup 1)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5632 + (set (match_dup 0) (match_dup 2))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5633 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5634 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5635 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5636 +;;; This would be a nice method for loading from a word array, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5637 +;;; but it is never generated because the combiner cannot merge |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5638 +;;; more than 3 instructions (there are four here). This is |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5639 +;;; perhaps better done via a peephole. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5640 +(define_insn "*movhi_array_load" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5641 + [(set (match_operand:HI 0 "nonimmediate_operand" "=da") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5642 + (mem:HI (plus:HI (ashift:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "%B")) (const_int 1)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5643 + (match_operand:HI 2 "immediate_operand" "i")))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5644 + (clobber (match_scratch:HI 3 "=X"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5645 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5646 + "ldx\t%2\;abx\;abx\;ld%0\t,x" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5647 + [(set_attr "length" "7")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5648 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5649 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5650 +;;; Optimize the move of a byte to the stack using the pshs instruction |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5651 +;;; instead of a store with pre-increment. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5652 +(define_insn "movhi_push" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5653 + [(set (match_operand:HI 0 "push_operand" "=m") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5654 + (match_operand:HI 1 "register_operand" "U"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5655 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5656 + "pshs\t%1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5657 + [(set_attr "length" "2")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5658 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5659 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5660 +(define_insn "*movhi_pic_symbolref" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5661 + [(set (match_operand:HI 0 "register_operand" "=a") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5662 + (match_operand:HI 1 "symbolic_operand" ""))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5663 + "flag_pic" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5664 + "lea%0\t%c1,pcr" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5665 + [(set_attr "length" "4")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5666 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5667 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5668 +(define_insn "*movhi_1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5669 + [(set (match_operand:HI 0 "nonimmediate_operand" "=a,d,a,ad,mu") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5670 + (match_operand:HI 1 "general_operand" " a,a,d,miu,ad"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5671 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5672 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5673 + lea%0\t,%1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5674 + tfr\t%1,%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5675 + tfr\t%1,%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5676 + ld%0\t%1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5677 + st%1\t%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5678 + [(set_attr "length" "2,2,2,*,*")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5679 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5680 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5681 +;;; Generated by the combiner to merge an address calculation with |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5682 +;;; a byte load. We can use the 'abx' instruction here. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5683 +(define_insn "*movqi_array_load" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5684 + [(set (match_operand:QI 0 "nonimmediate_operand" "=q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5685 + (mem:QI (plus:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "%B")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5686 + (match_operand:HI 2 "immediate_operand" "i")))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5687 + (clobber (match_scratch:HI 3 "=X"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5688 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5689 + "ldx\t%2\;abx\;ld%0\t,x" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5690 + [(set_attr "length" "6")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5691 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5692 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5693 +;;; Optimize the move of a byte to the stack using the pshs instruction |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5694 +;;; instead of a store with pre-increment. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5695 +(define_insn "movqi_push" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5696 + [(set (match_operand:QI 0 "push_operand" "=m") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5697 + (match_operand:QI 1 "register_operand" " q"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5698 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5699 + "pshs\t%1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5700 + [(set_attr "length" "2")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5701 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5702 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5703 +;;; Optimize the move of a byte from the stack using the puls instruction |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5704 +;;; instead of a store with post-decrement. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5705 +(define_insn "movqi_pop" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5706 + [(set (match_operand:QI 0 "register_operand" "=q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5707 + (match_operand:QI 1 "pop_operand" "m"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5708 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5709 + "puls\t%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5710 + [(set_attr "length" "2")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5711 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5712 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5713 +;;- load low byte of 16-bit data into 8-bit register/memory |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5714 +(define_insn "*mov_lsb" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5715 + [(set (match_operand:QI 0 "nonimmediate_operand" "=q,q,q,m,!q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5716 + (subreg:QI (match_operand:HI 1 "general_operand" "d,m,a,d, U") 1))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5717 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5718 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5719 + \t;movlsbqihi: D->B |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5720 + ld%0\t%L1\t;movlsbqihi: msb:%1 -> R:%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5721 + tfr\t%1,d\t;movlsbqihi: R:%1 -> R:%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5722 + stb\t%0\t;movlsbqihi: R:%1 -> %0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5723 + pshs\t%1\t;movlsbqihi: R:%1 -> R:%0\;leas\t1,s\;puls\t%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5724 + [(set_attr "length" "0,*,2,*,6")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5725 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5726 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5727 +;;- load high byte of 16-bit data into 8-bit register/memory |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5728 +(define_insn "*mov_msb" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5729 + [(set (match_operand:QI 0 "nonimmediate_operand" "=q,q,q,q,m,!q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5730 + (subreg:QI (match_operand:HI 1 "general_operand" "d,O,a,m,d, U") 0))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5731 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5732 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5733 + tfr\ta,b\t;movmsbqihi: D->B |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5734 + clr%0\t\t;movmsbqihi: ZERO -> R:%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5735 + tfr\t%1,d\t;movmsbqihi: R:%1 -> R:%0\;tfr\ta,b |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5736 + ld%0\t%L1\t;movmsbqihi: lsb:%1 -> R:%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5737 + sta\t%0\t;movmsbqihi: R:%1 -> %0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5738 + pshs\t%1\t;movmsbqihi: R:%1 -> R:%0\;puls\t%0\;leas\t1,s" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5739 + [(set_attr "length" "2,1,4,*,*,6")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5740 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5741 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5742 +(define_insn "*movqi_boolean" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5743 + [(set (reg:QI HARD_Z_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5744 + (match_operand:QI 0 "general_operand" "q,O,i,m"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5745 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5746 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5747 + tst%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5748 + andcc\t#~4 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5749 + orcc\t#4 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5750 + tst\t%0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5751 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5752 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5753 +(define_insn "movqi" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5754 + [(set (match_operand:QI 0 "nonimmediate_operand" "=q,q,m,q,m,q,z") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5755 + (match_operand:QI 1 "general_operand" " q,O,O,mi,q,z,q"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5756 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5757 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5758 + tfr\t%1,%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5759 + clr%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5760 + clr\t%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5761 + ld%0\t%1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5762 + st%1\t%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5763 + tfr\tcc,%0\;and%0\t#4 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5764 + tst%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5765 + [(set_attr "length" "2,1,3,*,*,4,1")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5766 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5767 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5768 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5769 +;;- Swap registers |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5770 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5771 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5772 +; Note: 8-bit swap is never needed so it is not defined. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5773 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5774 +(define_insn "swaphi" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5775 + [(set (match_operand:HI 0 "register_operand" "+r") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5776 + (match_operand:HI 1 "register_operand" "+r")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5777 + (set (match_dup 1) (match_dup 0))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5778 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5779 + "exg\t%1,%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5780 + [(set_attr "length" "2") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5781 + (set (attr "cycles") (const_int EXG_CYCLES))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5782 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5783 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5784 +(define_insn "bswaphi2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5785 + [(set (match_operand:HI 0 "register_operand" "=d") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5786 + (bswap:HI (match_operand:HI 1 "register_operand" "0")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5787 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5788 + "exg\ta,b" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5789 + [(set_attr "length" "2")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5790 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5791 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5792 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5793 +;;- Extension and truncation insns. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5794 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5795 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5796 +(define_insn "extendqihi2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5797 + [(set (match_operand:HI 0 "register_operand" "=d") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5798 + (sign_extend:HI (match_operand:QI 1 "general_operand" "B")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5799 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5800 + "sex\t\t;extendqihi2: R:%1 -> R:%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5801 + [(set_attr "length" "1")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5802 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5803 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5804 +(define_insn "zero_extendqihi2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5805 + [(set (match_operand:HI 0 "register_operand" "=d") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5806 + (zero_extend:HI (match_operand:QI 1 "general_operand" "B")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5807 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5808 + "clra\t\t;zero_extendqihi: R:%1 -> R:%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5809 + [(set_attr "length" "1")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5810 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5811 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5812 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5813 +;;- All kinds of add instructions. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5814 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5815 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5816 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5817 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5818 +;; gcc's automatic version of addsi3 doesn't know about adcb,adca |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5819 +;; so it is MUCH less efficient. Define this one ourselves. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5820 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5821 +;; TODO - can't always get 'd' for the clobber... allow other registers |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5822 +;; as well and use exg d,R ... exg R,d around the code sequence to |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5823 +;; use others, at a price. Also consider libcall for this when |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5824 +;; optimizing for size. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5825 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5826 +(define_insn "addsi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5827 + [(set (match_operand:SI 0 "nonimmediate_operand" "=o") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5828 + (plus:SI (match_operand:SI 1 "general_operand" "%o") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5829 + (match_operand:SI 2 "general_operand" " oi"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5830 + (clobber (match_scratch:HI 3 "=d"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5831 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5832 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5833 + m6809_output_addsi3 (PLUS, operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5834 + return ""; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5835 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5836 + [(set_attr "length" "21")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5837 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5838 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5839 +; Increment of a 16-bit MEM by 1 can be done without a register. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5840 +(define_insn "*addhi_mem_1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5841 + [(set (match_operand:HI 0 "memory_operand" "=m") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5842 + (plus:HI (match_operand:HI 1 "memory_operand" "0") (const_int 1)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5843 + "GET_CODE (XEXP (operands[0], 0)) == SYMBOL_REF" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5844 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5845 + rtx xoperands[2]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5846 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5847 + xoperands[0] = operands[0]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5848 + xoperands[1] = adjust_address (operands[0], QImode, 1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5849 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5850 + output_asm_insn ("inc\t%1", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5851 + output_asm_insn ("bne\t__IL%=", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5852 + output_asm_insn ("inc\t%0\;__IL%=:", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5853 + return ""; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5854 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5855 + [(set_attr "length" "7")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5856 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5857 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5858 +; Decrement of a 16-bit MEM by 1 can be done without a register. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5859 +(define_insn "*addhi_mem_minus1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5860 + [(set (match_operand:HI 0 "memory_operand" "=m") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5861 + (plus:HI (match_operand:HI 1 "memory_operand" "0") (const_int -1)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5862 + "GET_CODE (XEXP (operands[0], 0)) == SYMBOL_REF" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5863 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5864 + rtx xoperands[2]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5865 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5866 + xoperands[0] = operands[0]; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5867 + xoperands[1] = adjust_address (operands[0], QImode, 1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5868 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5869 + output_asm_insn ("tst\t%1", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5870 + output_asm_insn ("bne\t__IL%=", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5871 + output_asm_insn ("dec\t%0", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5872 + output_asm_insn ("__IL%=:", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5873 + output_asm_insn ("dec\t%1", xoperands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5874 + return ""; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5875 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5876 + [(set_attr "length" "7")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5877 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5878 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5879 +; Allow the addition of an 8-bit quantity to a 16-bit quantity |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5880 +; using the LEAX B,Y addressing mode, where X and Y are both |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5881 +; index registers. This will only get generated via the peephole |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5882 +; which removes a sign extension. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5883 +(define_insn "*addhi_b" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5884 + [(set (match_operand:HI 0 "index_register_operand" "=a") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5885 + (plus:HI(match_operand:HI 1 "index_register_operand" "%a") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5886 + (match_operand:QI 2 "register_operand" "q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5887 + ))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5888 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5889 + "lea%0\t%2,%1\t;addhi_b: R:%0 = R:%2 + R:%1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5890 + [(set_attr "length" "*")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5891 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5892 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5893 +; Splitter for addhi pattern #5 below |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5894 +(define_split |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5895 + [(set (match_operand:HI 0 "index_register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5896 + (plus:HI (match_dup 0) (match_operand:HI 1 "memory_operand" "")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5897 + "reload_completed" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5898 + [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5899 + (parallel [(set (match_dup 0) (reg:HI HARD_D_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5900 + (set (reg:HI HARD_D_REGNUM) (match_dup 0))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5901 + (set (reg:HI HARD_D_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5902 + (plus:HI (reg:HI HARD_D_REGNUM) (match_dup 1))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5903 + (parallel [(set (match_dup 0) (reg:HI HARD_D_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5904 + (set (reg:HI HARD_D_REGNUM) (match_dup 0))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5905 + ] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5906 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5907 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5908 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5909 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5910 +; Splitter for addhi pattern #7 below |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5911 +(define_split |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5912 + [(set (match_operand:HI 0 "index_register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5913 + (plus:HI (match_dup 0) (match_operand:HI 1 "index_register_operand" "")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5914 + "reload_completed" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5915 + [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5916 + (parallel [(set (match_dup 1) (reg:HI HARD_D_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5917 + (set (reg:HI HARD_D_REGNUM) (match_dup 1))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5918 + (set (match_dup 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5919 + (plus:HI (reg:HI HARD_D_REGNUM) (match_dup 0))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5920 + (parallel [(set (match_dup 1) (reg:HI HARD_D_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5921 + (set (reg:HI HARD_D_REGNUM) (match_dup 1))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5922 + ] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5923 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5924 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5925 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5926 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5927 +; TODO - this is ugly. During RTL generation, we don't know what registers |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5928 +; are available, so the multiple-insn sequences can only be solved |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5929 +; via 'define_split's during matching. See andhi3 for an example. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5930 +; Keep the constraints with ? modifiers to help reload pick the right |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5931 +; registers. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5932 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5933 +; The forms are: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5934 +; 1. D += D, expand this into a shift instead. (rtx costs should be corrected |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5935 +; to avoid this even happening...) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5936 +; 2. D += U, require U to be pushed to memory. (Lots of patterns do this |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5937 +; now, is this a better way?) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5938 +; 3. Best choice: 'addd' |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5939 +; 4. Next best choice: 'lea' |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5940 +; 5. Hybrid of 3 and 4 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5941 +; 6. Same as 4, not bad |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5942 +; 7. BAD, no D register at all |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5943 +; 8. 'lea', as good as 4. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5944 +(define_insn "addhi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5945 + [(set (match_operand:HI 0 "nonimmediate_operand" "=d, d, d, a,?a, a,???T,a") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5946 + (plus:HI(match_operand:HI 1 "add_general_operand" "%0, 0, 0, d, 0, a, 0, a") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5947 + (match_operand:HI 2 "general_operand" " 0, !U, mi, a, m, d, T, i") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5948 + ))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5949 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5950 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5951 + lslb\t\t;addhi: R:%0 += R:%2\;rola\t\t;also R:%0 *= 2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5952 + pshs\t%2\t;addhi: R:%0 += R:%2\;add%0\t,s++ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5953 + add%0\t%2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5954 + lea%0\t%1,%2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5955 + # |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5956 + lea%0\t%2,%1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5957 + # |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5958 + lea%0\t%a2,%1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5959 + [(set_attr "length" "2,6,*,*,7,*,7,*")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5960 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5961 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5962 +(define_insn "addqi3_carry" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5963 + [(set (match_operand:QI 0 "nonimmediate_operand" "=q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5964 + (unspec:QI [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5965 + (match_operand:QI 1 "whole_general_operand" "%0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5966 + (match_operand:QI 2 "whole_general_operand" "tmi")] UNSPEC_ADD_CARRY))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5967 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5968 + "adc%0\t%2\t;addqi_carry: R:%0 += %2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5969 + [(set_attr "length" "*")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5970 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5971 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5972 +; TODO: specifying 'A' for the first constraint, to force into the A register |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5973 +; is not working because of the way registers are currently set up. This will |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5974 +; take some work to get right. Thus the second alternative as a backup. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5975 +(define_insn "addqi3_decimal" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5976 + [(set (match_operand:QI 0 "nonimmediate_operand" "=A,?q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5977 + (unspec:QI [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5978 + (match_operand:QI 1 "general_operand" "%0,0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5979 + (match_operand:QI 2 "general_operand" "mi,mi")] UNSPEC_ADD_DECIMAL))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5980 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5981 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5982 + adda\t%2\;daa |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5983 + tfr\t%0,a\;adda\t%2\;daa\;tfr\ta,%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5984 + [(set_attr "length" "5,9")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5985 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5986 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5987 +(define_insn "addqi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5988 + [(set (match_operand:QI 0 "nonimmediate_operand" "=q,q,q,m,m,q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5989 + (plus:QI (match_operand:QI 1 "whole_general_operand" "%0,0,0,0,0,0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5990 + (match_operand:QI 2 "whole_general_operand" " 0,I,N,I,N,mi")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5991 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5992 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5993 + asl%0\t\t;addqi: R:%0 = R:%0 + R:%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5994 + inc%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5995 + dec%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5996 + inc\t%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5997 + dec\t%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5998 + add%0\t%2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
5999 + [(set_attr "length" "1,1,1,3,3,*")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6000 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6001 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6002 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6003 +;;- Subtract instructions. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6004 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6005 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6006 +(define_insn "subsi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6007 + [(set (match_operand:SI 0 "nonimmediate_operand" "=o") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6008 + (minus:SI (match_operand:SI 1 "general_operand" " o") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6009 + (match_operand:SI 2 "general_operand" " oi"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6010 + (clobber (match_scratch:HI 3 "=d"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6011 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6012 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6013 + m6809_output_addsi3 (MINUS, operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6014 + return ""; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6015 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6016 + [(set_attr "length" "21")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6017 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6018 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6019 +(define_insn "subhi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6020 + [(set (match_operand:HI 0 "register_operand" "=d, d, a") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6021 + (minus:HI (match_operand:HI 1 "register_operand" "0, 0, 0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6022 + (match_operand:HI 2 "general_operand" "mi, ?U,n")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6023 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6024 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6025 + sub%0\t%2\t;subhi: R:%0 -= %2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6026 + pshs\t%2\t;subhi: R:%0 -= R:%2\;sub%0\t,s++ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6027 + lea%0\t%n2,%1\t;subhi: R:%0 = R:%1 + %n2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6028 + [(set_attr "length" "*,5,3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6029 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6030 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6031 +(define_insn "subqi3_carry" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6032 + [(set (match_operand:QI 0 "register_operand" "=q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6033 + (unspec:QI [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6034 + (match_operand:QI 1 "whole_general_operand" "%0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6035 + (match_operand:QI 2 "whole_general_operand" "tmi")] UNSPEC_SUB_CARRY))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6036 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6037 + "sbc%0\t%2\t;subqi_carry: R:%0 += %2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6038 + [(set_attr "length" "*")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6039 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6040 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6041 +(define_insn "subqi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6042 + [(set (match_operand:QI 0 "register_operand" "=q, q, !q, !q, q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6043 + (minus:QI (match_operand:QI 1 "whole_register_operand" "0, 0, I, tmn, 0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6044 + (match_operand:QI 2 "whole_general_operand" "I, mi, 0, 0, t")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6045 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6046 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6047 + dec%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6048 + sub%0\t%2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6049 + dec%0\;neg%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6050 + sub%0\t%1\;neg%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6051 + sub%0\t%2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6052 + [(set_attr "length" "1,3,2,4,3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6053 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6054 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6055 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6056 +;;- Multiply instructions. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6057 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6058 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6059 +; TODO - merge these two instructions, using 'extend_operator' to match |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6060 +; either signed or zero extension. Everything else is the same. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6061 +(define_insn "mulqihi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6062 + [(set (match_operand:HI 0 "register_operand" "=d") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6063 + (mult:HI (sign_extend:HI (match_operand:QI 1 "general_operand" "%q")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6064 + (match_operand:QI 2 "general_operand" "tmK")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6065 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6066 + "lda\t%2\t;mulqihi3\;mul" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6067 + [(set_attr "length" "3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6068 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6069 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6070 +(define_insn "umulqihi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6071 + [(set (match_operand:HI 0 "register_operand" "=d") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6072 + (mult:HI (zero_extend:HI (match_operand:QI 1 "general_operand" "%q")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6073 + (match_operand:QI 2 "general_operand" "tmK")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6074 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6075 + "lda\t%2\t;umulqihi3\;mul" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6076 + [(set_attr "length" "3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6077 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6078 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6079 +; Expand a 16x16 multiplication into either a libcall or a shift. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6080 +; If the second operand is a small constant, use the above form. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6081 +; Otherwise, do a libcall. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6082 +(define_expand "mulhi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6083 + [(set (match_operand:HI 0 "nonimmediate_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6084 + (mult:HI (match_operand:HI 1 "general_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6085 + (match_operand:HI 2 "nonmemory_operand" "")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6086 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6087 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6088 + emit_libcall_insns (HImode, "mulhi3", operands, 2); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6089 + DONE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6090 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6091 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6092 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6093 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6094 +;;- Divide instructions. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6095 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6096 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6097 +(define_expand "divhi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6098 + [(set (match_operand:HI 0 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6099 + (div:HI (match_operand:HI 1 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6100 + (match_operand:HI 2 "register_operand" "")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6101 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6102 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6103 + emit_libcall_insns (HImode, "divhi3", operands, 2); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6104 + DONE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6105 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6106 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6107 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6108 +(define_expand "divqi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6109 + [(set (match_operand:QI 0 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6110 + (div:QI (match_operand:QI 1 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6111 + (match_operand:QI 2 "register_operand" "")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6112 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6113 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6114 + emit_libcall_insns (QImode, "divqi3", operands, 2); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6115 + DONE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6116 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6117 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6118 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6119 +(define_expand "udivhi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6120 + [(set (match_operand:HI 0 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6121 + (udiv:HI (match_operand:HI 1 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6122 + (match_operand:HI 2 "register_operand" "")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6123 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6124 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6125 + emit_libcall_insns (HImode, "udivhi3", operands, 2); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6126 + DONE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6127 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6128 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6129 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6130 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6131 +;;- mod |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6132 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6133 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6134 +(define_expand "modhi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6135 + [(set (match_operand:HI 0 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6136 + (mod:HI (match_operand:HI 1 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6137 + (match_operand:HI 2 "register_operand" "")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6138 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6139 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6140 + emit_libcall_insns (HImode, "modhi3", operands, 2); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6141 + DONE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6142 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6143 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6144 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6145 +(define_expand "modqi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6146 + [(set (match_operand:QI 0 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6147 + (mod:QI (match_operand:QI 1 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6148 + (match_operand:QI 2 "register_operand" "")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6149 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6150 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6151 + emit_libcall_insns (QImode, "modqi3", operands, 2); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6152 + DONE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6153 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6154 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6155 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6156 +(define_expand "umodhi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6157 + [(set (match_operand:HI 0 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6158 + (umod:HI (match_operand:HI 1 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6159 + (match_operand:HI 2 "register_operand" "")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6160 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6161 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6162 + emit_libcall_insns (HImode, "umodhi3", operands, 2); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6163 + DONE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6164 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6165 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6166 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6167 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6168 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6169 +;;- and, or, xor common patterns |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6170 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6171 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6172 +; Split a bitwise HImode into two QImode instructions, with one of |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6173 +; the sources in a pushable register. The register is pushed onto |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6174 +; the stack and memory pop operands (,s+) are used in the QI forms. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6175 +(define_split |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6176 + [(set (match_operand:HI 0 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6177 + (match_operator:HI 3 "logical_bit_operator" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6178 + [(match_operand:HI 1 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6179 + (match_operand:HI 2 "register_operand" "")]))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6180 + "reload_completed" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6181 + [(set (mem:HI (pre_dec:HI (reg:HI HARD_S_REGNUM))) (match_dup 2)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6182 + (set (reg:QI HARD_A_REGNUM) (match_op_dup:QI 3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6183 + [(reg:QI HARD_A_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6184 + (mem:QI (post_inc:QI (reg:HI HARD_S_REGNUM)))])) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6185 + (set (reg:QI HARD_D_REGNUM) (match_op_dup:QI 3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6186 + [(reg:QI HARD_D_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6187 + (mem:QI (post_inc:QI (reg:HI HARD_S_REGNUM)))])) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6188 + (use (reg:QI HARD_A_REGNUM))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6189 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6190 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6191 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6192 +; Split a bitwise HImode into two QImode instructions, with one |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6193 +; of the sources being a (MEM (MEM (...)); i.e. an indirect memory |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6194 +; reference. This requires dereferencing the pointer into a |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6195 +; temporary register (X), which must be saved/restored around the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6196 +; compute instructions. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6197 +(define_split |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6198 + [(set (match_operand:HI 0 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6199 + (match_operator:HI 3 "logical_bit_operator" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6200 + [(match_operand:HI 1 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6201 + (mem:HI (match_operand:HI 2 "memory_operand" ""))]))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6202 + "reload_completed" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6203 + [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6204 + (set (mem:HI (pre_dec:HI (reg:HI HARD_S_REGNUM))) (match_dup 4)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6205 + (set (match_dup 4) (match_dup 2)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6206 + (set (match_dup 4) (mem:HI (match_dup 4))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6207 + (set (reg:QI HARD_A_REGNUM) (match_op_dup:QI 3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6208 + [(reg:QI HARD_A_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6209 + (mem:QI (post_inc:QI (match_dup 4)))])) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6210 + (set (reg:QI HARD_D_REGNUM) (match_op_dup:QI 3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6211 + [(reg:QI HARD_D_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6212 + (mem:QI (post_inc:QI (match_dup 4)))])) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6213 + (use (reg:QI HARD_A_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6214 + (set (match_dup 4) (mem:HI (post_inc:HI (reg:HI HARD_S_REGNUM)))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6215 + ] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6216 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6217 + /* Use X for a temporary index register */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6218 + operands[4] = gen_rtx_REG (HImode, HARD_X_REGNUM); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6219 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6220 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6221 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6222 +; Split a bitwise HImode into two QImode instructions. This is |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6223 +; the common case. This handles splitting when neither of the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6224 +; above two cases applies. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6225 +(define_split |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6226 + [(set (match_operand:HI 0 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6227 + (match_operator:HI 3 "logical_bit_operator" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6228 + [(match_operand:HI 1 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6229 + (match_operand:HI 2 "general_operand" "")]))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6230 + "reload_completed" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6231 + [(set (reg:QI HARD_A_REGNUM) (match_op_dup:QI 3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6232 + [(reg:QI HARD_A_REGNUM) (match_dup 4)])) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6233 + (set (reg:QI HARD_D_REGNUM) (match_op_dup:QI 3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6234 + [(reg:QI HARD_D_REGNUM) (match_dup 5)])) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6235 + (use (reg:QI HARD_A_REGNUM))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6236 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6237 + if (GET_CODE (operands[2]) == CONST_INT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6238 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6239 + operands[4] = gen_rtx_const_high (operands[2]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6240 + operands[5] = gen_rtx_const_low (operands[2]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6241 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6242 + else if ((GET_CODE (operands[2]) == MEM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6243 + && (GET_CODE (XEXP (operands[2], 0)) == MEM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6244 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6245 + FAIL; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6246 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6247 + else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6248 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6249 + operands[4] = gen_highpart (QImode, operands[2]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6250 + operands[5] = gen_lowpart (QImode, operands[2]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6251 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6252 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6253 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6254 +; Below are the specific cases for each of the operators. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6255 +; The QImode versions are the simplest and can be implemented |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6256 +; directly on the hardware. The HImode cases are all output |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6257 +; using one of the above splitting techniques. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6258 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6259 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6260 +;;- and |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6261 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6262 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6263 +(define_insn "andhi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6264 + [(set (match_operand:HI 0 "register_operand" "=d") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6265 + (and:HI (match_operand:HI 1 "register_operand" "%0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6266 + (match_operand:HI 2 "general_operand" "mnU")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6267 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6268 + "#") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6269 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6270 +;; it is not clear that this is correct |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6271 +(define_insn "*andqi_2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6272 + [(set |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6273 + (match_operand:QI 0 "register_operand" "=q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6274 + (and:QI (match_operand:QI 1 "register_operand" "q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6275 + (match_operand 2 "const_int_operand" "i")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6276 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6277 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6278 + if (GET_CODE (operands[2]) == CONST_INT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6279 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6280 + operands[3] = GEN_INT(INTVAL(operands[2]) & 0xff); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6281 + return "and%0 %3"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6282 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6283 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6284 + return "and%0 %2"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6285 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6286 + [(set_attr "length" "2")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6287 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6288 +(define_insn "andqi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6289 + [(set (match_operand:QI 0 "register_operand" "=q,q,q,qc") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6290 + (and:QI (match_operand:QI 1 "whole_register_operand" "%0,0,0,0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6291 + (match_operand:QI 2 "whole_general_operand" " O,N,m,i")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6292 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6293 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6294 + clr%0\t;andqi(ZERO) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6295 + \t;andqi(-1) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6296 + and%0\t%2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6297 + and%0\t%2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6298 + [(set_attr "length" "1,0,3,2")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6299 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6300 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6301 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6302 +;;- or |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6303 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6304 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6305 +(define_insn "iorhi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6306 + [(set (match_operand:HI 0 "register_operand" "=d") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6307 + (ior:HI (match_operand:HI 1 "register_operand" "%0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6308 + (match_operand:HI 2 "general_operand" "mnU")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6309 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6310 + "#") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6311 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6312 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6313 +(define_insn "iorqi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6314 + [(set (match_operand:QI 0 "register_operand" "=q,q, qc") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6315 + (ior:QI (match_operand:QI 1 "whole_register_operand" "%0,0, 0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6316 + (match_operand:QI 2 "whole_general_operand" " O,m,i")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6317 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6318 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6319 + \t;iorqi(ZERO) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6320 + or%0\t%2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6321 + or%0\t%2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6322 + [(set_attr "length" "0,3,2")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6323 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6324 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6325 +;;- xor |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6326 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6327 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6328 +(define_insn "xorhi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6329 + [(set (match_operand:HI 0 "register_operand" "=d") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6330 + (xor:HI (match_operand:HI 1 "register_operand" "%0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6331 + (match_operand:HI 2 "general_operand" "mnU")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6332 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6333 + "#") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6334 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6335 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6336 +(define_insn "xorqi3" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6337 + [(set (match_operand:QI 0 "register_operand" "=q,q,q,q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6338 + (xor:QI (match_operand:QI 1 "whole_register_operand" "%0,0,0,0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6339 + (match_operand:QI 2 "whole_general_operand" " O,N,m,i")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6340 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6341 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6342 + \t;xorqi(ZERO) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6343 + com%0\t;xorqi(-1) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6344 + eor%0\t%2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6345 + eor%0\t%2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6346 + [(set_attr "length" "0,1,3,2")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6347 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6348 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6349 +;;- Two's Complements |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6350 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6351 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6352 +(define_insn "neghi2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6353 + [(set (match_operand:HI 0 "nonimmediate_operand" "=d,!a") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6354 + (neg:HI (match_operand:HI 1 "general_operand" "0, 0")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6355 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6356 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6357 + nega\;negb\;sbca\t#0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6358 + exg\td,%0\;nega\;negb\;sbca\t#0\;exg\td,%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6359 + [(set_attr "length" "5,9")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6360 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6361 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6362 +(define_insn "negqi2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6363 + [(set (match_operand:QI 0 "nonimmediate_operand" "=q,m") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6364 + (neg:QI (match_operand:QI 1 "nonimmediate_operand" "0,0")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6365 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6366 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6367 + neg%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6368 + neg\t%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6369 + [(set_attr "length" "1,3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6370 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6371 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6372 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6373 +;;- One's Complements |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6374 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6375 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6376 +(define_insn "one_cmplhi2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6377 + [(set (match_operand:HI 0 "nonimmediate_operand" "=d,?tm,???a") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6378 + (not:HI (match_operand:HI 1 "general_operand" "0, 0, 0")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6379 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6380 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6381 + coma\;comb |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6382 + com\t%0\;com\t%L0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6383 + exg\td,%0\;coma\;comb\;exg\td,%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6384 + [(set_attr "length" "2,6,6")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6385 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6386 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6387 +(define_insn "one_cmplqi2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6388 + [(set (match_operand:QI 0 "nonimmediate_operand" "=q,m") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6389 + (not:QI (match_operand:QI 1 "nonimmediate_operand" "0,0")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6390 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6391 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6392 + com%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6393 + com\t%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6394 + [(set_attr "length" "1,3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6395 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6396 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6397 +;;- Shifts/rotates |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6398 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6399 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6400 +(define_code_iterator bit_code [ashift ashiftrt lshiftrt]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6401 +(define_code_attr bit_code_name [(ashift "ashl") (ashiftrt "ashr") (lshiftrt "lshr")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6402 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6403 +(define_mode_iterator bit_mode [QI HI]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6404 +(define_mode_attr bit_mode_name [(QI "qi3") (HI "hi3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6405 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6406 +;; Emit RTL for any shift (handles all 3 opcodes and 2 mode sizes) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6407 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6408 +(define_expand "<bit_code:bit_code_name><bit_mode:bit_mode_name>" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6409 + [(set (match_operand:bit_mode 0 "nonimmediate_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6410 + (bit_code:bit_mode (match_operand:bit_mode 1 "general_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6411 + (match_operand:bit_mode 2 "nonmemory_operand" "")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6412 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6413 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6414 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6415 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6416 +; Individual instructions implemented in the CPU. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6417 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6418 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6419 +(define_insn "*ashift1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6420 + [(set (match_operand:QI 0 "nonimmediate_operand" "=m,q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6421 + (ashift:QI (match_operand:QI 1 "general_operand" "0,0") (const_int 1)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6422 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6423 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6424 + asl\t%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6425 + asl%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6426 + [(set_attr "length" "3,1")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6427 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6428 +(define_insn "*lshiftrt1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6429 + [(set (match_operand:QI 0 "nonimmediate_operand" "=m,q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6430 + (lshiftrt:QI (match_operand:QI 1 "general_operand" "0,0") (const_int 1)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6431 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6432 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6433 + lsr\t%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6434 + lsr%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6435 + [(set_attr "length" "3,1")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6436 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6437 +(define_insn "*ashiftrt1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6438 + [(set (match_operand:QI 0 "nonimmediate_operand" "=m,q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6439 + (ashiftrt:QI (match_operand:QI 1 "general_operand" "0,0") (const_int 1)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6440 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6441 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6442 + asr\t%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6443 + asr%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6444 + [(set_attr "length" "3,1")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6445 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6446 +(define_insn "*rotate1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6447 + [(set (match_operand:QI 0 "nonimmediate_operand" "=m,q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6448 + (rotate:QI (match_operand:QI 1 "general_operand" "0,0") (const_int 1)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6449 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6450 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6451 + rol\t%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6452 + rol%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6453 + [(set_attr "length" "3,1")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6454 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6455 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6456 +(define_insn "*rotatert1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6457 + [(set (match_operand:QI 0 "nonimmediate_operand" "=m,q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6458 + (rotatert:QI (match_operand:QI 1 "general_operand" "0,0") (const_int 1)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6459 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6460 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6461 + ror\t%0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6462 + ror%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6463 + [(set_attr "length" "3,1")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6464 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6465 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6466 +; A shift by 8 for D reg can be optimized by just moving |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6467 +; between the A/B halves, and then zero/sign extending or |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6468 +; filling in zeroes. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6469 +; Because GCC does not understand that 'A' and 'D' refer to |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6470 +; the same storage location, we must use 'USE' throughout |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6471 +; to prevent deletion of 'unnecessary' instructions. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6472 +; Similar optimization for MEM would require a scratch register |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6473 +; so is not done here. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6474 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6475 +(define_split |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6476 + [(set (reg:HI HARD_D_REGNUM) (ashift:HI (reg:HI HARD_D_REGNUM) (const_int 8)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6477 + "reload_completed" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6478 + [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6479 + (use (reg:HI HARD_D_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6480 + (set (reg:QI HARD_A_REGNUM) (reg:QI HARD_D_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6481 + (use (reg:QI HARD_A_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6482 + (set (reg:QI HARD_D_REGNUM) (const_int 0)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6483 + ] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6484 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6485 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6486 +(define_split |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6487 + [(set (reg:HI HARD_D_REGNUM) (lshiftrt:HI (reg:HI HARD_D_REGNUM) (const_int 8)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6488 + "reload_completed" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6489 + [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6490 + (use (reg:HI HARD_D_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6491 + (set (reg:QI HARD_D_REGNUM) (reg:QI HARD_A_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6492 + (use (reg:QI HARD_D_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6493 + (set (reg:HI HARD_D_REGNUM) (zero_extend:HI (reg:QI HARD_D_REGNUM))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6494 + ] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6495 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6496 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6497 +(define_split |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6498 + [(set (reg:HI HARD_D_REGNUM) (ashiftrt:HI (reg:HI HARD_D_REGNUM) (const_int 8)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6499 + "reload_completed" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6500 + [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6501 + (use (reg:HI HARD_D_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6502 + (set (reg:QI HARD_D_REGNUM) (reg:QI HARD_A_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6503 + (use (reg:QI HARD_D_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6504 + (set (reg:HI HARD_D_REGNUM) (sign_extend:HI (reg:QI HARD_D_REGNUM))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6505 + ] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6506 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6507 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6508 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6509 +; On the WPC hardware, there is a shift register that can be used |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6510 +; to compute (1<<n) efficiently in two instructions. Note that this |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6511 +; form only works when using -mint8 though, because C will promote |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6512 +; to 'int' when doing this operation. TODO : we need a 16-bit form too. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6513 +(define_insn "ashlqi3_wpc" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6514 + [(set (match_operand:QI 0 "nonimmediate_operand" "=q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6515 + (ashift:QI (match_operand:QI 1 "immediate_operand" "I") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6516 + (match_operand:QI 2 "general_operand" "q")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6517 + "TARGET_WPC" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6518 + "st%2\t0x3FF7\;ld%0\t0x3FF7" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6519 + [(set_attr "length" "6")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6520 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6521 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6522 +; Internal instructions for shifting by a constant. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6523 +; Two forms are provided, one for QImode, one for HImode. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6524 +; These are always split into the above instructions |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6525 +; (except for QImode forms that directly match one of the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6526 +; above instructions, in which the condition will not |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6527 +; allow the splitter to match). |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6528 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6529 +(define_insn_and_split "<bit_code:bit_code_name>hi3_const" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6530 + [(set (match_operand:HI 0 "nonimmediate_operand" "=dm") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6531 + (bit_code:HI (match_operand:HI 1 "general_operand" "0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6532 + (match_operand:HI 2 "immediate_operand" "n")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6533 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6534 + "#" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6535 + "reload_completed" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6536 + [(const_int 0)] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6537 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6538 + m6809_split_shift (<bit_code:CODE>, operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6539 + DONE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6540 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6541 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6542 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6543 +(define_insn_and_split "<bit_code:bit_code_name>qi3_const" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6544 + [(set (match_operand:QI 0 "nonimmediate_operand" "=qm") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6545 + (bit_code:QI (match_operand:QI 1 "general_operand" "0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6546 + (match_operand:QI 2 "immediate_operand" "n")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6547 + "INTVAL (operands[2]) > 1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6548 + "#" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6549 + "&& reload_completed" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6550 + [(const_int 0)] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6551 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6552 + m6809_split_shift (<bit_code:CODE>, operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6553 + DONE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6554 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6555 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6556 +; Internal instructions for shifting by a nonconstant. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6557 +; These expand into complex assembly. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6558 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6559 +(define_insn "<bit_code:bit_code_name>hi3_reg" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6560 + [(set (match_operand:HI 0 "nonimmediate_operand" "=d") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6561 + (bit_code:HI (match_operand:HI 1 "general_operand" "0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6562 + (match_operand:HI 2 "nonimmediate_operand" "v")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6563 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6564 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6565 + m6809_output_shift_insn (<bit_code:CODE>, operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6566 + return ""; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6567 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6568 + [(set_attr "length" "20")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6569 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6570 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6571 +(define_insn "<bit_code:bit_code_name>qi3_reg" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6572 + [(set (match_operand:QI 0 "nonimmediate_operand" "=q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6573 + (bit_code:QI (match_operand:QI 1 "general_operand" "0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6574 + (match_operand:QI 2 "nonimmediate_operand" "v")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6575 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6576 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6577 + m6809_output_shift_insn (<bit_code:CODE>, operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6578 + return ""; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6579 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6580 + [(set_attr "length" "16")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6581 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6582 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6583 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6584 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6585 +;;- Jumps and transfers |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6586 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6587 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6588 +;;; The casesi pattern is normally *not* defined; see 'tablejump' instead. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6589 +(define_expand "casesi" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6590 + [(match_operand:HI 0 "register_operand" "") ; index to jump on |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6591 + (match_operand:HI 1 "immediate_operand" "") ; lower bound |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6592 + (match_operand:HI 2 "immediate_operand" "") ; total range |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6593 + (match_operand 3 "" "") ; table label |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6594 + (match_operand 4 "" "")] ; out of range label |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6595 + "TARGET_BYTE_INT && TARGET_CASESI" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6596 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6597 + m6809_do_casesi (operands[0], operands[1], operands[2], |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6598 + operands[3], operands[4]); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6599 + DONE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6600 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6601 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6602 +(define_insn "tablejump_short_offset" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6603 + [(set (pc) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6604 + (mem:HI (plus:HI (match_operand:HI 1 "register_operand" "U") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6605 + (zero_extend:HI (match_operand:QI 0 "register_operand" "q")))))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6606 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6607 + "jmp\t[b,x]\t;tablejump_short_offset" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6608 + [(set_attr "length" "3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6609 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6610 +(define_insn "tablejump_long_offset" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6611 + [(set (pc) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6612 + (mem:HI (plus:HI (match_operand:HI 1 "register_operand" "U") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6613 + (match_operand:HI 0 "register_operand" "d"))))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6614 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6615 + "jmp\t[d,x]\t;tablejump_long_offset" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6616 + [(set_attr "length" "3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6617 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6618 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6619 + ;; A tablejump operation gives the address in operand 0, with the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6620 + ;; CODE_LABEL for the table in operand 1. The 'define_expand' |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6621 + ;; shows the arguments as GCC presents them. For a register |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6622 + ;; operand, the assembly code is straightforward. For a MEM, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6623 + ;; assumed to be a SYMBOL_REF, two forms are given, one normal |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6624 + ;; and one for PIC mode. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6625 + (define_expand "tablejump" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6626 + [(parallel [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6627 + (set (pc) (match_operand:HI 0 "" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6628 + (use (label_ref (match_operand 1 "" ""))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6629 + (clobber (match_scratch:HI 2 "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6630 + ])] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6631 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6632 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6633 + }) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6634 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6635 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6636 +(define_insn "*tablejump_reg" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6637 + [(parallel [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6638 + (set (pc) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6639 + (match_operand:HI 0 "register_operand" "a")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6640 + (use (label_ref (match_operand 1 "" ""))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6641 + (clobber (match_scratch:HI 2 "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6642 + ])] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6643 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6644 + "jmp\t,%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6645 + [(set_attr "length" "3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6646 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6647 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6648 +(define_insn "*tablejump_symbol" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6649 + [(parallel [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6650 + (set (pc) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6651 + (mem:HI |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6652 + (plus:HI (match_operand:HI 0 "register_operand" "a") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6653 + (label_ref (match_operand 1 "" ""))))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6654 + (use (label_ref (match_dup 1))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6655 + (clobber (match_scratch:HI 2 "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6656 + ])] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6657 + "!flag_pic" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6658 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6659 + output_asm_insn ("jmp\t[%a1,%0]", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6660 + return ""; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6661 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6662 + [(set_attr "length" "4")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6663 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6664 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6665 +(define_insn "*tablejump_symbol_pic" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6666 + [(parallel [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6667 + (set (pc) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6668 + (mem:HI |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6669 + (plus:HI (match_operand:HI 0 "register_operand" "d") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6670 + (label_ref (match_operand 1 "" ""))))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6671 + (use (label_ref (match_dup 1))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6672 + (clobber (match_scratch:HI 2 "=&a")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6673 + ])] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6674 + "flag_pic" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6675 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6676 + output_asm_insn ("lea%2\t%a1,pcr", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6677 + output_asm_insn ("ld%0\t%0,%2", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6678 + output_asm_insn ("jmp\t%0,%2", operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6679 + return ""; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6680 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6681 + [(set_attr "length" "8")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6682 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6683 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6684 +(define_insn "indirect_jump" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6685 + [(set (pc) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6686 + (match_operand:HI 0 "register_operand" "a"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6687 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6688 + "jmp\t,%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6689 + [(set_attr "length" "3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6690 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6691 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6692 +(define_insn "jump" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6693 + [(set (pc) (label_ref (match_operand 0 "" "")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6694 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6695 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6696 + return output_branch_insn ( LABEL_REF, operands, get_attr_length (insn)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6697 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6698 + [(set (attr "type") (const_string "branch"))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6699 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6700 +; Output assembly for a condition branch instruction. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6701 +(define_insn "*cond_branch" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6702 + [(set (pc) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6703 + (if_then_else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6704 + (match_operator 1 "comparison_operator" [(cc0) (const_int 0)]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6705 + (label_ref (match_operand 0 "" "")) (pc)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6706 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6707 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6708 + return output_branch_insn ( GET_CODE(operands[1]), |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6709 + operands, get_attr_length (insn)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6710 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6711 + [(set (attr "type") (const_string "cbranch"))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6712 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6713 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6714 +; Similar to above, but for a condition branch instruction that |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6715 +; had its operands reversed at some point. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6716 +(define_insn "*cond_branch_reverse" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6717 + [(set (pc) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6718 + (if_then_else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6719 + (match_operator 1 "comparison_operator" [(cc0) (const_int 0)]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6720 + (pc) (label_ref (match_operand 0 "" ""))))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6721 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6722 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6723 + return output_branch_insn ( reverse_condition (GET_CODE(operands[1])), |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6724 + operands, get_attr_length (insn)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6725 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6726 + [(set (attr "type") (const_string "cbranch"))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6727 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6728 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6729 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6730 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6731 +;;- Calls |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6732 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6733 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6734 +;; Generate a call instruction for a function that does not |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6735 +;; return a value. The expander is used during RTL generation. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6736 +;; The instructions below are used during matching; only one |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6737 +;; of them will be used, depending on the type of function |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6738 +;; being called. The different conditions are: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6739 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6740 +;; 1) far_functionp - is this a far function? Those need |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6741 +;; to be output as indirect calls through a far-function |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6742 +;; handler. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6743 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6744 +;; 2) noreturn_functionp - if the function does not return, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6745 +;; we can use a 'jmp' instead of a 'jsr' to call it. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6746 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6747 +;; 3) is PIC mode enabled? If so, we'll always use |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6748 +;; relative calls (lbsr or lbra). |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6749 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6750 +;; Note: not all combinations are fully supported, especially |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6751 +;; relating to PIC. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6752 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6753 +;; The 'bsr' instruction is never generated. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6754 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6755 +(define_expand "call" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6756 + [(call (match_operand:HI 0 "memory_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6757 + (match_operand:HI 1 "general_operand" ""))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6758 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6759 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6760 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6761 +(define_insn "*call_nopic_far" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6762 + [(call (match_operand:HI 0 "memory_operand" "m") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6763 + (match_operand:HI 1 "general_operand" "g"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6764 + "far_functionp (operands[0])" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6765 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6766 + output_far_call_insn (operands, 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6767 + return ""; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6768 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6769 + [(set_attr "length" "6")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6770 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6771 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6772 +; PIC forms come first, and should only match |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6773 +; (MEM (SYMBOL_REF)). Other MEM forms are treated as usual. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6774 +(define_insn "*call_pic" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6775 + [(call (mem:HI (match_operand:HI 0 "symbolic_operand" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6776 + (match_operand:HI 1 "general_operand" "g"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6777 + "flag_pic && !noreturn_functionp (operands[0])" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6778 + "lbsr\t%C0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6779 + [(set_attr "length" "4")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6780 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6781 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6782 +(define_insn "*call_nopic" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6783 + [(call (match_operand:HI 0 "memory_operand" "m") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6784 + (match_operand:HI 1 "general_operand" "g"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6785 + "!noreturn_functionp (operands[0])" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6786 + "jsr\t%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6787 + [(set_attr "length" "3") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6788 + (set (attr "cycles") (const_int JSR_EXTENDED_CYCLES))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6789 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6790 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6791 +(define_insn "*call_noreturn_pic" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6792 + [(call (mem:HI (match_operand:HI 0 "symbolic_operand" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6793 + (match_operand:HI 1 "general_operand" "g"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6794 + "flag_pic && noreturn_functionp (operands[0])" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6795 + "lbra\t%C0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6796 + [(set_attr "length" "4")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6797 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6798 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6799 +(define_insn "*call_noreturn_nopic" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6800 + [(call (match_operand:HI 0 "memory_operand" "m") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6801 + (match_operand:HI 1 "general_operand" "g"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6802 + "noreturn_functionp (operands[0])" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6803 + "jmp\t%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6804 + [(set_attr "length" "3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6805 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6806 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6807 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6808 +;; Same as above, but for functions that do return a value. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6809 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6810 +(define_expand "call_value" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6811 + [(set (match_operand 0 "" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6812 + (call (match_operand:HI 1 "memory_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6813 + (match_operand:HI 2 "general_operand" "")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6814 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6815 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6816 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6817 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6818 +(define_insn "*call_value_far" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6819 + [(set (match_operand 0 "" "=gz") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6820 + (call (match_operand:HI 1 "memory_operand" "m") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6821 + (match_operand:HI 2 "general_operand" "g")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6822 + "far_functionp (operands[1])" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6823 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6824 + output_far_call_insn (operands, 1); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6825 + return ""; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6826 +} |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6827 + [(set_attr "length" "6")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6828 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6829 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6830 +(define_insn "*call_value_pic" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6831 + [(set (match_operand 0 "" "=gz") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6832 + (call (mem:HI (match_operand:HI 1 "symbolic_operand" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6833 + (match_operand:HI 2 "general_operand" "g")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6834 + "flag_pic" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6835 + "lbsr\t%C1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6836 + [(set_attr "length" "4")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6837 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6838 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6839 +(define_insn "*call_value_nopic" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6840 + [(set (match_operand 0 "" "=gz") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6841 + (call (match_operand:HI 1 "memory_operand" "m") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6842 + (match_operand:HI 2 "general_operand" "g")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6843 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6844 + "jsr\t%1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6845 + [(set_attr "length" "3") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6846 + (set (attr "cycles") (const_int JSR_EXTENDED_CYCLES))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6847 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6848 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6849 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6850 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6851 +;; How to generate an untyped call. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6852 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6853 +(define_expand "untyped_call" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6854 + [(parallel [(call (match_operand 0 "" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6855 + (const_int 0)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6856 + (match_operand 1 "" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6857 + (match_operand 2 "" "")])] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6858 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6859 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6860 + int i; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6861 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6862 + emit_call_insn (GEN_CALL (operands[0], const0_rtx, NULL, const0_rtx)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6863 + for (i=0; i < XVECLEN (operands[2], 0); i++) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6864 + { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6865 + rtx set = XVECEXP (operands[2], 0, i); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6866 + emit_move_insn (SET_DEST (set), SET_SRC (set)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6867 + } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6868 + emit_insn (gen_blockage ()); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6869 + DONE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6870 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6871 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6872 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6873 +(define_expand "sibcall" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6874 + [(parallel |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6875 + [(call (match_operand:HI 0 "memory_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6876 + (match_operand:HI 1 "immediate_operand" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6877 + (use (reg:HI HARD_PC_REGNUM))])] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6878 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6879 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6880 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6881 +(define_insn "*sibcall_1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6882 + [(parallel |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6883 + [(call (match_operand:HI 0 "memory_operand" "m") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6884 + (match_operand:HI 1 "immediate_operand" "i")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6885 + (use (reg:HI HARD_PC_REGNUM))])] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6886 + "SIBLING_CALL_P(insn)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6887 + "jmp\t%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6888 + [(set_attr "length" "4")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6889 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6890 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6891 +(define_expand "sibcall_value" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6892 + [(parallel |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6893 + [(set (match_operand 0 "" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6894 + (call (match_operand:HI 1 "memory_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6895 + (match_operand:HI 2 "immediate_operand" ""))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6896 + (use (reg:HI HARD_PC_REGNUM))])] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6897 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6898 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6899 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6900 +(define_insn "*sibcall_value_1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6901 + [(parallel |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6902 + [(set (match_operand 0 "" "=gz") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6903 + (call (match_operand:HI 1 "memory_operand" "m") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6904 + (match_operand:HI 2 "immediate_operand" "i"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6905 + (use (reg:HI HARD_PC_REGNUM))])] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6906 + "SIBLING_CALL_P(insn)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6907 + "jmp\t%1" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6908 + [(set_attr "length" "4")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6909 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6910 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6911 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6912 +;;- Function Entry and Exit |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6913 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6914 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6915 +;; On entry to a function, the stack frame looks as follows: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6916 +;; - return address (pushed by the caller) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6917 +;; - saved registers |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6918 +;; - local variable storage |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6919 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6920 +;; If the function does not modify the stack after that, then |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6921 +;; any of these can be accessed directly as an offset from |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6922 +;; STACK_POINTER_REGNUM. Otherwise, a frame pointer is required. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6923 +;; In that case, the prologue must also initialize HARD_FRAME_POINTER_REGNUM |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6924 +;; and all references to the stack frame will use that as a base instead. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6925 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6926 +(define_expand "prologue" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6927 + [(const_int 0)] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6928 + "prologue_epilogue_required ()" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6929 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6930 + emit_prologue_insns (); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6931 + DONE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6932 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6933 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6934 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6935 +;; The function epilogue does exactly the reverse of the prologue, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6936 +;; deallocating local variable space, restoring saved registers, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6937 +;; and returning. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6938 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6939 +;; For the 6809, the return may be 'rti' if the function was |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6940 +;; declared as an interrupt function, but is normally 'rts'. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6941 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6942 +;; Also, as an optimization, the register restore and the 'rts' |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6943 +;; can be combined into a single instruction, by adding 'PC' to the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6944 +;; list of registers to be restored. This is only done if there are |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6945 +;; any saved registers, as 'rts' is more efficient by itself. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6946 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6947 +(define_expand "epilogue" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6948 + [(const_int 0)] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6949 + "prologue_epilogue_required ()" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6950 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6951 + emit_epilogue_insns (false); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6952 + DONE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6953 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6954 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6955 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6956 +(define_expand "sibcall_epilogue" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6957 + [(const_int 0)] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6958 + "prologue_epilogue_required ()" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6959 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6960 + emit_epilogue_insns (true); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6961 + DONE; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6962 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6963 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6964 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6965 +;; The RTS instruction |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6966 +(define_insn "return_rts" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6967 + [(return) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6968 + (use (reg:HI HARD_PC_REGNUM))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6969 + "!m6809_current_function_has_type_attr_p (\"interrupt\") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6970 + && m6809_get_live_regs () == 0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6971 + "rts" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6972 + [(set_attr "length" "1") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6973 + (set (attr "cycles") (const_int RTS_CYCLES))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6974 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6975 +(define_insn "return_puls_pc" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6976 + [(return) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6977 + (use (reg:HI HARD_PC_REGNUM))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6978 + "!m6809_current_function_has_type_attr_p (\"interrupt\") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6979 + && m6809_get_live_regs () != 0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6980 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6981 + [(set_attr "length" "1") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6982 + (set (attr "cycles") (const_int RTS_CYCLES))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6983 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6984 +;; The RTI instruction |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6985 +(define_insn "return_rti" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6986 + [(return) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6987 + (use (reg:HI HARD_PC_REGNUM))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6988 + "m6809_current_function_has_type_attr_p (\"interrupt\")" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6989 + "rti" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6990 + [(set_attr "length" "1") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6991 + (set (attr "cycles") (const_int RTI_CYCLES))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6992 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6993 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6994 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6995 +;;- Unspecified instructions |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6996 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6997 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6998 +;; An instruction that has the effect of an unspec_volatile, but |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
6999 +;; which doesn't require emitting any assembly code. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7000 +(define_insn "blockage" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7001 + [(unspec_volatile [(const_int 0)] UNSPEC_BLOCKAGE)] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7002 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7003 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7004 + [(set_attr "length" "0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7005 + (set (attr "cycles") (const_int 0))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7006 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7007 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7008 +;; Say how to push multiple registers onto the stack, using |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7009 +;; the 6809 'pshs' instruction. The operand is a regset |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7010 +;; specifying which registers to push. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7011 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7012 +;; The operand mode is not given intentionally, so as to allow |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7013 +;; any possible integer mode for the regset. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7014 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7015 +;; See below for a peephole that can combine consecutive push |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7016 +;; instructions that qualify for merging. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7017 +(define_insn "register_push" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7018 + [(use (reg:HI HARD_S_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7019 + (unspec_volatile |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7020 + [(match_operand 0 "immediate_operand" "")] UNSPEC_PUSH_RS) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7021 + (clobber (reg:HI HARD_S_REGNUM))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7022 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7023 + "pshs\t%R0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7024 + [(set_attr "length" "2") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7025 + (set (attr "cycles") (const_int PSH_PUL_CYCLES))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7026 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7027 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7028 +;; Say how to pop multiple registers from the stack, using |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7029 +;; the 6809 'puls' instruction. The operand is the register |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7030 +;; bitset value. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7031 +(define_insn "register_pop" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7032 + [(use (reg:HI HARD_S_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7033 + (unspec_volatile |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7034 + [(match_operand 0 "immediate_operand" "")] UNSPEC_POP_RS) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7035 + (clobber (reg:HI HARD_S_REGNUM))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7036 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7037 + "puls\t%R0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7038 + [(set_attr "length" "2") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7039 + (set (attr "cycles") (const_int PSH_PUL_CYCLES))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7040 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7041 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7042 +(define_insn "m6809_swi" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7043 + [(unspec_volatile |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7044 + [(match_operand:QI 0 "immediate_operand" "I,n")] UNSPEC_SWI)] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7045 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7046 + "@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7047 + swi |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7048 + swi%c0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7049 + [(set_attr "length" "1,2") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7050 + (set (attr "cycles") (const_int SWI_CYCLES))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7051 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7052 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7053 +;; Generate the CWAI instruction |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7054 +(define_insn "m6809_cwai" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7055 + [(unspec_volatile |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7056 + [(match_operand:QI 0 "immediate_operand" "")] UNSPEC_CWAI)] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7057 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7058 + "cwai\t%0" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7059 + [(set_attr "length" "2") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7060 + (set (attr "cycles") (const_int CWAI_CYCLES))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7061 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7062 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7063 +;; Generate the SYNC instruction |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7064 +(define_insn "m6809_sync" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7065 + [(unspec_volatile [(const_int 0)] UNSPEC_SYNC)] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7066 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7067 + "sync" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7068 + [(set_attr "length" "1") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7069 + (set (attr "cycles") (const_int SYNC_CYCLES))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7070 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7071 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7072 +;; Generate the NOP instruction |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7073 +(define_insn "nop" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7074 + [(const_int 0)] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7075 + "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7076 + "nop" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7077 + [(set_attr "length" "1") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7078 + (set (attr "cycles") (const_int NOP_CYCLES))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7079 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7080 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7081 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7082 +;;- Peepholes |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7083 +;;-------------------------------------------------------------------- |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7084 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7085 +;;; Each peephole has an ID that is used for debugging. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7086 +;;; Each peephole condition is bracketed by calls to |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7087 +;;; m6809_match_peephole2() also for debugging. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7088 +(define_constants [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7089 + (PEEP_END 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7090 + (PEEP_COND 1) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7091 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7092 + (PEEP_STACK_STORE_INC 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7093 + (PEEP_STACK_CLEAR_INC 1) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7094 + (PEEP_LSRB_ADCB 2) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7095 + (PEEP_ABX 3) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7096 + (PEEP_ABX2 4) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7097 + (PEEP_INDEXED_INC 5) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7098 + (PEEP_MEM_DEC 6) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7099 + (PEEP_MEM_INC 7) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7100 + (PEEP_MEM_DEC_CMP 8) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7101 + (PEEP_PUSH2 9) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7102 + (PEEP_STORE_IMPLIES_CC 10) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7103 + (PEEP_DEC_IMPLIES_CC 11) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7104 + (PEEP_LEAB 12) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7105 + (PEEP_LDX_INDIRECT 13) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7106 + (PEEP_POP_JUNK 14) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7107 +]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7108 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7109 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7110 +;;; Optimize 'leas -1,s' followed by 'stb ,s'. This can happen if the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7111 +;;; function prologue needs to allocate stack space and 'b' is placed |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7112 +;;; into that local right away. Combine the stack allocation with the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7113 +;;; store using preincrement mode. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7114 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7115 + [(set (reg:HI HARD_S_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7116 + (plus:HI (reg:HI HARD_S_REGNUM) (const_int -1))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7117 + (set (mem:QI (reg:HI HARD_S_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7118 + (match_operand:QI 0 "register_operand" ""))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7119 + "m6809_match_peephole2 (PEEP_STACK_STORE_INC, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7120 + [(set (mem:QI (pre_dec:HI (reg:HI HARD_S_REGNUM))) (match_dup 0))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7121 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7122 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7123 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7124 +;;; Same as above, but for a 'clr ,s' that follows the prologue. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7125 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7126 + [(set (reg:HI HARD_S_REGNUM) (plus:HI (reg:HI HARD_S_REGNUM) (const_int -1))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7127 + (set (mem:QI (reg:HI HARD_S_REGNUM)) (const_int 0))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7128 + "m6809_match_peephole2 (PEEP_STACK_CLEAR_INC, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7129 + [(set (mem:QI (pre_dec:HI (reg:HI HARD_S_REGNUM))) (const_int 0))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7130 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7131 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7132 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7133 +;;; Merge two consecutive push instructions into a single register_push. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7134 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7135 + [(set (match_operand 0 "push_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7136 + (match_operand 1 "register_operand" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7137 + (set (match_operand 2 "push_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7138 + (match_operand 3 "register_operand" ""))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7139 + "m6809_match_peephole2 (PEEP_PUSH2, PEEP_COND) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7140 + && reload_completed |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7141 + && GET_MODE (operands[1]) == GET_MODE (operands[3]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7142 + && m6809_can_merge_pushpop_p (UNSPEC_PUSH_RS, 1 << REGNO (operands[1]), 1 << REGNO (operands[3])) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7143 + && m6809_match_peephole2 (PEEP_PUSH2, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7144 + [(parallel [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7145 + (use (reg:HI HARD_S_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7146 + (unspec_volatile [(match_dup 4)] UNSPEC_PUSH_RS) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7147 + (clobber (reg:HI HARD_S_REGNUM))]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7148 + (use (match_dup 1)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7149 + (use (match_dup 3))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7150 +{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7151 + operands[4] = gen_rtx_CONST_INT (QImode, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7152 + (1 << REGNO (operands[1])) | (1 << REGNO (operands[3]))); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7153 +}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7154 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7155 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7156 +;;; Convert 'stX ,--s' into a push instruction. Use the regset |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7157 +;;; notation, so that it may be combined with an adjacent regset. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7158 +;;; TBD - this doesn't compile some code cleanly. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7159 +;(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7160 +; [(set (mem:HI (pre_dec:HI (reg:HI HARD_S_REGNUM))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7161 +; (reg:HI HARD_X_REGNUM))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7162 +; "reload_completed" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7163 +; [(parallel [ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7164 +; (use (reg:HI HARD_S_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7165 +; (unspec_volatile [(match_dup 0)] UNSPEC_PUSH_RS) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7166 +; (clobber (reg:HI HARD_S_REGNUM))])] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7167 +;{ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7168 +; operands[0] = gen_rtx_CONST_INT (HImode, X_REGBIT); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7169 +;}) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7170 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7171 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7172 +;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7173 +;;; q = (q+1)/2 can be optimized as "lsrb; adcb". This also |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7174 +;;; won't overflow when q=0xFF. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7175 +;;; TODO : this form isn't accounting for promotion when |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7176 +;;; using 16-bit ints. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7177 +;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7178 +(define_peephole |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7179 + [(set (reg:QI HARD_D_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7180 + (lshiftrt:QI (plus:HI (match_dup 0) (const_int 1)) (const_int 1)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7181 + "m6809_match_peephole2 (PEEP_LSRB_ADCB, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7182 + "lsrb\;adcb\t#0; peephole" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7183 + [(set_attr "length" "2")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7184 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7185 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7186 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7187 +;; Optimize the case of following a register store with a test |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7188 +;; of reg or mem just moved. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7189 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7190 +(define_peephole |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7191 + [(set (match_operand:HI 0 "memory_operand" "=m") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7192 + (match_operand:HI 1 "register_operand" "r")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7193 + (set (cc0) (match_operand:HI 2 "general_operand" "g"))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7194 + "m6809_match_peephole2 (PEEP_STORE_IMPLIES_CC, PEEP_COND) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7195 + && (operands[2] == operands[0] || operands[2] == operands[1]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7196 + && m6809_match_peephole2 (PEEP_STORE_IMPLIES_CC, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7197 + "st%1\t%0\t;movhi: R:%1 -> %0 w/ implied test of %2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7198 + [(set_attr "length" "4")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7199 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7200 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7201 +;; Optimize a pair of SET instructions in which the second insn |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7202 +;; is the reverse of the first one. I.e. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7203 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7204 +;; A = B |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7205 +;; ----> A = B |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7206 +;; B = A |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7207 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7208 +;; The second insn is redundant. Define two patterns, one for QI, one for HI. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7209 +;; But don't do this if either is a VOLATILE MEM. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7210 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7211 + [(set (match_operand:HI 0 "nonimmediate_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7212 + (match_operand:HI 1 "nonimmediate_operand" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7213 + (set (match_dup 1) (match_dup 0))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7214 + "!MEM_P (operands[0]) || !MEM_P (operands[1]) || (!MEM_VOLATILE_P (operands[0]) && !MEM_VOLATILE_P (operands[1]))" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7215 + [(set (match_dup 0) (match_dup 1))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7216 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7217 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7218 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7219 + [(set (match_operand:QI 0 "nonimmediate_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7220 + (match_operand:QI 1 "nonimmediate_operand" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7221 + (set (match_dup 1) (match_dup 0))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7222 + "!MEM_P (operands[0]) || !MEM_P (operands[1]) || (!MEM_VOLATILE_P (operands[0]) && !MEM_VOLATILE_P (operands[1]))" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7223 + [(set (match_dup 0) (match_dup 1))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7224 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7225 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7226 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7227 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7228 +;; Optimize the sum of an 8-bit and 16-bit using the 'abx' instruction |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7229 +;; if B and X can be used. Two patterns are provided to catch both |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7230 +;; X=X+D and X=D+X. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7231 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7232 +(define_peephole |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7233 + [(set (reg:HI HARD_D_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7234 + (zero_extend:HI (match_operand:QI 0 "general_operand" "q"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7235 + (set (reg:HI HARD_X_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7236 + (plus:HI (reg:HI HARD_D_REGNUM) (reg:HI HARD_X_REGNUM)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7237 + "m6809_match_peephole2 (PEEP_ABX, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7238 + "abx" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7239 + [(set_attr "length" "1")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7240 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7241 +(define_peephole |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7242 + [(set (reg:HI HARD_D_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7243 + (zero_extend:HI (match_operand:QI 0 "general_operand" "q"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7244 + (set (reg:HI HARD_X_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7245 + (plus:HI (reg:HI HARD_X_REGNUM) (reg:HI HARD_D_REGNUM)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7246 + "m6809_match_peephole2 (PEEP_ABX, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7247 + "abx" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7248 + [(set_attr "length" "1")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7249 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7250 +;;; Likewise, handle when B is scaled by 2 prior to the add. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7251 +;;; Instead of shifting B in 4 cycles, just do the ABX a second |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7252 +;;; time, in only 3 cycles. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7253 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7254 +(define_peephole |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7255 + [(set (reg:HI HARD_D_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7256 + (zero_extend:HI (match_operand:QI 0 "general_operand" "q"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7257 + (set (reg:HI HARD_D_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7258 + (ashift:HI (reg:HI HARD_D_REGNUM) (const_int 1))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7259 + (set (reg:HI HARD_X_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7260 + (plus:HI (reg:HI HARD_D_REGNUM) (reg:HI HARD_X_REGNUM)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7261 + "m6809_match_peephole2 (PEEP_ABX2, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7262 + "abx\;abx" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7263 + [(set_attr "length" "2")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7264 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7265 +(define_peephole |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7266 + [(set (reg:HI HARD_D_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7267 + (zero_extend:HI (match_operand:QI 0 "general_operand" "q"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7268 + (set (reg:HI HARD_D_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7269 + (ashift:HI (reg:HI HARD_D_REGNUM) (const_int 1))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7270 + (set (reg:HI HARD_X_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7271 + (plus:HI (reg:HI HARD_X_REGNUM) (reg:HI HARD_D_REGNUM)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7272 + "m6809_match_peephole2 (PEEP_ABX2, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7273 + "abx\;abx" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7274 + [(set_attr "length" "2")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7275 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7276 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7277 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7278 +;; Work around a compiler bug that generates bad code when copying |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7279 +;; between 32-bit memory addresses after a libcall. The problem seen is |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7280 +;; that the source is MEM (REG X), but X is used as the reload register. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7281 +;; The second half of the copy therefore fails. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7282 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7283 +;; The solution is to switch the reload register to D, since that is guaranteed |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7284 +;; not to be in use right after a libcall. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7285 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7286 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7287 + [(set (reg:HI HARD_X_REGNUM) (mem:HI (reg:HI HARD_X_REGNUM))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7288 + (set (match_operand:HI 0 "nonimmediate_operand" "") (reg:HI HARD_X_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7289 + (set (reg:HI HARD_X_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7290 + (mem:HI (plus:HI (reg:HI HARD_X_REGNUM) (const_int 2)))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7291 + (set (match_operand:HI 1 "nonimmediate_operand" "") (reg:HI HARD_X_REGNUM))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7292 + "reload_completed" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7293 + [(set (reg:HI HARD_D_REGNUM) (mem:HI (reg:HI HARD_X_REGNUM))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7294 + (set (match_dup 0) (reg:HI HARD_D_REGNUM)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7295 + (set (reg:HI HARD_X_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7296 + (mem:HI (plus:HI (reg:HI HARD_X_REGNUM) (const_int 2)))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7297 + (set (match_dup 1) (reg:HI HARD_X_REGNUM))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7298 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7299 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7300 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7301 +;; Turn "and then test" into a "bit test" operation. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7302 +;; Provide variants for immediate and memory sources |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7303 +;; This is the most used peephople. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7304 +; (define_peephole |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7305 +; [(set (match_operand:QI 0 "register_operand" "=q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7306 +; (and:QI (match_operand:QI 1 "register_operand" "0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7307 +; (match_operand:QI 2 "immediate_operand" "i"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7308 +; (set (cc0) (match_dup 0))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7309 +; "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7310 +; "bit%0\t%2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7311 +; [(set_attr "length" "3")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7312 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7313 +; (define_peephole |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7314 +; [(set (match_operand:QI 0 "register_operand" "=q") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7315 +; (and:QI (match_operand:QI 1 "register_operand" "0") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7316 +; (match_operand:QI 2 "memory_operand" "m"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7317 +; (set (cc0) (match_dup 0))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7318 +; "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7319 +; "bit%0\t%2" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7320 +; [(set_attr "length" "4")]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7321 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7322 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7323 +;; Turn a "decrement, then test" sequence into just a "decrement". |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7324 +;; The test can be omitted, since it is implicitly done. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7325 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7326 + [(set (match_operand:QI 0 "nonimmediate_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7327 + (plus:QI (match_operand:QI 1 "whole_general_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7328 + (match_operand:QI 2 "immediate_operand" ""))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7329 + (set (cc0) (match_dup 0))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7330 + "m6809_match_peephole2 (PEEP_DEC_IMPLIES_CC, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7331 + [(set (match_dup 0) (plus:QI (match_dup 1) (match_dup 2)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7332 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7333 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7334 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7335 +;; Merge an indexed register increment with a previous usage. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7336 +;; This is usually done automatically, but not always |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7337 +;; The 'use' should be optional; in all cases where this has been |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7338 +;; seen, it is required though. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7339 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7340 + [(set (match_operand:QI 0 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7341 + (mem:QI (match_operand:HI 1 "index_register_operand" ""))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7342 + (use (match_dup 0)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7343 + (set (match_dup 1) (plus:HI (match_dup 1) (const_int 1)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7344 + "m6809_match_peephole2 (PEEP_INDEXED_INC, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7345 + [(set (match_dup 0) (mem:QI (post_inc:HI (match_dup 1)))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7346 + (use (match_dup 0))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7347 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7348 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7349 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7350 +;;; Merge "ldX MEM; ldX ,X" into a single instruction using |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7351 +;;; the indirect mode. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7352 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7353 + [(set (reg:HI HARD_X_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7354 + (mem:HI (match_operand:HI 0 "general_operand" ""))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7355 + (set (reg:HI HARD_X_REGNUM) (mem:HI (reg:HI HARD_X_REGNUM)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7356 + "reload_completed && m6809_match_peephole2 (PEEP_LDX_INDIRECT, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7357 + [(set (reg:HI HARD_X_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7358 + (mem:HI (mem:HI (match_dup 0))))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7359 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7360 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7361 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7362 +;;; Reorder a store followed by a unary operation on that memory |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7363 +;;; so that the unary is performed and then the store. Consider |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7364 +;;; a binary shift operation, which will be decomposed into |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7365 +;;; identical single shifts, also. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7366 +;;; TODO - recognize more than just 'ashift' here. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7367 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7368 + [(set (match_operand:QI 0 "memory_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7369 + (match_operand:QI 1 "register_operand" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7370 + (set (match_dup 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7371 + (ashift:QI (match_dup 0) (match_operand:QI 2 "immediate_operand")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7372 + "reload_completed" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7373 + [(set (match_dup 1) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7374 + (ashift:QI (match_dup 1) (match_operand:QI 2 "immediate_operand"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7375 + (set (match_dup 0) (match_dup 1))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7376 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7377 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7378 +;;; Likewise, reorder a unary MEM followed by a load, so that the load |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7379 +;;; is done first, then use the REG instead of the MEM. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7380 +;;;(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7381 +;;; [(set (match_dup 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7382 +;;; (ashift:QI (match_dup 0) (match_operand:QI 2 "immediate_operand"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7383 +;;; (set (match_operand:QI 0 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7384 +;;; (match_operand:QI 1 "memory_operand" ""))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7385 +;;; "reload_completed" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7386 +;;; [(set (match_dup 0) (match_dup 1)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7387 +;;; (set (match_dup 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7388 +;;; (ashift:QI (match_dup 0) (match_operand:QI 2 "immediate_operand")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7389 +;;; "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7390 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7391 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7392 +;;; Replace sex; leaX d,Y with leaX b,Y. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7393 +;;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7394 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7395 + [(set (reg:HI HARD_D_REGNUM) (sign_extend:HI (reg:QI HARD_D_REGNUM))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7396 + (set (match_operand:HI 0 "index_register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7397 + (plus:HI (match_operand:HI 1 "index_register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7398 + (reg:HI HARD_D_REGNUM)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7399 + "reload_completed && m6809_match_peephole2 (PEEP_LEAB, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7400 + [(set (match_dup 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7401 + (plus:HI (match_dup 1) (reg:QI HARD_D_REGNUM)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7402 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7403 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7404 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7405 + [(set (reg:HI HARD_D_REGNUM) (sign_extend:HI (reg:QI HARD_D_REGNUM))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7406 + (set (match_operand:HI 0 "index_register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7407 + (plus:HI (reg:HI HARD_D_REGNUM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7408 + (match_operand:HI 1 "index_register_operand" "")))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7409 + "reload_completed && m6809_match_peephole2 (PEEP_LEAB, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7410 + [(set (match_dup 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7411 + (plus:HI (match_dup 1) (reg:QI HARD_D_REGNUM)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7412 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7413 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7414 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7415 +;;; Replace ldb; decb; stb; tstb with dec(mem). If the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7416 +;;; register is not needed, then the load will get deleted |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7417 +;;; automatically, but it may be needed for comparisons. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7418 +;;; Same for incb/inc. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7419 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7420 + [(set (match_operand:QI 0 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7421 + (match_operand:QI 1 "nonimmediate_operand" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7422 + (set (match_dup 0) (plus:QI (match_dup 0) (const_int -1))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7423 + (set (match_dup 1) (match_dup 0)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7424 + (set (cc0) (match_dup 0))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7425 + "m6809_match_peephole2 (PEEP_MEM_DEC_CMP, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7426 + [(set (match_dup 1) (plus:QI (match_dup 1) (const_int -1)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7427 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7428 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7429 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7430 +;;; Replace ldb; decb; stb with dec(mem); ldb. If the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7431 +;;; register is not needed, then the load will get deleted |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7432 +;;; automatically, but it may be needed for comparisons. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7433 +;;; Same for incb/inc. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7434 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7435 + [(set (match_operand:QI 0 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7436 + (match_operand:QI 1 "nonimmediate_operand" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7437 + (set (match_dup 0) (plus:QI (match_dup 0) (const_int -1))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7438 + (set (match_dup 1) (match_dup 0))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7439 + "m6809_match_peephole2 (PEEP_MEM_DEC, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7440 + [(set (match_dup 1) (plus:QI (match_dup 1) (const_int -1))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7441 + (set (match_dup 0) (match_dup 1))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7442 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7443 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7444 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7445 + [(set (match_operand:QI 0 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7446 + (match_operand:QI 1 "nonimmediate_operand" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7447 + (set (match_dup 0) (plus:QI (match_dup 0) (const_int 1))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7448 + (set (match_dup 1) (match_dup 0))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7449 + "m6809_match_peephole2 (PEEP_MEM_INC, PEEP_END)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7450 + [(set (match_dup 1) (plus:QI (match_dup 1) (const_int 1))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7451 + (set (match_dup 0) (match_dup 1))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7452 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7453 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7454 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7455 +;;; Replace "andb #N; cmpb #N; bhi" with "andb #N", if it can be proven |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7456 +;;; that the branch can never occur because of the limited range of B. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7457 +;;; N must be a power of two for this to make sense. This helps with |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7458 +;;; the default cases of switch statements on a value (x & N). |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7459 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7460 + [(set (match_operand:QI 0 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7461 + (and:QI (match_dup 0) (match_operand:QI 1 "immediate_operand" ""))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7462 + (set (cc0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7463 + (compare (match_dup 0) (match_dup 1))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7464 + (set (pc) (if_then_else (gtu (cc0) (const_int 0)) (match_operand 2 "" "") (match_operand 3 "" ""))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7465 + ] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7466 + "reload_completed && power_of_two_p (INTVAL (operands[1]) + 1)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7467 + [(set (match_dup 0) (and:QI (match_dup 0) (match_dup 1)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7468 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7469 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7470 +;;; Replace ldd <mem>; addd #1; std <mem> with 16-bit increment |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7471 +;;; of the mem, but only if D is dead. Same for 16-bit decrement. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7472 +;;; <mem> must be offsettable for the instruction to match. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7473 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7474 + [(set (match_operand:HI 0 "register_operand" "") (match_operand:HI 1 "memory_operand" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7475 + (set (match_dup 0) (plus:HI (match_dup 0) (const_int 1))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7476 + (set (match_dup 1) (match_dup 0))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7477 + "reload_completed |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7478 + && GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7479 + && peep2_reg_dead_p (3, operands[0])" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7480 + [(set (match_dup 1) (plus:HI (match_dup 1) (const_int 1)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7481 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7482 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7483 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7484 + [(set (match_operand:HI 0 "register_operand" "") (match_operand:HI 1 "memory_operand" "")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7485 + (set (match_dup 0) (plus:HI (match_dup 0) (const_int -1))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7486 + (set (match_dup 1) (match_dup 0))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7487 + "reload_completed |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7488 + && GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7489 + && peep2_reg_dead_p (3, operands[0])" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7490 + [(set (match_dup 1) (plus:HI (match_dup 1) (const_int -1)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7491 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7492 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7493 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7494 +;;; Replace a load or store using an indexed register, followed by an increment of that |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7495 +;;; register, with the combined form using autoincrement. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7496 +(define_peephole2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7497 + [(set (match_operand:QI 0 "register_operand" "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7498 + (mem:QI (match_operand:HI 1 "index_register_operand" ""))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7499 + (set (match_dup 1) (plus:HI (match_dup 1) (const_int 1)))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7500 + "reload_completed" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7501 + [(set (match_dup 0) (mem:QI (post_inc (match_dup 1))))] |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7502 + "") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7503 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7504 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7505 +;;- mode:emacs-lisp |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7506 +;;- comment-start: ";;- " |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7507 +;;- eval: (set-syntax-table (copy-sequence (syntax-table))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7508 +;;- eval: (modify-syntax-entry ?[ "(]") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7509 +;;- eval: (modify-syntax-entry ?] ")[") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7510 +;;- eval: (modify-syntax-entry ?{ "(}") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7511 +;;- eval: (modify-syntax-entry ?} "){") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7512 +;-; vim: set ts=2: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7513 +;-; vim: set expandtab: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7514 +;-; vim: set filetype=lisp: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7515 +;;- End: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7516 diff -urN gcc-4.6.4-clean/gcc/config/m6809/m6809.opt gcc-4.6.4/gcc/config/m6809/m6809.opt |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7517 --- gcc-4.6.4-clean/gcc/config/m6809/m6809.opt 1969-12-31 17:00:00.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7518 +++ gcc-4.6.4/gcc/config/m6809/m6809.opt 2015-07-20 19:44:52.770843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7519 @@ -0,0 +1,98 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7520 +; Options for the M6809 port of the compiler |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7521 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7522 +; Copyright (C) 2005 Free Software Foundation, Inc. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7523 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7524 +; This file is part of GCC. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7525 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7526 +; GCC is free software; you can redistribute it and/or modify it under |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7527 +; the terms of the GNU General Public License as published by the Free |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7528 +; Software Foundation; either version 2, or (at your option) any later |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7529 +; version. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7530 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7531 +; GCC is distributed in the hope that it will be useful, but WITHOUT |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7532 +; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7533 +; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7534 +; License for more details. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7535 +; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7536 +; You should have received a copy of the GNU General Public License |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7537 +; along with GCC; see the file COPYING. If not, write to the Free |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7538 +; Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7539 +; 02110-1301, USA. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7540 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7541 +margcount |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7542 +Target Mask(ARGCOUNT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7543 +Push argument count |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7544 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7545 +mint8 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7546 +Target RejectNegative Mask(BYTE_INT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7547 +Use 8-bit integers |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7548 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7549 +mint16 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7550 +Target RejectNegative |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7551 +Use 16-bit integers InverseMask(BYTE_INT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7552 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7553 +mreg-args |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7554 +Target Mask(REG_ARGS) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7555 +Use registers for function arguments |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7556 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7557 +mshort_size |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7558 +Target RejectNegative Mask(SMALL_SIZE_T) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7559 +Use 8-bit size_t |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7560 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7561 +mlong_size |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7562 +Target RejectNegative InverseMask(SMALL_SIZE_T) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7563 +Use 16-bit size_t |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7564 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7565 +mdirect |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7566 +Target Mask(DIRECT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7567 +Enable direct addressing |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7568 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7569 +mwpc |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7570 +Target RejectNegative Mask(WPC) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7571 +Enable WPC platform extensions |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7572 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7573 +mexperiment |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7574 +Target RejectNegative Mask(EXPERIMENT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7575 +Enable current experimental feature |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7576 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7577 +m6309 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7578 +Target RejectNegative Mask(6309) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7579 +Enable Hitachi 6309 extensions |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7580 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7581 +mcasesi |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7582 +Target RejectNegative Mask(CASESI) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7583 +Enable the casesi pattern |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7584 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7585 +mfar-code-page= |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7586 +Target RejectNegative Joined Var(far_code_page_option) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7587 +Sets the far code page value for this compilation unit |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7588 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7589 +mcode-section= |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7590 +Target RejectNegative Joined Var(code_section_ptr) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7591 +Sets the name of the section for code |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7592 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7593 +mdata-section= |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7594 +Target RejectNegative Joined Var(data_section_ptr) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7595 +Sets the name of the section for initialized data |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7596 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7597 +mbss-section= |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7598 +Target RejectNegative Joined Var(bss_section_ptr) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7599 +Sets the name of the section for uninitialized data |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7600 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7601 +mabi_version= |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7602 +Target RejectNegative Joined Var(m6809_abi_version_ptr) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7603 +Sets the calling convention |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7604 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7605 +msoft-reg-count= |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7606 +Target RejectNegative Joined Var(m6809_soft_reg_count) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7607 +Sets the number of soft registers that can be used |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7608 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7609 +mdret |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7610 +Target RejectNegative Mask(DRET) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7611 +Put function call results in D, not X |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7612 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7613 +mfar-stack-param |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7614 +Target Mask(FAR_STACK_PARAM) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7615 +Enable stack parameters to a farcall |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7616 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7617 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7618 diff -urN gcc-4.6.4-clean/gcc/config/m6809/m6809-protos.h gcc-4.6.4/gcc/config/m6809/m6809-protos.h |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7619 --- gcc-4.6.4-clean/gcc/config/m6809/m6809-protos.h 1969-12-31 17:00:00.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7620 +++ gcc-4.6.4/gcc/config/m6809/m6809-protos.h 2015-07-20 19:44:52.770843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7621 @@ -0,0 +1,94 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7622 +/* GCC for 6809 : machine-specific function prototypes |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7623 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7624 +This file is part of GCC. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7625 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7626 +GCC is free software; you can redistribute it and/or modify |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7627 +it under the terms of the GNU General Public License as published by |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7628 +the Free Software Foundation; either version 3, or (at your option) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7629 +any later version. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7630 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7631 +GCC is distributed in the hope that it will be useful, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7632 +but WITHOUT ANY WARRANTY; without even the implied warranty of |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7633 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7634 +GNU General Public License for more details. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7635 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7636 +You should have received a copy of the GNU General Public License |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7637 +along with GCC; see the file COPYING3. If not see |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7638 +<http://www.gnu.org/licenses/>. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7639 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7640 +#ifndef __M6809_PROTOS_H__ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7641 +#define __M6809_PROTOS_H__ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7642 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7643 +void print_options (FILE *file); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7644 +void m6809_cpu_cpp_builtins (void); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7645 +void m6809_override_options (void); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7646 +void m6809_init_builtins (void); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7647 +unsigned int m6809_get_live_regs (void); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7648 +const char * m6809_get_regs_printable (unsigned int regs); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7649 +unsigned int m6809_get_regs_size (unsigned int regs); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7650 +int m6809_function_has_type_attr_p (tree decl, const char *); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7651 +int m6809_current_function_has_type_attr_p (const char *); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7652 +int prologue_epilogue_required (void); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7653 +int noreturn_functionp (rtx x); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7654 +void output_function_prologue (FILE *file, int size); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7655 +void output_function_epilogue (FILE *file, int size); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7656 +int check_float_value (enum machine_mode mode, double *d, int overflow); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7657 +void m6809_asm_named_section (const char *name, unsigned int flags, tree decl); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7658 +void m6809_asm_file_start (void); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7659 +void m6809_output_ascii (FILE *fp, const char *str, unsigned long size); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7660 +void m6809_declare_function_name (FILE *asm_out_file, const char *name, tree decl); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7661 +void m6809_reorg (void); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7662 +int m6809_current_function_is_void (void); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7663 +int m6809_can_merge_pushpop_p (int op, int regs1, int regs2); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7664 +int m6809_function_value_regno_p (unsigned int regno); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7665 +void emit_prologue_insns (void); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7666 +void emit_epilogue_insns (bool); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7667 +void m6809_conditional_register_usage (void); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7668 +void m6809_output_quoted_string (FILE *asm_file, const char *string); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7669 +int m6809_match_peephole2 (unsigned int peephole_id, unsigned int stage); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7670 +int m6809_hard_regno_mode_ok (unsigned int regno, enum machine_mode mode); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7671 +int power_of_two_p (unsigned int n); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7672 +void m6809_do_casesi (rtx index, rtx lower_bound, rtx range, rtx table_label, rtx default_label); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7673 +void m6809_output_addsi3 (int rtx_code, rtx *operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7674 +rtx m6809_function_arg_on_stack (CUMULATIVE_ARGS *cump); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7675 +void expand_constant_shift (int code, rtx dst, rtx src, rtx count); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7676 +int m6809_single_operand_operator (rtx exp); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7677 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7678 +#ifdef TREE_CODE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7679 +int m6809_init_cumulative_args (CUMULATIVE_ARGS cum, tree fntype, rtx libname); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7680 +#endif /* TREE_CODE */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7681 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7682 +#ifdef RTX_CODE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7683 +void print_direct_prefix (FILE *file, rtx addr); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7684 +void print_operand (FILE *file, rtx x, int code); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7685 +void print_operand_address (FILE *file, rtx addr); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7686 +void notice_update_cc (rtx exp, rtx insn); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7687 +enum reg_class m6809_preferred_reload_class (rtx x, enum reg_class regclass); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7688 +rtx gen_rtx_const_high (rtx r); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7689 +rtx gen_rtx_const_low (rtx r); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7690 +rtx gen_rtx_register_pushpop (int pop_flag, int regs); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7691 +void emit_libcall_insns (enum machine_mode mode, const char *name, rtx *operands, int count); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7692 +const char * output_branch_insn (enum rtx_code code, rtx *operands, int length); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7693 +void output_far_call_insn (rtx *operands, int has_return); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7694 +void m6809_initialize_trampoline (rtx tramp, tree fndecl, rtx cxt); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7695 +rtx m6809_expand_builtin (tree exp, rtx target, rtx subtarget, enum machine_mode mode, int ignore); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7696 +const char * far_functionp (rtx x); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7697 +rtx m6809_function_value (const tree valtype, const tree func); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7698 +void m6809_output_shift_insn (int rtx_code, rtx *operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7699 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7700 +const char * m6809_get_decl_bank (tree decl); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7701 +void output_branch_insn1 (const char *opcode, rtx *operands, int long_p); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7702 +rtx m6809_builtin_operand (tree arglist, enum machine_mode mode, int opnum); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7703 +const char * far_function_type_p (tree type); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7704 +void m6809_asm_trampoline_template(FILE *f); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7705 +bool m6809_frame_pointer_required (void); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7706 +int m6809_can_eliminate (int from, int to); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7707 +int m6809_initial_elimination_offset (int from, int to); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7708 +void m6809_emit_move_insn (rtx dst, rtx src); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7709 +void m6809_split_shift (enum rtx_code code, rtx *operands); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7710 +bool m6809_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7711 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7712 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7713 +#endif /* RTX_CODE */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7714 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7715 +#endif /* __M6809_PROTOS_H__ */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7716 diff -urN gcc-4.6.4-clean/gcc/config/m6809/predicates.md gcc-4.6.4/gcc/config/m6809/predicates.md |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7717 --- gcc-4.6.4-clean/gcc/config/m6809/predicates.md 1969-12-31 17:00:00.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7718 +++ gcc-4.6.4/gcc/config/m6809/predicates.md 2015-07-20 19:44:52.770843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7719 @@ -0,0 +1,78 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7720 +;; Predicate definitions for Motorola 6809 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7721 +;; Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7722 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7723 +;; This file is part of GCC. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7724 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7725 +;; GCC is free software; you can redistribute it and/or modify |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7726 +;; it under the terms of the GNU General Public License as published by |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7727 +;; the Free Software Foundation; either version 3, or (at your option) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7728 +;; any later version. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7729 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7730 +;; GCC is distributed in the hope that it will be useful, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7731 +;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7732 +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7733 +;; GNU General Public License for more details. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7734 +;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7735 +;; You should have received a copy of the GNU General Public License |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7736 +;; along with GCC; see the file COPYING3. If not see |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7737 +;; <http://www.gnu.org/licenses/>. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7738 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7739 +;; whole_register_operand is like register_operand, but it |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7740 +;; does not allow SUBREGs. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7741 +(define_predicate "whole_register_operand" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7742 + (and (match_code "reg") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7743 + (match_operand 0 "register_operand"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7744 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7745 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7746 +;; A predicate that matches any index register. This can be used in nameless |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7747 +;; patterns and peepholes which need a 16-bit reg, but not D. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7748 +(define_predicate "index_register_operand" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7749 + (and (match_code "reg") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7750 + (match_test "REGNO (op) == HARD_X_REGNUM || REGNO (op) == HARD_Y_REGNUM || REGNO (op) == HARD_U_REGNUM"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7751 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7752 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7753 +;; match only X |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7754 +(define_predicate "register_operand_x" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7755 + (and (match_code "reg") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7756 + (match_test "REGNO (op) == HARD_X_REGNUM"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7757 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7758 +;; match only D |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7759 +(define_predicate "register_operand_d" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7760 + (and (match_code "reg") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7761 + (match_test "REGNO (op) == HARD_D_REGNUM"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7762 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7763 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7764 +;; Likwise, a replacement for general_operand which excludes |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7765 +;; SUBREGs. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7766 +(define_predicate "whole_general_operand" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7767 + (and (match_code "const_int,const_double,const,symbol_ref,label_ref,reg,mem") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7768 + (match_operand 0 "general_operand"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7769 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7770 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7771 +(define_predicate "add_general_operand" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7772 + (and (match_code "const_int,const_double,const,symbol_ref,label_ref,reg,mem") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7773 + (match_operand 0 "general_operand") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7774 + (match_test "REGNO (op) != SOFT_AP_REGNUM"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7775 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7776 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7777 +(define_predicate "shift_count_operand" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7778 + (and (match_code "const_int") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7779 + (and (match_operand 0 "const_int_operand") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7780 + (match_test "INTVAL (op) == 1 || INTVAL (op) == 8")))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7781 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7782 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7783 +;; A predicate that matches any bitwise logical operator. This |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7784 +;; allows for a single RTL pattern to be used for multiple operations. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7785 +(define_predicate "logical_bit_operator" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7786 + (ior (match_code "and") (match_code "ior") (match_code "xor"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7787 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7788 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7789 +;; A predicate that matches any shift or rotate operator. This |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7790 +;; allows for a single RTL pattern to be used for multiple operations. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7791 +(define_predicate "shift_rotate_operator" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7792 + (ior (match_code "ashift") (match_code "ashiftrt") (match_code "lshiftrt") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7793 + (match_code "rotate") (match_code "rotatert"))) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7794 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7795 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7796 +(define_predicate "symbolic_operand" (match_code "symbol_ref")) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7797 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7798 diff -urN gcc-4.6.4-clean/gcc/config/m6809/t-coco gcc-4.6.4/gcc/config/m6809/t-coco |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7799 --- gcc-4.6.4-clean/gcc/config/m6809/t-coco 1969-12-31 17:00:00.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7800 +++ gcc-4.6.4/gcc/config/m6809/t-coco 2015-07-20 19:44:52.770843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7801 @@ -0,0 +1,6 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7802 +# For a few minor differences in code generation on the CoCo... |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7803 +T_CFLAGS = -DTARGET_COCO |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7804 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7805 +# For doing the startup differently on the CoCo... |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7806 +CRT0STUFF_T_CFLAGS += -Wa,--globalize-symbols -DTARGET_COCO |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7807 +# vim: set filetype=make: |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7808 diff -urN gcc-4.6.4-clean/gcc/config/m6809/t-m6809 gcc-4.6.4/gcc/config/m6809/t-m6809 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7809 --- gcc-4.6.4-clean/gcc/config/m6809/t-m6809 1969-12-31 17:00:00.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7810 +++ gcc-4.6.4/gcc/config/m6809/t-m6809 2015-07-20 19:44:52.770843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7811 @@ -0,0 +1,64 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7812 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7813 +# ranlib doesn't exist, so define it to 'true' to make it a no-op |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7814 +RANLIB_FOR_TARGET = true |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7815 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7816 +# Stubs for libgcc defined by m6809 are here |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7817 +LIB1ASMSRC = m6809/libgcc1.s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7818 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7819 +# Here are the functions that are implemented within libgcc1.s |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7820 +LIB1ASMFUNCS = _mulhi3 _divhi3 _modhi3 _udivhi3 _umodhi3 \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7821 + _euclid _seuclid _clzsi2 _clzdi2 _ctzsi2 _ctzdi2 _softregs \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7822 + _ashlhi3 _ashrhi3 _lshrhi3 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7823 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7824 +# Flags to use when building libgcc. IN_GCC does not seem necessary, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7825 +# although the compile breaks without it. -DDF=SF is required to set |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7826 +# the size of "double" to the same as the size of a "float". |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7827 +TARGET_LIBGCC2_CFLAGS =-DIN_GCC -Dinhibit_libc -DDF=SF -DLIBGCC2_HAS_SF_MODE=0 -DLIBGCC2_HAS_DF_MODE=0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7828 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7829 +LIB2ADDEH = |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7830 +LIB2ADDEHSTATIC = |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7831 +LIB2ADDEHSHARED = |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7832 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7833 +LIBGCC2_DEBUG_CFLAGS = |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7834 +LIBGCC2_CFLAGS = -Os $(LIBGCC2_INCLUDES) $(TARGET_LIBGCC2_CFLAGS) $(LIBGCC2_DEBUG_CFLAGS) $(GTHREAD_FLAGS) -DIN_LIBGCC2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7835 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7836 +# Multilib information |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7837 +# This creates multiple versions of libgcc.a for each set of incompatible |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7838 +# -mxxx options. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7839 +MULTILIB_OPTIONS = fpic mdret |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7840 +MULTILIB_DIRNAMES = |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7841 +MULTILIB_MATCHES = |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7842 +MULTILIB_EXCEPTIONS = |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7843 +EXTRA_MULTILIB_PARTS = crt0.o |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7844 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7845 +LIBGCC = stmp-multilib |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7846 +INSTALL_LIBGCC = install-multilib |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7847 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7848 +# We want fine grained libraries, so use the new code to build the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7849 +# floating point emulation libraries. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7850 +FPBIT = fp-bit.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7851 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7852 +fp-bit.c: $(srcdir)/config/fp-bit.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7853 + echo '#define FLOAT' > fp-bit.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7854 + echo '#define FLOAT_ONLY' >> fp-bit.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7855 + echo '#define CMPtype HItype' >> fp-bit.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7856 + echo '#define SMALL_MACHINE' >> fp-bit.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7857 + echo '#ifdef __LITTLE_ENDIAN__' >> fp-bit.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7858 + echo '#define FLOAT_BIT_ORDER_MISMATCH' >>fp-bit.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7859 + echo '#endif' >> fp-bit.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7860 + echo '#define DI SI' >> fp-bit.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7861 + cat $(srcdir)/config/fp-bit.c >> fp-bit.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7862 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7863 +# crt0.o is built from the following source file |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7864 +CRT0_S = $(srcdir)/config/m6809/crt0.S |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7865 +MCRT0_S = $(srcdir)/config/m6809/crt0.S |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7866 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7867 +# Flags to use when building crt0.o |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7868 +CRT0STUFF_T_CFLAGS += -fno-builtin -nostartfiles -nostdlib |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7869 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7870 +# Assemble startup files. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7871 +$(T)crt0.o: $(CRT0_S) $(GCC_PASSES) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7872 + $(GCC_FOR_TARGET) $(CRT0STUFF_T_CFLAGS) $(MULTILIB_CFLAGS) -c -o $(T)crt0.o -x assembler-with-cpp $(CRT0_S) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7873 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7874 +$(T)mcrt0.o: $(MCRT0_S) $(GCC_PASSES) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7875 + $(GCC_FOR_TARGET) $(CRT0STUFF_T_CFLAGS) $(MULTILIB_CFLAGS) -c -o $(T)mcrt0.o -x assembler-with-cpp $(MCRT0_S) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7876 diff -urN gcc-4.6.4-clean/gcc/config/m6809/t-sim gcc-4.6.4/gcc/config/m6809/t-sim |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7877 --- gcc-4.6.4-clean/gcc/config/m6809/t-sim 1969-12-31 17:00:00.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7878 +++ gcc-4.6.4/gcc/config/m6809/t-sim 2015-07-20 19:44:52.770843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7879 @@ -0,0 +1 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7880 +CRT0STUFF_T_CFLAGS += -DTARGET_SIM |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7881 diff -urN gcc-4.6.4-clean/gcc/config.gcc gcc-4.6.4/gcc/config.gcc |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7882 --- gcc-4.6.4-clean/gcc/config.gcc 2013-03-06 10:40:07.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7883 +++ gcc-4.6.4/gcc/config.gcc 2015-07-20 19:44:52.770843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7884 @@ -375,6 +375,9 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7885 cpu_type=m32r |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7886 extra_options="${extra_options} g.opt" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7887 ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7888 +m6809-*-*) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7889 + cpu_type=m6809 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7890 + ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7891 m68k-*-*) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7892 extra_headers=math-68881.h |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7893 ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7894 @@ -1706,6 +1709,12 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7895 thread_file='posix' |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7896 fi |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7897 ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7898 +m6809-coco-*) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7899 + tmake_file="${tmake_file} m6809/t-m6809 m6809/t-coco" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7900 + ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7901 +m6809-*-*) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7902 + tmake_file="${tmake_file} m6809/t-m6809 m6809/t-sim" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7903 + ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7904 # m68hc11 and m68hc12 share the same machine description. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7905 m68hc11-*-*|m6811-*-*) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7906 tm_file="dbxelf.h elfos.h usegas.h newlib-stdint.h m68hc11/m68hc11.h" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7907 diff -urN gcc-4.6.4-clean/gcc/gcse.c gcc-4.6.4/gcc/gcse.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7908 --- gcc-4.6.4-clean/gcc/gcse.c 2011-02-02 23:04:04.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7909 +++ gcc-4.6.4/gcc/gcse.c 2015-07-20 19:44:52.770843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7910 @@ -833,7 +833,6 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7911 max_distance = (GCSE_COST_DISTANCE_RATIO * cost) / 10; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7912 if (max_distance == 0) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7913 return 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7914 - |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7915 gcc_assert (max_distance > 0); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7916 } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7917 else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7918 diff -urN gcc-4.6.4-clean/gcc/libgcc2.c gcc-4.6.4/gcc/libgcc2.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7919 --- gcc-4.6.4-clean/gcc/libgcc2.c 2011-01-03 13:52:22.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7920 +++ gcc-4.6.4/gcc/libgcc2.c 2015-07-20 19:44:52.770843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7921 @@ -485,6 +485,7 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7922 #endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7923 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7924 #ifdef L_bswapsi2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7925 +#if MIN_UNITS_PER_WORD > 1 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7926 SItype |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7927 __bswapsi2 (SItype u) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7928 { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7929 @@ -494,7 +495,9 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7930 | (((u) & 0x000000ff) << 24)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7931 } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7932 #endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7933 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7934 #ifdef L_bswapdi2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7935 +#if LONG_LONG_TYPE_SIZE > 32 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7936 DItype |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7937 __bswapdi2 (DItype u) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7938 { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7939 @@ -508,6 +511,7 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7940 | (((u) & 0x00000000000000ffull) << 56)); |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7941 } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7942 #endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7943 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7944 #ifdef L_ffssi2 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7945 #undef int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7946 int |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7947 @@ -1280,7 +1284,7 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7948 UDWtype |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7949 __fixunssfDI (SFtype a) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7950 { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7951 -#if LIBGCC2_HAS_DF_MODE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7952 +#if LIBGCC2_HAS_DF_MODE || (FLT_MANT_DIG >= W_TYPE_SIZE) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7953 /* Convert the SFtype to a DFtype, because that is surely not going |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7954 to lose any bits. Some day someone else can write a faster version |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7955 that avoids converting to DFtype, and verify it really works right. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7956 @@ -1298,7 +1302,7 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7957 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7958 /* Assemble result from the two parts. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7959 return ((UDWtype) hi << W_TYPE_SIZE) | lo; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7960 -#elif FLT_MANT_DIG < W_TYPE_SIZE |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7961 +#else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7962 if (a < 1) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7963 return 0; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7964 if (a < Wtype_MAXp1_F) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7965 @@ -1334,8 +1338,6 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7966 return (DWtype)counter << shift; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7967 } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7968 return -1; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7969 -#else |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7970 -# error |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7971 #endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7972 } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7973 #endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7974 diff -urN gcc-4.6.4-clean/gcc/longlong.h gcc-4.6.4/gcc/longlong.h |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7975 --- gcc-4.6.4-clean/gcc/longlong.h 2011-10-04 01:28:50.000000000 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7976 +++ gcc-4.6.4/gcc/longlong.h 2015-07-20 19:44:52.770843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7977 @@ -528,6 +528,11 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7978 : "cbit") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7979 #endif /* __M32R__ */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7980 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7981 +#if defined (__m6309__) || defined (__m6809__) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7982 +#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7983 +#define count_trailing_zeros(COUNT,X) ((COUNT) = __builtin_ctz (X)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7984 +#endif |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7985 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7986 #if defined (__mc68000__) && W_TYPE_SIZE == 32 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7987 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7988 __asm__ ("add%.l %5,%1\n\taddx%.l %3,%0" \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7989 diff -urN gcc-4.6.4-clean/gcc/Makefile.in gcc-4.6.4/gcc/Makefile.in |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7990 --- gcc-4.6.4-clean/gcc/Makefile.in 2013-04-01 02:32:34.000000000 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7991 +++ gcc-4.6.4/gcc/Makefile.in 2015-07-20 19:44:52.770843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7992 @@ -2003,14 +2003,14 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7993 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7994 # Compile the start modules crt0.o and mcrt0.o that are linked with |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7995 # every program |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7996 -$(T)crt0.o: s-crt0 ; @true |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7997 -$(T)mcrt0.o: s-crt0; @true |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7998 +crt0.o: s-crt0 ; @true |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
7999 +mcrt0.o: s-crt0; @true |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8000 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8001 s-crt0: $(CRT0_S) $(MCRT0_S) $(GCC_PASSES) $(CONFIG_H) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8002 $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(CRT0STUFF_T_CFLAGS) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8003 - -o $(T)crt0.o -c $(CRT0_S) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8004 + -o crt0.o -c $(CRT0_S) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8005 $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(CRT0STUFF_T_CFLAGS) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8006 - -o $(T)mcrt0.o -c $(MCRT0_S) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8007 + -o mcrt0.o -c $(MCRT0_S) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8008 $(STAMP) s-crt0 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8009 # |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8010 # Compiling object files from source files. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8011 diff -urN gcc-4.6.4-clean/gcc/opth-gen.awk gcc-4.6.4/gcc/opth-gen.awk |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8012 --- gcc-4.6.4-clean/gcc/opth-gen.awk 2011-02-08 10:41:00.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8013 +++ gcc-4.6.4/gcc/opth-gen.awk 2015-07-20 19:44:52.774843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8014 @@ -121,7 +121,7 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8015 END { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8016 print "/* This file is auto-generated by opth-gen.awk. */" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8017 print "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8018 -print "#ifndef OPTIONS_H" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8019 +print "#if !defined(OPTIONS_H) && !defined(IN_LIBGCC2)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8020 print "#define OPTIONS_H" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8021 print "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8022 print "#include \"flag-types.h\"" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8023 @@ -432,18 +432,9 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8024 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8025 for (i = 0; i < n_opts; i++) { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8026 opt = opt_args("InverseMask", flags[i]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8027 - if (opt ~ ",") { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8028 - vname = var_name(flags[i]) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8029 - macro = "OPTION_" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8030 - mask = "OPTION_MASK_" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8031 - if (vname == "") { |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8032 - vname = "target_flags" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8033 - macro = "TARGET_" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8034 - mask = "MASK_" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8035 - } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8036 - print "#define " macro nth_arg(1, opt) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8037 - " ((" vname " & " mask nth_arg(0, opt) ") == 0)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8038 - } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8039 + if (opt ~ ",") |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8040 + print "#define TARGET_" nth_arg(1, opt) \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8041 + " ((target_flags & MASK_" nth_arg(0, opt) ") == 0)" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8042 } |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8043 print "" |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8044 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8045 diff -urN gcc-4.6.4-clean/gcc/tree.h gcc-4.6.4/gcc/tree.h |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8046 --- gcc-4.6.4-clean/gcc/tree.h 2011-10-06 13:57:52.000000000 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8047 +++ gcc-4.6.4/gcc/tree.h 2015-07-20 19:44:52.774843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8048 @@ -3563,6 +3563,8 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8049 TI_UINTDI_TYPE, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8050 TI_UINTTI_TYPE, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8051 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8052 + TI_UINT8_TYPE, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8053 + TI_UINT16_TYPE, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8054 TI_UINT32_TYPE, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8055 TI_UINT64_TYPE, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8056 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8057 diff -urN gcc-4.6.4-clean/gcc/version.c gcc-4.6.4/gcc/version.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8058 --- gcc-4.6.4-clean/gcc/version.c 2009-04-21 13:03:23.000000000 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8059 +++ gcc-4.6.4/gcc/version.c 2015-07-20 19:44:52.774843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8060 @@ -21,16 +21,16 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8061 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8062 /* This is the location of the online document giving instructions for |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8063 reporting bugs. If you distribute a modified version of GCC, |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8064 - please configure with --with-bugurl pointing to a document giving |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8065 - instructions for reporting bugs to you, not us. (You are of course |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8066 - welcome to forward us bugs reported to you, if you determine that |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8067 - they are not bugs in your modifications.) */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8068 + please change this to refer to a document giving instructions for |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8069 + reporting bugs to you, not us. (You are of course welcome to |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8070 + forward us bugs reported to you, if you determine that they are |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8071 + not bugs in your modifications.) */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8072 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8073 -const char bug_report_url[] = BUGURL; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8074 +const char bug_report_url[] = "<URL:http://lost.l-w.ca/coco/lwtools/>"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8075 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8076 /* The complete version string, assembled from several pieces. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8077 BASEVER, DATESTAMP, DEVPHASE, and REVISION are defined by the |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8078 Makefile. */ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8079 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8080 -const char version_string[] = BASEVER DATESTAMP DEVPHASE REVISION; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8081 +const char version_string[] = BASEVER DATESTAMP DEVPHASE REVISION " (gcc6809lw)"; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8082 const char pkgversion_string[] = PKGVERSION; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8083 diff -urN gcc-4.6.4-clean/libgcc/config.host gcc-4.6.4/libgcc/config.host |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8084 --- gcc-4.6.4-clean/libgcc/config.host 2011-11-23 15:15:54.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8085 +++ gcc-4.6.4/libgcc/config.host 2015-07-20 19:44:52.774843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8086 @@ -371,6 +371,8 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8087 ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8088 m32rle-*-linux*) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8089 ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8090 +m6809*) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8091 + ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8092 m68hc11-*-*|m6811-*-*) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8093 ;; |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8094 m68hc12-*-*|m6812-*-*) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8095 diff -urN gcc-4.6.4-clean/libgcc/fixed-obj.mk gcc-4.6.4/libgcc/fixed-obj.mk |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8096 --- gcc-4.6.4-clean/libgcc/fixed-obj.mk 2007-09-17 16:18:13.000000000 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8097 +++ gcc-4.6.4/libgcc/fixed-obj.mk 2015-07-20 19:44:52.774843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8098 @@ -23,7 +23,7 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8099 #$(info $o$(objext): -DL$($o-label) $($o-opt)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8100 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8101 $o$(objext): %$(objext): $(gcc_srcdir)/config/fixed-bit.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8102 - $(gcc_compile) -DL$($*-label) $($*-opt) -c $(gcc_srcdir)/config/fixed-bit.c $(vis_hide) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8103 + $(gcc_compile) -DL$($*-label) $($*-opt) -c $(gcc_srcdir)/config/fixed-bit.c $(vis_hide) -save-temps |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8104 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8105 ifeq ($(enable_shared),yes) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8106 $(o)_s$(objext): %_s$(objext): $(gcc_srcdir)/config/fixed-bit.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8107 diff -urN gcc-4.6.4-clean/libgcc/Makefile.in gcc-4.6.4/libgcc/Makefile.in |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8108 --- gcc-4.6.4-clean/libgcc/Makefile.in 2012-12-04 12:11:33.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8109 +++ gcc-4.6.4/libgcc/Makefile.in 2015-07-20 19:44:52.774843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8110 @@ -374,8 +374,8 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8111 # Build lib2funcs. For the static library also include LIB2FUNCS_ST. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8112 lib2funcs-o = $(patsubst %,%$(objext),$(lib2funcs) $(LIB2FUNCS_ST)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8113 $(lib2funcs-o): %$(objext): $(gcc_srcdir)/libgcc2.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8114 - $(gcc_compile) -DL$* -c $(gcc_srcdir)/libgcc2.c \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8115 - $(vis_hide) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8116 + ln -sf $(gcc_srcdir)/libgcc2.c $*.c && \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8117 + $(gcc_compile) -DL$* -c $*.c $(vis_hide) -save-temps |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8118 libgcc-objects += $(lib2funcs-o) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8119 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8120 ifeq ($(enable_shared),yes) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8121 @@ -410,8 +410,9 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8122 # Build LIB2_DIVMOD_FUNCS. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8123 lib2-divmod-o = $(patsubst %,%$(objext),$(LIB2_DIVMOD_FUNCS)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8124 $(lib2-divmod-o): %$(objext): $(gcc_srcdir)/libgcc2.c |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8125 - $(gcc_compile) -DL$* -c $(gcc_srcdir)/libgcc2.c \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8126 - -fexceptions -fnon-call-exceptions $(vis_hide) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8127 + ln -sf $(gcc_srcdir)/libgcc2.c $*.c && \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8128 + $(gcc_compile) -DL$* -c $*.c \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8129 + -fexceptions -fnon-call-exceptions $(vis_hide) -save-temps |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8130 libgcc-objects += $(lib2-divmod-o) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8131 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8132 ifeq ($(enable_shared),yes) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8133 @@ -443,7 +444,8 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8134 ifneq ($(FPBIT),) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8135 fpbit-o = $(patsubst %,%$(objext),$(FPBIT_FUNCS)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8136 $(fpbit-o): %$(objext): $(FPBIT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8137 - $(gcc_compile) -DFINE_GRAINED_LIBRARIES -DL$* -c $(FPBIT) $(vis_hide) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8138 + ln -sf $(FPBIT) $*.c && \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8139 + $(gcc_compile) -DFINE_GRAINED_LIBRARIES -DL$* -c $*.c $(vis_hide) -save-temps |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8140 libgcc-objects += $(fpbit-o) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8141 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8142 ifeq ($(enable_shared),yes) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8143 @@ -458,7 +460,8 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8144 ifneq ($(DPBIT),) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8145 dpbit-o = $(patsubst %,%$(objext),$(DPBIT_FUNCS)) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8146 $(dpbit-o): %$(objext): $(DPBIT) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8147 - $(gcc_compile) -DFINE_GRAINED_LIBRARIES -DL$* -c $(DPBIT) $(vis_hide) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8148 + ln -sf $(DPBIT) $*.c && \ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8149 + $(gcc_compile) -DFINE_GRAINED_LIBRARIES -DL$* -c $*.c $(vis_hide) -save-temps |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8150 libgcc-objects += $(dpbit-o) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8151 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8152 ifeq ($(enable_shared),yes) |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8153 diff -urN gcc-4.6.4-clean/README.LW gcc-4.6.4/README.LW |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8154 --- gcc-4.6.4-clean/README.LW 1969-12-31 17:00:00.000000000 -0700 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8155 +++ gcc-4.6.4/README.LW 2015-07-20 19:44:52.774843181 -0600 |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8156 @@ -0,0 +1,14 @@ |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8157 +This is a port of gcc6809 which is designed to work with the lwtools |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8158 +cross-assembler and linker package. You will need several scripts from that |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8159 +package, available at http://lost.l-w.ca/coco/lwtools/, in order to use |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8160 +this. Instructions for building are present in the lwtools package. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8161 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8162 +This work is based extensively on the gcc6809 4.3.4-3 release by Brian |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8163 +Dominy (brian@oddchange.com) with some significant renovations to make it |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8164 +work with gcc 4.6.1. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8165 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8166 +There is no guarantee that it will work for any particular purpose you |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8167 +choose to put it to. |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8168 + |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8169 +If you run into any problems, contact William Astle (lost@l-w.ca). DO NOT |
d0c0fede5021
Update to gcc6809lw patch which may help compilation of some sources
William Astle <lost@l-w.ca>
parents:
diff
changeset
|
8170 +contact the main GCC developers! |