|
|
1.1 root 1: /* MOVW instruction test */
2: /* MOVL have been tested prior to this test. */
3: /* constant definitions */
4:
5: .set HIGH,31
6: .set IPL,8
7: .set ZERO,0
8: .set ONES,0xffffffff
9: .set IV,32
10: .set T,16
11: .set N,8
12: .set Z,4
13: .set V,2
14: .set C,1
15: .set NEGNO,0xa000ffff
16: .set NEGVAL,0xff0fffff
17: .set WORD,0xffff
18: .set BYTE,0xff
19: .set MASKHW,0x55550000
20: .set MASKLW,0x5555
21: .set MASKB,0x55555500
22:
23: .globl _movew
24: _movew:
25:
26: callf $4,_setjmp /* save context for error return */
27: movab _movew,_stpc /* save subtst starting address */
28: movl $1,_subtst /* subtest number */
29: movl $1,_no_opr /* number of operands in use */
30: movl negno,_opr /* first operand */
31: 0:
32: bicpsw $(IV|T) /* disable overflow,trace exceptions */
33: movwmr: /* MOVE MEMORY TO REGISTER */
34: movl $MASKHW,r4 /* initialize r4 = 0x55550000 */
35: bispsw $(Z|V|C) /* set z,v,c flags */
36: bicpsw $N /* clear n flag */
37: movw negno,r4 /* move word 0xa000 to r4 */
38: jgeq error1 /* error if n flag not set */
39: jeql error1 /* error if z flag set */
40: jvs error1 /* error if v flag set */
41: jcc error1 /* error if c flag not set */
42: jmp 1f
43: error1: movpsl _actual /* actual = psl MAYBE it is incorrect */
44: bbs $0,_scoplp,0b /* if set scope loop on error */
45: movl $2,_ercode /* error code flag failure */
46: jmp *badrtn
47: 1: cmpl expr5,r4 /* compare r4 to 0xffffa000 */
48: jeql 1f
49: bbs $0,_scoplp,0b /* if set scope loop on error */
50: movl $1,_ercode /* error code data miscompare */
51: movl r4,_actual /* actual data */
52: movl expr5,_expected /* expected data */
53: jmp *badrtn
54: 1: bicpsw $Z
55: cmpl $NEGNO,negno /* make sure source unchanged */
56: jeql movwrr
57: bbs $0,_scoplp,0b /* if set scope loop on error */
58: movl $3,_ercode /* error code operand miscompare */
59: movl negno,_actual /* actual data */
60: movl $NEGNO,_expected /* expected data */
61: jmp *badrtn
62: movwrr: /* MOVE REGISTER TO REGISTER */
63: bbs $0,_force_lp,0b /* if set loop on last subtest */
64: am2: callf $4,_setjmp /* save context for error return */
65: movab am2,_stpc /* save subtst starting address */
66: movl $2,_subtst /* subtest number */
67: movl $1,_no_opr /* number of operands in use */
68: movl $MASKLW,_opr /* first operand */
69: 0: movl $MASKLW,r3 /* initialize r3 = 0x5555 */
70: movl r3,expval
71: movl $0xffffffff,r4 /* initialize r4 = 0xffffffff */
72: bispsw $(Z|N|V) /* set Z,V,N flags */
73: bicpsw $C /* clear C flag */
74: movw r3,r4 /* move r3 to r4 */
75: jlss error2 /* error if n flag set */
76: jeql error2 /* error if z flag set */
77: jvs error2 /* error if v flag set */
78: jcc error2 /* error if c flag not set */
79: jmp 1f
80: error2: movpsl _actual /* actual = psl MAYBE it is incorrect */
81: bbs $0,_scoplp,0b /* if set scope loop on error */
82: movl $2,_ercode /* error code flag failure */
83: jmp *badrtn
84: 1: cmpl r4,expval
85: jeql 1f
86: bbs $0,_scoplp,0b /* if set scope loop on error */
87: movl $1,_ercode /* error code data miscompare */
88: movl r4,_actual /* actual data */
89: movl expval,_expected /* expected data */
90: jmp *badrtn
91: 1: movw r4,r5 /* move r4 to r5 */
92: movw r5,r6 /* move r5 to r6 */
93: movw r6,r7 /* move r6 to r7 */
94: movw r7,r9 /* move r7 to r9 */
95: movl r9,oldval /* save value of source = 0x00005555 */
96: movw r9,r11 /* move r9 to r11 */
97: cmpl expval,r11 /* compare r11 to 0x00005555 */
98: jeql 1f
99: bbs $0,_scoplp,0b /* if set scope loop on error */
100: movl $1,_ercode /* error code data miscompare */
101: movl r11,_actual /* actual data */
102: movl expval,_expected /* expected data */
103: jmp *badrtn
104: 1: bicpsw $Z
105: cmpl oldval,r9 /* make sure source unchanged */
106: jeql m3
107: bbs $0,_scoplp,0b /* if set scope loop on error */
108: movl $1,_ercode /* error code data miscompare */
109: movl r9,_actual /* actual data */
110: movl oldval,_expected /* expected data */
111: jmp *badrtn
112:
113: m3:
114: bbs $0,_force_lp,0b /* if set loop on last subtest */
115: am3: callf $4,_setjmp /* save context for error return */
116: movab am3,_stpc /* save subtst starting address */
117: movl $3,_subtst /* subtest number */
118: movl $1,_no_opr /* number of operands in use */
119: movl negval,_opr /* first operand */
120: 0: movl $0x0,r4
121: movw negval,r3 /* move word 0xff0f to r3 */
122: movl r3,expval /* save source */
123: bispsw $(Z|V)
124: bicpsw $(C|N)
125: movw r3,r4 /* move 0xffffff0f to r4 */
126: jgeq error3 /* error if n flag not set */
127: jeql error3 /* error if z flag set */
128: jvs error3 /* error if v flag set */
129: jcc error3 /* error if c flag not set */
130: jmp 1f
131: error3: movpsl _actual /* actual = psl MAYBE it is incorrect */
132: bbs $0,_scoplp,0b /* if set scope loop on error */
133: movl $2,_ercode /* error code flag failure */
134: jmp *badrtn
135: 1: cmpl r4,expval
136: jeql 1f
137: bbs $0,_scoplp,0b /* if set scope loop on error */
138: movl $1,_ercode /* error code data miscompare */
139: movl r4,_actual /* actual data */
140: movl expval,_expected /* expected data */
141: jmp *badrtn
142: 1: bicpsw $Z
143: cmpl r3,expval
144: jeql movwmm
145: bbs $0,_scoplp,0b /* if set scope loop on error */
146: movl $3,_ercode /* error code operand miscompare */
147: movl r3,_actual /* actual data */
148: movl expval,_expected /* expected data */
149: jmp *badrtn
150: movwmm: /* MOVE MEMORY TO MEMORY */
151: bbs $0,_force_lp,0b /* if set loop on last subtest */
152: am4: callf $4,_setjmp /* save context for error return */
153: movab am4,_stpc /* save subtst starting address */
154: movl $4,_subtst /* subtest number */
155: movl $1,_no_opr /* number of operands in use */
156: movl $0xffff0000,_opr /* first operand */
157: 0: movl $0x0,tstloc
158: movl $0xffff0000,oprd
159: movl oprd,oldval /* save source */
160: bispsw $(Z|V) /* set z,v flags */
161: bicpsw $(C|N) /* clear n,c flag */
162: movw oprd,tstloc+2
163: jgeq error4 /* error if n flag not set */
164: jeql error4 /* error if z flag set */
165: jvs error4 /* error if v flag set */
166: jcc error4 /* error if c flag not set */
167: jmp 1f
168: error4: movpsl _actual /* actual = psl MAYBE it is incorrect */
169: bbs $0,_scoplp,0b /* if set scope loop on error */
170: movl $2,_ercode /* error code flag failure */
171: jmp *badrtn
172: 1: cmpl $0x0000ffff,tstloc /* compare tstloc to expected value */
173: jeql 1f
174: bbs $0,_scoplp,0b /* if set scope loop on error */
175: movl $1,_ercode /* error code data miscompare */
176: movl tstloc,_actual /* actual data */
177: movl $0x0000ffff,_expected /* expected data */
178: jmp *badrtn
179: 1: bicpsw $Z
180: cmpl oprd,oldval /* make sure source unchanged */
181: jeql m5
182: bbs $0,_scoplp,0b /* if set scope loop on error */
183: movl $3,_ercode /* error code operand miscompare */
184: movl oprd,_actual /* actual data */
185: movl oldval,_expected /* expected data */
186: jmp *badrtn
187:
188: m5: /* MOVE MEMORY TO MEMORY */
189: bbs $0,_force_lp,0b /* if set loop on last subtest */
190: am5: callf $4,_setjmp /* save context for error return */
191: movab am5,_stpc /* save subtst starting address */
192: movl $5,_subtst /* subtest number */
193: movl $1,_no_opr /* number of operands in use */
194: movl $0x5555,_opr /* first operand */
195: 0: movl $0x5555,tstloc
196: movl tstloc,oldval /* save source */
197: bispsw $(N|V|Z) /* set n,v,z flags */
198: bicpsw $C /* clear c flag */
199: movw tstloc+2,oprd+2
200: jlss error5 /* error if n flag set */
201: jeql error5 /* error if z flag set */
202: jvs error5 /* error if v flag set */
203: jcc error5 /* error if c flag not set */
204: jmp 1f
205: error5: movpsl _actual /* actual = psl MAYBE it is incorrect */
206: bbs $0,_scoplp,0b /* if set scope loop on error */
207: movl $2,_ercode /* error code flag failure */
208: jmp *badrtn
209: 1: cmpl $0xffff5555,oprd /* compare oprd to expected value */
210: jeql 1f
211: bbs $0,_scoplp,0b /* if set scope loop on error */
212: movl $1,_ercode /* error code data miscompare */
213: movl oprd,_actual /* actual data */
214: movl $0xffff5555,_expected /* expected data */
215: jmp *badrtn
216: 1: bicpsw $Z
217: cmpl tstloc,oldval /* make sure source unchanged */
218: jeql movwdm
219: bbs $0,_scoplp,0b /* if set scope loop on error */
220: movl $3,_ercode /* error code operand miscompare */
221: movl tstloc,_actual /* actual data */
222: movl oldval,_expected /* expected data */
223: jmp *badrtn
224: movwdm: /* MOVE DATA TO MEMORY */
225: bbs $0,_force_lp,0b /* if set loop on last subtest */
226: am6: callf $4,_setjmp /* save context for error return */
227: movab am6,_stpc /* save subtst starting address */
228: movl $6,_subtst /* subtest number */
229: movl $1,_no_opr /* number of operands in use */
230: movl $0xffff0000,_opr /* first operand */
231: 0: movl $0x0,tstloc
232: movl $0xffff0000,oprd
233: movl oprd,oldval /* save source */
234: bispsw $(Z|V) /* set z,v flags */
235: bicpsw $(C|N) /* clear n,c flag */
236: movw $-0x0001,tstloc+2
237: jgeq error6 /* error if n flag not set */
238: jeql error6 /* error if z flag set */
239: jvs error6 /* error if v flag set */
240: jcc error6 /* error if c flag not set */
241: jmp 1f
242: error6: movpsl _actual /* actual = psl MAYBE it is incorrect */
243: bbs $0,_scoplp,0b /* if set scope loop on error */
244: movl $2,_ercode /* error code flag failure */
245: jmp *badrtn
246: 1: cmpl $0x0000ffff,tstloc /* compare tstloc to expected value */
247: jeql 1f
248: bbs $0,_scoplp,0b /* if set scope loop on error */
249: movl $1,_ercode /* error code data miscompare */
250: movl tstloc,_actual /* actual data */
251: movl $0x0000ffff,_expected /* expected data */
252: jmp *badrtn
253: 1: bicpsw $Z
254: cmpl oprd,oldval /* make sure source unchanged */
255: jeql movwrm
256: bbs $0,_scoplp,0b /* if set scope loop on error */
257: movl $3,_ercode /* error code operand miscompare */
258: movl oprd,_actual /* actual data */
259: movl oldval,_expected /* expected data */
260: jmp *badrtn
261: movwrm:
262: bbs $0,_force_lp,0b /* if set loop on last subtest */
263: am7: callf $4,_setjmp /* save context for error return */
264: movab am7,_stpc /* save subtst starting address */
265: movl $7,_subtst /* subtest number */
266: movl $1,_no_opr /* number of operands in use */
267: movl $0xff0f,_opr /* first operand */
268: 0: movl $0xff0f,expval /* move word 0xff0f to expval*/
269: movl $0xff0f,tmp /* move word 0xff0f to tmp */
270: movw tmp+2,r3 /* move word 0xff0f to r7 */
271: bispsw $(Z|V)
272: bicpsw $(C|N)
273: movw r3,tstloc+2 /* move 0xffffff0f to tstloc+2*/
274: jgeq error7 /* error if n flag not set */
275: jeql error7 /* error if z flag set */
276: jvs error7 /* error if v flag set */
277: jcc error7 /* error if c flag not set */
278: jmp 1f
279: error7: movpsl _actual /* actual = psl MAYBE it is incorrect */
280: bbs $0,_scoplp,0b /* if set scope loop on error */
281: movl $2,_ercode /* error code flag failure */
282: jmp *badrtn
283: 1: cmpl tstloc,expval
284: jeql movwdr
285: bbs $0,_scoplp,0b /* if set scope loop on error */
286: movl $1,_ercode /* error code data miscompare */
287: movl tstloc,_actual /* actual data */
288: movl expval,_expected /* expected data */
289: jmp *badrtn
290: movwdr: /* MOVE DATA TO REGISTER */
291: bbs $0,_force_lp,0b /* if set loop on last subtest */
292: am8: callf $4,_setjmp /* save context for error return */
293: movab am8,_stpc /* save subtst starting address */
294: movl $8,_subtst /* subtest number */
295: movl $1,_no_opr /* number of operands in use */
296: movl negval,_opr /* first operand */
297: 0: movl $0x0,r8
298: movw negval,r3 /* move word 0xff0f to r7 */
299: movl r3,expval /* save source */
300: bispsw $(Z|V)
301: bicpsw $(C|N)
302: movw $-0x00f1,r4 /* move 0xffffff0f to r4 */
303: jgeq error8 /* error if n flag not set */
304: jeql error8 /* error if z flag set */
305: jvs error8 /* error if v flag set */
306: jcc error8 /* error if c flag not set */
307: jmp 1f
308: error8: movpsl _actual /* actual = psl MAYBE it is incorrect */
309: bbs $0,_scoplp,0b /* if set scope loop on error */
310: movl $2,_ercode /* error code flag failure */
311: jmp *badrtn
312: 1: cmpl r4,expval
313: jeql 1f
314: bbs $0,_scoplp,0b /* if set scope loop on error */
315: movl $1,_ercode /* error code data miscompare */
316: movl r4,_actual /* actual data */
317: movl expval,_expected /* expected data */
318: jmp *badrtn
319: 1: bicpsw $Z
320: cmpl r3,expval
321: jeql aldn
322: bbs $0,_scoplp,0b /* if set scope loop on error */
323: movl $3,_ercode /* error code operand miscompare */
324: movl r3,_actual /* actual data */
325: movl expval,_expected /* expected data */
326: jmp *badrtn
327:
328:
329:
330: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */
331: jmp *return /* good, return to monitor */
332:
333: /* test data */
334: .align 2
335: negval: .long NEGVAL /* 0xf0ffffff */
336: zero: .long 0x0
337: expval: .long 0x0
338: oldval: .long 0x0
339: negno: .long NEGNO
340: expr5: .long 0xffffa000
341: tstloc: .long 0x0
342: tmp: .long 0x0
343: oprd: .long 0x0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.