Add support to GDB for the Renesas rl78 architecture.
[external/binutils.git] / sim / testsuite / sim / frv / smulicc.cgs
1 # frv testcase for smulicc $GRi,$GRj,$GRk
2 # mach: all
3
4         .include "testutils.inc"
5
6         start
7
8         .global smulicc
9 smulicc:
10         ; Positive operands
11         set_gr_immed    3,gr7           ; multiply small numbers
12         set_icc         0x0,0
13         smulicc         gr7,2,gr8,icc0
14         test_icc        0 0 0 0 icc0
15         test_gr_immed   0,gr8
16         test_gr_immed   6,gr9
17
18         set_gr_immed    1,gr7           ; multiply by 1
19         set_icc         0x1,0
20         smulicc         gr7,2,gr8,icc0
21         test_icc        0 0 0 1 icc0
22         test_gr_immed   0,gr8
23         test_gr_immed   2,gr9
24
25         set_gr_immed    2,gr7           ; multiply by 1
26         set_icc         0x2,0
27         smulicc         gr7,1,gr8,icc0
28         test_icc        0 0 1 0 icc0
29         test_gr_immed   0,gr8
30         test_gr_immed   2,gr9
31
32         set_gr_immed    0,gr7           ; multiply by 0
33         set_icc         0x3,0
34         smulicc         gr7,2,gr8,icc0
35         test_icc        0 1 1 1 icc0
36         test_gr_immed   0,gr8
37         test_gr_immed   0,gr9
38
39         set_gr_immed    2,gr7           ; multiply by 0
40         set_icc         0x4,0
41         smulicc         gr7,0,gr8,icc0
42         test_icc        0 1 0 0 icc0
43         test_gr_immed   0,gr8
44         test_gr_immed   0,gr9
45
46         set_gr_limmed   0x3fff,0xffff,gr7       ; 31 bit result
47         set_icc         0x5,0
48         smulicc         gr7,2,gr8,icc0
49         test_icc        0 0 0 1 icc0
50         test_gr_immed   0,gr8
51         test_gr_limmed  0x7fff,0xfffe,gr9
52
53         set_gr_limmed   0x4000,0x0000,gr7       ; 32 bit result
54         set_icc         0x6,0
55         smulicc         gr7,2,gr8,icc0
56         test_icc        0 0 1 0 icc0
57         test_gr_immed   0,gr8
58         test_gr_limmed  0x8000,0x0000,gr9
59
60         set_gr_limmed   0x4000,0x0000,gr7       ; 33 bit result
61         set_icc         0x7,0
62         smulicc         gr7,4,gr8,icc0
63         test_icc        0 0 1 1 icc0
64         test_gr_immed   1,gr8
65         test_gr_limmed  0x0000,0x0000,gr9
66
67         set_gr_limmed   0x7fff,0xffff,gr7       ; max positive result
68         set_icc         0x8,0
69         smulicc         gr7,0x1ff,gr8,icc0
70         test_icc        0 0 0 0 icc0
71         test_gr_immed   0xff,gr8
72         test_gr_limmed  0x7fff,0xfe01,gr9
73
74         ; Mixed operands
75         set_gr_immed    -3,gr7          ; multiply small numbers
76         set_icc         0x9,0
77         smulicc         gr7,2,gr8,icc0
78         test_icc        1 0 0 1 icc0
79         test_gr_immed   -1,gr8
80         test_gr_immed   -6,gr9
81
82         set_gr_immed    3,gr7           ; multiply small numbers
83         set_icc         0xa,0
84         smulicc         gr7,-2,gr8,icc0
85         test_icc        1 0 1 0 icc0
86         test_gr_immed   -1,gr8
87         test_gr_immed   -6,gr9
88
89         set_gr_immed    1,gr7           ; multiply by 1
90         set_icc         0xb,0
91         smulicc         gr7,-2,gr8,icc0
92         test_icc        1 0 1 1 icc0
93         test_gr_immed   -1,gr8
94         test_gr_immed   -2,gr9
95
96         set_gr_immed    -2,gr7          ; multiply by 1
97         set_icc         0xc,0
98         smulicc         gr7,1,gr8,icc0
99         test_icc        1 0 0 0 icc0
100         test_gr_immed   -1,gr8
101         test_gr_immed   -2,gr9
102
103         set_gr_immed    0,gr7           ; multiply by 0
104         set_icc         0xd,0
105         smulicc         gr7,-2,gr8,icc0
106         test_icc        0 1 0 1 icc0
107         test_gr_immed   0,gr8
108         test_gr_immed   0,gr9
109
110         set_gr_immed    -2,gr7          ; multiply by 0
111         set_icc         0xe,0
112         smulicc         gr7,0,gr8,icc0
113         test_icc        0 1 1 0 icc0
114         test_gr_immed   0,gr8
115         test_gr_immed   0,gr9
116
117         set_gr_limmed   0x2000,0x0001,gr7       ; 31 bit result
118         set_icc         0xf,0
119         smulicc         gr7,-2,gr8,icc0
120         test_icc        1 0 1 1 icc0
121         test_gr_limmed  0xffff,0xffff,gr8
122         test_gr_limmed  0xbfff,0xfffe,gr9
123
124         set_gr_limmed   0x4000,0x0000,gr7       ; 32 bit result
125         set_icc         0x0,0
126         smulicc         gr7,-2,gr8,icc0
127         test_icc        1 0 0 0 icc0
128         test_gr_limmed  0xffff,0xffff,gr8
129         test_gr_limmed  0x8000,0x0000,gr9
130
131         set_gr_limmed   0x4000,0x0001,gr7       ; 32 bit result
132         set_icc         0x1,0
133         smulicc         gr7,-2,gr8,icc0
134         test_icc        1 0 0 1 icc0
135         test_gr_limmed  0xffff,0xffff,gr8
136         test_gr_limmed  0x7fff,0xfffe,gr9
137
138         set_gr_limmed   0x4000,0x0000,gr7       ; 33 bit result
139         set_icc         0x2,0
140         smulicc         gr7,-4,gr8,icc0
141         test_icc        1 0 1 0 icc0
142         test_gr_limmed  0xffff,0xffff,gr8
143         test_gr_limmed  0x0000,0x0000,gr9
144
145         set_gr_limmed   0x7fff,0xffff,gr7       ; max negative result
146         set_icc         0x3,0
147         smulicc         gr7,-512,gr8,icc0
148         test_icc        1 0 1 1 icc0
149         test_gr_limmed  0xffff,0xff00,gr8
150         test_gr_limmed  0x0000,0x0200,gr9
151
152         ; Negative operands
153         set_gr_immed    -3,gr7          ; multiply small numbers
154         set_icc         0x4,0
155         smulicc         gr7,-2,gr8,icc0
156         test_icc        0 0 0 0 icc0
157         test_gr_immed   0,gr8
158         test_gr_immed   6,gr9
159
160         set_gr_immed    -1,gr7          ; multiply by 1
161         set_icc         0x5,0
162         smulicc         gr7,-2,gr8,icc0
163         test_icc        0 0 0 1 icc0
164         test_gr_immed   0,gr8
165         test_gr_immed   2,gr9
166
167         set_gr_immed    -2,gr7          ; multiply by 1
168         set_icc         0x6,0
169         smulicc         gr7,-1,gr8,icc0
170         test_icc        0 0 1 0 icc0
171         test_gr_immed   0,gr8
172         test_gr_immed   2,gr9
173
174         set_gr_limmed   0xc000,0x0001,gr7       ; 31 bit result
175         set_icc         0x7,0
176         smulicc         gr7,-2,gr8,icc0
177         test_icc        0 0 1 1 icc0
178         test_gr_immed   0,gr8
179         test_gr_limmed  0x7fff,0xfffe,gr9
180
181         set_gr_limmed   0xc000,0x0000,gr7       ; 32 bit result
182         set_icc         0x8,0
183         smulicc         gr7,-2,gr8,icc0
184         test_icc        0 0 0 0 icc0
185         test_gr_immed   0,gr8
186         test_gr_limmed  0x8000,0x0000,gr9
187
188         set_gr_limmed   0xc000,0x0000,gr7       ; 33 bit result
189         set_icc         0x9,0
190         smulicc         gr7,-4,gr8,icc0
191         test_icc        0 0 0 1 icc0
192         test_gr_immed   1,gr8
193         test_gr_immed   0x00000000,gr9
194
195         set_gr_limmed   0x8000,0x0001,gr7       ; almost max positive result
196         set_icc         0xa,0
197         smulicc         gr7,-512,gr8,icc0
198         test_icc        0 0 1 0 icc0
199         test_gr_limmed  0x0000,0x00ff,gr8
200         test_gr_limmed  0xffff,0xfe00,gr9
201
202
203         set_gr_limmed   0x8000,0x0000,gr7       ; max positive result
204         set_icc         0xb,0
205         smulicc         gr7,-512,gr8,icc0
206         test_icc        0 0 1 1 icc0
207         test_gr_limmed  0x0000,0x0100,gr8
208         test_gr_limmed  0x0000,0x0000,gr9
209
210         pass