New sim testsuite for Fujitsu FRV. Contributed by Red Hat.
[deliverable/binutils-gdb.git] / sim / testsuite / sim / frv / mcpxrs.cgs
1 # frv testcase for mcpxrs $GRi,$GRj,$ACCk
2 # mach: all
3
4 .include "testutils.inc"
5
6 start
7
8 .global mcpxrs
9 mcpxrs:
10 ; Positive operands
11 set_fr_iimmed 2,4,fr7 ; multiply small numbers
12 set_fr_iimmed 3,5,fr8
13 mcpxrs fr7,fr8,acc0
14 test_accg_immed 0xff,accg0
15 test_acc_immed -14,acc0
16
17 set_fr_iimmed 3,1,fr7 ; multiply by 0
18 set_fr_iimmed 2,0,fr8
19 mcpxrs fr7,fr8,acc0
20 test_accg_immed 0,accg0
21 test_acc_immed 6,acc0
22
23 set_fr_iimmed 2,1,fr7 ; multiply by 1
24 set_fr_iimmed 1,1,fr8
25 mcpxrs fr7,fr8,acc0
26 test_accg_immed 0,accg0
27 test_acc_immed 1,acc0
28
29 set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result
30 set_fr_iimmed 2,0x0007,fr8
31 mcpxrs fr7,fr8,acc0
32 test_accg_immed 0,accg0
33 test_acc_limmed 0,0x7ff0,acc0
34
35 set_fr_iimmed 0x4000,2,fr7 ; 16 bit result
36 set_fr_iimmed 2,0x2000,fr8
37 mcpxrs fr7,fr8,acc0
38 test_accg_immed 0,accg0
39 test_acc_limmed 0x0000,0x4000,acc0
40
41 set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
42 set_fr_iimmed 0x7fff,0x7fff,fr8
43 mcpxrs fr7,fr8,acc0
44 test_accg_immed 0,accg0
45 test_acc_limmed 0x3fff,0x0001,acc0
46
47 ; Mixed operands
48 set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers
49 set_fr_iimmed 0xfffd,1,fr8
50 mcpxrs fr7,fr8,acc0
51 test_accg_immed 0xff,accg0
52 test_acc_immed -3,acc0
53
54 set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1
55 set_fr_iimmed 1,0xfffe,fr8
56 mcpxrs fr7,fr8,acc0
57 test_accg_immed 0,accg0
58 test_acc_immed 2,acc0
59
60 set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0
61 set_fr_iimmed 1,0xfffe,fr8
62 mcpxrs fr7,fr8,acc0
63 test_accg_immed 0xff,accg0
64 test_acc_immed -2,acc0
65
66 set_fr_iimmed 0x2001,0xfffe,fr7 ; 15 bit result
67 set_fr_iimmed 0xfffe,0xfff9,fr8
68 mcpxrs fr7,fr8,acc0
69 test_accg_immed 0xff,accg0
70 test_acc_limmed 0xffff,0xbff0,acc0
71
72 set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result
73 set_fr_iimmed 0xfffe,0x0003,fr8
74 mcpxrs fr7,fr8,acc0
75 test_accg_immed 0xff,accg0
76 test_acc_limmed 0xffff,0x8006,acc0
77
78 set_fr_iimmed 0x7fff,0x8000,fr7 ; max negative result
79 set_fr_iimmed 0x8000,0x8000,fr8
80 mcpxrs fr7,fr8,acc0
81 test_accg_immed 0xff,accg0
82 test_acc_limmed 0x8000,0x8000,acc0
83
84 set_fr_iimmed 0x8000,0x7fff,fr7 ; max positive result
85 set_fr_iimmed 0x8000,0x8000,fr8
86 mcpxrs fr7,fr8,acc0
87 test_accg_immed 0,accg0
88 test_acc_limmed 0x7fff,0x8000,acc0
89
90 ; Negative operands
91 set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers
92 set_fr_iimmed 0xfffd,0xfffb,fr8
93 mcpxrs fr7,fr8,acc0
94 test_accg_immed 0xff,accg0
95 test_acc_immed -14,acc0
96
97 set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1
98 set_fr_iimmed 0xfffe,0xffff,fr8
99 mcpxrs fr7,fr8,acc0
100 test_accg_immed 0,accg0
101 test_acc_immed 1,acc0
102
103 set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result
104 set_fr_iimmed 0x7fff,0x8001,fr8
105 mcpxrs fr7,fr8,acc0
106 test_accg_immed 0,accg0
107 test_acc_immed 0x3fff0001,acc0
108
109 set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result
110 set_fr_iimmed 0x8000,0x8000,fr8
111 mcpxrs fr7,fr8,acc0
112 test_accg_immed 0,accg0
113 test_acc_immed 0x40000000,acc0
114
115 pass
This page took 0.032505 seconds and 4 git commands to generate.