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