|
|
1.1 root 1: /* INDEXing mode test */
2: /* */
3: /* constant definitions */
4:
5: .set HIGH,31
6: .set IPL,8
7: .set ZERO,0
8: .set ONES,0xffffffff
9: .set DV,128
10: .set FU,64
11: .set IV,32
12: .set T,16
13: .set N,8
14: .set Z,4
15: .set V,2
16: .set C,1
17: .set NEGVAL,0xff0fffff
18:
19: .globl _index
20: _index:
21: callf $4,_setjmp /* save context for error return */
22: movab _index,_stpc /* save starting address of subtest */
23: movl $1,_subtst /* subtst number */
24: movl $3,_no_opr /* number of operands in use */
25: movl $0,_opr /* first operand */
26: movl $1,_opr + 4 /* second operand */
27: movl $2,_opr + 8 /* third operand */
28: 0: movl $0x1fffffff,tab1 /* Initialize data */
29: movl $0xaabbccdd,tab1+4
30: movl $0xccddeeff,tab1+8
31: movl $0xeeeecaca,tab1+12
32:
33: movl $0x00000001,tab2
34: movl $0x20000000,tab2+4
35: movl $0x06ffffff,tab2+8
36:
37: movl $0,tab3
38: movl $0xffff0000,tab3+4
39: movl $0xaaaaaaaa,tab3+8
40: movl $0xcc00eeff,tab3+12
41: movl $0xffffffff,tab3+16
42:
43: movl $0x3fffffff,result
44: movl $0x20000000,result+4
45: movl $0xffffffb0,result+8
46: movl $0xcce0eeff,result+12
47: movl $0xcaccffff,result+16
48:
49: movl $1,r1 /* R1 : indidate which part of the test */
50: clrl r3 /* R3 = 0; R4 = 1; R5 = 2 */
51: movl $1,r4
52: movl $2,r5
53: addl3 tab1[r3],tab2[r4],tab3[r5]
54: cmpl tab3+8,result /* compare result */
55: jeql i2 /* error if not equal; z flag not set */
56: bbs $0,_scoplp,0b /* if set scope loop on error */
57: movl $1,_ercode /* error code data miscompare */
58: movl tab3+8,_actual /* actual data */
59: movl result,_expected /* expected data */
60: jmp *badrtn
61:
62: i2:
63: bbs $0,_force_lp,0b /* if set loop on last subtest */
64: ai2: callf $4,_setjmp /* save context for error return */
65: movab ai2,_stpc /* save starting address of subtest */
66: movl $2,_subtst /* subtst number */
67: 0: addw3 tab1[r3],tab2[r4],tab3[r5]
68: cmpl tab3+4,result+4 /* compare result */
69: jeql i3 /* error if not equal; z flag not set */
70: bbs $0,_scoplp,0b /* if set scope loop on error */
71: movl $1,_ercode /* error code data miscompare */
72: movl tab3+4,_actual /* actual data */
73: movl result+4,_expected /* expected data */
74: jmp *badrtn
75:
76: i3:
77: bbs $0,_force_lp,0b /* if set loop on last subtest */
78: ai3: callf $4,_setjmp /* save context for error return */
79: movab ai3,_stpc /* save starting address of subtest */
80: movl $3,_subtst /* subtst number */
81: movl $2,_no_opr /* number of operands in use */
82: movl $4,_opr /* first operand */
83: movl $8,_opr + 4 /* second operand */
84: 0: movl $4,r3 /* R3 = 4; R4 = 8 */
85: movl $8,r4
86: addb3 tab1[r3],tab2[r4],r5
87: cmpl r5,result+8 /* compare result */
88: jeql i4 /* error if not equal; z flag not set */
89: bbs $0,_scoplp,0b /* if set scope loop on error */
90: movl $1,_ercode /* error code data miscompare */
91: movl r5,_actual /* actual data */
92: movl result+8,_expected /* expected data */
93: jmp *badrtn
94:
95: i4:
96: bbs $0,_force_lp,0b /* if set loop on last subtest */
97: ai4: callf $4,_setjmp /* save context for error return */
98: movab ai4,_stpc /* save starting address of subtest */
99: movl $4,_subtst /* subtst number */
100: movl $3,_no_opr /* number of operands in use */
101: movl $9,_opr /* first operand */
102: movl $3,_opr + 4 /* second operand */
103: movl $13,_opr + 8 /* third operand */
104: 0: movl $9,r3 /* R3 = 9; R5 = 13 */
105: movl $13,r5
106: movl $3,r4
107: addb3 tab1[r3],r4,tab3[r5]
108: cmpl tab3+12,result+12 /* compare result */
109: jeql i5 /* error if not equal; z flag not set */
110: bbs $0,_scoplp,0b /* if set scope loop on error */
111: movl $1,_ercode /* error code data miscompare */
112: movl tab3+12,_actual /* actual data */
113: movl result+12,_expected /* expected data */
114: jmp *badrtn
115:
116: i5:
117: bbs $0,_force_lp,0b /* if set loop on last subtest */
118: ai5: callf $4,_setjmp /* save context for error return */
119: movab ai5,_stpc /* save starting address of subtest */
120: movl $5,_subtst /* subtst number */
121: movl $3,_no_opr /* number of operands in use */
122: movl $2,_opr /* first operand */
123: movl $7,_opr + 4 /* second operand */
124: movl $8,_opr + 8 /* third operand */
125: 0: movl $7,r4 /* R4 = 7; R5 = 8 */
126: movl $8,r5
127: movl $2,r3
128: addw3 r3,tab1[r4],tab3[r5]
129: cmpl tab3+16,result+16 /* compare result */
130: jeql aldn /* error if not equal; z flag not set */
131: bbs $0,_scoplp,0b /* if set scope loop on error */
132: movl $1,_ercode /* error code data miscompare */
133: movl tab3+12,_actual /* actual data */
134: movl result+12,_expected /* expected data */
135: jmp *badrtn
136:
137:
138: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */
139: jmp *return
140: /* test data */
141: .align 2
142: tab1:
143: .long 0x1fffffff
144: .long 0xaabbccdd
145: .long 0xccddeeff
146: .long 0xeeeecaca
147: tab2:
148: .long 0x00000001
149: .long 0x20000000
150: .long 0x06ffffff
151: tab3:
152: .long 0
153: .long 0xffff0000 /* should have expected result of 0x20000000 */
154: .long 0xaaaaaaaa /* should have expected result of 0x3fffffff */
155: .long 0xcc00eeff /* should have expected result of 0xcce0eeff */
156: .long 0xffffffff
157: result: /* Table contains expected results */
158: .long 0x3fffffff
159: .long 0x20000000
160: .long 0xffffffb0
161: .long 0xcce0eeff
162: .long 0xcaccffff
163:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.