|
|
1.1 root 1: /* ANDW2 (and word 2 operand) test */
2:
3: /*Test name = andw2 */
4: /*Description = */
5: /* This test checks 'andw2' instruction as follows: */
6: /* destination = r1, memory location (dest) */
7: /* destination mask result Z N C V(flags) */
8: /* ___________ ____ _____ _____________ */
9: /* 0xaaaa 0xaaaa 0xaaaa 0 0 1 0 */
10: /* 0xaaaa 0x5555 0x0000 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: .globl _andw2
51: _andw2:
52: callf $4,_setjmp /* save context for return from error */
53: movab _andw2,_stpc /* subtest address */
54: movl $1,_subtst /* subtest number */
55: movl $2,_no_opr /* number of operands in use */
56: movl $MASK1W,_opr /* first operand */
57: movl $VALUEW,_opr + 4 /* second operand */
58: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
59: movl $VALUEW,r4 /*set r4 = 0xaaaa */
60: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
61: andw2 $MASK1W,r4 /*mask r4 with 0xaaaa data to reg */
62: beql error1 /*error if Z = 1 */
63: blss error1 /*error if N = 1 */
64: bcc error1 /*error if C = 0 */
65: bvs error1 /*error if V = 1 */
66: movl $EXP1W,r3
67: cmpl r4,$EXP1W /*if r4 <> expected(0xaaaa), */
68: beql a2 /* if correct continue */
69: movl $1,_ercode /* error code data miscompare */
70: bbs $0,_scoplp,0b /* if set scope loop on error */
71: movl r4,_actual /* actual data */
72: movl $EXP1W,_expected /* expected data */
73: jmp *badrtn
74: error1: movpsl _actual /* actual = psl */
75: bbs $0,_scoplp,0b /* if set scope loop on error */
76: movl $2,_ercode /* error code flag miscompare */
77: jmp *badrtn
78:
79: /* Now try another mask(0x5555) memory to register */
80: /* */
81: a2:
82: bbs $0,_force_lp,0b /* if set loop on last subtest */
83: aa2: callf $4,_setjmp /* save context for return from error */
84: movab aa2,_stpc /* subtest address */
85: movl $2,_subtst /* subtest number */
86: movl $2,_no_opr /* number of operands in use */
87: movl $MASK2W,_opr /* first operand */
88: movl $VALUEW,_opr + 4 /* second operand */
89: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
90: movl $VALUEW,r4 /*set r4 = 0xaaaa */
91: movl $MASK2W,dest /* load mask into location dest */
92: bispsw $(N|V) /*overflow & negetive bits ON */
93: andw2 dest+2,r4 /*mask r4 with 0x5555 memory to reg */
94: bneq error2 /*error if Z = 0 */
95: blss error2 /*error if N = 1 */
96: bcc error2 /*error if C = 1 */
97: bvs error2 /*error if V = 1 */
98: cmpl r4,$EXP2W /*if r4 <> expected(0x0000), */
99: beql andw2m /* if correct continue */
100: movl $1,_ercode /* error code data miscompare */
101: bbs $0,_scoplp,0b /* if set scope loop on error */
102: movl r4,_actual /* actual data */
103: movl $EXP2W,_expected /* expected data */
104: jmp *badrtn
105: error2: movpsl _actual /* actual = psl */
106: bbs $0,_scoplp,0b /* if set scope loop on error */
107: movl $2,_ercode /* error code flag miscompare */
108: jmp *badrtn
109:
110: /* */
111: /* Now use memory location instead of register as destination */
112: /* data to memory operation */
113: andw2m:
114: bbs $0,_force_lp,0b /* if set loop on last subtest */
115: aa3: callf $4,_setjmp /* save context for return from error */
116: movab aa3,_stpc /* subtest address */
117: movl $3,_subtst /* subtest number */
118: movl $2,_no_opr /* number of operands in use */
119: movl $MASK1W,_opr /* first operand */
120: movl $VALUEW,_opr + 4 /* second operand */
121: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
122: movl $VALUEW,dest /*set dest = 0xaaaa */
123: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
124: andw2 $MASK1W,dest+2 /*mask dest with 0xaaaa data to mem */
125: jeql error3 /*error if Z = 1 */
126: jlss error3 /*error if N = 1 */
127: jcc error3 /*error if C = 0 */
128: jvs error3 /*error if V = 1 */
129: cmpl dest,$EXP1W /*if dest <> expected(0xaaaa), */
130: beql a4 /* if correct continue */
131: movl $1,_ercode /* error code data miscompare */
132: bbs $0,_scoplp,0b /* if set scope loop on error */
133: movl dest,_actual /* actual data */
134: movl $EXP1W,_expected /* expected data */
135: jmp *badrtn
136: error3: movpsl _actual /* actual = psl */
137: bbs $0,_scoplp,0b /* if set scope loop on error */
138: movl $2,_ercode /* error code flag miscompare */
139: jmp *badrtn
140:
141: /* Now try another mask(0x5555) memory to memory */
142: /* */
143: a4:
144: bbs $0,_force_lp,0b /* if set loop on last subtest */
145: aa4: callf $4,_setjmp /* save context for return from error */
146: movab aa4,_stpc /* subtest address */
147: movl $4,_subtst /* subtest number */
148: movl $2,_no_opr /* number of operands in use */
149: movl $MASK2W,_opr /* first operand */
150: movl $VALUEW,_opr + 4 /* second operand */
151: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
152: movl $VALUEW,dest /*set dest = 0xaaaa */
153: movl $MASK2W,dest2 /* set dest2 = 0x5555 */
154: bispsw $(N|V) /*overflow & negetive bits ON */
155: andw2 dest2+2,dest+2 /*mask dest with 0x5555 mem to mem */
156: jneq error4 /*error if Z = 0 */
157: jlss error4 /*error if N = 1 */
158: jcc error4 /*error if C = 1 */
159: jvs error4 /*error if V = 1 */
160: cmpl dest,$EXP2W /*if dest <> expected(0x0000), */
161: beql a5 /* if correct continue */
162: movl $1,_ercode /* error code data miscompare */
163: bbs $0,_scoplp,0b /* if set scope loop on error */
164: movl dest,_actual /* actual data */
165: movl $EXP2W,_expected /* expected data */
166: jmp *badrtn
167: error4: movpsl _actual /* actual = psl */
168: bbs $0,_scoplp,0b /* if set scope loop on error */
169: movl $2,_ercode /* error code flag miscompare */
170: jmp *badrtn
171:
172: /* Now try another mask(0x5555) register to memory */
173: /* */
174:
175: a5:
176: bbs $0,_force_lp,0b /* if set loop on last subtest */
177: aa5: callf $4,_setjmp /* save context for return from error */
178: movab aa5,_stpc /* subtest address */
179: movl $5,_subtst /* subtest number */
180: movl $2,_no_opr /* number of operands in use */
181: movl $MASK2W,_opr /* first operand */
182: movl $VALUEW,_opr + 4 /* second operand */
183: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
184: movl $VALUEW,dest /*set dest = 0xaaaa */
185: movl $MASK2W,r3 /* set r3 = 0x5555 */
186: bispsw $(N|V) /*overflow & negetive bits ON */
187: andw2 r3,dest+2 /*mask dest with 0x5555 reg to mem */
188: jneq error5 /*error if Z = 0 */
189: jlss error5 /*error if N = 1 */
190: jcc error5 /*error if C = 1 */
191: jvs error5 /*error if V = 1 */
192: cmpl dest,$EXP2W /*if dest <> expected(0x0000), */
193: beql a6 /* if correct continue */
194: movl $1,_ercode /* error code data miscompare */
195: bbs $0,_scoplp,0b /* if set scope loop on error */
196: movl dest,_actual /* actual data */
197: movl $EXP2W,_expected /* expected data */
198: jmp *badrtn
199: error5: movpsl _actual /* actual = psl */
200: bbs $0,_scoplp,0b /* if set scope loop on error */
201: movl $2,_ercode /* error code flag miscompare */
202: jmp *badrtn
203: /* */
204: /* Now try another mask(0x5555) register to register */
205: /* */
206:
207: a6:
208: bbs $0,_force_lp,0b /* if set loop on last subtest */
209: aa6: callf $4,_setjmp /* save context for return from error */
210: movab aa6,_stpc /* subtest address */
211: movl $6,_subtst /* subtest number */
212: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
213: movl $VALUEW,r4 /*set r4 = 0xaaaa */
214: movl $MASK2W,r3 /* set r3 = 0x5555 */
215: bispsw $(N|V) /*overflow & negetive bits ON */
216: andw2 r3,r4 /*mask r4 with 0x5555 reg to r4 */
217: jneq error6 /*error if Z = 0 */
218: jlss error6 /*error if N = 1 */
219: jcc error6 /*error if C = 1 */
220: jvs error6 /*error if V = 1 */
221: cmpl r4,$EXP2W /*if r5 <> expected(0x0000), */
222: beql aldn /* if correct continue */
223: movl $1,_ercode /* error code data miscompare */
224: bbs $0,_scoplp,0b /* if set scope loop on error */
225: movl r4,_actual /* actual data */
226: movl $EXP2W,_expected /* expected data */
227: jmp *badrtn
228: error6: movpsl _actual /* actual = psl */
229: bbs $0,_scoplp,0b /* if set scope loop on error */
230: movl $2,_ercode /* error code flag miscompare */
231: jmp *badrtn
232: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */
233: jmp *return
234: /* */
235: /* variables */
236: /* */
237: .align 2
238: dest: .space 4
239:
240: .align 2
241: dest2: .space 4
242:
243:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.