Statistics
| Branch: | Revision:

root / tests / xtensa / test_pipeline.S @ 7d890b40

History | View | Annotate | Download (2.4 kB)

1
.include "macros.inc"
2

    
3
.purgem test
4
.macro test name
5
    movi    a2, 1f
6
    movi    a3, 99f
7
0:
8
    ipf     a2, 0
9
    ipf     a2, 4
10
    ipf     a2, 8
11
    ipf     a2, 12
12
    addi    a2, a2, 16
13
    blt     a2, a3, 0b
14
    j       1f
15
    .align 4
16
1:
17
.endm
18

    
19
test_suite pipeline
20

    
21
test register_no_stall
22
    rsr     a3, ccount
23
    add     a5, a6, a6
24
    add     a6, a5, a5
25
    rsr     a4, ccount
26
    sub     a3, a4, a3
27
    assert  eqi, a3, 3
28
test_end
29

    
30
test register_stall
31
    l32i    a5, a1, 0   /* data cache preload */
32
    nop
33
    rsr     a3, ccount
34
    l32i    a5, a1, 0
35
    add     a6, a5, a5  /* M-to-E interlock */
36
    rsr     a4, ccount
37
    sub     a3, a4, a3
38
    assert  eqi, a3, 4
39
test_end
40

    
41
test j0_stall
42
    rsr     a3, ccount
43
    j       1f          /* E + 2-cycle penalty */
44
1:
45
    rsr     a4, ccount  /* E */
46
    sub     a3, a4, a3
47
    assert  eqi, a3, 4
48
test_end
49

    
50
test j1_stall
51
    rsr     a3, ccount
52
    j       1f
53
    nop
54
1:
55
    rsr     a4, ccount
56
    sub     a3, a4, a3
57
    assert  eqi, a3, 4
58
test_end
59

    
60
test j5_stall
61
    rsr     a3, ccount
62
    j       1f
63
    nop
64
    nop
65
    nop
66
    nop
67
    nop
68
1:
69
    rsr     a4, ccount
70
    sub     a3, a4, a3
71
    assert  eqi, a3, 4
72
test_end
73

    
74
test b_no_stall
75
    movi    a5, 1
76
    rsr     a3, ccount
77
    beqi    a5, 2, 1f
78
    rsr     a4, ccount
79
    sub     a3, a4, a3
80
    assert  eqi, a3, 2
81
1:
82
test_end
83

    
84
test b1_stall
85
    movi    a5, 1
86
    rsr     a3, ccount
87
    beqi    a5, 1, 1f
88
    nop
89
1:
90
    rsr     a4, ccount
91
    sub     a3, a4, a3
92
    assert  eqi, a3, 4
93
test_end
94

    
95
test b5_stall
96
    movi    a5, 1
97
    rsr     a3, ccount
98
    beqi    a5, 1, 1f
99
    nop
100
    nop
101
    nop
102
    nop
103
    nop
104
1:
105
    rsr     a4, ccount
106
    sub     a3, a4, a3
107
    assert  eqi, a3, 4
108
test_end
109

    
110
/* PS *SYNC */
111

    
112
test ps_dsync
113
    rsr     a5, ps
114
    isync
115
    rsr     a3, ccount
116
    wsr     a5, ps
117
    dsync
118
    rsr     a4, ccount
119
    sub     a3, a4, a3
120
    assert  eqi, a3, 5
121
test_end
122

    
123
test ps_esync
124
    rsr     a5, ps
125
    isync
126
    rsr     a3, ccount
127
    wsr     a5, ps
128
    esync
129
    rsr     a4, ccount
130
    sub     a3, a4, a3
131
    assert  eqi, a3, 5
132
test_end
133

    
134
test ps_rsync
135
    rsr     a5, ps
136
    isync
137
    rsr     a3, ccount
138
    wsr     a5, ps
139
    rsync
140
    rsr     a4, ccount
141
    sub     a3, a4, a3
142
    assert  eqi, a3, 5
143
test_end
144

    
145
test ps_isync
146
    rsr     a5, ps
147
    isync
148
    rsr     a3, ccount
149
    wsr     a5, ps
150
    isync
151
    rsr     a4, ccount
152
    sub     a3, a4, a3
153
    movi    a4, 9
154
    assert  eq, a3, a4
155
test_end
156

    
157
test_suite_end