|
|
1.1 root 1: .include "macros.inc"
2:
3: test_suite loop
4:
5: test loop
6: movi a2, 0
7: movi a3, 5
8: loop a3, 1f
9: addi a2, a2, 1
10: 1:
11: assert eqi, a2, 5
12: test_end
13:
14: test loop0
15: movi a2, 0
16: loop a2, 1f
17: rsr a2, lcount
18: assert eqi, a2, -1
19: j 1f
20: 1:
21: test_end
22:
23: test loop_jump
24: movi a2, 0
25: movi a3, 5
26: loop a3, 1f
27: addi a2, a2, 1
28: j 1f
29: 1:
30: assert eqi, a2, 1
31: test_end
32:
33: test loop_branch
34: movi a2, 0
35: movi a3, 5
36: loop a3, 1f
37: addi a2, a2, 1
38: beqi a2, 3, 1f
39: 1:
40: assert eqi, a2, 3
41: test_end
42:
43: test loop_manual
44: movi a2, 0
45: movi a3, 5
46: movi a4, 1f
47: movi a5, 2f
48: wsr a3, lcount
49: wsr a4, lbeg
50: wsr a5, lend
51: isync
52: j 1f
53: .align 4
54: 1:
55: addi a2, a2, 1
56: 2:
57: assert eqi, a2, 6
58: test_end
59:
60: test loop_excm
61: movi a2, 0
62: movi a3, 5
63: rsr a4, ps
64: movi a5, 0x10
65: or a4, a4, a5
66: wsr a4, ps
67: isync
68: loop a3, 1f
69: addi a2, a2, 1
70: 1:
71: xor a4, a4, a5
72: isync
73: wsr a4, ps
74: assert eqi, a2, 1
75: test_end
76:
77: test lbeg_invalidation
78: movi a2, 0
79: movi a3, 1
80: movi a4, 1f
81: movi a5, 3f
82: wsr a3, lcount
83: wsr a4, lbeg
84: wsr a5, lend
85: isync
86: j 1f
87: .align 4
88: 1:
89: addi a2, a2, 1
90: j 2f
91: .align 4
92: 2:
93: addi a2, a2, 2
94: movi a3, 2b
95: wsr a3, lbeg
96: isync
97: nop
98: 3:
99: assert eqi, a2, 5
100: test_end
101:
102: test lend_invalidation
103: movi a2, 0
104: movi a3, 5
105: movi a4, 1f
106: movi a5, 2f
107: wsr a3, lcount
108: wsr a4, lbeg
109: wsr a5, lend
110: isync
111: j 1f
112: .align 4
113: 1:
114: addi a2, a2, 1
115: 2:
116: beqi a3, 3, 1f
117: assert eqi, a2, 6
118: movi a3, 3
119: wsr a3, lcount
120: wsr a4, lend
121: isync
122: j 1b
123: 1:
124: assert eqi, a2, 7
125: test_end
126:
127: test loopnez
128: movi a2, 0
129: movi a3, 5
130: loopnez a3, 1f
131: addi a2, a2, 1
132: 1:
133: assert eqi, a2, 5
134:
135: movi a2, 0
136: movi a3, 0
137: loopnez a3, 1f
138: test_fail
139: 1:
140: test_end
141:
142: test loopgtz
143: movi a2, 0
144: movi a3, 5
145: loopgtz a3, 1f
146: addi a2, a2, 1
147: 1:
148: assert eqi, a2, 5
149:
150: movi a2, 0
151: movi a3, 0
152: loopgtz a3, 1f
153: test_fail
154: 1:
155:
156: movi a2, 0
157: movi a3, 0x80000000
158: loopgtz a3, 1f
159: test_fail
160: 1:
161: test_end
162:
163: test_suite_end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.