daily update
[external/binutils.git] / sim / testsuite / sim / arm / iwmmxt / wavg2.cgs
1 # Intel(r) Wireless MMX(tm) technology testcase for WAVG2
2 # mach: xscale
3 # as: -mcpu=xscale+iwmmxt
4
5         .include "testutils.inc"
6
7         start
8
9         .global wavg2
10 wavg2:
11         # Enable access to CoProcessors 0 & 1 before
12         # we attempt these instructions.
13
14         mvi_h_gr   r1, 3
15         mcr        p15, 0, r1, cr15, cr1, 0
16
17         # Test Byte Wide Averaging
18         
19         mvi_h_gr   r0, 0x12345678
20         mvi_h_gr   r1, 0x9abcdef0
21         mvi_h_gr   r2, 0x11111111
22         mvi_h_gr   r3, 0x22222222
23         mvi_h_gr   r4, 0
24         mvi_h_gr   r5, 0
25
26         tmcrr      wr0, r0, r1
27         tmcrr      wr1, r2, r3
28         tmcrr      wr2, r4, r5
29
30         wavg2b     wr2, wr0, wr1
31         
32         tmrrc      r0, r1, wr0
33         tmrrc      r2, r3, wr1
34         tmrrc      r4, r5, wr2
35         
36         test_h_gr  r0, 0x12345678
37         test_h_gr  r1, 0x9abcdef0
38         test_h_gr  r2, 0x11111111
39         test_h_gr  r3, 0x22222222
40         test_h_gr  r4, 0x11223344
41         test_h_gr  r5, 0x5e6f8089
42         
43         # Test Byte Wide Averaging with Rounding
44         
45         mvi_h_gr   r0, 0x12345678
46         mvi_h_gr   r1, 0x9abcdef0
47         mvi_h_gr   r2, 0x11111111
48         mvi_h_gr   r3, 0x22222222
49         mvi_h_gr   r4, 0
50         mvi_h_gr   r5, 0
51
52         tmcrr      wr0, r0, r1
53         tmcrr      wr1, r2, r3
54         tmcrr      wr2, r4, r5
55
56         wavg2br    wr2, wr0, wr1
57         
58         tmrrc      r0, r1, wr0
59         tmrrc      r2, r3, wr1
60         tmrrc      r4, r5, wr2
61         
62         test_h_gr  r0, 0x12345678
63         test_h_gr  r1, 0x9abcdef0
64         test_h_gr  r2, 0x11111111
65         test_h_gr  r3, 0x22222222
66         test_h_gr  r4, 0x12233445
67         test_h_gr  r5, 0x5e6f8089
68         
69         # Test Half Word Wide Averaging
70         
71         mvi_h_gr   r0, 0x12345678
72         mvi_h_gr   r1, 0x9abcdef0
73         mvi_h_gr   r2, 0x11111111
74         mvi_h_gr   r3, 0x22222222
75         mvi_h_gr   r4, 0
76         mvi_h_gr   r5, 0
77
78         tmcrr      wr0, r0, r1
79         tmcrr      wr1, r2, r3
80         tmcrr      wr2, r4, r5
81
82         wavg2h     wr2, wr0, wr1
83         
84         tmrrc      r0, r1, wr0
85         tmrrc      r2, r3, wr1
86         tmrrc      r4, r5, wr2
87         
88         test_h_gr  r0, 0x12345678
89         test_h_gr  r1, 0x9abcdef0
90         test_h_gr  r2, 0x11111111
91         test_h_gr  r3, 0x22222222
92         test_h_gr  r4, 0x11a233c4
93         test_h_gr  r5, 0x5e6f8089
94         
95         # Test Half Word Wide Averaging with Rounding
96         
97         mvi_h_gr   r0, 0x12345678
98         mvi_h_gr   r1, 0x9abcdef0
99         mvi_h_gr   r2, 0x11111111
100         mvi_h_gr   r3, 0x22222222
101         mvi_h_gr   r4, 0
102         mvi_h_gr   r5, 0
103
104         tmcrr      wr0, r0, r1
105         tmcrr      wr1, r2, r3
106         tmcrr      wr2, r4, r5
107
108         wavg2hr    wr2, wr0, wr1
109         
110         tmrrc      r0, r1, wr0
111         tmrrc      r2, r3, wr1
112         tmrrc      r4, r5, wr2
113         
114         test_h_gr  r0, 0x12345678
115         test_h_gr  r1, 0x9abcdef0
116         test_h_gr  r2, 0x11111111
117         test_h_gr  r3, 0x22222222
118         test_h_gr  r4, 0x11a333c5
119         test_h_gr  r5, 0x5e6f8089
120         
121         pass