|
|
1.1 root 1: /* DECW instruction test */
2: /* DECL has been tested prior to this test */
3: /* Privilege registers */
4:
5: .set IPL,8
6: .set MAPEN,9
7: .set KSP,19
8:
9: /* PSL fields */
10: .set IV,32
11: .set T,16
12: .set N,8
13: .set Z,4
14: .set V,2
15: .set C,1
16:
17: /* constants */
18: .set MAXPOSL,0x7fffffff
19: .set MAXNEGL,0x80000000
20: .set MAXPOSW,0x7fff
21: .set MAXNEGW,0x8000
22: .set MAXPOSB,0x7f
23: .set MAXNEGB,0x80
24: .set ZERO,0
25: .set ONES,0xffffffff
26: .set HIGH,31 /* highest interrupt priority */
27:
28: .globl _dec_w
29: _dec_w:
30: callf $4,_setjmp /* save context for error return */
31: movab _dec_w,_stpc /* save address of subtest start */
32: movl $1,_subtst /* subtest number */
33: movl $1,_no_opr /* number of operands in use */
34: movl $1,_opr /* first operand */
35: 0: movl $1,r3 /* load r3 with 1 */
36: bispsw $(N|V) /* set n,v flags */
37: bicpsw $(C|Z) /* clear c,z flag */
38: decw r3 /* decrement r3 */
39: jneq error1 /* error if z flag not set */
40: jcc error1 /* error if c flag not set */
41: jlss error1 /* error if n flag still set */
42: jvs error1 /* error if v flag still set */
43: jmp 1f
44: error1: movpsl _actual /* actual = psl MAYBE it is incorrect */
45: bbs $0,_scoplp,0b /* if set scope loop on error */
46: movl $2,_ercode /* error code flag failure */
47: jmp *badrtn
48: 1: cmpl $0,r3 /* compare r3 to 0 */
49: jeql ovf1 /* no error then continue */
50: bbs $0,_scoplp,0b /* if set scope loop on error */
51: movl $1,_ercode /* error code data miscompare */
52: movl r3,_actual /* actual data */
53: movl $0,_expected /* expected data */
54: jmp *badrtn
55:
56: ovf1: /* To be tested in phase 2 */
57: bbs $0,_force_lp,0b /* if set loop on last subtest */
58: ad2: callf $4,_setjmp /* save context for error return */
59: movab ad2,_stpc /* save address of subtest start */
60: movl $2,_subtst /* subtest number */
61: movl $1,_no_opr /* number of operands in use */
62: movl $MAXNEGL,_opr /* first operand */
63: 0: movl $MAXNEGL,r3 /* load r3 with largest neg. value */
64: bispsw $Z /* set z flags */
65: bicpsw $(V|C|N) /* clear n,v,c flag */
66: decw r3 /* decrement r3 */
67: jeql error2 /* error if z flag still set */
68: jgeq error2 /* error if n flag not set */
69: jcc error2 /* error if c flag not set */
70: jvs error2 /* error if v flag not set */
71: jmp 1f
72: error2: movpsl _actual /* actual = psl MAYBE it is incorrect */
73: bbs $0,_scoplp,0b /* if set scope loop on error */
74: movl $2,_ercode /* error code flag failure */
75: jmp *badrtn
76: 1: cmpl $MAXPOSL,r3 /* compare r3 to largest pos. value */
77: jeql d3 /* no error then continue */
78: bbs $0,_scoplp,0b /* if set scope loop on error */
79: movl $1,_ercode /* error code data miscompare */
80: movl r3,_actual /* actual data */
81: movl $MAXPOSL,_expected /* expected data */
82: jmp *badrtn
83:
84: d3:
85: bbs $0,_force_lp,0b /* if set loop on last subtest */
86: ad3: callf $4,_setjmp /* save context for error return */
87: movab ad3,_stpc /* save address of subtest start */
88: movl $3,_subtst /* subtest number */
89: movl $1,_no_opr /* number of operands in use */
90: movl $0,_opr /* first operand */
91: 0: movl $0,r3
92: bispsw $(C|Z|V) /* set c,z,v flags */
93: bicpsw $N /* clear n flag */
94: decw r3
95: jeql error3 /* error if z flag still set */
96: jcs error3 /* error if c flag still set */
97: jvs error3 /* error if v flag still set */
98: jgeq error3 /* error if n flag clear */
99: jmp 1f
100: error3: movpsl _actual /* actual = psl MAYBE it is incorrect */
101: bbs $0,_scoplp,0b /* if set scope loop on error */
102: movl $2,_ercode /* error code flag failure */
103: jmp *badrtn
104: 1: cmpl $0xffffffff,r3 /* compare r3 to -1 */
105: jeql decmw /* no error then continue */
106: bbs $0,_scoplp,0b /* if set scope loop on error */
107: movl $1,_ercode /* error code data miscompare */
108: movl r3,_actual /* actual data */
109: movl $0xffffffff,_expected /* expected data */
110: jmp *badrtn
111:
112: decmw: /* DECREMENT MEMORY */
113: bbs $0,_force_lp,0b /* if set loop on last subtest */
114: ad4: callf $4,_setjmp /* save context for error return */
115: movab ad4,_stpc /* save address of subtest start */
116: movl $4,_subtst /* subtest number */
117: movl $1,_no_opr /* number of operands in use */
118: movl $0x0001ffff,_opr /* first operand */
119: 0: movl $0x0001ffff,tstloc /* load tstloc with 0x0001ffff */
120: bispsw $(N|V) /* set n,v flags */
121: bicpsw $(C|Z) /* clear c,z flag */
122: decw tstloc /* decrement value in tstloc */
123: jneq error4 /* error if z flag not set */
124: jcc error4 /* error if c flag not set */
125: jlss error4 /* error if n flag still set */
126: jvs error4 /* error if v flag still set */
127: jmp 1f
128: error4: movpsl _actual /* actual = psl MAYBE it is incorrect */
129: bbs $0,_scoplp,0b /* if set scope loop on error */
130: movl $2,_ercode /* error code flag failure */
131: jmp *badrtn
132: bicpsw $Z
133: 1: cmpl $0x0000ffff,tstloc /* compare tstloc to 0x0000ffff */
134: jeql ovf2 /* no error then continue */
135: bbs $0,_scoplp,0b /* if set scope loop on error */
136: movl $1,_ercode /* error code data miscompare */
137: movl tstloc,_actual /* actual data */
138: movl $0x0000ffff,_expected /* expected data */
139: jmp *badrtn
140: ovf2:
141: bbs $0,_force_lp,0b /* if set loop on last subtest */
142: ad5: callf $4,_setjmp /* save context for error return */
143: movab ad5,_stpc /* save address of subtest start */
144: movl $5,_subtst /* subtest number */
145: movl $1,_no_opr /* number of operands in use */
146: movl $0x80003333,_opr /* first operand */
147: 0: movl $0x80003333,tstloc
148: bispsw $Z /* set z flags */
149: bicpsw $(V|C|N) /* clear n,v,c flags */
150: decw tstloc /* decrement tstloc */
151: jeql error5 /* error if z flag still set */
152: jgeq error5 /* error if n flag not set */
153: jcc error5 /* error if c flag not set */
154: jvc error5 /* error if v flag not set */
155: jmp 1f
156: error5: movpsl _actual /* actual = psl MAYBE it is incorrect */
157: bbs $0,_scoplp,0b /* if set scope loop on error */
158: movl $2,_ercode /* error code flag failure */
159: jmp *badrtn
160: 1: cmpl $0x7fff3333,tstloc /* tstloc == 0x7fff3333 */
161: jeql d6 /* no error then continue */
162: bbs $0,_scoplp,0b /* if set scope loop on error */
163: movl $1,_ercode /* error code data miscompare */
164: movl tstloc,_actual /* actual data */
165: movl $0x7fff3333,_expected /* expected data */
166: jmp *badrtn
167:
168: d6:
169: bbs $0,_force_lp,0b /* if set loop on last subtest */
170: ad6: callf $4,_setjmp /* save context for error return */
171: movab ad6,_stpc /* save address of subtest start */
172: movl $6,_subtst /* subtest number */
173: movl $1,_no_opr /* number of operands in use */
174: movl $0x0000ffff,_opr /* first operand */
175: 0: movl $0x0000ffff,tstloc /* set tstloc = 0x0000ffff */
176: bispsw $(Z|V|C) /* set z,v,c flags */
177: bicpsw $N /* clear n flag */
178: decw tstloc /* decrement tstloc */
179: jgeq error6 /* error if n flag not set */
180: jeql error6 /* error if z flag still set */
181: jvs error6 /* error if v flag still set */
182: jcs error6 /* error if c flag still set */
183: jmp 1f
184: error6: movpsl _actual /* actual = psl MAYBE it is incorrect */
185: bbs $0,_scoplp,0b /* if set scope loop on error */
186: movl $2,_ercode /* error code flag failure */
187: jmp *badrtn
188: 1: cmpl $0xffffffff,tstloc /* tstloc == 0xffffffff */
189: jeql aldn /* no error then continue */
190: bbs $0,_scoplp,0b /* if set scope loop on error */
191: movl $1,_ercode /* error code data miscompare */
192: movl tstloc,_actual /* actual data */
193: movl $0xffffffff,_expected /* expected data */
194: jmp *badrtn
195:
196: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */
197: jmp *return
198:
199: /* test data */
200: .align 2
201: tstloc: .long 0
202:
203:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.