|
|
1.1 root 1:
2:
3: # ***************************************************************************
4: # *
5: # * Test an instruction that has no operands
6: # *
7: # * Only the 1 byte instruction and some NOPs will go into the code buffer.
8: # *
9: # * 30-May-85 : added pipelined tests
10: # * 22-Jul-85 : don't run pipeline 2 test w/ emulated instructions
11: # ***************************************************************************
12: .text
13: .align 1
14: .globl _test_0_ops
15: _test_0_ops:
16: .word 0
17: /*
18: * Set the sizes for loading and for storing the accumulator
19: */
20: cmpl $SGL,_precision
21: bneq 1f
22: movl $SGL,_acc_ld_size /* set ACC. load size */
23: movl $SGL,_acc_st_size /* set ACC. store size */
24: jmp 2f
25: 1:
26: movl $DBL,_acc_ld_size /* set ACC. load size */
27: movl $DBL,_acc_st_size /* set ACC. store size */
28: cmpl _op_code,$CVDF_OP_CODE /* "cvdf" instruction? */
29: bneq 2f
30: movl $SGL,_acc_st_size /* store sgl acc. for cvdf */
31: 2:
32: callf $4,_test_0_no_pipe /* test w/o pipelineing */
33: callf $4,_test_0_pipe1 /* test pipeline test #1 */
34: cmpl _test_event,$FPM_CODE /* Is this the FPM test? */
35: beql 1f /* don't run pipe #2 w/ FPM */
36: callf $4,_test_0_pipe2 /* test pipeline test #2 */
37: 1: ret /* return */
38:
39:
40:
41:
42: # ***************************************************************************
43: # *
44: # * TEST A NO OPERAND INSTRUCTION WITH NO FPP INSTRUCTION IN FRONT OF IT
45: # *
46: # ***************************************************************************
47: .text
48: .align 1
49: .globl _test_0_no_pipe
50: _test_0_no_pipe:
51: .word 0
52: clrl _pipe_test /* reset the pipe-test flag */
53: callf $4,_pack_inst /* pack the instr's code */
54: pushl $_load_regs /* buffer for loading regs */
55: callf $8,_fill_reg_buf /* fill the buffer */
56: pushl $_exp_regs /* expected reg values */
57: callf $8,_fill_reg_buf /* fill the buffer */
58: /*
59: * test the instruction
60: */
61: clrl _index
62: 3:
63: mull3 $4,_index,r0 /* get longword offset */
64: movl *_data_ptr[r0],_dbl_ld_acc /* get load data's MSW */
65: incl r0
66: movl *_data_ptr[r0],_dbl_ld_acc+4 /* get load data's LSW */
67: 2:
68: callf $4,_run_code /* execute the instruction */
69: tstl _force_loop
70: bneq 2b /* loop on an error */
71: cmpl _index,_max_index /* last data pattern? */
72: bgeq 1f
73: incl _index /* bump the index */
74: jmp 3b /* test next data pattern */
75: 1:
76: ret /* return to test_code */
77:
78:
79:
80:
81: # ***************************************************************************
82: # *
83: # * TEST A NO OPERAND INSTRUCTION WITH A LOAD INSTRUCION IN FRONT OF IT
84: # *
85: # ***************************************************************************
86: .text
87: .align 1
88: .globl _test_0_pipe1
89: _test_0_pipe1:
90: .word 0
91: movl $1,_pipe_test /* set the pipe_test flag */
92: movl $0x62,_addr_code_p1 /* set the addr mode */
93: cmpl $DBL,_acc_ld_size /* DBL or SGL ACC? */
94: beql 1f
95: movl $LDF_OP_CODE,_pipe_inst1 /* pipe inst = load single */
96: brb 2f
97: 1: movl $LDD_OP_CODE,_pipe_inst1 /* pipe inst = load double */
98: 2:
99: callf $4,_pack_inst /* pack the instr's code */
100: pushl $_load_regs /* buffer for loading regs */
101: callf $8,_fill_reg_buf /* fill the buffer */
102: pushl $_exp_regs /* expected reg values */
103: callf $8,_fill_reg_buf /* fill the buffer */
104: moval _dbl_ld_acc,_load_regs+8 /* R2 points to the data */
105: moval _dbl_ld_acc,_exp_regs+8 /* R2 points to the data */
106: /*
107: * test the instruction
108: */
109: clrl _index
110: 3:
111: mull3 $4,_index,r0 /* get longword offset */
112: movl *_data_ptr[r0],_dbl_ld_acc /* get load data's MSW */
113: incl r0
114: movl *_data_ptr[r0],_dbl_ld_acc+4 /* get load data's LSW */
115: 2:
116: callf $4,_run_code /* execute the instruction */
117: tstl _force_loop
118: bneq 2b /* loop on an error */
119: cmpl _index,_max_index /* last data pattern? */
120: bgeq 1f
121: incl _index /* bump the index */
122: jmp 3b /* test next data pattern */
123: 1:
124: clrl _pipe_test /* reset the pipe-test flag */
125: ret /* return to test_code */
126:
127:
128:
129:
130: # ***************************************************************************
131: # *
132: # * TEST A NO OPERAND INSTRUCTION WITH AN ADD INSTRUCION IN FRONT OF IT
133: # *
134: # ***************************************************************************
135: .text
136: .align 1
137: .globl _test_0_pipe2
138: _test_0_pipe2:
139: .word 0
140: movl $2,_pipe_test /* set the pipe_test flag */
141: movl $0x62,_addr_code_p1 /* set the addr mode */
142: cmpl $DBL,_acc_ld_size /* DBL or SGL ACC? */
143: beql 1f
144: movl $ADDF_OP_CODE,_pipe_inst1 /* pipe inst = add single */
145: brb 2f
146: 1: movl $ADDD_OP_CODE,_pipe_inst1 /* pipe inst = add double */
147: 2:
148: callf $4,_pack_inst /* pack the instr's code */
149: pushl $_load_regs /* buffer for loading regs */
150: callf $8,_fill_reg_buf /* fill the buffer */
151: pushl $_exp_regs /* expected reg values */
152: callf $8,_fill_reg_buf /* fill the buffer */
153: moval _dbl_ld_acc,_load_regs+8 /* R2 points to the data */
154: moval _dbl_ld_acc,_exp_regs+8 /* R2 points to the data */
155: /*
156: * test the instruction
157: */
158: clrl _index
159: 3:
160: mull3 $4,_index,r0 /* get longword offset */
161: movl *_data_ptr[r0],_dbl_ld_acc /* get load data's MSW */
162: incl r0
163: movl *_data_ptr[r0],_dbl_ld_acc+4 /* get load data's LSW */
164: 2:
165: callf $4,_run_code /* execute the instruction */
166: tstl _force_loop
167: bneq 2b /* loop on an error */
168: cmpl _index,_max_index /* last data pattern? */
169: bgeq 1f
170: incl _index /* bump the index */
171: jmp 3b /* test next data pattern */
172: 1:
173: clrl _pipe_test /* reset the pipe-test flag */
174: ret /* return to test_code */
175:
176:
177:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.