patches/binutils/2.15/gccpr15247-fix.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Feb 24 11:00:05 2007 +0000 (2007-02-24)
changeset 1 eeea35fbf182
permissions -rw-r--r--
Add the full crosstool-NG sources to the new repository of its own.
You might just say: 'Yeah! crosstool-NG's got its own repo!".
Unfortunately, that's because the previous repo got damaged beyond repair and I had no backup.
That means I'm putting backups in place in the afternoon.
That also means we've lost history... :-(
yann@1
     1
See
yann@1
     2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15247
yann@1
     3
yann@1
     4
Fixes spurious error
yann@1
     5
/tmp/ccvNi4ou.s: Assembler messages:
yann@1
     6
/tmp/ccvNi4ou.s:2310: Error: Illegal operands: There are only 32 single precision f registers; [0-31]
yann@1
     7
make[2]: *** [/home/dank/wk/crosstool-0.28-rc10/build/sparc64-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/math/dosincos.o] Error 1
yann@1
     8
yann@1
     9
when compiling glibc's dosincos.c with gcc-3.4.0
yann@1
    10
yann@1
    11
===================================================================
yann@1
    12
RCS file: /cvs/src/src/opcodes/sparc-opc.c,v
yann@1
    13
retrieving revision 1.9
yann@1
    14
retrieving revision 1.10
yann@1
    15
diff -u -r1.9 -r1.10
yann@1
    16
--- src/opcodes/sparc-opc.c	2004/01/18 23:46:32	1.9
yann@1
    17
+++ src/opcodes/sparc-opc.c	2004/04/20 10:23:51	1.10
yann@1
    18
@@ -1273,110 +1273,72 @@
yann@1
    19
 #define FM_DF 2		/* v9 */
yann@1
    20
 #define FM_QF 3		/* v9 */
yann@1
    21
 
yann@1
    22
-#define fmovicc(opcode, fpsize, cond, flags) /* v9 */ \
yann@1
    23
-{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z,f,g", flags, v9 }, \
yann@1
    24
-{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z,f,g", flags, v9 }
yann@1
    25
-
yann@1
    26
-#define fmovfcc(opcode, fpsize, fcond, flags) /* v9 */ \
yann@1
    27
-{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags, v9 }, \
yann@1
    28
-{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags, v9 }, \
yann@1
    29
-{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags, v9 }, \
yann@1
    30
-{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags, v9 }
yann@1
    31
+#define fmoviccx(opcode, fpsize, args, cond, flags) /* v9 */ \
yann@1
    32
+{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z," args, flags, v9 }, \
yann@1
    33
+{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z," args, flags, v9 }
yann@1
    34
+
yann@1
    35
+#define fmovfccx(opcode, fpsize, args, fcond, flags) /* v9 */ \
yann@1
    36
+{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags, v9 }, \
yann@1
    37
+{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags, v9 }, \
yann@1
    38
+{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags, v9 }, \
yann@1
    39
+{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags, v9 }
yann@1
    40
 
yann@1
    41
 /* FIXME: use fmovicc/fmovfcc? */ /* v9 */
yann@1
    42
-#define fmovcc(opcode, fpsize, cond, fcond, flags) /* v9 */ \
yann@1
    43
-{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z,f,g", flags | F_FLOAT, v9 }, \
yann@1
    44
-{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags | F_FLOAT, v9 }, \
yann@1
    45
-{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z,f,g", flags | F_FLOAT, v9 }, \
yann@1
    46
-{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags | F_FLOAT, v9 }, \
yann@1
    47
-{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags | F_FLOAT, v9 }, \
yann@1
    48
-{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags | F_FLOAT, v9 }
yann@1
    49
-
yann@1
    50
-/* v9 */ fmovcc  ("fmovda",	FM_DF, CONDA, FCONDA, 0),
yann@1
    51
-/* v9 */ fmovcc  ("fmovqa",	FM_QF, CONDA, FCONDA, 0),
yann@1
    52
-/* v9 */ fmovcc  ("fmovsa",	FM_SF, CONDA, FCONDA, 0),
yann@1
    53
-/* v9 */ fmovicc ("fmovdcc",	FM_DF, CONDCC, 0),
yann@1
    54
-/* v9 */ fmovicc ("fmovqcc",	FM_QF, CONDCC, 0),
yann@1
    55
-/* v9 */ fmovicc ("fmovscc",	FM_SF, CONDCC, 0),
yann@1
    56
-/* v9 */ fmovicc ("fmovdcs",	FM_DF, CONDCS, 0),
yann@1
    57
-/* v9 */ fmovicc ("fmovqcs",	FM_QF, CONDCS, 0),
yann@1
    58
-/* v9 */ fmovicc ("fmovscs",	FM_SF, CONDCS, 0),
yann@1
    59
-/* v9 */ fmovcc  ("fmovde",	FM_DF, CONDE, FCONDE, 0),
yann@1
    60
-/* v9 */ fmovcc  ("fmovqe",	FM_QF, CONDE, FCONDE, 0),
yann@1
    61
-/* v9 */ fmovcc  ("fmovse",	FM_SF, CONDE, FCONDE, 0),
yann@1
    62
-/* v9 */ fmovcc  ("fmovdg",	FM_DF, CONDG, FCONDG, 0),
yann@1
    63
-/* v9 */ fmovcc  ("fmovqg",	FM_QF, CONDG, FCONDG, 0),
yann@1
    64
-/* v9 */ fmovcc  ("fmovsg",	FM_SF, CONDG, FCONDG, 0),
yann@1
    65
-/* v9 */ fmovcc  ("fmovdge",	FM_DF, CONDGE, FCONDGE, 0),
yann@1
    66
-/* v9 */ fmovcc  ("fmovqge",	FM_QF, CONDGE, FCONDGE, 0),
yann@1
    67
-/* v9 */ fmovcc  ("fmovsge",	FM_SF, CONDGE, FCONDGE, 0),
yann@1
    68
-/* v9 */ fmovicc ("fmovdgeu",	FM_DF, CONDGEU, F_ALIAS),
yann@1
    69
-/* v9 */ fmovicc ("fmovqgeu",	FM_QF, CONDGEU, F_ALIAS),
yann@1
    70
-/* v9 */ fmovicc ("fmovsgeu",	FM_SF, CONDGEU, F_ALIAS),
yann@1
    71
-/* v9 */ fmovicc ("fmovdgu",	FM_DF, CONDGU, 0),
yann@1
    72
-/* v9 */ fmovicc ("fmovqgu",	FM_QF, CONDGU, 0),
yann@1
    73
-/* v9 */ fmovicc ("fmovsgu",	FM_SF, CONDGU, 0),
yann@1
    74
-/* v9 */ fmovcc  ("fmovdl",	FM_DF, CONDL, FCONDL, 0),
yann@1
    75
-/* v9 */ fmovcc  ("fmovql",	FM_QF, CONDL, FCONDL, 0),
yann@1
    76
-/* v9 */ fmovcc  ("fmovsl",	FM_SF, CONDL, FCONDL, 0),
yann@1
    77
-/* v9 */ fmovcc  ("fmovdle",	FM_DF, CONDLE, FCONDLE, 0),
yann@1
    78
-/* v9 */ fmovcc  ("fmovqle",	FM_QF, CONDLE, FCONDLE, 0),
yann@1
    79
-/* v9 */ fmovcc  ("fmovsle",	FM_SF, CONDLE, FCONDLE, 0),
yann@1
    80
-/* v9 */ fmovicc ("fmovdleu",	FM_DF, CONDLEU, 0),
yann@1
    81
-/* v9 */ fmovicc ("fmovqleu",	FM_QF, CONDLEU, 0),
yann@1
    82
-/* v9 */ fmovicc ("fmovsleu",	FM_SF, CONDLEU, 0),
yann@1
    83
-/* v9 */ fmovfcc ("fmovdlg",	FM_DF, FCONDLG, 0),
yann@1
    84
-/* v9 */ fmovfcc ("fmovqlg",	FM_QF, FCONDLG, 0),
yann@1
    85
-/* v9 */ fmovfcc ("fmovslg",	FM_SF, FCONDLG, 0),
yann@1
    86
-/* v9 */ fmovicc ("fmovdlu",	FM_DF, CONDLU, F_ALIAS),
yann@1
    87
-/* v9 */ fmovicc ("fmovqlu",	FM_QF, CONDLU, F_ALIAS),
yann@1
    88
-/* v9 */ fmovicc ("fmovslu",	FM_SF, CONDLU, F_ALIAS),
yann@1
    89
-/* v9 */ fmovcc  ("fmovdn",	FM_DF, CONDN, FCONDN, 0),
yann@1
    90
-/* v9 */ fmovcc  ("fmovqn",	FM_QF, CONDN, FCONDN, 0),
yann@1
    91
-/* v9 */ fmovcc  ("fmovsn",	FM_SF, CONDN, FCONDN, 0),
yann@1
    92
-/* v9 */ fmovcc  ("fmovdne",	FM_DF, CONDNE, FCONDNE, 0),
yann@1
    93
-/* v9 */ fmovcc  ("fmovqne",	FM_QF, CONDNE, FCONDNE, 0),
yann@1
    94
-/* v9 */ fmovcc  ("fmovsne",	FM_SF, CONDNE, FCONDNE, 0),
yann@1
    95
-/* v9 */ fmovicc ("fmovdneg",	FM_DF, CONDNEG, 0),
yann@1
    96
-/* v9 */ fmovicc ("fmovqneg",	FM_QF, CONDNEG, 0),
yann@1
    97
-/* v9 */ fmovicc ("fmovsneg",	FM_SF, CONDNEG, 0),
yann@1
    98
-/* v9 */ fmovcc  ("fmovdnz",	FM_DF, CONDNZ, FCONDNZ, F_ALIAS),
yann@1
    99
-/* v9 */ fmovcc  ("fmovqnz",	FM_QF, CONDNZ, FCONDNZ, F_ALIAS),
yann@1
   100
-/* v9 */ fmovcc  ("fmovsnz",	FM_SF, CONDNZ, FCONDNZ, F_ALIAS),
yann@1
   101
-/* v9 */ fmovfcc ("fmovdo",	FM_DF, FCONDO, 0),
yann@1
   102
-/* v9 */ fmovfcc ("fmovqo",	FM_QF, FCONDO, 0),
yann@1
   103
-/* v9 */ fmovfcc ("fmovso",	FM_SF, FCONDO, 0),
yann@1
   104
-/* v9 */ fmovicc ("fmovdpos",	FM_DF, CONDPOS, 0),
yann@1
   105
-/* v9 */ fmovicc ("fmovqpos",	FM_QF, CONDPOS, 0),
yann@1
   106
-/* v9 */ fmovicc ("fmovspos",	FM_SF, CONDPOS, 0),
yann@1
   107
-/* v9 */ fmovfcc ("fmovdu",	FM_DF, FCONDU, 0),
yann@1
   108
-/* v9 */ fmovfcc ("fmovqu",	FM_QF, FCONDU, 0),
yann@1
   109
-/* v9 */ fmovfcc ("fmovsu",	FM_SF, FCONDU, 0),
yann@1
   110
-/* v9 */ fmovfcc ("fmovdue",	FM_DF, FCONDUE, 0),
yann@1
   111
-/* v9 */ fmovfcc ("fmovque",	FM_QF, FCONDUE, 0),
yann@1
   112
-/* v9 */ fmovfcc ("fmovsue",	FM_SF, FCONDUE, 0),
yann@1
   113
-/* v9 */ fmovfcc ("fmovdug",	FM_DF, FCONDUG, 0),
yann@1
   114
-/* v9 */ fmovfcc ("fmovqug",	FM_QF, FCONDUG, 0),
yann@1
   115
-/* v9 */ fmovfcc ("fmovsug",	FM_SF, FCONDUG, 0),
yann@1
   116
-/* v9 */ fmovfcc ("fmovduge",	FM_DF, FCONDUGE, 0),
yann@1
   117
-/* v9 */ fmovfcc ("fmovquge",	FM_QF, FCONDUGE, 0),
yann@1
   118
-/* v9 */ fmovfcc ("fmovsuge",	FM_SF, FCONDUGE, 0),
yann@1
   119
-/* v9 */ fmovfcc ("fmovdul",	FM_DF, FCONDUL, 0),
yann@1
   120
-/* v9 */ fmovfcc ("fmovqul",	FM_QF, FCONDUL, 0),
yann@1
   121
-/* v9 */ fmovfcc ("fmovsul",	FM_SF, FCONDUL, 0),
yann@1
   122
-/* v9 */ fmovfcc ("fmovdule",	FM_DF, FCONDULE, 0),
yann@1
   123
-/* v9 */ fmovfcc ("fmovqule",	FM_QF, FCONDULE, 0),
yann@1
   124
-/* v9 */ fmovfcc ("fmovsule",	FM_SF, FCONDULE, 0),
yann@1
   125
-/* v9 */ fmovicc ("fmovdvc",	FM_DF, CONDVC, 0),
yann@1
   126
-/* v9 */ fmovicc ("fmovqvc",	FM_QF, CONDVC, 0),
yann@1
   127
-/* v9 */ fmovicc ("fmovsvc",	FM_SF, CONDVC, 0),
yann@1
   128
-/* v9 */ fmovicc ("fmovdvs",	FM_DF, CONDVS, 0),
yann@1
   129
-/* v9 */ fmovicc ("fmovqvs",	FM_QF, CONDVS, 0),
yann@1
   130
-/* v9 */ fmovicc ("fmovsvs",	FM_SF, CONDVS, 0),
yann@1
   131
-/* v9 */ fmovcc  ("fmovdz",	FM_DF, CONDZ, FCONDZ, F_ALIAS),
yann@1
   132
-/* v9 */ fmovcc  ("fmovqz",	FM_QF, CONDZ, FCONDZ, F_ALIAS),
yann@1
   133
-/* v9 */ fmovcc  ("fmovsz",	FM_SF, CONDZ, FCONDZ, F_ALIAS),
yann@1
   134
-
yann@1
   135
+#define fmovccx(opcode, fpsize, args, cond, fcond, flags) /* v9 */ \
yann@1
   136
+{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z," args, flags | F_FLOAT, v9 }, \
yann@1
   137
+{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags | F_FLOAT, v9 }, \
yann@1
   138
+{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z," args, flags | F_FLOAT, v9 }, \
yann@1
   139
+{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags | F_FLOAT, v9 }, \
yann@1
   140
+{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags | F_FLOAT, v9 }, \
yann@1
   141
+{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags | F_FLOAT, v9 }
yann@1
   142
+
yann@1
   143
+#define fmovicc(suffix, cond, flags) /* v9 */ \
yann@1
   144
+fmoviccx("fmovd" suffix, FM_DF, "B,H", cond, flags),		\
yann@1
   145
+fmoviccx("fmovq" suffix, FM_QF, "R,J", cond, flags),		\
yann@1
   146
+fmoviccx("fmovs" suffix, FM_SF, "f,g", cond, flags)
yann@1
   147
+
yann@1
   148
+#define fmovfcc(suffix, fcond, flags) /* v9 */ \
yann@1
   149
+fmovfccx("fmovd" suffix, FM_DF, "B,H", fcond, flags),		\
yann@1
   150
+fmovfccx("fmovq" suffix, FM_QF, "R,J", fcond, flags),		\
yann@1
   151
+fmovfccx("fmovs" suffix, FM_SF, "f,g", fcond, flags)
yann@1
   152
+
yann@1
   153
+#define fmovcc(suffix, cond, fcond, flags) /* v9 */ \
yann@1
   154
+fmovccx("fmovd" suffix, FM_DF, "B,H", cond, fcond, flags),	\
yann@1
   155
+fmovccx("fmovq" suffix, FM_QF, "R,J", cond, fcond, flags),	\
yann@1
   156
+fmovccx("fmovs" suffix, FM_SF, "f,g", cond, fcond, flags)
yann@1
   157
+
yann@1
   158
+/* v9 */ fmovcc  ("a", CONDA, FCONDA, 0),
yann@1
   159
+/* v9 */ fmovicc ("cc", CONDCC, 0),
yann@1
   160
+/* v9 */ fmovicc ("cs", CONDCS, 0),
yann@1
   161
+/* v9 */ fmovcc  ("e", CONDE, FCONDE, 0),
yann@1
   162
+/* v9 */ fmovcc  ("g", CONDG, FCONDG, 0),
yann@1
   163
+/* v9 */ fmovcc  ("ge", CONDGE, FCONDGE, 0),
yann@1
   164
+/* v9 */ fmovicc ("geu", CONDGEU, F_ALIAS),
yann@1
   165
+/* v9 */ fmovicc ("gu", CONDGU, 0),
yann@1
   166
+/* v9 */ fmovcc  ("l", CONDL, FCONDL, 0),
yann@1
   167
+/* v9 */ fmovcc  ("le", CONDLE, FCONDLE, 0),
yann@1
   168
+/* v9 */ fmovicc ("leu", CONDLEU, 0),
yann@1
   169
+/* v9 */ fmovfcc ("lg", FCONDLG, 0),
yann@1
   170
+/* v9 */ fmovicc ("lu", CONDLU, F_ALIAS),
yann@1
   171
+/* v9 */ fmovcc  ("n", CONDN, FCONDN, 0),
yann@1
   172
+/* v9 */ fmovcc  ("ne", CONDNE, FCONDNE, 0),
yann@1
   173
+/* v9 */ fmovicc ("neg", CONDNEG, 0),
yann@1
   174
+/* v9 */ fmovcc  ("nz", CONDNZ, FCONDNZ, F_ALIAS),
yann@1
   175
+/* v9 */ fmovfcc ("o", FCONDO, 0),
yann@1
   176
+/* v9 */ fmovicc ("pos", CONDPOS, 0),
yann@1
   177
+/* v9 */ fmovfcc ("u", FCONDU, 0),
yann@1
   178
+/* v9 */ fmovfcc ("ue", FCONDUE, 0),
yann@1
   179
+/* v9 */ fmovfcc ("ug", FCONDUG, 0),
yann@1
   180
+/* v9 */ fmovfcc ("uge", FCONDUGE, 0),
yann@1
   181
+/* v9 */ fmovfcc ("ul", FCONDUL, 0),
yann@1
   182
+/* v9 */ fmovfcc ("ule", FCONDULE, 0),
yann@1
   183
+/* v9 */ fmovicc ("vc", CONDVC, 0),
yann@1
   184
+/* v9 */ fmovicc ("vs", CONDVS, 0),
yann@1
   185
+/* v9 */ fmovcc  ("z", CONDZ, FCONDZ, F_ALIAS),
yann@1
   186
+
yann@1
   187
+#undef fmoviccx /* v9 */
yann@1
   188
+#undef fmovfccx /* v9 */
yann@1
   189
+#undef fmovccx /* v9 */
yann@1
   190
 #undef fmovicc /* v9 */
yann@1
   191
 #undef fmovfcc /* v9 */
yann@1
   192
 #undef fmovcc /* v9 */