]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - sim/testsuite/sim/frv/smulicc.cgs
This commit was manufactured by cvs2svn to create branch 'gdb_7_0-branch'.
[thirdparty/binutils-gdb.git] / sim / testsuite / sim / frv / smulicc.cgs
CommitLineData
4a306116
DB
1# frv testcase for smulicc $GRi,$GRj,$GRk
2# mach: all
3
4 .include "testutils.inc"
5
6 start
7
8 .global smulicc
9smulicc:
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