]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - sim/testsuite/sim/bfin/s5.s
daily update
[thirdparty/binutils-gdb.git] / sim / testsuite / sim / bfin / s5.s
CommitLineData
1d7b4a70
MF
1// Test r4 = ROT (r2 by r3);
2# mach: bfin
3
4.include "testutils.inc"
5 start
6
7
8 R0.L = 0x0001;
9 R0.H = 0x8000;
10
11// rot
12// left by 1
13// 8000 0001 -> 0000 0002 cc=1
14 R7 = 0;
15 CC = R7;
16 R1 = 1;
17 R6 = ROT R0 BY R1.L;
18 DBGA ( R6.L , 0x0002 );
19 DBGA ( R6.H , 0x0000 );
20 R7 = CC;
21 DBGA ( R7.L , 0x0001 );
22
23// rot
24// right by -1
25// 8000 0001 -> 4000 0000 cc=1
26 R7 = 0;
27 CC = R7;
28 R1.L = 0xffff; // check alternate mechanism for immediates
29 R1.H = 0xffff;
30 R6 = ROT R0 BY R1.L;
31 DBGA ( R6.L , 0x0000 );
32 DBGA ( R6.H , 0x4000 );
33 R7 = CC;
34 DBGA ( R7.L , 0x0001 );
35
36// rot
37// right by largest positive magnitude of 31
38// 8000 0001 -> a000 0000 cc=0
39 R7 = 0;
40 CC = R7;
41 R1 = 31;
42 R6 = ROT R0 BY R1.L;
43 DBGA ( R6.L , 0x0000 );
44 DBGA ( R6.H , 0xa000 );
45 R7 = CC;
46 DBGA ( R7.L , 0x0000 );
47
48// rot
49// right by largest positive magnitude of 31 with cc=1
50// 8000 0001 cc=1 -> a000 0000 cc=0
51 R7 = 1;
52 CC = R7;
53 R1 = 31;
54 R6 = ROT R0 BY R1.L;
55 DBGA ( R6.L , 0x0000 );
56 DBGA ( R6.H , 0xe000 );
57 R7 = CC;
58 DBGA ( R7.L , 0x0000 );
59
60// rot
61// right by largest negative magnitude of -31
62// 8000 0001 -> 0000 0005 cc=0
63 R7 = 0;
64 CC = R7;
65 R1 = -31;
66 R6 = ROT R0 BY R1.L;
67 DBGA ( R6.L , 0x0005 );
68 DBGA ( R6.H , 0x0000 );
69 R7 = CC;
70 DBGA ( R7.L , 0x0000 );
71
72// rot
73// right by largest negative magnitude of -31 with cc=1
74// 8000 0001 cc=1 -> 0000 0007 cc=0
75 R7 = 1;
76 CC = R7;
77 R1 = -31;
78 R6 = ROT R0 BY R1.L;
79 DBGA ( R6.L , 0x0007 );
80 DBGA ( R6.H , 0x0000 );
81 R7 = CC;
82 DBGA ( R7.L , 0x0000 );
83
84// rot
85// left by 7
86// 8000 0001 cc=1 -> 0000 00e0 cc=0
87 R7 = 1;
88 CC = R7;
89 R1 = 7;
90 R6 = ROT R0 BY R1.L;
91 DBGA ( R6.L , 0x00e0 );
92 DBGA ( R6.H , 0x0000 );
93 R7 = CC;
94 DBGA ( R7.L , 0x0000 );
95
96// rot by zero
97// 8000 0001 -> 8000 0000
98 R7 = 1;
99 CC = R7;
100 R1 = 0;
101 R6 = ROT R0 BY R1.L;
102 DBGA ( R6.L , 0x0001 );
103 DBGA ( R6.H , 0x8000 );
104 R7 = CC;
105 DBGA ( R7.L , 0x0001 );
106
107// rot by 0b1100 0001 is the same as by 1 (mask 6 bits)
108// 8000 0001 -> 0000 0002 cc=1
109 R7 = 0;
110 CC = R7;
111 R1 = 0xc1 (X);
112 R6 = ROT R0 BY R1.L;
113 DBGA ( R6.L , 0x0002 );
114 DBGA ( R6.H , 0x0000 );
115 R7 = CC;
116 DBGA ( R7.L , 0x0001 );
117
118 pass