1 # fr30 testcase for mul $Rj,$Ri
4 .include "testutils.inc"
13 mvi_h_gr 3,r7 ; multiply small numbers
15 set_cc 0x0f ; Set mask opposite of expected
21 mvi_h_gr 1,r7 ; multiply by 1
23 set_cc 0x0e ; Set mask opposite of expected
29 mvi_h_gr 2,r7 ; multiply by 1
31 set_cc 0x0f ; Set mask opposite of expected
37 mvi_h_gr 0,r7 ; multiply by 0
39 set_cc 0x0b ; Set mask opposite of expected
45 mvi_h_gr 2,r7 ; multiply by 0
47 set_cc 0x0a ; Set mask opposite of expected
53 mvi_h_gr 0x3fffffff,r7 ; 31 bit result
55 set_cc 0x0f ; Set mask opposite of expected
59 test_h_dr 0x7ffffffe,mdl
61 mvi_h_gr 0x40000000,r7 ; 32 bit result
63 set_cc 0x04 ; Set mask opposite of expected
67 test_h_dr 0x80000000,mdl
69 mvi_h_gr 0x40000000,r7 ; 33 bit result
71 set_cc 0x0d ; Set mask opposite of expected
75 test_h_dr 0x00000000,mdl
77 mvi_h_gr 0x7fffffff,r7 ; max positive result
78 mvi_h_gr 0x7fffffff,r8
79 set_cc 0x0d ; Set mask opposite of expected
82 test_h_dr 0x3fffffff,mdh
83 test_h_dr 0x00000001,mdl
86 mvi_h_gr -3,r7 ; multiply small numbers
88 set_cc 0x07 ; Set mask opposite of expected
94 mvi_h_gr 3,r7 ; multiply small numbers
96 set_cc 0x07 ; Set mask opposite of expected
102 mvi_h_gr 1,r7 ; multiply by 1
104 set_cc 0x06 ; Set mask opposite of expected
110 mvi_h_gr -2,r7 ; multiply by 1
112 set_cc 0x07 ; Set mask opposite of expected
118 mvi_h_gr 0,r7 ; multiply by 0
120 set_cc 0x0b ; Set mask opposite of expected
126 mvi_h_gr -2,r7 ; multiply by 0
128 set_cc 0x0a ; Set mask opposite of expected
134 mvi_h_gr 0x20000001,r7 ; 31 bit result
136 set_cc 0x07 ; Set mask opposite of expected
139 test_h_dr 0xffffffff,mdh
140 test_h_dr 0xbffffffe,mdl
142 mvi_h_gr 0x40000000,r7 ; 32 bit result
144 set_cc 0x06 ; Set mask opposite of expected
147 test_h_dr 0xffffffff,mdh
148 test_h_dr 0x80000000,mdl
150 mvi_h_gr 0x40000001,r7 ; 32 bit result
152 set_cc 0x0c ; Set mask opposite of expected
155 test_h_dr 0xffffffff,mdh
156 test_h_dr 0x7ffffffe,mdl
158 mvi_h_gr 0x40000000,r7 ; 33 bit result
160 set_cc 0x0d ; Set mask opposite of expected
163 test_h_dr 0xffffffff,mdh
164 test_h_dr 0x00000000,mdl
166 mvi_h_gr 0x7fffffff,r7 ; max negative result
167 mvi_h_gr 0x80000000,r8
168 set_cc 0x05 ; Set mask opposite of expected
171 test_h_dr 0xc0000000,mdh
172 test_h_dr 0x80000000,mdl
175 mvi_h_gr -3,r7 ; multiply small numbers
177 set_cc 0x0f ; Set mask opposite of expected
183 mvi_h_gr -1,r7 ; multiply by 1
185 set_cc 0x0e ; Set mask opposite of expected
191 mvi_h_gr -2,r7 ; multiply by 1
193 set_cc 0x0f ; Set mask opposite of expected
199 mvi_h_gr 0xc0000001,r7 ; 31 bit result
201 set_cc 0x0f ; Set mask opposite of expected
205 test_h_dr 0x7ffffffe,mdl
207 mvi_h_gr 0xc0000000,r7 ; 32 bit result
209 set_cc 0x04 ; Set mask opposite of expected
213 test_h_dr 0x80000000,mdl
215 mvi_h_gr 0xc0000000,r7 ; 33 bit result
217 set_cc 0x0d ; Set mask opposite of expected
221 test_h_dr 0x00000000,mdl
223 mvi_h_gr 0x80000001,r7 ; almost max positive result
224 mvi_h_gr 0x80000001,r8
225 set_cc 0x0d ; Set mask opposite of expected
228 test_h_dr 0x3fffffff,mdh
229 test_h_dr 0x00000001,mdl
232 mvi_h_gr 0x80000000,r7 ; max positive result
233 mvi_h_gr 0x80000000,r8
234 set_cc 0x0d ; Set mask opposite of expected
237 test_h_dr 0x40000000,mdh
238 test_h_dr 0x00000000,mdl