|
|
1.1 root 1: /* ANDB2 (and byte 2 operand) test */
2:
3: /*Test name = andb2 */
4: /*Description = */
5: /* This test checks 'andb2' instruction as follows: */
6: /* destination = r1, memory location (dest) */
7: /* destination mask result Z N C V(flags) */
8: /* ___________ ____ _____ _____________ */
9: /* 0xaa 0xaa 0xaa 0 0 1 0 */
10: /* 0xaa 0x55 0x00 1 0 1 0 */
11: /* */
12: /* */
13: /* Constants */
14: /* */
15: .set VALUEB,0x000000aa
16: .set VALUEW,0X0000aaaa
17: .set VALUEL,0xaaaaaaaa
18: .set MASK1B,0xaa
19: .set MASK1W,0xaaaa
20: .set MASK1L,0xaaaaaaaa
21: .set MASK2B,0x55
22: .set MASK2W,0x5555
23: .set MASK2L,0x55555555
24: .set EXP1B,0x000000aa
25: .set EXP1W,0x0000aaaa
26: .set EXP1L,0xaaaaaaaa
27: .set EXP2B,0x00000000
28: .set EXP2W,0x00000000
29: .set EXP2L,0x00000000
30:
31: /* */
32: /* */
33: /* */
34: /* Syst.s - constants */
35: /* */
36: .set IPL,8
37: .set HIGH,31
38: .set ZERO,0
39: .set ONES,0xffffffff
40: .set N,8
41: .set Z,4
42: .set V,2
43: .set C,1
44: .set T,16
45: .set IV,32
46: .set FU,64
47: .set DV,128
48: .set PSWMASK,0x003f
49:
50:
51: .globl _andb2
52: _andb2:
53: callf $4,_setjmp /* save context for error return */
54: movab _andb2,_stpc /* save program counter of subtest */
55: movl $1,_subtst /* subtest number */
56: movl $2,_no_opr /* number of operands in use */
57: movl $MASK1B,_opr /* first operand */
58: movl $VALUEB,_opr + 4 /* second operand */
59: 0:
60: bicpsw $PSWMASK /*turn overflow enable bit off */
61: movl $VALUEB,r3 /*set r3 = 0xaa */
62: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
63: andb2 $MASK1B,r3 /*mask r1 with 0xaa data to reg */
64: beql error1 /*error if Z = 1 */
65: blss error1 /*error if N = 1 */
66: bcc error1 /*error if C = 0 */
67: bvs error1 /*error if V = 1 */
68: cmpl r3,$EXP1B /*if r1 <> expected(0xaa), */
69: beql a2 /*correct then continue */
70: movl $1,_ercode /* error code data miscompare */
71: bbs $0,_scoplp,0b /* if set loop on error */
72: movl r3,_actual /* actual data */
73: movl $EXP1B,_expected /* expected data */
74: jmp *badrtn
75: error1: movpsl _actual /* actual = psl */
76: bbs $0,_scoplp,0b /* if set loop on error */
77: movl $2,_ercode /* error code flag failure */
78: jmp *badrtn
79:
80: /* Now try another mask(0x55) */
81: /* */
82:
83: a2: bbs $0,_force_lp,0b /* if set loop on last subtest */
84: aa2: callf $4,_setjmp /* save context for error return */
85: movab aa2,_stpc /* save program counter of subtest */
86: movl $2,_subtst /* subtest number */
87: movl $2,_no_opr /* number of operands in use */
88: movl $MASK2B,_opr /* first operand */
89: movl $VALUEB,_opr + 4 /* second operand */
90: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
91: movl $VALUEB,r4 /*set r4 = 0xaa */
92: movl $MASK2B,r3 /* load mask into reg r3 */
93: bispsw $(N|V) /*overflow & negetive bits ON */
94: andb2 r3,r4 /*mask r4 */
95: bneq error2 /*error if Z = 0 */
96: blss error2 /*error if N = 1 */
97: bcc error2 /*error if C = 0 */
98: bvs error2 /*error if V = 1 */
99: cmpl r4,$EXP2B /*if r4 <> expected(0x00), */
100: beql andb2m /*correct then continue */
101: movl $1,_ercode /* error code data miscompare */
102: bbs $0,_scoplp,0b /* if set loop on error */
103: movl r4,_actual /* actual data */
104: movl $EXP2B,_expected /* expected data */
105: jmp *badrtn
106: error2: movpsl _actual /* actual = psl */
107: bbs $0,_scoplp,0b /* if set loop on error */
108: movl $2,_ercode /* error code flag failure */
109: jmp *badrtn
110:
111: /* */
112: /* Now use memory location instead of register as destination */
113: /* */
114: andb2m:
115: bbs $0,_force_lp,0b /* if set loop on last subtest */
116: aa3: callf $4,_setjmp /* save context for error return */
117: movab aa3,_stpc /* save program counter of subtest */
118: movl $3,_subtst /* subtest number */
119: movl $2,_no_opr /* number of operands in use */
120: movl $MASK1B,_opr /* first operand */
121: movl $VALUEB,_opr + 4 /* second operand */
122: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
123: movl $VALUEB,dest /*set dest = 0xaa */
124: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
125: andb2 $MASK1B,dest+3 /*mask dest with 0xaa data to reg */
126: beql error3 /*error if Z = 1 */
127: blss error3 /*error if N = 1 */
128: bcc error3 /*error if C = 0 */
129: bvs error3 /*error if V = 1 */
130: movl $EXP1B,r2
131: cmpl dest,$EXP1B /*if dest <> expected(0xaa), */
132: beql a4 /*correct then continue */
133: movl $1,_ercode /* error code data miscompare */
134: bbs $0,_scoplp,0b /* if set loop on error */
135: movl dest,_actual /* actual data */
136: movl $EXP1B,_expected /* expected data */
137: jmp *badrtn
138: error3: movpsl _actual /* actual = psl */
139: bbs $0,_scoplp,0b /* if set loop on error */
140: movl $2,_ercode /* error code flag failure */
141: jmp *badrtn
142:
143: /* Now try another mask(0x55) */
144: /* */
145: a4:
146: bbs $0,_force_lp,0b /* if set loop on last subtest */
147: aa4: callf $4,_setjmp /* save context for error return */
148: movab aa4,_stpc /* save program counter of subtest */
149: movl $4,_subtst /* subtest number */
150: movl $2,_no_opr /* number of operands in use */
151: movl $MASK2B,_opr /* first operand */
152: movl $VALUEB,_opr + 4 /* second operand */
153: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
154: movl $VALUEB,dest /*set dest = 0xaa */
155: movl $MASK2B,r3 /* load mask into reg r3 */
156: bispsw $(N|V) /*overflow & negetive bits ON */
157: andb2 r3,dest+3 /*mask dest with 0x55 reg to memory */
158: bneq error4 /*error if Z = 0 */
159: blss error4 /*error if N = 1 */
160: bcc error4 /*error if C = 0 */
161: bvs error4 /*error if V = 1 */
162: cmpl dest,$EXP2B /*if dest <> expected(0x00), */
163: beql a5 /*correct then continue */
164: movl $1,_ercode /* error code data miscompare */
165: bbs $0,_scoplp,0b /* if set loop on error */
166: movl dest,_actual /* actual data */
167: movl $EXP2B,_expected /* expected data */
168: jmp *badrtn
169: error4: movpsl _actual /* actual = psl */
170: bbs $0,_scoplp,0b /* if set loop on error */
171: movl $2,_ercode /* error code flag failure */
172: jmp *badrtn
173:
174: a5:
175: bbs $0,_force_lp,0b /* if set loop on last subtest */
176: aa5: callf $4,_setjmp /* save context for error return */
177: movab aa5,_stpc /* save program counter of subtest */
178: movl $5,_subtst /* subtest number */
179: movl $2,_no_opr /* number of operands in use */
180: movl $MASK2B,_opr /* first operand */
181: movl $VALUEB,_opr + 4 /* second operand */
182: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
183: movl $VALUEB,dest /*set dest = 0xaa */
184: movl $MASK2B,r3 /* load mask into reg r3 */
185: bispsw $(N|V) /*overflow & negetive bits ON */
186: andb2 dest+3,r3 /*mask dest with 0x55 memory to reg */
187: bneq error5 /*error if Z = 0 */
188: blss error5 /*error if N = 1 */
189: bcc error5 /*error if C = 0 */
190: bvs error5 /*error if V = 1 */
191: cmpl r3,$EXP2B /*if dest <> expected(0x00), */
192: beql a6 /*correct then continue */
193: movl $1,_ercode /* error code data miscompare */
194: bbs $0,_scoplp,0b /* if set loop on error */
195: movl r3,_actual /* actual data */
196: movl $EXP2B,_expected /* expected data */
197: jmp *badrtn
198: error5: movpsl _actual /* actual = psl */
199: bbs $0,_scoplp,0b /* if set loop on error */
200: movl $2,_ercode /* error code flag failure */
201: jmp *badrtn
202:
203: a6:
204: bbs $0,_force_lp,0b /* if set loop on last subtest */
205: aa6: callf $4,_setjmp /* save context for error return */
206: movab aa6,_stpc /* save program counter of subtest */
207: movl $6,_subtst /* subtest number */
208: movl $2,_no_opr /* number of operands in use */
209: movl $MASK2B,_opr /* first operand */
210: movl $VALUEB,_opr + 4 /* second operand */
211: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
212: movl $VALUEB,dest /*set dest = 0xaa */
213: movl $MASK2B,dest2 /* load mask into reg r1 */
214: bispsw $(N|V) /*overflow & negetive bits ON */
215: andb2 dest+3,dest2+3 /*mask dest with 0x55 memory to memory */
216: bneq error6 /*error if Z = 0 */
217: blss error6 /*error if N = 1 */
218: bcc error6 /*error if C = 0 */
219: bvs error6 /*error if V = 1 */
220: movl $EXP2B,r4
221: cmpl dest2,$EXP2B /*if dest <> expected(0x00), */
222: beql aldn /*correct then continue */
223: movl $1,_ercode /* error code data miscompare */
224: bbs $0,_scoplp,0b /* if set loop on error */
225: movl dest2,_actual /* actual data */
226: movl $EXP2B,_expected /* expected data */
227: jmp *badrtn
228: error6: movpsl _actual /* actual = psl */
229: bbs $0,_scoplp,0b /* if set loop on error */
230: movl $2,_ercode /* error code flag failure */
231: jmp *badrtn
232:
233: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */
234: jmp *return
235: /* */
236:
237: /* variables */
238: /* */
239: .align 2
240: dest: .space 4
241:
242: .align 2
243: dest2: .space 4
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.