OSDN Git Service

sim: bfin: import testsuite
[pf3gnuchains/pf3gnuchains4x.git] / sim / testsuite / sim / bfin / c_logi2op_log_l_shft_astat.S
1 # Test ASTAT bits with logical left shift (<<=)
2 # mach: bfin
3
4 .include "testutils.inc"
5 #include "test.h"
6 start
7
8 .macro __do val:req, shift:req, exp:req
9         # First test when ASTAT starts with all bits cleared
10         imm32 R2, \val;
11         ASTAT = R0;
12         R2 <<= \shift;
13         R3 = ASTAT;
14         CHECKREG R2, (\val << \shift);
15         CHECKREG R3, \exp;
16
17         # Then test when ASTAT starts with all bits set
18         imm32 R2, \val;
19         ASTAT = R1;
20         R2 <<= \shift;
21         R3 = ASTAT;
22         CHECKREG R3, (\exp) | ~(_AZ|_AN|_V|_V_COPY);
23 .endm
24
25 .macro _do shift:req, val:req
26         # Automatically test all shifted values
27         .if ((\val << \shift) & 0xffffffff) == 0
28                 __do \val, \shift, _AZ
29         .else
30                 .if (\val << \shift) == 0x80000000
31                         __do \val, \shift, _AN
32                 .else
33                         __do \val, \shift, 0
34                 .endif
35         .endif
36         .if (\val << 1) & 0xffffffff
37                 _do \shift, (\val << 1)
38         .endif
39 .endm
40
41 .macro do shift:req
42 _l_shft_\shift:
43         _do \shift, 1
44 .endm
45
46 R0 = 0;
47 R1 = -1;
48
49 do 0
50 do 1
51 do 2
52 do 3
53 do 4
54 do 5
55 do 6
56 do 7
57 do 8
58 do 9
59 do 10
60 do 11
61 do 12
62 do 13
63 do 14
64 do 15
65 do 16
66 do 17
67 do 18
68 do 19
69 do 20
70 do 21
71 do 22
72 do 23
73 do 24
74 do 25
75 do 26
76 do 27
77 do 28
78 do 29
79 do 30
80 do 31
81
82 pass