import gdb-2000-01-17 snapshot
[external/binutils.git] / gas / doc / c-m32r.texi
1 @c Copyright (C) 1991, 92-98, 1999 Free Software Foundation, Inc.
2 @c This is part of the GAS manual.
3 @c For copying conditions, see the file as.texinfo.
4 @ifset GENERIC
5 @page
6 @node M32R-Dependent
7 @chapter M32R Dependent Features
8 @end ifset
9 @ifclear GENERIC
10 @node Machine Dependencies
11 @chapter M32R Dependent Features
12 @end ifclear
13
14 @cindex M32R support
15 @menu
16 * M32R-Opts::                   M32R Options
17 * M32R-Warnings::               M32R Warnings
18 @end menu
19
20 @node M32R-Opts
21 @section M32R Options
22
23 @cindex options, M32R
24 @cindex M32R options
25
26 The Mitsubishi M32R version of @code{@value{AS}} has a few machine
27 dependent options:
28
29 @table @code
30 @item -m32rx
31 @cindex @samp{-m32rx} option, M32RX
32 @cindex architecture options, M32RX
33 @cindex M32R architecture options
34 @code{@value{AS}} can assemble code for several different members of the
35 Mitsubishi M32R family.  Normally the default is to assemble code for
36 the M32R microprocessor.  This option may be used to change the default
37 to the M32RX microprocessor, which adds some more instructions to the
38 basic M32R instruction set, and some additional parameters to some of
39 the original instructions.
40
41 @item -warn-explicit-parallel-conflicts
42 @cindex @samp{-warn-explicit-parallel-conflicts} option, M32RX
43 Instructs @code{@value{AS}} to produce warning messages when
44 questionable parallel instructions are encountered.  This option is
45 enabled by default, but @code{@value{GCC}} disables it when it invokes
46 @code{@value{AS}} directly.  Questionable instructions are those whoes
47 behaviour would be different if they were executed sequentially.  For
48 example the code fragment @samp{mv r1, r2 || mv r3, r1} produces a
49 different result from @samp{mv r1, r2 \n mv r3, r1} since the former
50 moves r1 into r3 and then r2 into r1, whereas the later moves r2 into r1
51 and r3.
52
53 @item -Wp
54 @cindex @samp{-Wp} option, M32RX
55 This is a shorter synonym for the @emph{-warn-explicit-parallel-conflicts}
56 option.
57
58 @item -no-warn-explicit-parallel-conflicts
59 @cindex @samp{-no-warn-explicit-parallel-conflicts} option, M32RX
60 Instructs @code{@value{AS}} not to produce warning messages when
61 questionable parallel instructions are encountered.
62
63 @item -Wnp
64 @cindex @samp{-Wnp} option, M32RX
65 This is a shorter synonym for the @emph{-no-warn-explicit-parallel-conflicts}
66 option.
67
68 @end table
69
70 @node M32R-Warnings
71 @section M32R Warnings
72
73 @cindex warnings, M32R
74 @cindex M32R warnings
75
76 There are several warning and error messages that can be produced by
77 @code{@value{AS}} which are specific to the M32R:
78
79 @table @code
80
81 @item output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?
82 This message is only produced if warnings for explicit parallel
83 conflicts have been enabled.  It indicates that the assembler has
84 encountered a parallel instruction in which the destination register of
85 the left hand instruction is used as an input register in the right hand
86 instruction.  For example in this code fragment
87 @samp{mv r1, r2 || neg r3, r1} register r1 is the destination of the
88 move instruction and the input to the neg instruction.
89
90 @item output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?
91 This message is only produced if warnings for explicit parallel
92 conflicts have been enabled.  It indicates that the assembler has
93 encountered a parallel instruction in which the destination register of
94 the right hand instruction is used as an input register in the left hand
95 instruction.  For example in this code fragment
96 @samp{mv r1, r2 || neg r2, r3} register r2 is the destination of the
97 neg instruction and the input to the move instruction.
98
99 @item instruction @samp{...} is for the M32RX only
100 This message is produced when the assembler encounters an instruction
101 which is only supported by the M32Rx processor, and the @samp{-m32rx}
102 command line flag has not been specified to allow assembly of such
103 instructions. 
104
105 @item unknown instruction @samp{...}
106 This message is produced when the assembler encounters an instruction
107 which it doe snot recognise.
108
109 @item only the NOP instruction can be issued in parallel on the m32r
110 This message is produced when the assembler encounters a parallel
111 instruction which does not involve a NOP instruction and the
112 @samp{-m32rx} command line flag has not been specified.  Only the M32Rx
113 processor is able to execute two instructions in parallel.
114
115 @item instruction @samp{...} cannot be executed in parallel.
116 This message is produced when the assembler encounters a parallel
117 instruction which is made up of one or two instructions which cannot be
118 executed in parallel.
119
120 @item Instructions share the same execution pipeline
121 This message is produced when the assembler encounters a parallel
122 instruction whoes components both use the same execution pipeline.
123
124 @item Instructions write to the same destination register.
125 This message is produced when the assembler encounters a parallel
126 instruction where both components attempt to modify the same register.
127 For example these code fragments will produce this message:
128 @samp{mv r1, r2 || neg r1, r3}
129 @samp{jl r0 || mv r14, r1}
130 @samp{st r2, @@-r1 || mv r1, r3} 
131 @samp{mv r1, r2 || ld r0, @@r1+} 
132 @samp{cmp r1, r2 || addx r3, r4} (Both write to the condition bit)
133
134 @end table