This commit was manufactured by cvs2svn to create branch 'gdb_7_0-branch'.
[external/binutils.git] / sim / testsuite / sim / frv / fr550 / mmachu.cgs
1 # frv testcase for mmachu $GRi,$GRj,$GRk
2 # mach: all
3
4         .include "../testutils.inc"
5
6         start
7
8         .global mmachu
9 mmachu:
10         set_fr_iimmed   3,2,fr7         ; multiply small numbers
11         set_fr_iimmed   2,3,fr8
12         mmachu          fr7,fr8,acc0
13         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
14         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
15         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
16         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
17         test_accg_immed         0,accg0
18         test_acc_immed  6,acc0
19         test_accg_immed         0,accg1
20         test_acc_immed  6,acc1
21
22         set_fr_iimmed   1,2,fr7         ; multiply by 1
23         set_fr_iimmed   2,1,fr8
24         mmachu          fr7,fr8,acc0
25         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
26         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
27         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
28         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
29         test_accg_immed         0,accg0
30         test_acc_immed  8,acc0
31         test_accg_immed         0,accg1
32         test_acc_immed  8,acc1
33
34         set_fr_iimmed   0,2,fr7         ; multiply by 0
35         set_fr_iimmed   2,0,fr8
36         mmachu          fr7,fr8,acc0
37         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
38         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
39         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
40         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
41         test_accg_immed         0,accg0
42         test_acc_immed  8,acc0
43         test_accg_immed         0,accg1
44         test_acc_immed  8,acc1
45
46         set_fr_iimmed   0x3fff,2,fr7    ; 15 bit result
47         set_fr_iimmed   2,0x3fff,fr8
48         mmachu          fr7,fr8,acc0
49         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
50         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
51         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
52         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
53         test_accg_immed         0,accg0
54         test_acc_limmed 0x0000,0x8006,acc0
55         test_accg_immed         0,accg1
56         test_acc_limmed 0x0000,0x8006,acc1
57
58         set_fr_iimmed   0x4000,2,fr7    ; 16 bit result
59         set_fr_iimmed   2,0x4000,fr8
60         mmachu          fr7,fr8,acc0
61         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
62         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
63         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
64         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
65         test_accg_immed         0,accg0
66         test_acc_limmed 0x0001,0x0006,acc0
67         test_accg_immed         0,accg1
68         test_acc_limmed 0x0001,0x0006,acc1
69
70         set_fr_iimmed   0x8000,2,fr7    ; 17 bit result
71         set_fr_iimmed   2,0x8000,fr8
72         mmachu          fr7,fr8,acc0
73         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
74         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
75         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
76         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
77         test_accg_immed         0,accg0
78         test_acc_immed  0x00020006,acc0
79         test_accg_immed         0,accg1
80         test_acc_immed  0x00020006,acc1
81
82         set_fr_iimmed   0x7fff,0x7fff,fr7       ; max positive result
83         set_fr_iimmed   0x7fff,0x7fff,fr8
84         mmachu          fr7,fr8,acc0
85         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
86         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
87         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
88         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
89         test_accg_immed         0,accg0
90         test_acc_immed  0x40010007,acc0
91         test_accg_immed         0,accg1
92         test_acc_immed  0x40010007,acc1
93
94         set_fr_iimmed   0x8000,0x8000,fr7       ; max positive result
95         set_fr_iimmed   0x8000,0x8000,fr8
96         mmachu          fr7,fr8,acc0
97         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
98         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
99         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
100         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
101         test_accg_immed         0,accg0
102         test_acc_limmed 0x8001,0x0007,acc0
103         test_accg_immed         0,accg1
104         test_acc_limmed 0x8001,0x0007,acc1
105
106         set_fr_iimmed   0xffff,0xffff,fr7       ; max positive result
107         set_fr_iimmed   0xffff,0xffff,fr8
108         mmachu          fr7,fr8,acc0
109         test_spr_bits   0x3c,2,0,msr0           ; msr0.sie is clear
110         test_spr_bits   2,1,0,msr0              ; msr0.ovf not set
111         test_spr_bits   1,0,0,msr0              ; msr0.aovf not set
112         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt always set
113         test_accg_immed         1,accg0
114         test_acc_limmed 0x7fff,0x0008,acc0
115         test_accg_immed         1,accg1
116         test_acc_limmed 0x7fff,0x0008,acc1
117
118         set_accg_immed  0xff,accg0              ; saturation
119         set_acc_immed   0xffffffff,acc0
120         set_accg_immed  0xff,accg1
121         set_acc_immed   0xffffffff,acc1
122         set_fr_iimmed   1,1,fr7
123         set_fr_iimmed   1,1,fr8
124         mmachu          fr7,fr8,acc0
125         test_spr_bits   0x3c,2,0xc,msr0         ; msr0.sie is set
126         test_spr_bits   2,1,1,msr0              ; msr0.ovf is set
127         test_spr_bits   1,0,1,msr0              ; msr0.aovf is set
128         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt is set
129         test_accg_immed         0xff,accg0
130         test_acc_limmed 0xffff,0xffff,acc0
131         test_accg_immed         0xff,accg1
132         test_acc_limmed 0xffff,0xffff,acc1
133
134         set_fr_iimmed   0xffff,0x0000,fr7
135         set_fr_iimmed   0xffff,0xffff,fr8
136         mmachu          fr7,fr8,acc0
137         test_spr_bits   0x3c,2,0x8,msr0         ; msr0.sie is set
138         test_spr_bits   2,1,1,msr0              ; msr0.ovf is set
139         test_spr_bits   1,0,1,msr0              ; msr0.aovf is set
140         test_spr_bits   0x7000,12,1,msr0        ; msr0.mtt is set
141         test_accg_immed         0xff,accg0
142         test_acc_limmed 0xffff,0xffff,acc0
143         test_accg_immed         0xff,accg1
144         test_acc_limmed 0xffff,0xffff,acc1
145
146         pass