|
|
1.1 ! root 1: 1 00000000 LL0: ! 2: 2 00000000 .data ! 3: 3 00000de8 * .text ! 4: 4 00000000 .align 1 ! 5: 5 00000000 .globl _pipe_7 ! 6: 6 00000000 _pipe_7: ! 7: 7 0002AE6C 0000 .word L215 ! 8: 8 0002AE6E # #include "fpp_defs.h" ! 9: 9 0002AE6E # ! 10: 10 0002AE6E # ! 11: 11 0002AE6E # /***************************************************************************** ! 12: 12 0002AE6E # * ! 13: 13 0002AE6E # * MONITOR FOR PIPELINE TEST #7 (The Trans-Siberian Pipeline test) ! 14: 14 0002AE6E # * ! 15: 15 0002AE6E # * This test will do: ! 16: 16 0002AE6E # * ! 17: 17 0002AE6E # * LDF(x), SUBF(x), ADDF(0), SUBF(x), ADDF(x), SUBF(0), ! 18: 18 0002AE6E # * ADDF(x), SUBF(x), ADDF(0), SUBF(0), ADDF(x), STF ! 19: 19 0002AE6E # * ! 20: 20 0002AE6E # * where the x's are the fmacro1 LDF data patterns. This test is an attempt ! 21: 21 0002AE6E # * to fill the instruction Queue. ! 22: 22 0002AE6E # *****************************************************************************/ ! 23: 23 0002AE6E # pipe_7() ! 24: 24 0002AE6E # { ! 25: 25 0002AE6E 13 00a8 jbr L217 ! 26: 26 0002AE71 L218: ! 27: 27 0002AE71 # asm(".globl _pipeline_7_t"); ! 28: 28 0002AE71 .globl _pipeline_7_t ! 29: 29 0002AE71 # asm("_pipeline_7_t:"); /* entry address */ ! 30: 30 0002AE71 _pipeline_7_t: ! 31: 31 0002AE71 # if( (cycle == 1) && (prt_hdrs) ) /* print headers on 1st cycle */ ! 32: 32 0002AE71 1d effffffff5 01 cmpl _cycle,$1 ! 33: 33 0002AE78 21 15 jneq L219 ! 34: 34 0002AE7A 5d efffffffec tstl _prt_hdrs ! 35: 35 0002AE80 31 0d jeql L219 ! 36: 36 0002AE82 # { ! 37: 37 0002AE82 # writes(" PIPE_7 "); ! 38: 38 0002AE82 .data 1 ! 39: 39 00000de8 * L221: ! 40: 40 00000de8 * 20504950455F372000 .ascii " PIPE_7 \0" ! 41: 41 00000df1 * .text ! 42: 42 0002AE82 dd 8f00000de8 pushl $L221 ! 43: 43 0002AE88 fe 08 efffffffdd callf $8,_writes ! 44: 44 0002AE8F # } ! 45: 45 0002AE8F # subtest = 1; ! 46: 46 0002AE8F L219: ! 47: 47 0002AE8F 0d 01 efffffffd6 movl $1,_subtest ! 48: 48 0002AE96 # pipe7_1(); /* data in REGs, no NOPs */ ! 49: 49 0002AE96 fe 04 ef0000007f callf $4,_pipe7_1 ! 50: 50 0002AE9D # subtest ++; /* increment subtest num */ ! 51: 51 0002AE9D 6d efffffffc9 incl _subtest ! 52: 52 0002AEA3 # pipe7_2(); /* data in REGs, 1 NOP */ ! 53: 53 0002AEA3 fe 04 ef0000015c callf $4,_pipe7_2 ! 54: 54 0002AEAA # subtest ++; /* increment subtest num */ ! 55: 55 0002AEAA 6d efffffffbc incl _subtest ! 56: 56 0002AEB0 # pipe7_3(); /* data in REGs, 2 NOPs */ ! 57: 57 0002AEB0 fe 04 ef00000243 callf $4,_pipe7_3 ! 58: 58 0002AEB7 # subtest ++; /* increment subtest num */ ! 59: 59 0002AEB7 6d efffffffaf incl _subtest ! 60: 60 0002AEBD # pipe7_4(); /* data in REGs, 3 NOPs */ ! 61: 61 0002AEBD fe 04 ef00000336 callf $4,_pipe7_4 ! 62: 62 0002AEC4 # subtest ++; /* increment subtest num */ ! 63: 63 0002AEC4 6d efffffffa2 incl _subtest ! 64: 64 0002AECA # pipe7_5(); /* data in CACHE, no NOPs */ ! 65: 65 0002AECA fe 04 ef00000433 callf $4,_pipe7_5 ! 66: 66 0002AED1 # subtest ++; /* increment subtest num */ ! 67: 67 0002AED1 6d efffffff95 incl _subtest ! 68: 68 0002AED7 # pipe7_6(); /* data in CACHE, 1 NOP */ ! 69: 69 0002AED7 fe 04 ef0000052a callf $4,_pipe7_6 ! 70: 70 0002AEDE # subtest ++; /* increment subtest num */ ! 71: 71 0002AEDE 6d efffffff88 incl _subtest ! 72: 72 0002AEE4 # pipe7_7(); /* data in CACHE, 2 NOPs */ ! 73: 73 0002AEE4 fe 04 ef00000627 callf $4,_pipe7_7 ! 74: 74 0002AEEB # subtest ++; /* increment subtest num */ ! 75: 75 0002AEEB 6d efffffff7b incl _subtest ! 76: 76 0002AEF1 # pipe7_8(); /* data in CACHE, 3 NOPs */ ! 77: 77 0002AEF1 fe 04 ef00000734 callf $4,_pipe7_8 ! 78: 78 0002AEF8 # subtest ++; /* increment subtest num */ ! 79: 79 0002AEF8 6d efffffff6e incl _subtest ! 80: 80 0002AEFE # pipe7_9(); /* data on STACK, no NOPs */ ! 81: 81 0002AEFE fe 04 ef0000084d callf $4,_pipe7_9 ! 82: 82 0002AF05 # subtest ++; /* increment subtest num */ ! 83: 83 0002AF05 6d efffffff61 incl _subtest ! 84: 84 0002AF0B # pipe7_10(); /* data via FP no NOPs */ ! 85: 85 0002AF0B fe 04 ef000009fc callf $4,_pipe7_10 ! 86: 86 0002AF12 # asm("jmp *return"); /* return to the test monitor */ ! 87: 87 0002AF12 71 ffffffff54 jmp *return ! 88: 88 0002AF18 # } ! 89: 89 0002AF18 40 ret#2 ! 90: 90 0002AF19 .set L215,0x0 ! 91: 91 0002AF19 L217: ! 92: 92 0002AF19 13 ff55 jbr L218 ! 93: 93 0002AF1C .data ! 94: 94 00000de8 * .text ! 95: 95 0002AF1C .align 1 ! 96: 96 0002AF1C .globl _pipe7_1 ! 97: 97 0002AF1C _pipe7_1: ! 98: 98 0002AF1C 0000 .word L232 ! 99: 99 0002AF1E # ! 100: 100 0002AF1E # ! 101: 101 0002AF1E # ! 102: 102 0002AF1E # ! 103: 103 0002AF1E # ! 104: 104 0002AF1E # ! 105: 105 0002AF1E # /************************************************************************ ! 106: 106 0002AF1E # * ! 107: 107 0002AF1E # * SUBTEST 1 ! 108: 108 0002AF1E # * data in registers, no NO-OPs ! 109: 109 0002AF1E # * ! 110: 110 0002AF1E # ************************************************************************/ ! 111: 111 0002AF1E # pipe7_1() ! 112: 112 0002AF1E # { ! 113: 113 0002AF1E 13 00e1 jbr L234 ! 114: 114 0002AF21 L235: ! 115: 115 0002AF21 # force_loop = FALSE; /* clear the force_loop flg */ ! 116: 116 0002AF21 4d efffffff45 clrl _force_loop ! 117: 117 0002AF27 # index = 0; ! 118: 118 0002AF27 4d efffffff3f clrl _index ! 119: 119 0002AF2D # do ! 120: 120 0002AF2D L238: ! 121: 121 0002AF2D # { ! 122: 122 0002AF2D # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */ ! 123: 123 0002AF2D 0d efffffff39 50 movl _index,r0 ! 124: 124 0002AF34 48 03 50 50 shll $3,r0,r0 ! 125: 125 0002AF38 0d e000000000 efffffff29 movl _ldf_1_data(r0),_sgl_value_1 ! 126: 126 0002AF43 # sgl_expected = ldf_1_data[index].exp; /* get expected results */ ! 127: 127 0002AF43 0d efffffff23 50 movl _index,r0 ! 128: 128 0002AF4A 48 03 50 50 shll $3,r0,r0 ! 129: 129 0002AF4E 0d e000000004 efffffff13 movl _ldf_1_data+4(r0),_sgl_expected ! 130: 130 0002AF59 # sgl_value_2 = 0; /* set one operand to 0 */ ! 131: 131 0002AF59 4d efffffff0d clrl _sgl_value_2 ! 132: 132 0002AF5F # /* ! 133: 133 0002AF5F # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 134: 134 0002AF5F # * The force loop flag is set after the first error. ! 135: 135 0002AF5F # */ ! 136: 136 0002AF5F # asm("_pipe7_1_lp1:"); ! 137: 137 0002AF5F _pipe7_1_lp1: ! 138: 138 0002AF5F # asm("movl _sgl_value_1,r4"); /* move the data to r4 */ ! 139: 139 0002AF5F 0d efffffff07 54 movl _sgl_value_1,r4 ! 140: 140 0002AF66 # asm("movl _sgl_value_2,r3"); /* move the '0' to r3 */ ! 141: 141 0002AF66 0d efffffff00 53 movl _sgl_value_2,r3 ! 142: 142 0002AF6D # asm("ldf r4"); /* load the ACC (ACC = op) */ ! 143: 143 0002AF6D 06 54 ldf r4 ! 144: 144 0002AF6F # asm("subf r4"); /* sub. the op. (ACC = 0 ) */ ! 145: 145 0002AF6F d6 54 subf r4 ! 146: 146 0002AF71 # asm("addf r3"); /* add a '0' (ACC = 0 ) */ ! 147: 147 0002AF71 c6 53 addf r3 ! 148: 148 0002AF73 # asm("subf r4"); /* sub. the op. (ACC =-op) */ ! 149: 149 0002AF73 d6 54 subf r4 ! 150: 150 0002AF75 # asm("addf r4"); /* add the op. (ACC = 0 ) */ ! 151: 151 0002AF75 c6 54 addf r4 ! 152: 152 0002AF77 # asm("subf r3"); /* sub. a '0' (ACC = 0 ) */ ! 153: 153 0002AF77 d6 53 subf r3 ! 154: 154 0002AF79 # asm("addf r4"); /* add the op. (ACC = op) */ ! 155: 155 0002AF79 c6 54 addf r4 ! 156: 156 0002AF7B # asm("subf r4"); /* sub. the op. (ACC = 0 ) */ ! 157: 157 0002AF7B d6 54 subf r4 ! 158: 158 0002AF7D # asm("addf r3"); /* add a '0' (ACC = 0 ) */ ! 159: 159 0002AF7D c6 53 addf r3 ! 160: 160 0002AF7F # asm("subf r3"); /* sub. a '0' (ACC = 0 ) */ ! 161: 161 0002AF7F d6 53 subf r3 ! 162: 162 0002AF81 # asm("addf r4"); /* add the op. (ACC = op) */ ! 163: 163 0002AF81 c6 54 addf r4 ! 164: 164 0002AF83 # asm("stf r5"); /* store the ACC (s/b= op) */ ! 165: 165 0002AF83 26 55 stf r5 ! 166: 166 0002AF85 # if( force_loop ) ! 167: 167 0002AF85 5d effffffee1 tstl _force_loop ! 168: 168 0002AF8B 31 02 jeql L239 ! 169: 169 0002AF8D # asm("brb _pipe7_1_lp1");; /* loop on the error */ ! 170: 170 0002AF8D 11 d0 brb _pipe7_1_lp1 ! 171: 171 0002AF8F L239: ! 172: 172 0002AF8F # /* ! 173: 173 0002AF8F # * verify the results ! 174: 174 0002AF8F # */ ! 175: 175 0002AF8F # asm("movl r5,_sgl_st_acc"); /* get the result */ ! 176: 176 0002AF8F 0d 55 effffffed6 movl r5,_sgl_st_acc ! 177: 177 0002AF96 # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */ ! 178: 178 0002AF96 1d effffffed0 effffffecb cmpl _sgl_st_acc,_sgl_expected ! 179: 179 0002AFA1 31 45 jeql L240 ! 180: 180 0002AFA3 # { ! 181: 181 0002AFA3 # errcnt++; /* bump the error count */ ! 182: 182 0002AFA3 6d effffffec3 incl _errcnt ! 183: 183 0002AFA9 # if ( prt_error ) ! 184: 184 0002AFA9 5d effffffebd tstl _prt_error ! 185: 185 0002AFAF 31 0d jeql L241 ! 186: 186 0002AFB1 # print_pipe7_er("Reg. Data, no NO-OPs"); ! 187: 187 0002AFB1 .data 1 ! 188: 188 00000df1 * L243: ! 189: 189 00000df1 * 5265672E20446174612C206E6 .ascii "Reg. Data, no NO-OPs\0" ! 190: F204E4F2D4F507300 ! 191: 190 00000e06 * .text ! 192: 191 0002AFB1 dd 8f00000df1 pushl $L243 ! 193: 192 0002AFB7 fe 08 ef00000b0e callf $8,_print_pipe7_er ! 194: 193 0002AFBE # if ( halt_flg ) ! 195: 194 0002AFBE L241: ! 196: 195 0002AFBE 5d effffffea8 tstl _halt_flg ! 197: 196 0002AFC4 31 0d jeql L244 ! 198: 197 0002AFC6 # pipe7_er_hlt( subtest ); ! 199: 198 0002AFC6 dd effffffea0 pushl _subtest ! 200: 199 0002AFCC fe 08 ef00000c11 callf $8,_pipe7_er_hlt ! 201: 200 0002AFD3 # if ( loop_on_err ) { ! 202: 201 0002AFD3 L244: ! 203: 202 0002AFD3 5d effffffe93 tstl _loop_on_err ! 204: 203 0002AFD9 31 0d jeql L246 ! 205: 204 0002AFDB # force_loop = TRUE; /* set the force loop flag */ ! 206: 205 0002AFDB 0d 01 effffffe8a movl $1,_force_loop ! 207: 206 0002AFE2 # asm("jmp _pipe7_1_lp1"); /* and loop */ ! 208: 207 0002AFE2 71 efffffff77 jmp _pipe7_1_lp1 ! 209: 208 0002AFE8 # } ! 210: 209 0002AFE8 # } /* end of compare error */ ! 211: 210 0002AFE8 L246: ! 212: 211 0002AFE8 # } while( index++ < max_ldf_1_index ); ! 213: 212 0002AFE8 L240: ! 214: 213 0002AFE8 L237: ! 215: 214 0002AFE8 0d effffffe7e 50 movl _index,r0 ! 216: 215 0002AFEF 6d effffffe77 incl _index ! 217: 216 0002AFF5 1d 50 effffffe70 cmpl r0,_max_ldf_1_index ! 218: 217 0002AFFC 81 03 13 ff2c jlss L238 ! 219: 218 0002B001 L236: ! 220: 219 0002B001 # } /* end of subtest 1 */ ! 221: 220 0002B001 40 ret#2 ! 222: 221 0002B002 .set L232,0x0 ! 223: 222 0002B002 L234: ! 224: 223 0002B002 13 ff1c jbr L235 ! 225: 224 0002B005 .data ! 226: 225 00000de8 * .text ! 227: 226 0002B005 00 .align 1 ! 228: 227 0002B006 .globl _pipe7_2 ! 229: 228 0002B006 _pipe7_2: ! 230: 229 0002B006 0000 .word L247 ! 231: 230 0002B008 # ! 232: 231 0002B008 # ! 233: 232 0002B008 # ! 234: 233 0002B008 # ! 235: 234 0002B008 # ! 236: 235 0002B008 # ! 237: 236 0002B008 # /************************************************************************ ! 238: 237 0002B008 # * ! 239: 238 0002B008 # * SUBTEST 2 ! 240: 239 0002B008 # * data in registers, 1 NO-OP ! 241: 240 0002B008 # * ! 242: 241 0002B008 # ************************************************************************/ ! 243: 242 0002B008 # pipe7_2() ! 244: 243 0002B008 # { ! 245: 244 0002B008 13 00ec jbr L249 ! 246: 245 0002B00B L250: ! 247: 246 0002B00B # force_loop = FALSE; /* clear force_loop flag */ ! 248: 247 0002B00B 4d effffffe5b clrl _force_loop ! 249: 248 0002B011 # index = 0; ! 250: 249 0002B011 4d effffffe55 clrl _index ! 251: 250 0002B017 # do ! 252: 251 0002B017 L253: ! 253: 252 0002B017 # { ! 254: 253 0002B017 # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */ ! 255: 254 0002B017 0d effffffe4f 50 movl _index,r0 ! 256: 255 0002B01E 48 03 50 50 shll $3,r0,r0 ! 257: 256 0002B022 0d e000000000 effffffe3f movl _ldf_1_data(r0),_sgl_value_1 ! 258: 257 0002B02D # sgl_expected = ldf_1_data[index].exp; /* get expected results */ ! 259: 258 0002B02D 0d effffffe39 50 movl _index,r0 ! 260: 259 0002B034 48 03 50 50 shll $3,r0,r0 ! 261: 260 0002B038 0d e000000004 effffffe29 movl _ldf_1_data+4(r0),_sgl_expected ! 262: 261 0002B043 # sgl_value_2 = 0; /* get the '0' operand */ ! 263: 262 0002B043 4d effffffe23 clrl _sgl_value_2 ! 264: 263 0002B049 # /* ! 265: 264 0002B049 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 266: 265 0002B049 # * The force loop flag is set after the first error. ! 267: 266 0002B049 # */ ! 268: 267 0002B049 # asm("_pipe7_2_lp1:"); ! 269: 268 0002B049 _pipe7_2_lp1: ! 270: 269 0002B049 # asm("movl _sgl_value_1,r4"); /* move the data to r4 */ ! 271: 270 0002B049 0d effffffe1d 54 movl _sgl_value_1,r4 ! 272: 271 0002B050 # asm("movl _sgl_value_2,r3"); /* move the '0' to r3 */ ! 273: 272 0002B050 0d effffffe16 53 movl _sgl_value_2,r3 ! 274: 273 0002B057 # asm("ldf r4"); /* load the ACC (ACC = op) */ ! 275: 274 0002B057 06 54 ldf r4 ! 276: 275 0002B059 # asm("nop"); ! 277: 276 0002B059 10 nop ! 278: 277 0002B05A # asm("subf r4"); /* sub. the op. (ACC = 0 ) */ ! 279: 278 0002B05A d6 54 subf r4 ! 280: 279 0002B05C # asm("nop"); ! 281: 280 0002B05C 10 nop ! 282: 281 0002B05D # asm("addf r3"); /* add a '0' (ACC = 0 ) */ ! 283: 282 0002B05D c6 53 addf r3 ! 284: 283 0002B05F # asm("nop"); ! 285: 284 0002B05F 10 nop ! 286: 285 0002B060 # asm("subf r4"); /* sub. the op. (ACC =-op) */ ! 287: 286 0002B060 d6 54 subf r4 ! 288: 287 0002B062 # asm("nop"); ! 289: 288 0002B062 10 nop ! 290: 289 0002B063 # asm("addf r4"); /* add the op. (ACC = 0 ) */ ! 291: 290 0002B063 c6 54 addf r4 ! 292: 291 0002B065 # asm("nop"); ! 293: 292 0002B065 10 nop ! 294: 293 0002B066 # asm("subf r3"); /* sub. a '0' (ACC = 0 ) */ ! 295: 294 0002B066 d6 53 subf r3 ! 296: 295 0002B068 # asm("nop"); ! 297: 296 0002B068 10 nop ! 298: 297 0002B069 # asm("addf r4"); /* add the op. (ACC = op) */ ! 299: 298 0002B069 c6 54 addf r4 ! 300: 299 0002B06B # asm("nop"); ! 301: 300 0002B06B 10 nop ! 302: 301 0002B06C # asm("subf r4"); /* sub. the op. (ACC = 0 ) */ ! 303: 302 0002B06C d6 54 subf r4 ! 304: 303 0002B06E # asm("nop"); ! 305: 304 0002B06E 10 nop ! 306: 305 0002B06F # asm("addf r3"); /* add a '0' (ACC = 0 ) */ ! 307: 306 0002B06F c6 53 addf r3 ! 308: 307 0002B071 # asm("nop"); ! 309: 308 0002B071 10 nop ! 310: 309 0002B072 # asm("subf r3"); /* sub. a '0' (ACC = 0 ) */ ! 311: 310 0002B072 d6 53 subf r3 ! 312: 311 0002B074 # asm("nop"); ! 313: 312 0002B074 10 nop ! 314: 313 0002B075 # asm("addf r4"); /* add the op. (ACC = op) */ ! 315: 314 0002B075 c6 54 addf r4 ! 316: 315 0002B077 # asm("nop"); ! 317: 316 0002B077 10 nop ! 318: 317 0002B078 # asm("stf r5"); /* store the ACC (s/b= op) */ ! 319: 318 0002B078 26 55 stf r5 ! 320: 319 0002B07A # if( force_loop ) ! 321: 320 0002B07A 5d effffffdec tstl _force_loop ! 322: 321 0002B080 31 02 jeql L254 ! 323: 322 0002B082 # asm("brb _pipe7_2_lp1");; /* loop on the error */ ! 324: 323 0002B082 11 c5 brb _pipe7_2_lp1 ! 325: 324 0002B084 L254: ! 326: 325 0002B084 # /* ! 327: 326 0002B084 # * verify the results ! 328: 327 0002B084 # */ ! 329: 328 0002B084 # asm("movl r5,_sgl_st_acc"); /* get the result */ ! 330: 329 0002B084 0d 55 effffffde1 movl r5,_sgl_st_acc ! 331: 330 0002B08B # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */ ! 332: 331 0002B08B 1d effffffddb effffffdd6 cmpl _sgl_st_acc,_sgl_expected ! 333: 332 0002B096 31 45 jeql L255 ! 334: 333 0002B098 # { ! 335: 334 0002B098 # errcnt++; /* bump the error count */ ! 336: 335 0002B098 6d effffffdce incl _errcnt ! 337: 336 0002B09E # if ( prt_error ) ! 338: 337 0002B09E 5d effffffdc8 tstl _prt_error ! 339: 338 0002B0A4 31 0d jeql L256 ! 340: 339 0002B0A6 # print_pipe7_er("Reg. Data, 1 NO-OP"); ! 341: 340 0002B0A6 .data 1 ! 342: 341 00000e06 * L257: ! 343: 342 00000e06 * 5265672E20446174612C20312 .ascii "Reg. Data, 1 NO-OP\0" ! 344: 04E4F2D4F5000 ! 345: 343 00000e19 * .text ! 346: 344 0002B0A6 dd 8f00000e06 pushl $L257 ! 347: 345 0002B0AC fe 08 ef00000a19 callf $8,_print_pipe7_er ! 348: 346 0002B0B3 # if ( halt_flg ) ! 349: 347 0002B0B3 L256: ! 350: 348 0002B0B3 5d effffffdb3 tstl _halt_flg ! 351: 349 0002B0B9 31 0d jeql L258 ! 352: 350 0002B0BB # pipe7_er_hlt( subtest ); ! 353: 351 0002B0BB dd effffffdab pushl _subtest ! 354: 352 0002B0C1 fe 08 ef00000b1c callf $8,_pipe7_er_hlt ! 355: 353 0002B0C8 # if ( loop_on_err ) { ! 356: 354 0002B0C8 L258: ! 357: 355 0002B0C8 5d effffffd9e tstl _loop_on_err ! 358: 356 0002B0CE 31 0d jeql L259 ! 359: 357 0002B0D0 # force_loop = TRUE; /* set the force loop flag */ ! 360: 358 0002B0D0 0d 01 effffffd95 movl $1,_force_loop ! 361: 359 0002B0D7 # asm("jmp _pipe7_2_lp1"); /* and loop */ ! 362: 360 0002B0D7 71 efffffff6c jmp _pipe7_2_lp1 ! 363: 361 0002B0DD # } ! 364: 362 0002B0DD # } /* end of compare error */ ! 365: 363 0002B0DD L259: ! 366: 364 0002B0DD # } while( index++ < max_ldf_1_index ); ! 367: 365 0002B0DD L255: ! 368: 366 0002B0DD L252: ! 369: 367 0002B0DD 0d effffffd89 50 movl _index,r0 ! 370: 368 0002B0E4 6d effffffd82 incl _index ! 371: 369 0002B0EA 1d 50 effffffd7b cmpl r0,_max_ldf_1_index ! 372: 370 0002B0F1 81 03 13 ff21 jlss L253 ! 373: 371 0002B0F6 L251: ! 374: 372 0002B0F6 # } /* end of subtest 2 */ ! 375: 373 0002B0F6 40 ret#2 ! 376: 374 0002B0F7 .set L247,0x0 ! 377: 375 0002B0F7 L249: ! 378: 376 0002B0F7 13 ff11 jbr L250 ! 379: 377 0002B0FA .data ! 380: 378 00000de8 * .text ! 381: 379 0002B0FA .align 1 ! 382: 380 0002B0FA .globl _pipe7_3 ! 383: 381 0002B0FA _pipe7_3: ! 384: 382 0002B0FA 0000 .word L260 ! 385: 383 0002B0FC # ! 386: 384 0002B0FC # ! 387: 385 0002B0FC # ! 388: 386 0002B0FC # ! 389: 387 0002B0FC # ! 390: 388 0002B0FC # ! 391: 389 0002B0FC # /************************************************************************ ! 392: 390 0002B0FC # * ! 393: 391 0002B0FC # * SUBTEST 3 ! 394: 392 0002B0FC # * data in registers, 2 NO-OPs ! 395: 393 0002B0FC # * ! 396: 394 0002B0FC # ************************************************************************/ ! 397: 395 0002B0FC # pipe7_3() ! 398: 396 0002B0FC # { ! 399: 397 0002B0FC 13 00f7 jbr L262 ! 400: 398 0002B0FF L263: ! 401: 399 0002B0FF # force_loop = FALSE; /* clear force_loop flag */ ! 402: 400 0002B0FF 4d effffffd67 clrl _force_loop ! 403: 401 0002B105 # index = 0; ! 404: 402 0002B105 4d effffffd61 clrl _index ! 405: 403 0002B10B # do ! 406: 404 0002B10B L266: ! 407: 405 0002B10B # { ! 408: 406 0002B10B # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */ ! 409: 407 0002B10B 0d effffffd5b 50 movl _index,r0 ! 410: 408 0002B112 48 03 50 50 shll $3,r0,r0 ! 411: 409 0002B116 0d e000000000 effffffd4b movl _ldf_1_data(r0),_sgl_value_1 ! 412: 410 0002B121 # sgl_expected = ldf_1_data[index].exp; /* get expected results */ ! 413: 411 0002B121 0d effffffd45 50 movl _index,r0 ! 414: 412 0002B128 48 03 50 50 shll $3,r0,r0 ! 415: 413 0002B12C 0d e000000004 effffffd35 movl _ldf_1_data+4(r0),_sgl_expected ! 416: 414 0002B137 # sgl_value_2 = 0; /* set the '0' operand */ ! 417: 415 0002B137 4d effffffd2f clrl _sgl_value_2 ! 418: 416 0002B13D # /* ! 419: 417 0002B13D # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 420: 418 0002B13D # * The force loop flag is set after the first error. ! 421: 419 0002B13D # */ ! 422: 420 0002B13D # asm("_pipe7_3_lp1:"); ! 423: 421 0002B13D _pipe7_3_lp1: ! 424: 422 0002B13D # asm("movl _sgl_value_1,r4"); /* move the data to r4 */ ! 425: 423 0002B13D 0d effffffd29 54 movl _sgl_value_1,r4 ! 426: 424 0002B144 # asm("movl _sgl_value_2,r3"); /* move the '0' to r3 */ ! 427: 425 0002B144 0d effffffd22 53 movl _sgl_value_2,r3 ! 428: 426 0002B14B # asm("ldf r4"); /* load the ACC (ACC = op) */ ! 429: 427 0002B14B 06 54 ldf r4 ! 430: 428 0002B14D # asm("nop"); ! 431: 429 0002B14D 10 nop ! 432: 430 0002B14E # asm("nop"); ! 433: 431 0002B14E 10 nop ! 434: 432 0002B14F # asm("subf r4"); /* sub. the op. (ACC = 0 ) */ ! 435: 433 0002B14F d6 54 subf r4 ! 436: 434 0002B151 # asm("nop"); ! 437: 435 0002B151 10 nop ! 438: 436 0002B152 # asm("nop"); ! 439: 437 0002B152 10 nop ! 440: 438 0002B153 # asm("addf r3"); /* add a '0' (ACC = 0 ) */ ! 441: 439 0002B153 c6 53 addf r3 ! 442: 440 0002B155 # asm("nop"); ! 443: 441 0002B155 10 nop ! 444: 442 0002B156 # asm("nop"); ! 445: 443 0002B156 10 nop ! 446: 444 0002B157 # asm("subf r4"); /* sub. the op. (ACC =-op) */ ! 447: 445 0002B157 d6 54 subf r4 ! 448: 446 0002B159 # asm("nop"); ! 449: 447 0002B159 10 nop ! 450: 448 0002B15A # asm("nop"); ! 451: 449 0002B15A 10 nop ! 452: 450 0002B15B # asm("addf r4"); /* add the op. (ACC = 0 ) */ ! 453: 451 0002B15B c6 54 addf r4 ! 454: 452 0002B15D # asm("nop"); ! 455: 453 0002B15D 10 nop ! 456: 454 0002B15E # asm("nop"); ! 457: 455 0002B15E 10 nop ! 458: 456 0002B15F # asm("subf r3"); /* sub. a '0' (ACC = 0 ) */ ! 459: 457 0002B15F d6 53 subf r3 ! 460: 458 0002B161 # asm("nop"); ! 461: 459 0002B161 10 nop ! 462: 460 0002B162 # asm("nop"); ! 463: 461 0002B162 10 nop ! 464: 462 0002B163 # asm("addf r4"); /* add the op. (ACC = op) */ ! 465: 463 0002B163 c6 54 addf r4 ! 466: 464 0002B165 # asm("nop"); ! 467: 465 0002B165 10 nop ! 468: 466 0002B166 # asm("nop"); ! 469: 467 0002B166 10 nop ! 470: 468 0002B167 # asm("subf r4"); /* sub. the op. (ACC = 0 ) */ ! 471: 469 0002B167 d6 54 subf r4 ! 472: 470 0002B169 # asm("nop"); ! 473: 471 0002B169 10 nop ! 474: 472 0002B16A # asm("nop"); ! 475: 473 0002B16A 10 nop ! 476: 474 0002B16B # asm("addf r3"); /* add a '0' (ACC = 0 ) */ ! 477: 475 0002B16B c6 53 addf r3 ! 478: 476 0002B16D # asm("nop"); ! 479: 477 0002B16D 10 nop ! 480: 478 0002B16E # asm("nop"); ! 481: 479 0002B16E 10 nop ! 482: 480 0002B16F # asm("subf r3"); /* sub. a '0' (ACC = 0 ) */ ! 483: 481 0002B16F d6 53 subf r3 ! 484: 482 0002B171 # asm("nop"); ! 485: 483 0002B171 10 nop ! 486: 484 0002B172 # asm("nop"); ! 487: 485 0002B172 10 nop ! 488: 486 0002B173 # asm("addf r4"); /* add the op. (ACC = op) */ ! 489: 487 0002B173 c6 54 addf r4 ! 490: 488 0002B175 # asm("nop"); ! 491: 489 0002B175 10 nop ! 492: 490 0002B176 # asm("nop"); ! 493: 491 0002B176 10 nop ! 494: 492 0002B177 # asm("stf r5"); /* store the ACC (s/b= op) */ ! 495: 493 0002B177 26 55 stf r5 ! 496: 494 0002B179 # if( force_loop ) ! 497: 495 0002B179 5d effffffced tstl _force_loop ! 498: 496 0002B17F 31 02 jeql L267 ! 499: 497 0002B181 # asm("brb _pipe7_3_lp1");; /* loop on the error */ ! 500: 498 0002B181 11 ba brb _pipe7_3_lp1 ! 501: 499 0002B183 L267: ! 502: 500 0002B183 # /* ! 503: 501 0002B183 # * verify the results ! 504: 502 0002B183 # */ ! 505: 503 0002B183 # asm("movl r5,_sgl_st_acc"); /* get the result */ ! 506: 504 0002B183 0d 55 effffffce2 movl r5,_sgl_st_acc ! 507: 505 0002B18A # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */ ! 508: 506 0002B18A 1d effffffcdc effffffcd7 cmpl _sgl_st_acc,_sgl_expected ! 509: 507 0002B195 31 45 jeql L268 ! 510: 508 0002B197 # { ! 511: 509 0002B197 # errcnt++; /* bump the error count */ ! 512: 510 0002B197 6d effffffccf incl _errcnt ! 513: 511 0002B19D # if ( prt_error ) ! 514: 512 0002B19D 5d effffffcc9 tstl _prt_error ! 515: 513 0002B1A3 31 0d jeql L269 ! 516: 514 0002B1A5 # print_pipe7_er("Reg. Data, 2 NO-OPs"); ! 517: 515 0002B1A5 .data 1 ! 518: 516 00000e19 * L270: ! 519: 517 00000e19 * 5265672E20446174612C20322 .ascii "Reg. Data, 2 NO-OPs\0" ! 520: 04E4F2D4F507300 ! 521: 518 00000e2d * .text ! 522: 519 0002B1A5 dd 8f00000e19 pushl $L270 ! 523: 520 0002B1AB fe 08 ef0000091a callf $8,_print_pipe7_er ! 524: 521 0002B1B2 # if ( halt_flg ) ! 525: 522 0002B1B2 L269: ! 526: 523 0002B1B2 5d effffffcb4 tstl _halt_flg ! 527: 524 0002B1B8 31 0d jeql L271 ! 528: 525 0002B1BA # pipe7_er_hlt( subtest ); ! 529: 526 0002B1BA dd effffffcac pushl _subtest ! 530: 527 0002B1C0 fe 08 ef00000a1d callf $8,_pipe7_er_hlt ! 531: 528 0002B1C7 # if ( loop_on_err ) { ! 532: 529 0002B1C7 L271: ! 533: 530 0002B1C7 5d effffffc9f tstl _loop_on_err ! 534: 531 0002B1CD 31 0d jeql L272 ! 535: 532 0002B1CF # force_loop = TRUE; /* set the force loop flag */ ! 536: 533 0002B1CF 0d 01 effffffc96 movl $1,_force_loop ! 537: 534 0002B1D6 # asm("jmp _pipe7_3_lp1"); /* and loop */ ! 538: 535 0002B1D6 71 efffffff61 jmp _pipe7_3_lp1 ! 539: 536 0002B1DC # } ! 540: 537 0002B1DC # } /* end of compare error */ ! 541: 538 0002B1DC L272: ! 542: 539 0002B1DC # } while( index++ < max_ldf_1_index ); ! 543: 540 0002B1DC L268: ! 544: 541 0002B1DC L265: ! 545: 542 0002B1DC 0d effffffc8a 50 movl _index,r0 ! 546: 543 0002B1E3 6d effffffc83 incl _index ! 547: 544 0002B1E9 1d 50 effffffc7c cmpl r0,_max_ldf_1_index ! 548: 545 0002B1F0 81 03 13 ff16 jlss L266 ! 549: 546 0002B1F5 L264: ! 550: 547 0002B1F5 # } /* end of subtest 3 */ ! 551: 548 0002B1F5 40 ret#2 ! 552: 549 0002B1F6 .set L260,0x0 ! 553: 550 0002B1F6 L262: ! 554: 551 0002B1F6 13 ff06 jbr L263 ! 555: 552 0002B1F9 .data ! 556: 553 00000de8 * .text ! 557: 554 0002B1F9 00 .align 1 ! 558: 555 0002B1FA .globl _pipe7_4 ! 559: 556 0002B1FA _pipe7_4: ! 560: 557 0002B1FA 0000 .word L273 ! 561: 558 0002B1FC # ! 562: 559 0002B1FC # ! 563: 560 0002B1FC # ! 564: 561 0002B1FC # ! 565: 562 0002B1FC # ! 566: 563 0002B1FC # ! 567: 564 0002B1FC # /************************************************************************ ! 568: 565 0002B1FC # * ! 569: 566 0002B1FC # * SUBTEST 4 ! 570: 567 0002B1FC # * data in registers, 3 NO-OPs ! 571: 568 0002B1FC # * ! 572: 569 0002B1FC # ************************************************************************/ ! 573: 570 0002B1FC # pipe7_4() ! 574: 571 0002B1FC # { ! 575: 572 0002B1FC 13 0102 jbr L275 ! 576: 573 0002B1FF L276: ! 577: 574 0002B1FF # force_loop = FALSE; /* clear force_loop flag */ ! 578: 575 0002B1FF 4d effffffc67 clrl _force_loop ! 579: 576 0002B205 # index = 0; ! 580: 577 0002B205 4d effffffc61 clrl _index ! 581: 578 0002B20B # do ! 582: 579 0002B20B L279: ! 583: 580 0002B20B # { ! 584: 581 0002B20B # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */ ! 585: 582 0002B20B 0d effffffc5b 50 movl _index,r0 ! 586: 583 0002B212 48 03 50 50 shll $3,r0,r0 ! 587: 584 0002B216 0d e000000000 effffffc4b movl _ldf_1_data(r0),_sgl_value_1 ! 588: 585 0002B221 # sgl_expected = ldf_1_data[index].exp; /* get expected results */ ! 589: 586 0002B221 0d effffffc45 50 movl _index,r0 ! 590: 587 0002B228 48 03 50 50 shll $3,r0,r0 ! 591: 588 0002B22C 0d e000000004 effffffc35 movl _ldf_1_data+4(r0),_sgl_expected ! 592: 589 0002B237 # sgl_value_2 = 0; /* set the '0' operand */ ! 593: 590 0002B237 4d effffffc2f clrl _sgl_value_2 ! 594: 591 0002B23D # /* ! 595: 592 0002B23D # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 596: 593 0002B23D # * The force loop flag is set after the first error. ! 597: 594 0002B23D # */ ! 598: 595 0002B23D # asm("_pipe7_4_lp1:"); ! 599: 596 0002B23D _pipe7_4_lp1: ! 600: 597 0002B23D # asm("movl _sgl_value_1,r4"); /* move the data to r4 */ ! 601: 598 0002B23D 0d effffffc29 54 movl _sgl_value_1,r4 ! 602: 599 0002B244 # asm("movl _sgl_value_2,r3"); /* move the '0' to r3 */ ! 603: 600 0002B244 0d effffffc22 53 movl _sgl_value_2,r3 ! 604: 601 0002B24B # asm("ldf r4"); /* load the ACC (ACC = op) */ ! 605: 602 0002B24B 06 54 ldf r4 ! 606: 603 0002B24D # asm("nop"); ! 607: 604 0002B24D 10 nop ! 608: 605 0002B24E # asm("nop"); ! 609: 606 0002B24E 10 nop ! 610: 607 0002B24F # asm("nop"); ! 611: 608 0002B24F 10 nop ! 612: 609 0002B250 # asm("subf r4"); /* sub. the op. (ACC = 0 ) */ ! 613: 610 0002B250 d6 54 subf r4 ! 614: 611 0002B252 # asm("nop"); ! 615: 612 0002B252 10 nop ! 616: 613 0002B253 # asm("nop"); ! 617: 614 0002B253 10 nop ! 618: 615 0002B254 # asm("nop"); ! 619: 616 0002B254 10 nop ! 620: 617 0002B255 # asm("addf r3"); /* add a '0' (ACC = 0 ) */ ! 621: 618 0002B255 c6 53 addf r3 ! 622: 619 0002B257 # asm("nop"); ! 623: 620 0002B257 10 nop ! 624: 621 0002B258 # asm("nop"); ! 625: 622 0002B258 10 nop ! 626: 623 0002B259 # asm("nop"); ! 627: 624 0002B259 10 nop ! 628: 625 0002B25A # asm("subf r4"); /* sub. the op. (ACC =-op) */ ! 629: 626 0002B25A d6 54 subf r4 ! 630: 627 0002B25C # asm("nop"); ! 631: 628 0002B25C 10 nop ! 632: 629 0002B25D # asm("nop"); ! 633: 630 0002B25D 10 nop ! 634: 631 0002B25E # asm("nop"); ! 635: 632 0002B25E 10 nop ! 636: 633 0002B25F # asm("addf r4"); /* add the op. (ACC = 0 ) */ ! 637: 634 0002B25F c6 54 addf r4 ! 638: 635 0002B261 # asm("nop"); ! 639: 636 0002B261 10 nop ! 640: 637 0002B262 # asm("nop"); ! 641: 638 0002B262 10 nop ! 642: 639 0002B263 # asm("nop"); ! 643: 640 0002B263 10 nop ! 644: 641 0002B264 # asm("subf r3"); /* sub. a '0' (ACC = 0 ) */ ! 645: 642 0002B264 d6 53 subf r3 ! 646: 643 0002B266 # asm("nop"); ! 647: 644 0002B266 10 nop ! 648: 645 0002B267 # asm("nop"); ! 649: 646 0002B267 10 nop ! 650: 647 0002B268 # asm("nop"); ! 651: 648 0002B268 10 nop ! 652: 649 0002B269 # asm("addf r4"); /* add the op. (ACC = op) */ ! 653: 650 0002B269 c6 54 addf r4 ! 654: 651 0002B26B # asm("nop"); ! 655: 652 0002B26B 10 nop ! 656: 653 0002B26C # asm("nop"); ! 657: 654 0002B26C 10 nop ! 658: 655 0002B26D # asm("nop"); ! 659: 656 0002B26D 10 nop ! 660: 657 0002B26E # asm("subf r4"); /* sub. the op. (ACC = 0 ) */ ! 661: 658 0002B26E d6 54 subf r4 ! 662: 659 0002B270 # asm("nop"); ! 663: 660 0002B270 10 nop ! 664: 661 0002B271 # asm("nop"); ! 665: 662 0002B271 10 nop ! 666: 663 0002B272 # asm("nop"); ! 667: 664 0002B272 10 nop ! 668: 665 0002B273 # asm("addf r3"); /* add a '0' (ACC = 0 ) */ ! 669: 666 0002B273 c6 53 addf r3 ! 670: 667 0002B275 # asm("nop"); ! 671: 668 0002B275 10 nop ! 672: 669 0002B276 # asm("nop"); ! 673: 670 0002B276 10 nop ! 674: 671 0002B277 # asm("nop"); ! 675: 672 0002B277 10 nop ! 676: 673 0002B278 # asm("subf r3"); /* sub. a '0' (ACC = 0 ) */ ! 677: 674 0002B278 d6 53 subf r3 ! 678: 675 0002B27A # asm("nop"); ! 679: 676 0002B27A 10 nop ! 680: 677 0002B27B # asm("nop"); ! 681: 678 0002B27B 10 nop ! 682: 679 0002B27C # asm("nop"); ! 683: 680 0002B27C 10 nop ! 684: 681 0002B27D # asm("addf r4"); /* add the op. (ACC = op) */ ! 685: 682 0002B27D c6 54 addf r4 ! 686: 683 0002B27F # asm("nop"); ! 687: 684 0002B27F 10 nop ! 688: 685 0002B280 # asm("nop"); ! 689: 686 0002B280 10 nop ! 690: 687 0002B281 # asm("nop"); ! 691: 688 0002B281 10 nop ! 692: 689 0002B282 # asm("stf r5"); /* store the ACC (s/b= op) */ ! 693: 690 0002B282 26 55 stf r5 ! 694: 691 0002B284 # if( force_loop ) ! 695: 692 0002B284 5d effffffbe2 tstl _force_loop ! 696: 693 0002B28A 31 02 jeql L280 ! 697: 694 0002B28C # asm("brb _pipe7_4_lp1");; /* loop on the error */ ! 698: 695 0002B28C 11 af brb _pipe7_4_lp1 ! 699: 696 0002B28E L280: ! 700: 697 0002B28E # /* ! 701: 698 0002B28E # * verify the results ! 702: 699 0002B28E # */ ! 703: 700 0002B28E # asm("movl r5,_sgl_st_acc"); /* get the result */ ! 704: 701 0002B28E 0d 55 effffffbd7 movl r5,_sgl_st_acc ! 705: 702 0002B295 # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */ ! 706: 703 0002B295 1d effffffbd1 effffffbcc cmpl _sgl_st_acc,_sgl_expected ! 707: 704 0002B2A0 31 45 jeql L281 ! 708: 705 0002B2A2 # { ! 709: 706 0002B2A2 # errcnt++; /* bump the error count */ ! 710: 707 0002B2A2 6d effffffbc4 incl _errcnt ! 711: 708 0002B2A8 # if ( prt_error ) ! 712: 709 0002B2A8 5d effffffbbe tstl _prt_error ! 713: 710 0002B2AE 31 0d jeql L282 ! 714: 711 0002B2B0 # print_pipe7_er("Reg. Data, 3 NO-OPs"); ! 715: 712 0002B2B0 .data 1 ! 716: 713 00000e2d * L283: ! 717: 714 00000e2d * 5265672E20446174612C20332 .ascii "Reg. Data, 3 NO-OPs\0" ! 718: 04E4F2D4F507300 ! 719: 715 00000e41 * .text ! 720: 716 0002B2B0 dd 8f00000e2d pushl $L283 ! 721: 717 0002B2B6 fe 08 ef0000080f callf $8,_print_pipe7_er ! 722: 718 0002B2BD # if ( halt_flg ) ! 723: 719 0002B2BD L282: ! 724: 720 0002B2BD 5d effffffba9 tstl _halt_flg ! 725: 721 0002B2C3 31 0d jeql L284 ! 726: 722 0002B2C5 # pipe7_er_hlt( subtest ); ! 727: 723 0002B2C5 dd effffffba1 pushl _subtest ! 728: 724 0002B2CB fe 08 ef00000912 callf $8,_pipe7_er_hlt ! 729: 725 0002B2D2 # if ( loop_on_err ) { ! 730: 726 0002B2D2 L284: ! 731: 727 0002B2D2 5d effffffb94 tstl _loop_on_err ! 732: 728 0002B2D8 31 0d jeql L285 ! 733: 729 0002B2DA # force_loop = TRUE; /* set the force loop flag */ ! 734: 730 0002B2DA 0d 01 effffffb8b movl $1,_force_loop ! 735: 731 0002B2E1 # asm("jmp _pipe7_4_lp1"); /* and loop */ ! 736: 732 0002B2E1 71 efffffff56 jmp _pipe7_4_lp1 ! 737: 733 0002B2E7 # } ! 738: 734 0002B2E7 # } /* end of compare error */ ! 739: 735 0002B2E7 L285: ! 740: 736 0002B2E7 # } while( index++ < max_ldf_1_index ); ! 741: 737 0002B2E7 L281: ! 742: 738 0002B2E7 L278: ! 743: 739 0002B2E7 0d effffffb7f 50 movl _index,r0 ! 744: 740 0002B2EE 6d effffffb78 incl _index ! 745: 741 0002B2F4 1d 50 effffffb71 cmpl r0,_max_ldf_1_index ! 746: 742 0002B2FB 81 03 13 ff0b jlss L279 ! 747: 743 0002B300 L277: ! 748: 744 0002B300 # } /* end of subtest 4 */ ! 749: 745 0002B300 40 ret#2 ! 750: 746 0002B301 .set L273,0x0 ! 751: 747 0002B301 L275: ! 752: 748 0002B301 13 fefb jbr L276 ! 753: 749 0002B304 .data ! 754: 750 00000de8 * .text ! 755: 751 0002B304 .align 1 ! 756: 752 0002B304 .globl _pipe7_5 ! 757: 753 0002B304 _pipe7_5: ! 758: 754 0002B304 0000 .word L286 ! 759: 755 0002B306 # ! 760: 756 0002B306 # ! 761: 757 0002B306 # ! 762: 758 0002B306 # ! 763: 759 0002B306 # ! 764: 760 0002B306 # ! 765: 761 0002B306 # ! 766: 762 0002B306 # /************************************************************************ ! 767: 763 0002B306 # * ! 768: 764 0002B306 # * SUBTEST 5 ! 769: 765 0002B306 # * data in Cache, no NO-OPs ! 770: 766 0002B306 # * ! 771: 767 0002B306 # ************************************************************************/ ! 772: 768 0002B306 # pipe7_5() ! 773: 769 0002B306 # { ! 774: 770 0002B306 13 00fc jbr L288 ! 775: 771 0002B309 L289: ! 776: 772 0002B309 # force_loop = FALSE; /* clear force_loop flag */ ! 777: 773 0002B309 4d effffffb5d clrl _force_loop ! 778: 774 0002B30F # index = 0; ! 779: 775 0002B30F 4d effffffb57 clrl _index ! 780: 776 0002B315 # do ! 781: 777 0002B315 L292: ! 782: 778 0002B315 # { ! 783: 779 0002B315 # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */ ! 784: 780 0002B315 0d effffffb51 50 movl _index,r0 ! 785: 781 0002B31C 48 03 50 50 shll $3,r0,r0 ! 786: 782 0002B320 0d e000000000 effffffb41 movl _ldf_1_data(r0),_sgl_value_1 ! 787: 783 0002B32B # sgl_expected = ldf_1_data[index].exp; /* get expected results */ ! 788: 784 0002B32B 0d effffffb3b 50 movl _index,r0 ! 789: 785 0002B332 48 03 50 50 shll $3,r0,r0 ! 790: 786 0002B336 0d e000000004 effffffb2b movl _ldf_1_data+4(r0),_sgl_expected ! 791: 787 0002B341 # sgl_value_2 = 0; /* set the '0' operand */ ! 792: 788 0002B341 4d effffffb25 clrl _sgl_value_2 ! 793: 789 0002B347 # /* ! 794: 790 0002B347 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 795: 791 0002B347 # * The force loop flag is set after the first error. ! 796: 792 0002B347 # */ ! 797: 793 0002B347 # asm("_pipe7_5_lp1:"); ! 798: 794 0002B347 _pipe7_5_lp1: ! 799: 795 0002B347 # asm("ldf _sgl_value_1"); /* load the ACC (ACC = op) */ ! 800: 796 0002B347 06 effffffb1f ldf _sgl_value_1 ! 801: 797 0002B34D # asm("subf _sgl_value_1"); /* sub. the op. (ACC = 0 ) */ ! 802: 798 0002B34D d6 effffffb19 subf _sgl_value_1 ! 803: 799 0002B353 # asm("addf _sgl_value_2"); /* add a '0' (ACC = 0 ) */ ! 804: 800 0002B353 c6 effffffb13 addf _sgl_value_2 ! 805: 801 0002B359 # asm("subf _sgl_value_1"); /* sub. the op. (ACC =-op) */ ! 806: 802 0002B359 d6 effffffb0d subf _sgl_value_1 ! 807: 803 0002B35F # asm("addf _sgl_value_1"); /* add the op. (ACC = 0 ) */ ! 808: 804 0002B35F c6 effffffb07 addf _sgl_value_1 ! 809: 805 0002B365 # asm("subf _sgl_value_2"); /* sub. a '0' (ACC = 0 ) */ ! 810: 806 0002B365 d6 effffffb01 subf _sgl_value_2 ! 811: 807 0002B36B # asm("addf _sgl_value_1"); /* add the op. (ACC = op) */ ! 812: 808 0002B36B c6 effffffafb addf _sgl_value_1 ! 813: 809 0002B371 # asm("subf _sgl_value_1"); /* sub. the op. (ACC = 0 ) */ ! 814: 810 0002B371 d6 effffffaf5 subf _sgl_value_1 ! 815: 811 0002B377 # asm("addf _sgl_value_2"); /* add a '0' (ACC = 0 ) */ ! 816: 812 0002B377 c6 effffffaef addf _sgl_value_2 ! 817: 813 0002B37D # asm("subf _sgl_value_2"); /* sub. a '0' (ACC = 0 ) */ ! 818: 814 0002B37D d6 effffffae9 subf _sgl_value_2 ! 819: 815 0002B383 # asm("addf _sgl_value_1"); /* add the op. (ACC = op) */ ! 820: 816 0002B383 c6 effffffae3 addf _sgl_value_1 ! 821: 817 0002B389 # asm("stf _sgl_st_acc"); /* store the ACC (s/b= op) */ ! 822: 818 0002B389 26 effffffadd stf _sgl_st_acc ! 823: 819 0002B38F # if( force_loop ) ! 824: 820 0002B38F 5d effffffad7 tstl _force_loop ! 825: 821 0002B395 31 02 jeql L293 ! 826: 822 0002B397 # asm("brb _pipe7_5_lp1");; /* loop on the error */ ! 827: 823 0002B397 11 ae brb _pipe7_5_lp1 ! 828: 824 0002B399 L293: ! 829: 825 0002B399 # /* ! 830: 826 0002B399 # * verify the results ! 831: 827 0002B399 # */ ! 832: 828 0002B399 # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */ ! 833: 829 0002B399 1d effffffacd effffffac8 cmpl _sgl_st_acc,_sgl_expected ! 834: 830 0002B3A4 31 45 jeql L294 ! 835: 831 0002B3A6 # { ! 836: 832 0002B3A6 # errcnt++; /* bump the error count */ ! 837: 833 0002B3A6 6d effffffac0 incl _errcnt ! 838: 834 0002B3AC # if ( prt_error ) ! 839: 835 0002B3AC 5d effffffaba tstl _prt_error ! 840: 836 0002B3B2 31 0d jeql L295 ! 841: 837 0002B3B4 # print_pipe7_er("Cache Data, no NO-OPs"); ! 842: 838 0002B3B4 .data 1 ! 843: 839 00000e41 * L296: ! 844: 840 00000e41 * 436163686520446174612C206 .ascii "Cache Data, no NO-OPs\0" ! 845: E6F204E4F2D4F507300 ! 846: 841 00000e57 * .text ! 847: 842 0002B3B4 dd 8f00000e41 pushl $L296 ! 848: 843 0002B3BA fe 08 ef0000070b callf $8,_print_pipe7_er ! 849: 844 0002B3C1 # if ( halt_flg ) ! 850: 845 0002B3C1 L295: ! 851: 846 0002B3C1 5d effffffaa5 tstl _halt_flg ! 852: 847 0002B3C7 31 0d jeql L297 ! 853: 848 0002B3C9 # pipe7_er_hlt( subtest ); ! 854: 849 0002B3C9 dd effffffa9d pushl _subtest ! 855: 850 0002B3CF fe 08 ef0000080e callf $8,_pipe7_er_hlt ! 856: 851 0002B3D6 # if ( loop_on_err ) { ! 857: 852 0002B3D6 L297: ! 858: 853 0002B3D6 5d effffffa90 tstl _loop_on_err ! 859: 854 0002B3DC 31 0d jeql L298 ! 860: 855 0002B3DE # force_loop = TRUE; /* set the force loop flag */ ! 861: 856 0002B3DE 0d 01 effffffa87 movl $1,_force_loop ! 862: 857 0002B3E5 # asm("jmp _pipe7_5_lp1"); /* and loop */ ! 863: 858 0002B3E5 71 efffffff5c jmp _pipe7_5_lp1 ! 864: 859 0002B3EB # } ! 865: 860 0002B3EB # } /* end of compare error */ ! 866: 861 0002B3EB L298: ! 867: 862 0002B3EB # } while( index++ < max_ldf_1_index ); ! 868: 863 0002B3EB L294: ! 869: 864 0002B3EB L291: ! 870: 865 0002B3EB 0d effffffa7b 50 movl _index,r0 ! 871: 866 0002B3F2 6d effffffa74 incl _index ! 872: 867 0002B3F8 1d 50 effffffa6d cmpl r0,_max_ldf_1_index ! 873: 868 0002B3FF 81 03 13 ff11 jlss L292 ! 874: 869 0002B404 L290: ! 875: 870 0002B404 # } /* end of subtest 5 */ ! 876: 871 0002B404 40 ret#2 ! 877: 872 0002B405 .set L286,0x0 ! 878: 873 0002B405 L288: ! 879: 874 0002B405 13 ff01 jbr L289 ! 880: 875 0002B408 .data ! 881: 876 00000de8 * .text ! 882: 877 0002B408 .align 1 ! 883: 878 0002B408 .globl _pipe7_6 ! 884: 879 0002B408 _pipe7_6: ! 885: 880 0002B408 0000 .word L299 ! 886: 881 0002B40A # ! 887: 882 0002B40A # ! 888: 883 0002B40A # ! 889: 884 0002B40A # ! 890: 885 0002B40A # ! 891: 886 0002B40A # ! 892: 887 0002B40A # /************************************************************************ ! 893: 888 0002B40A # * ! 894: 889 0002B40A # * SUBTEST 6 ! 895: 890 0002B40A # * data in Cache, 1 NO-OP ! 896: 891 0002B40A # * ! 897: 892 0002B40A # ************************************************************************/ ! 898: 893 0002B40A # pipe7_6() ! 899: 894 0002B40A # { ! 900: 895 0002B40A 13 0101 jbr L301 ! 901: 896 0002B40D L302: ! 902: 897 0002B40D # force_loop = FALSE; /* clear force_loop flag */ ! 903: 898 0002B40D 4d effffffa59 clrl _force_loop ! 904: 899 0002B413 # index = 0; ! 905: 900 0002B413 4d effffffa53 clrl _index ! 906: 901 0002B419 # do ! 907: 902 0002B419 L305: ! 908: 903 0002B419 # { ! 909: 904 0002B419 # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */ ! 910: 905 0002B419 0d effffffa4d 50 movl _index,r0 ! 911: 906 0002B420 48 03 50 50 shll $3,r0,r0 ! 912: 907 0002B424 0d e000000000 effffffa3d movl _ldf_1_data(r0),_sgl_value_1 ! 913: 908 0002B42F # sgl_expected = ldf_1_data[index].exp; /* get expected results */ ! 914: 909 0002B42F 0d effffffa37 50 movl _index,r0 ! 915: 910 0002B436 48 03 50 50 shll $3,r0,r0 ! 916: 911 0002B43A 0d e000000004 effffffa27 movl _ldf_1_data+4(r0),_sgl_expected ! 917: 912 0002B445 # /* ! 918: 913 0002B445 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 919: 914 0002B445 # * The force loop flag is set after the first error. ! 920: 915 0002B445 # */ ! 921: 916 0002B445 # asm("_pipe7_6_lp1:"); ! 922: 917 0002B445 _pipe7_6_lp1: ! 923: 918 0002B445 # asm("ldf _sgl_value_1"); /* load the ACC (ACC = op) */ ! 924: 919 0002B445 06 effffffa21 ldf _sgl_value_1 ! 925: 920 0002B44B # asm("nop"); ! 926: 921 0002B44B 10 nop ! 927: 922 0002B44C # asm("subf _sgl_value_1"); /* sub. the op. (ACC = 0 ) */ ! 928: 923 0002B44C d6 effffffa1a subf _sgl_value_1 ! 929: 924 0002B452 # asm("nop"); ! 930: 925 0002B452 10 nop ! 931: 926 0002B453 # asm("addf _sgl_value_2"); /* add a '0' (ACC = 0 ) */ ! 932: 927 0002B453 c6 effffffa13 addf _sgl_value_2 ! 933: 928 0002B459 # asm("nop"); ! 934: 929 0002B459 10 nop ! 935: 930 0002B45A # asm("subf _sgl_value_1"); /* sub. the op. (ACC =-op) */ ! 936: 931 0002B45A d6 effffffa0c subf _sgl_value_1 ! 937: 932 0002B460 # asm("nop"); ! 938: 933 0002B460 10 nop ! 939: 934 0002B461 # asm("addf _sgl_value_1"); /* add the op. (ACC = 0 ) */ ! 940: 935 0002B461 c6 effffffa05 addf _sgl_value_1 ! 941: 936 0002B467 # asm("nop"); ! 942: 937 0002B467 10 nop ! 943: 938 0002B468 # asm("subf _sgl_value_2"); /* sub. a '0' (ACC = 0 ) */ ! 944: 939 0002B468 d6 effffff9fe subf _sgl_value_2 ! 945: 940 0002B46E # asm("nop"); ! 946: 941 0002B46E 10 nop ! 947: 942 0002B46F # asm("addf _sgl_value_1"); /* add the op. (ACC = op) */ ! 948: 943 0002B46F c6 effffff9f7 addf _sgl_value_1 ! 949: 944 0002B475 # asm("nop"); ! 950: 945 0002B475 10 nop ! 951: 946 0002B476 # asm("subf _sgl_value_1"); /* sub. the op. (ACC = 0 ) */ ! 952: 947 0002B476 d6 effffff9f0 subf _sgl_value_1 ! 953: 948 0002B47C # asm("nop"); ! 954: 949 0002B47C 10 nop ! 955: 950 0002B47D # asm("addf _sgl_value_2"); /* add a '0' (ACC = 0 ) */ ! 956: 951 0002B47D c6 effffff9e9 addf _sgl_value_2 ! 957: 952 0002B483 # asm("nop"); ! 958: 953 0002B483 10 nop ! 959: 954 0002B484 # asm("subf _sgl_value_2"); /* sub. a '0' (ACC = 0 ) */ ! 960: 955 0002B484 d6 effffff9e2 subf _sgl_value_2 ! 961: 956 0002B48A # asm("nop"); ! 962: 957 0002B48A 10 nop ! 963: 958 0002B48B # asm("addf _sgl_value_1"); /* add the op. (ACC = op) */ ! 964: 959 0002B48B c6 effffff9db addf _sgl_value_1 ! 965: 960 0002B491 # asm("nop"); ! 966: 961 0002B491 10 nop ! 967: 962 0002B492 # asm("stf _sgl_st_acc"); /* store the ACC (s/b= op) */ ! 968: 963 0002B492 26 effffff9d4 stf _sgl_st_acc ! 969: 964 0002B498 # if( force_loop ) ! 970: 965 0002B498 5d effffff9ce tstl _force_loop ! 971: 966 0002B49E 31 02 jeql L306 ! 972: 967 0002B4A0 # asm("brb _pipe7_6_lp1");; /* loop on the error */ ! 973: 968 0002B4A0 11 a3 brb _pipe7_6_lp1 ! 974: 969 0002B4A2 L306: ! 975: 970 0002B4A2 # /* ! 976: 971 0002B4A2 # * verify the results ! 977: 972 0002B4A2 # */ ! 978: 973 0002B4A2 # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */ ! 979: 974 0002B4A2 1d effffff9c4 effffff9bf cmpl _sgl_st_acc,_sgl_expected ! 980: 975 0002B4AD 31 45 jeql L307 ! 981: 976 0002B4AF # { ! 982: 977 0002B4AF # errcnt++; /* bump the error count */ ! 983: 978 0002B4AF 6d effffff9b7 incl _errcnt ! 984: 979 0002B4B5 # if ( prt_error ) ! 985: 980 0002B4B5 5d effffff9b1 tstl _prt_error ! 986: 981 0002B4BB 31 0d jeql L308 ! 987: 982 0002B4BD # print_pipe7_er("Cache Data, 1 NO-OP"); ! 988: 983 0002B4BD .data 1 ! 989: 984 00000e57 * L309: ! 990: 985 00000e57 * 436163686520446174612C203 .ascii "Cache Data, 1 NO-OP\0" ! 991: 1204E4F2D4F5000 ! 992: 986 00000e6b * .text ! 993: 987 0002B4BD dd 8f00000e57 pushl $L309 ! 994: 988 0002B4C3 fe 08 ef00000602 callf $8,_print_pipe7_er ! 995: 989 0002B4CA # if ( halt_flg ) ! 996: 990 0002B4CA L308: ! 997: 991 0002B4CA 5d effffff99c tstl _halt_flg ! 998: 992 0002B4D0 31 0d jeql L310 ! 999: 993 0002B4D2 # pipe7_er_hlt( subtest ); ! 1000: 994 0002B4D2 dd effffff994 pushl _subtest ! 1001: 995 0002B4D8 fe 08 ef00000705 callf $8,_pipe7_er_hlt ! 1002: 996 0002B4DF # if ( loop_on_err ) { ! 1003: 997 0002B4DF L310: ! 1004: 998 0002B4DF 5d effffff987 tstl _loop_on_err ! 1005: 999 0002B4E5 31 0d jeql L311 ! 1006: 1000 0002B4E7 # force_loop = TRUE; /* set the force loop flag */ ! 1007: 1001 0002B4E7 0d 01 effffff97e movl $1,_force_loop ! 1008: 1002 0002B4EE # asm("jmp _pipe7_6_lp1"); /* and loop */ ! 1009: 1003 0002B4EE 71 efffffff51 jmp _pipe7_6_lp1 ! 1010: 1004 0002B4F4 # } ! 1011: 1005 0002B4F4 # } /* end of compare error */ ! 1012: 1006 0002B4F4 L311: ! 1013: 1007 0002B4F4 # } while( index++ < max_ldf_1_index ); ! 1014: 1008 0002B4F4 L307: ! 1015: 1009 0002B4F4 L304: ! 1016: 1010 0002B4F4 0d effffff972 50 movl _index,r0 ! 1017: 1011 0002B4FB 6d effffff96b incl _index ! 1018: 1012 0002B501 1d 50 effffff964 cmpl r0,_max_ldf_1_index ! 1019: 1013 0002B508 81 03 13 ff0c jlss L305 ! 1020: 1014 0002B50D L303: ! 1021: 1015 0002B50D # } /* end of subtest 6 */ ! 1022: 1016 0002B50D 40 ret#2 ! 1023: 1017 0002B50E .set L299,0x0 ! 1024: 1018 0002B50E L301: ! 1025: 1019 0002B50E 13 fefc jbr L302 ! 1026: 1020 0002B511 .data ! 1027: 1021 00000de8 * .text ! 1028: 1022 0002B511 00 .align 1 ! 1029: 1023 0002B512 .globl _pipe7_7 ! 1030: 1024 0002B512 _pipe7_7: ! 1031: 1025 0002B512 0000 .word L312 ! 1032: 1026 0002B514 # ! 1033: 1027 0002B514 # ! 1034: 1028 0002B514 # ! 1035: 1029 0002B514 # ! 1036: 1030 0002B514 # ! 1037: 1031 0002B514 # ! 1038: 1032 0002B514 # /************************************************************************ ! 1039: 1033 0002B514 # * ! 1040: 1034 0002B514 # * SUBTEST 7 ! 1041: 1035 0002B514 # * data in Cache, 2 NO-OPs ! 1042: 1036 0002B514 # * ! 1043: 1037 0002B514 # ************************************************************************/ ! 1044: 1038 0002B514 # pipe7_7() ! 1045: 1039 0002B514 # { ! 1046: 1040 0002B514 13 0112 jbr L314 ! 1047: 1041 0002B517 L315: ! 1048: 1042 0002B517 # force_loop = FALSE; /* clear force_loop flag */ ! 1049: 1043 0002B517 4d effffff94f clrl _force_loop ! 1050: 1044 0002B51D # index = 0; ! 1051: 1045 0002B51D 4d effffff949 clrl _index ! 1052: 1046 0002B523 # do ! 1053: 1047 0002B523 L318: ! 1054: 1048 0002B523 # { ! 1055: 1049 0002B523 # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */ ! 1056: 1050 0002B523 0d effffff943 50 movl _index,r0 ! 1057: 1051 0002B52A 48 03 50 50 shll $3,r0,r0 ! 1058: 1052 0002B52E 0d e000000000 effffff933 movl _ldf_1_data(r0),_sgl_value_1 ! 1059: 1053 0002B539 # sgl_expected = ldf_1_data[index].exp; /* get expected results */ ! 1060: 1054 0002B539 0d effffff92d 50 movl _index,r0 ! 1061: 1055 0002B540 48 03 50 50 shll $3,r0,r0 ! 1062: 1056 0002B544 0d e000000004 effffff91d movl _ldf_1_data+4(r0),_sgl_expected ! 1063: 1057 0002B54F # sgl_value_2 = 0; /* set the '0' operand */ ! 1064: 1058 0002B54F 4d effffff917 clrl _sgl_value_2 ! 1065: 1059 0002B555 # /* ! 1066: 1060 0002B555 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1067: 1061 0002B555 # * The force loop flag is set after the first error. ! 1068: 1062 0002B555 # */ ! 1069: 1063 0002B555 # asm("_pipe7_7_lp1:"); ! 1070: 1064 0002B555 _pipe7_7_lp1: ! 1071: 1065 0002B555 # asm("ldf _sgl_value_1"); /* load the ACC (ACC = op) */ ! 1072: 1066 0002B555 06 effffff911 ldf _sgl_value_1 ! 1073: 1067 0002B55B # asm("nop"); ! 1074: 1068 0002B55B 10 nop ! 1075: 1069 0002B55C # asm("nop"); ! 1076: 1070 0002B55C 10 nop ! 1077: 1071 0002B55D # asm("subf _sgl_value_1"); /* sub. the op. (ACC = 0 ) */ ! 1078: 1072 0002B55D d6 effffff909 subf _sgl_value_1 ! 1079: 1073 0002B563 # asm("nop"); ! 1080: 1074 0002B563 10 nop ! 1081: 1075 0002B564 # asm("nop"); ! 1082: 1076 0002B564 10 nop ! 1083: 1077 0002B565 # asm("addf _sgl_value_2"); /* add a '0' (ACC = 0 ) */ ! 1084: 1078 0002B565 c6 effffff901 addf _sgl_value_2 ! 1085: 1079 0002B56B # asm("nop"); ! 1086: 1080 0002B56B 10 nop ! 1087: 1081 0002B56C # asm("nop"); ! 1088: 1082 0002B56C 10 nop ! 1089: 1083 0002B56D # asm("subf _sgl_value_1"); /* sub. the op. (ACC =-op) */ ! 1090: 1084 0002B56D d6 effffff8f9 subf _sgl_value_1 ! 1091: 1085 0002B573 # asm("nop"); ! 1092: 1086 0002B573 10 nop ! 1093: 1087 0002B574 # asm("nop"); ! 1094: 1088 0002B574 10 nop ! 1095: 1089 0002B575 # asm("addf _sgl_value_1"); /* add the op. (ACC = 0 ) */ ! 1096: 1090 0002B575 c6 effffff8f1 addf _sgl_value_1 ! 1097: 1091 0002B57B # asm("nop"); ! 1098: 1092 0002B57B 10 nop ! 1099: 1093 0002B57C # asm("nop"); ! 1100: 1094 0002B57C 10 nop ! 1101: 1095 0002B57D # asm("subf _sgl_value_2"); /* sub. a '0' (ACC = 0 ) */ ! 1102: 1096 0002B57D d6 effffff8e9 subf _sgl_value_2 ! 1103: 1097 0002B583 # asm("nop"); ! 1104: 1098 0002B583 10 nop ! 1105: 1099 0002B584 # asm("nop"); ! 1106: 1100 0002B584 10 nop ! 1107: 1101 0002B585 # asm("addf _sgl_value_1"); /* add the op. (ACC = op) */ ! 1108: 1102 0002B585 c6 effffff8e1 addf _sgl_value_1 ! 1109: 1103 0002B58B # asm("nop"); ! 1110: 1104 0002B58B 10 nop ! 1111: 1105 0002B58C # asm("nop"); ! 1112: 1106 0002B58C 10 nop ! 1113: 1107 0002B58D # asm("subf _sgl_value_1"); /* sub. the op. (ACC = 0 ) */ ! 1114: 1108 0002B58D d6 effffff8d9 subf _sgl_value_1 ! 1115: 1109 0002B593 # asm("nop"); ! 1116: 1110 0002B593 10 nop ! 1117: 1111 0002B594 # asm("nop"); ! 1118: 1112 0002B594 10 nop ! 1119: 1113 0002B595 # asm("addf _sgl_value_2"); /* add a '0' (ACC = 0 ) */ ! 1120: 1114 0002B595 c6 effffff8d1 addf _sgl_value_2 ! 1121: 1115 0002B59B # asm("nop"); ! 1122: 1116 0002B59B 10 nop ! 1123: 1117 0002B59C # asm("nop"); ! 1124: 1118 0002B59C 10 nop ! 1125: 1119 0002B59D # asm("subf _sgl_value_2"); /* sub. a '0' (ACC = 0 ) */ ! 1126: 1120 0002B59D d6 effffff8c9 subf _sgl_value_2 ! 1127: 1121 0002B5A3 # asm("nop"); ! 1128: 1122 0002B5A3 10 nop ! 1129: 1123 0002B5A4 # asm("nop"); ! 1130: 1124 0002B5A4 10 nop ! 1131: 1125 0002B5A5 # asm("addf _sgl_value_1"); /* add the op. (ACC = op) */ ! 1132: 1126 0002B5A5 c6 effffff8c1 addf _sgl_value_1 ! 1133: 1127 0002B5AB # asm("nop"); ! 1134: 1128 0002B5AB 10 nop ! 1135: 1129 0002B5AC # asm("nop"); ! 1136: 1130 0002B5AC 10 nop ! 1137: 1131 0002B5AD # asm("stf _sgl_st_acc"); /* store the ACC (s/b= op) */ ! 1138: 1132 0002B5AD 26 effffff8b9 stf _sgl_st_acc ! 1139: 1133 0002B5B3 # if( force_loop ) ! 1140: 1134 0002B5B3 5d effffff8b3 tstl _force_loop ! 1141: 1135 0002B5B9 31 02 jeql L319 ! 1142: 1136 0002B5BB # asm("brb _pipe7_7_lp1");; /* loop on the error */ ! 1143: 1137 0002B5BB 11 98 brb _pipe7_7_lp1 ! 1144: 1138 0002B5BD L319: ! 1145: 1139 0002B5BD # /* ! 1146: 1140 0002B5BD # * verify the results ! 1147: 1141 0002B5BD # */ ! 1148: 1142 0002B5BD # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */ ! 1149: 1143 0002B5BD 1d effffff8a9 effffff8a4 cmpl _sgl_st_acc,_sgl_expected ! 1150: 1144 0002B5C8 31 45 jeql L320 ! 1151: 1145 0002B5CA # { ! 1152: 1146 0002B5CA # errcnt++; /* bump the error count */ ! 1153: 1147 0002B5CA 6d effffff89c incl _errcnt ! 1154: 1148 0002B5D0 # if ( prt_error ) ! 1155: 1149 0002B5D0 5d effffff896 tstl _prt_error ! 1156: 1150 0002B5D6 31 0d jeql L321 ! 1157: 1151 0002B5D8 # print_pipe7_er("Cache Data, 2 NO-OPs"); ! 1158: 1152 0002B5D8 .data 1 ! 1159: 1153 00000e6b * L322: ! 1160: 1154 00000e6b * 436163686520446174612C203 .ascii "Cache Data, 2 NO-OPs\0" ! 1161: 2204E4F2D4F507300 ! 1162: 1155 00000e80 * .text ! 1163: 1156 0002B5D8 dd 8f00000e6b pushl $L322 ! 1164: 1157 0002B5DE fe 08 ef000004e7 callf $8,_print_pipe7_er ! 1165: 1158 0002B5E5 # if ( halt_flg ) ! 1166: 1159 0002B5E5 L321: ! 1167: 1160 0002B5E5 5d effffff881 tstl _halt_flg ! 1168: 1161 0002B5EB 31 0d jeql L323 ! 1169: 1162 0002B5ED # pipe7_er_hlt( subtest ); ! 1170: 1163 0002B5ED dd effffff879 pushl _subtest ! 1171: 1164 0002B5F3 fe 08 ef000005ea callf $8,_pipe7_er_hlt ! 1172: 1165 0002B5FA # if ( loop_on_err ) { ! 1173: 1166 0002B5FA L323: ! 1174: 1167 0002B5FA 5d effffff86c tstl _loop_on_err ! 1175: 1168 0002B600 31 0d jeql L324 ! 1176: 1169 0002B602 # force_loop = TRUE; /* set the force loop flag */ ! 1177: 1170 0002B602 0d 01 effffff863 movl $1,_force_loop ! 1178: 1171 0002B609 # asm("jmp _pipe7_7_lp1"); /* and loop */ ! 1179: 1172 0002B609 71 efffffff46 jmp _pipe7_7_lp1 ! 1180: 1173 0002B60F # } ! 1181: 1174 0002B60F # } /* end of compare error */ ! 1182: 1175 0002B60F L324: ! 1183: 1176 0002B60F # } while( index++ < max_ldf_1_index ); ! 1184: 1177 0002B60F L320: ! 1185: 1178 0002B60F L317: ! 1186: 1179 0002B60F 0d effffff857 50 movl _index,r0 ! 1187: 1180 0002B616 6d effffff850 incl _index ! 1188: 1181 0002B61C 1d 50 effffff849 cmpl r0,_max_ldf_1_index ! 1189: 1182 0002B623 81 03 13 fefb jlss L318 ! 1190: 1183 0002B628 L316: ! 1191: 1184 0002B628 # } /* end of subtest 7 */ ! 1192: 1185 0002B628 40 ret#2 ! 1193: 1186 0002B629 .set L312,0x0 ! 1194: 1187 0002B629 L314: ! 1195: 1188 0002B629 13 feeb jbr L315 ! 1196: 1189 0002B62C .data ! 1197: 1190 00000de8 * .text ! 1198: 1191 0002B62C .align 1 ! 1199: 1192 0002B62C .globl _pipe7_8 ! 1200: 1193 0002B62C _pipe7_8: ! 1201: 1194 0002B62C 0000 .word L325 ! 1202: 1195 0002B62E # ! 1203: 1196 0002B62E # ! 1204: 1197 0002B62E # ! 1205: 1198 0002B62E # ! 1206: 1199 0002B62E # ! 1207: 1200 0002B62E # ! 1208: 1201 0002B62E # /************************************************************************ ! 1209: 1202 0002B62E # * ! 1210: 1203 0002B62E # * SUBTEST 8 ! 1211: 1204 0002B62E # * data in Cache, 3 NO-OPs ! 1212: 1205 0002B62E # * ! 1213: 1206 0002B62E # ************************************************************************/ ! 1214: 1207 0002B62E # pipe7_8() ! 1215: 1208 0002B62E # { ! 1216: 1209 0002B62E 13 011d jbr L327 ! 1217: 1210 0002B631 L328: ! 1218: 1211 0002B631 # force_loop = FALSE; /* clear force_loop flag */ ! 1219: 1212 0002B631 4d effffff835 clrl _force_loop ! 1220: 1213 0002B637 # index = 0; ! 1221: 1214 0002B637 4d effffff82f clrl _index ! 1222: 1215 0002B63D # do ! 1223: 1216 0002B63D L331: ! 1224: 1217 0002B63D # { ! 1225: 1218 0002B63D # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */ ! 1226: 1219 0002B63D 0d effffff829 50 movl _index,r0 ! 1227: 1220 0002B644 48 03 50 50 shll $3,r0,r0 ! 1228: 1221 0002B648 0d e000000000 effffff819 movl _ldf_1_data(r0),_sgl_value_1 ! 1229: 1222 0002B653 # sgl_expected = ldf_1_data[index].exp; /* get expected results */ ! 1230: 1223 0002B653 0d effffff813 50 movl _index,r0 ! 1231: 1224 0002B65A 48 03 50 50 shll $3,r0,r0 ! 1232: 1225 0002B65E 0d e000000004 effffff803 movl _ldf_1_data+4(r0),_sgl_expected ! 1233: 1226 0002B669 # sgl_value_2 = 0; /* set the '0' operand */ ! 1234: 1227 0002B669 4d effffff7fd clrl _sgl_value_2 ! 1235: 1228 0002B66F # /* ! 1236: 1229 0002B66F # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1237: 1230 0002B66F # * The force loop flag is set after the first error. ! 1238: 1231 0002B66F # */ ! 1239: 1232 0002B66F # asm("_pipe7_8_lp1:"); ! 1240: 1233 0002B66F _pipe7_8_lp1: ! 1241: 1234 0002B66F # asm("ldf _sgl_value_1"); /* load the ACC (ACC = op) */ ! 1242: 1235 0002B66F 06 effffff7f7 ldf _sgl_value_1 ! 1243: 1236 0002B675 # asm("nop"); ! 1244: 1237 0002B675 10 nop ! 1245: 1238 0002B676 # asm("nop"); ! 1246: 1239 0002B676 10 nop ! 1247: 1240 0002B677 # asm("nop"); ! 1248: 1241 0002B677 10 nop ! 1249: 1242 0002B678 # asm("subf _sgl_value_1"); /* sub. the op. (ACC = 0 ) */ ! 1250: 1243 0002B678 d6 effffff7ee subf _sgl_value_1 ! 1251: 1244 0002B67E # asm("nop"); ! 1252: 1245 0002B67E 10 nop ! 1253: 1246 0002B67F # asm("nop"); ! 1254: 1247 0002B67F 10 nop ! 1255: 1248 0002B680 # asm("nop"); ! 1256: 1249 0002B680 10 nop ! 1257: 1250 0002B681 # asm("addf _sgl_value_2"); /* add a '0' (ACC = 0 ) */ ! 1258: 1251 0002B681 c6 effffff7e5 addf _sgl_value_2 ! 1259: 1252 0002B687 # asm("nop"); ! 1260: 1253 0002B687 10 nop ! 1261: 1254 0002B688 # asm("nop"); ! 1262: 1255 0002B688 10 nop ! 1263: 1256 0002B689 # asm("nop"); ! 1264: 1257 0002B689 10 nop ! 1265: 1258 0002B68A # asm("subf _sgl_value_1"); /* sub. the op. (ACC =-op) */ ! 1266: 1259 0002B68A d6 effffff7dc subf _sgl_value_1 ! 1267: 1260 0002B690 # asm("nop"); ! 1268: 1261 0002B690 10 nop ! 1269: 1262 0002B691 # asm("nop"); ! 1270: 1263 0002B691 10 nop ! 1271: 1264 0002B692 # asm("nop"); ! 1272: 1265 0002B692 10 nop ! 1273: 1266 0002B693 # asm("addf _sgl_value_1"); /* add the op. (ACC = 0 ) */ ! 1274: 1267 0002B693 c6 effffff7d3 addf _sgl_value_1 ! 1275: 1268 0002B699 # asm("nop"); ! 1276: 1269 0002B699 10 nop ! 1277: 1270 0002B69A # asm("nop"); ! 1278: 1271 0002B69A 10 nop ! 1279: 1272 0002B69B # asm("nop"); ! 1280: 1273 0002B69B 10 nop ! 1281: 1274 0002B69C # asm("subf _sgl_value_2"); /* sub. a '0' (ACC = 0 ) */ ! 1282: 1275 0002B69C d6 effffff7ca subf _sgl_value_2 ! 1283: 1276 0002B6A2 # asm("nop"); ! 1284: 1277 0002B6A2 10 nop ! 1285: 1278 0002B6A3 # asm("nop"); ! 1286: 1279 0002B6A3 10 nop ! 1287: 1280 0002B6A4 # asm("nop"); ! 1288: 1281 0002B6A4 10 nop ! 1289: 1282 0002B6A5 # asm("addf _sgl_value_1"); /* add the op. (ACC = op) */ ! 1290: 1283 0002B6A5 c6 effffff7c1 addf _sgl_value_1 ! 1291: 1284 0002B6AB # asm("nop"); ! 1292: 1285 0002B6AB 10 nop ! 1293: 1286 0002B6AC # asm("nop"); ! 1294: 1287 0002B6AC 10 nop ! 1295: 1288 0002B6AD # asm("nop"); ! 1296: 1289 0002B6AD 10 nop ! 1297: 1290 0002B6AE # asm("subf _sgl_value_1"); /* sub. the op. (ACC = 0 ) */ ! 1298: 1291 0002B6AE d6 effffff7b8 subf _sgl_value_1 ! 1299: 1292 0002B6B4 # asm("nop"); ! 1300: 1293 0002B6B4 10 nop ! 1301: 1294 0002B6B5 # asm("nop"); ! 1302: 1295 0002B6B5 10 nop ! 1303: 1296 0002B6B6 # asm("nop"); ! 1304: 1297 0002B6B6 10 nop ! 1305: 1298 0002B6B7 # asm("addf _sgl_value_2"); /* add a '0' (ACC = 0 ) */ ! 1306: 1299 0002B6B7 c6 effffff7af addf _sgl_value_2 ! 1307: 1300 0002B6BD # asm("nop"); ! 1308: 1301 0002B6BD 10 nop ! 1309: 1302 0002B6BE # asm("nop"); ! 1310: 1303 0002B6BE 10 nop ! 1311: 1304 0002B6BF # asm("nop"); ! 1312: 1305 0002B6BF 10 nop ! 1313: 1306 0002B6C0 # asm("subf _sgl_value_2"); /* sub. a '0' (ACC = 0 ) */ ! 1314: 1307 0002B6C0 d6 effffff7a6 subf _sgl_value_2 ! 1315: 1308 0002B6C6 # asm("nop"); ! 1316: 1309 0002B6C6 10 nop ! 1317: 1310 0002B6C7 # asm("nop"); ! 1318: 1311 0002B6C7 10 nop ! 1319: 1312 0002B6C8 # asm("nop"); ! 1320: 1313 0002B6C8 10 nop ! 1321: 1314 0002B6C9 # asm("addf _sgl_value_1"); /* add the op. (ACC = op) */ ! 1322: 1315 0002B6C9 c6 effffff79d addf _sgl_value_1 ! 1323: 1316 0002B6CF # asm("nop"); ! 1324: 1317 0002B6CF 10 nop ! 1325: 1318 0002B6D0 # asm("nop"); ! 1326: 1319 0002B6D0 10 nop ! 1327: 1320 0002B6D1 # asm("nop"); ! 1328: 1321 0002B6D1 10 nop ! 1329: 1322 0002B6D2 # asm("stf _sgl_st_acc"); /* store the ACC (s/b= op) */ ! 1330: 1323 0002B6D2 26 effffff794 stf _sgl_st_acc ! 1331: 1324 0002B6D8 # if( force_loop ) ! 1332: 1325 0002B6D8 5d effffff78e tstl _force_loop ! 1333: 1326 0002B6DE 31 02 jeql L332 ! 1334: 1327 0002B6E0 # asm("brb _pipe7_8_lp1");; /* loop on the error */ ! 1335: 1328 0002B6E0 11 8d brb _pipe7_8_lp1 ! 1336: 1329 0002B6E2 L332: ! 1337: 1330 0002B6E2 # /* ! 1338: 1331 0002B6E2 # * verify the results ! 1339: 1332 0002B6E2 # */ ! 1340: 1333 0002B6E2 # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */ ! 1341: 1334 0002B6E2 1d effffff784 effffff77f cmpl _sgl_st_acc,_sgl_expected ! 1342: 1335 0002B6ED 31 45 jeql L333 ! 1343: 1336 0002B6EF # { ! 1344: 1337 0002B6EF # errcnt++; /* bump the error count */ ! 1345: 1338 0002B6EF 6d effffff777 incl _errcnt ! 1346: 1339 0002B6F5 # if ( prt_error ) ! 1347: 1340 0002B6F5 5d effffff771 tstl _prt_error ! 1348: 1341 0002B6FB 31 0d jeql L334 ! 1349: 1342 0002B6FD # print_pipe7_er("Cache Data, 3 NO-OPs"); ! 1350: 1343 0002B6FD .data 1 ! 1351: 1344 00000e80 * L335: ! 1352: 1345 00000e80 * 436163686520446174612C203 .ascii "Cache Data, 3 NO-OPs\0" ! 1353: 3204E4F2D4F507300 ! 1354: 1346 00000e95 * .text ! 1355: 1347 0002B6FD dd 8f00000e80 pushl $L335 ! 1356: 1348 0002B703 fe 08 ef000003c2 callf $8,_print_pipe7_er ! 1357: 1349 0002B70A # if ( halt_flg ) ! 1358: 1350 0002B70A L334: ! 1359: 1351 0002B70A 5d effffff75c tstl _halt_flg ! 1360: 1352 0002B710 31 0d jeql L336 ! 1361: 1353 0002B712 # pipe7_er_hlt( subtest ); ! 1362: 1354 0002B712 dd effffff754 pushl _subtest ! 1363: 1355 0002B718 fe 08 ef000004c5 callf $8,_pipe7_er_hlt ! 1364: 1356 0002B71F # if ( loop_on_err ) { ! 1365: 1357 0002B71F L336: ! 1366: 1358 0002B71F 5d effffff747 tstl _loop_on_err ! 1367: 1359 0002B725 31 0d jeql L337 ! 1368: 1360 0002B727 # force_loop = TRUE; /* set the force loop flag */ ! 1369: 1361 0002B727 0d 01 effffff73e movl $1,_force_loop ! 1370: 1362 0002B72E # asm("jmp _pipe7_8_lp1"); /* and loop */ ! 1371: 1363 0002B72E 71 efffffff3b jmp _pipe7_8_lp1 ! 1372: 1364 0002B734 # } ! 1373: 1365 0002B734 # } /* end of compare error */ ! 1374: 1366 0002B734 L337: ! 1375: 1367 0002B734 # } while( index++ < max_ldf_1_index ); ! 1376: 1368 0002B734 L333: ! 1377: 1369 0002B734 L330: ! 1378: 1370 0002B734 0d effffff732 50 movl _index,r0 ! 1379: 1371 0002B73B 6d effffff72b incl _index ! 1380: 1372 0002B741 1d 50 effffff724 cmpl r0,_max_ldf_1_index ! 1381: 1373 0002B748 81 03 13 fef0 jlss L331 ! 1382: 1374 0002B74D L329: ! 1383: 1375 0002B74D # } /* end of subtest 8 */ ! 1384: 1376 0002B74D 40 ret#2 ! 1385: 1377 0002B74E .set L325,0x0 ! 1386: 1378 0002B74E L327: ! 1387: 1379 0002B74E 13 fee0 jbr L328 ! 1388: 1380 0002B751 .data ! 1389: 1381 00000de8 * .text ! 1390: 1382 0002B751 00 .align 1 ! 1391: 1383 0002B752 .globl _pipe7_9 ! 1392: 1384 0002B752 _pipe7_9: ! 1393: 1385 0002B752 0000 .word L338 ! 1394: 1386 0002B754 # ! 1395: 1387 0002B754 # ! 1396: 1388 0002B754 # ! 1397: 1389 0002B754 # ! 1398: 1390 0002B754 # ! 1399: 1391 0002B754 # ! 1400: 1392 0002B754 # /***************************************************************************** ! 1401: 1393 0002B754 # * ! 1402: 1394 0002B754 # * SUBTEST 9 ! 1403: 1395 0002B754 # * data on the stack, no NO-OPs ! 1404: 1396 0002B754 # * ! 1405: 1397 0002B754 # *****************************************************************************/ ! 1406: 1398 0002B754 # pipe7_9() ! 1407: 1399 0002B754 # { ! 1408: 1400 0002B754 13 01b4 jbr L340 ! 1409: 1401 0002B757 L341: ! 1410: 1402 0002B757 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */ ! 1411: 1403 0002B757 ed 6d effffff70e moval (r13),_pre_event_fp ! 1412: 1404 0002B75E # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */ ! 1413: 1405 0002B75E ed 6e effffff707 moval (r14),_pre_event_sp ! 1414: 1406 0002B765 # force_loop = FALSE; /* clear force_loop flag */ ! 1415: 1407 0002B765 4d effffff701 clrl _force_loop ! 1416: 1408 0002B76B # index = 0; ! 1417: 1409 0002B76B 4d effffff6fb clrl _index ! 1418: 1410 0002B771 # do ! 1419: 1411 0002B771 L344: ! 1420: 1412 0002B771 # { ! 1421: 1413 0002B771 # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */ ! 1422: 1414 0002B771 0d effffff6f5 50 movl _index,r0 ! 1423: 1415 0002B778 48 03 50 50 shll $3,r0,r0 ! 1424: 1416 0002B77C 0d e000000000 effffff6e5 movl _ldf_1_data(r0),_sgl_value_1 ! 1425: 1417 0002B787 # sgl_expected = ldf_1_data[index].exp; /* get expected results */ ! 1426: 1418 0002B787 0d effffff6df 50 movl _index,r0 ! 1427: 1419 0002B78E 48 03 50 50 shll $3,r0,r0 ! 1428: 1420 0002B792 0d e000000004 effffff6cf movl _ldf_1_data+4(r0),_sgl_expected ! 1429: 1421 0002B79D # sgl_value_4 = 0; /* set the '0' operand */ ! 1430: 1422 0002B79D 4d effffff6c9 clrl _sgl_value_4 ! 1431: 1423 0002B7A3 # asm("moval _pointer_data,_sgl_value_2");/* init / final SP value */ ! 1432: 1424 0002B7A3 ed effffff6c3 effffff6be moval _pointer_data,_sgl_value_2 ! 1433: 1425 0002B7AE # /* ! 1434: 1426 0002B7AE # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1435: 1427 0002B7AE # * The force loop flag is set after the first error. ! 1436: 1428 0002B7AE # */ ! 1437: 1429 0002B7AE # asm("_pipe7_9_lp1:"); ! 1438: 1430 0002B7AE _pipe7_9_lp1: ! 1439: 1431 0002B7AE # asm("moval _pointer_data,r14"); /* set the stack pointer */ ! 1440: 1432 0002B7AE ed effffff6b8 5e moval _pointer_data,r14 ! 1441: 1433 0002B7B5 # asm("movl _sgl_value_1,-(r14)"); /* push operand to add */ ! 1442: 1434 0002B7B5 0d effffff6b1 7e movl _sgl_value_1,-(r14) ! 1443: 1435 0002B7BC # asm("movl _sgl_value_4,-(r14)"); /* '0' to subtract */ ! 1444: 1436 0002B7BC 0d effffff6aa 7e movl _sgl_value_4,-(r14) ! 1445: 1437 0002B7C3 # asm("movl _sgl_value_4,-(r14)"); /* '0' to add */ ! 1446: 1438 0002B7C3 0d effffff6a3 7e movl _sgl_value_4,-(r14) ! 1447: 1439 0002B7CA # asm("movl _sgl_value_1,-(r14)"); /* op. to subtract */ ! 1448: 1440 0002B7CA 0d effffff69c 7e movl _sgl_value_1,-(r14) ! 1449: 1441 0002B7D1 # asm("movl _sgl_value_1,-(r14)"); /* op. to add */ ! 1450: 1442 0002B7D1 0d effffff695 7e movl _sgl_value_1,-(r14) ! 1451: 1443 0002B7D8 # asm("movl _sgl_value_4,-(r14)"); /* '0' to subtract */ ! 1452: 1444 0002B7D8 0d effffff68e 7e movl _sgl_value_4,-(r14) ! 1453: 1445 0002B7DF # asm("movl _sgl_value_1,-(r14)"); /* op. to add */ ! 1454: 1446 0002B7DF 0d effffff687 7e movl _sgl_value_1,-(r14) ! 1455: 1447 0002B7E6 # asm("movl _sgl_value_1,-(r14)"); /* op. to subtract */ ! 1456: 1448 0002B7E6 0d effffff680 7e movl _sgl_value_1,-(r14) ! 1457: 1449 0002B7ED # asm("movl _sgl_value_4,-(r14)"); /* '0' to add */ ! 1458: 1450 0002B7ED 0d effffff679 7e movl _sgl_value_4,-(r14) ! 1459: 1451 0002B7F4 # asm("movl _sgl_value_1,-(r14)"); /* op. to subtract */ ! 1460: 1452 0002B7F4 0d effffff672 7e movl _sgl_value_1,-(r14) ! 1461: 1453 0002B7FB # asm("movl _sgl_value_1,-(r14)"); /* op. to load */ ! 1462: 1454 0002B7FB 0d effffff66b 7e movl _sgl_value_1,-(r14) ! 1463: 1455 0002B802 # /* ! 1464: 1456 0002B802 # * now pop the data off the stack ! 1465: 1457 0002B802 # */ ! 1466: 1458 0002B802 # asm("ldf (r14)+"); /* pop the data & load it */ ! 1467: 1459 0002B802 06 8e ldf (r14)+ ! 1468: 1460 0002B804 # asm("subf (r14)+"); /* sub. the op. (ACC = 0 ) */ ! 1469: 1461 0002B804 d6 8e subf (r14)+ ! 1470: 1462 0002B806 # asm("addf (r14)+"); /* add a '0' (ACC = 0 ) */ ! 1471: 1463 0002B806 c6 8e addf (r14)+ ! 1472: 1464 0002B808 # asm("subf (r14)+"); /* sub. the op. (ACC =-op) */ ! 1473: 1465 0002B808 d6 8e subf (r14)+ ! 1474: 1466 0002B80A # asm("addf (r14)+"); /* add the op. (ACC = 0 ) */ ! 1475: 1467 0002B80A c6 8e addf (r14)+ ! 1476: 1468 0002B80C # asm("subf (r14)+"); /* sub. a '0' (ACC = 0 ) */ ! 1477: 1469 0002B80C d6 8e subf (r14)+ ! 1478: 1470 0002B80E # asm("addf (r14)+"); /* add the op. (ACC = op) */ ! 1479: 1471 0002B80E c6 8e addf (r14)+ ! 1480: 1472 0002B810 # asm("subf (r14)+"); /* sub. the op. (ACC = 0 ) */ ! 1481: 1473 0002B810 d6 8e subf (r14)+ ! 1482: 1474 0002B812 # asm("addf (r14)+"); /* add a '0' (ACC = 0 ) */ ! 1483: 1475 0002B812 c6 8e addf (r14)+ ! 1484: 1476 0002B814 # asm("subf (r14)+"); /* sub. a '0' (ACC = 0 ) */ ! 1485: 1477 0002B814 d6 8e subf (r14)+ ! 1486: 1478 0002B816 # asm("addf (r14)+"); /* add the op. (ACC = op) */ ! 1487: 1479 0002B816 c6 8e addf (r14)+ ! 1488: 1480 0002B818 # asm("stf r5"); /* store the ACC (s/b= op) */ ! 1489: 1481 0002B818 26 55 stf r5 ! 1490: 1482 0002B81A # if( force_loop ) ! 1491: 1483 0002B81A 5d effffff64c tstl _force_loop ! 1492: 1484 0002B820 31 02 jeql L345 ! 1493: 1485 0002B822 # asm("brb _pipe7_9_lp1");; /* loop on the error */ ! 1494: 1486 0002B822 11 8a brb _pipe7_9_lp1 ! 1495: 1487 0002B824 L345: ! 1496: 1488 0002B824 # /* ! 1497: 1489 0002B824 # * verify the results ! 1498: 1490 0002B824 # */ ! 1499: 1491 0002B824 # asm("movl r5,_sgl_st_acc"); /* get the result */ ! 1500: 1492 0002B824 0d 55 effffff641 movl r5,_sgl_st_acc ! 1501: 1493 0002B82B # asm("moval (r14),_sgl_value_3"); /* save the stack pointer */ ! 1502: 1494 0002B82B ed 6e effffff63a moval (r14),_sgl_value_3 ! 1503: 1495 0002B832 # if( (sgl_st_acc != sgl_expected) || /* verify the result... */ ! 1504: 1496 0002B832 # (sgl_value_3 != sgl_value_2) ) /* ... and the final SP */ ! 1505: 1497 0002B832 1d effffff634 effffff62f cmpl _sgl_st_acc,_sgl_expected ! 1506: 1498 0002B83D 21 10 jneq L9999 ! 1507: 1499 0002B83F 1d effffff627 effffff622 cmpl _sgl_value_3,_sgl_value_2 ! 1508: 1500 0002B84A 21 03 13 0094 jeql L346 ! 1509: 1501 0002B84F L9999: ! 1510: 1502 0002B84F # { ! 1511: 1503 0002B84F # asm("movl _pre_event_fp,r13"); /* restore frame pointer */ ! 1512: 1504 0002B84F 0d effffff617 5d movl _pre_event_fp,r13 ! 1513: 1505 0002B856 # asm("movl _pre_event_sp,r14"); /* restore stack pointer */ ! 1514: 1506 0002B856 0d effffff610 5e movl _pre_event_sp,r14 ! 1515: 1507 0002B85D # errcnt++; /* bump the error count */ ! 1516: 1508 0002B85D 6d effffff609 incl _errcnt ! 1517: 1509 0002B863 # if ( prt_error ) { ! 1518: 1510 0002B863 5d effffff603 tstl _prt_error ! 1519: 1511 0002B869 31 4e jeql L347 ! 1520: 1512 0002B86B # print_pipe7_er("POP data from the STACK"); ! 1521: 1513 0002B86B .data 1 ! 1522: 1514 00000e95 * L348: ! 1523: 1515 00000e95 * 504F5020646174612066726F6 .ascii "POP data from the STACK\0" ! 1524: D2074686520535441434B00 ! 1525: 1516 00000ead * .text ! 1526: 1517 0002B86B dd 8f00000e95 pushl $L348 ! 1527: 1518 0002B871 fe 08 ef00000254 callf $8,_print_pipe7_er ! 1528: 1519 0002B878 # writes("final Stack Pointer = "); ! 1529: 1520 0002B878 .data 1 ! 1530: 1521 00000ead * L349: ! 1531: 1522 00000ead * 66696E616C20537461636B205 .ascii "final Stack Pointer = \0" ! 1532: 06F696E746572203D2000 ! 1533: 1523 00000ec4 * .text ! 1534: 1524 0002B878 dd 8f00000ead pushl $L349 ! 1535: 1525 0002B87E fe 08 effffff5e7 callf $8,_writes ! 1536: 1526 0002B885 # write32h( sgl_value_5 ); ! 1537: 1527 0002B885 dd effffff5e1 pushl _sgl_value_5 ! 1538: 1528 0002B88B fe 08 effffff5da callf $8,_write32h ! 1539: 1529 0002B892 # writes(", expected SP = "); ! 1540: 1530 0002B892 .data 1 ! 1541: 1531 00000ec4 * L351: ! 1542: 1532 00000ec4 * 2C20206578706563746564205 .ascii ", expected SP = \0" ! 1543: 350203D2000 ! 1544: 1533 00000ed6 * .text ! 1545: 1534 0002B892 dd 8f00000ec4 pushl $L351 ! 1546: 1535 0002B898 fe 08 effffff5cd callf $8,_writes ! 1547: 1536 0002B89F # write32h( sgl_value_4 ); ! 1548: 1537 0002B89F dd effffff5c7 pushl _sgl_value_4 ! 1549: 1538 0002B8A5 fe 08 effffff5c0 callf $8,_write32h ! 1550: 1539 0002B8AC # writes("\n"); ! 1551: 1540 0002B8AC .data 1 ! 1552: 1541 00000ed6 * L352: ! 1553: 1542 00000ed6 * 0A00 .ascii "\12\0" ! 1554: 1543 00000ed8 * .text ! 1555: 1544 0002B8AC dd 8f00000ed6 pushl $L352 ! 1556: 1545 0002B8B2 fe 08 effffff5b3 callf $8,_writes ! 1557: 1546 0002B8B9 # } ! 1558: 1547 0002B8B9 # if ( halt_flg ) /* halt on error? */ ! 1559: 1548 0002B8B9 L347: ! 1560: 1549 0002B8B9 5d effffff5ad tstl _halt_flg ! 1561: 1550 0002B8BF 31 0d jeql L353 ! 1562: 1551 0002B8C1 # pipe7_er_hlt( subtest ); ! 1563: 1552 0002B8C1 dd effffff5a5 pushl _subtest ! 1564: 1553 0002B8C7 fe 08 ef00000316 callf $8,_pipe7_er_hlt ! 1565: 1554 0002B8CE # if ( loop_on_err ) { ! 1566: 1555 0002B8CE L353: ! 1567: 1556 0002B8CE 5d effffff598 tstl _loop_on_err ! 1568: 1557 0002B8D4 31 0d jeql L354 ! 1569: 1558 0002B8D6 # force_loop = TRUE; /* set the force loop flag */ ! 1570: 1559 0002B8D6 0d 01 effffff58f movl $1,_force_loop ! 1571: 1560 0002B8DD # asm("jmp _pipe7_9_lp1"); /* and loop */ ! 1572: 1561 0002B8DD 71 effffffecb jmp _pipe7_9_lp1 ! 1573: 1562 0002B8E3 # } ! 1574: 1563 0002B8E3 # } /* end of compare error */ ! 1575: 1564 0002B8E3 L354: ! 1576: 1565 0002B8E3 # } while( index++ < max_ldf_1_index ); ! 1577: 1566 0002B8E3 L346: ! 1578: 1567 0002B8E3 L343: ! 1579: 1568 0002B8E3 0d effffff583 50 movl _index,r0 ! 1580: 1569 0002B8EA 6d effffff57c incl _index ! 1581: 1570 0002B8F0 1d 50 effffff575 cmpl r0,_max_ldf_1_index ! 1582: 1571 0002B8F7 81 03 13 fe75 jlss L344 ! 1583: 1572 0002B8FC L342: ! 1584: 1573 0002B8FC # asm("movl _pre_event_fp,r13"); /* restore the frame pointer */ ! 1585: 1574 0002B8FC 0d effffff56a 5d movl _pre_event_fp,r13 ! 1586: 1575 0002B903 # asm("movl _pre_event_sp,r14"); /* restore the stack pointer */ ! 1587: 1576 0002B903 0d effffff563 5e movl _pre_event_sp,r14 ! 1588: 1577 0002B90A # } /* end of subtest 9 */ ! 1589: 1578 0002B90A 40 ret#2 ! 1590: 1579 0002B90B .set L338,0x0 ! 1591: 1580 0002B90B L340: ! 1592: 1581 0002B90B 13 fe49 jbr L341 ! 1593: 1582 0002B90E .data ! 1594: 1583 00000de8 * .text ! 1595: 1584 0002B90E .align 1 ! 1596: 1585 0002B90E .globl _pipe7_10 ! 1597: 1586 0002B90E _pipe7_10: ! 1598: 1587 0002B90E 0000 .word L355 ! 1599: 1588 0002B910 # ! 1600: 1589 0002B910 # ! 1601: 1590 0002B910 # ! 1602: 1591 0002B910 # ! 1603: 1592 0002B910 # ! 1604: 1593 0002B910 # ! 1605: 1594 0002B910 # /****************************************************************************** ! 1606: 1595 0002B910 # * ! 1607: 1596 0002B910 # * SUBTEST 10 ! 1608: 1597 0002B910 # * load 0, add operand 4 times -get data via indexed FRAME pointer ! 1609: 1598 0002B910 # * ! 1610: 1599 0002B910 # * ADDR INDEX DATA ! 1611: 1600 0002B910 # * pointer_data 4 <the STF result goes here> ! 1612: 1601 0002B910 # * pointer_data-4 3 <operand data> ! 1613: 1602 0002B910 # * pointer_data-8 2 <'0' data> ! 1614: 1603 0002B910 # * pointer_data-16 0 point the frame pointer here ! 1615: 1604 0002B910 # * ! 1616: 1605 0002B910 # ******************************************************************************/ ! 1617: 1606 0002B910 # pipe7_10() ! 1618: 1607 0002B910 # { ! 1619: 1608 0002B910 13 01b6 jbr L357 ! 1620: 1609 0002B913 L358: ! 1621: 1610 0002B913 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */ ! 1622: 1611 0002B913 ed 6d effffff552 moval (r13),_pre_event_fp ! 1623: 1612 0002B91A # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */ ! 1624: 1613 0002B91A ed 6e effffff54b moval (r14),_pre_event_sp ! 1625: 1614 0002B921 # force_loop = FALSE; /* clear force_loop flag */ ! 1626: 1615 0002B921 4d effffff545 clrl _force_loop ! 1627: 1616 0002B927 # index = 0; ! 1628: 1617 0002B927 4d effffff53f clrl _index ! 1629: 1618 0002B92D # do ! 1630: 1619 0002B92D L361: ! 1631: 1620 0002B92D # { ! 1632: 1621 0002B92D # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */ ! 1633: 1622 0002B92D 0d effffff539 50 movl _index,r0 ! 1634: 1623 0002B934 48 03 50 50 shll $3,r0,r0 ! 1635: 1624 0002B938 0d e000000000 effffff529 movl _ldf_1_data(r0),_sgl_value_1 ! 1636: 1625 0002B943 # sgl_expected = ldf_1_data[index].exp; /* get expected results */ ! 1637: 1626 0002B943 0d effffff523 50 movl _index,r0 ! 1638: 1627 0002B94A 48 03 50 50 shll $3,r0,r0 ! 1639: 1628 0002B94E 0d e000000004 effffff513 movl _ldf_1_data+4(r0),_sgl_expected ! 1640: 1629 0002B959 # sgl_value_4 = 0; /* set the '0' operand */ ! 1641: 1630 0002B959 4d effffff50d clrl _sgl_value_4 ! 1642: 1631 0002B95F # asm("moval _pointer_data,_sgl_value_2");/* init / final SP value */ ! 1643: 1632 0002B95F ed effffff507 effffff502 moval _pointer_data,_sgl_value_2 ! 1644: 1633 0002B96A # /* ! 1645: 1634 0002B96A # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1646: 1635 0002B96A # * The force loop flag is set after the first error. ! 1647: 1636 0002B96A # */ ! 1648: 1637 0002B96A # asm("_pipe7_10_lp1:"); ! 1649: 1638 0002B96A _pipe7_10_lp1: ! 1650: 1639 0002B96A # asm("moval _pointer_data,_sgl_value_2");/* get store data's addr */ ! 1651: 1640 0002B96A ed effffff4fc effffff4f7 moval _pointer_data,_sgl_value_2 ! 1652: 1641 0002B975 # sgl_value_2 -= 4; /* decrement it by 4 (bytes)*/ ! 1653: 1642 0002B975 2c 04 effffff4f0 subl2 $4,_sgl_value_2 ! 1654: 1643 0002B97C # asm("movl _sgl_value_1,*_sgl_value_2");/* set the operand data */ ! 1655: 1644 0002B97C 0d effffff4ea fffffff4e5 movl _sgl_value_1,*_sgl_value_2 ! 1656: 1645 0002B987 # sgl_value_2 -= 4; /* decrement it by 4 (bytes)*/ ! 1657: 1646 0002B987 2c 04 effffff4de subl2 $4,_sgl_value_2 ! 1658: 1647 0002B98E # asm("movl _sgl_value_4,*_sgl_value_2");/* set the '0' data */ ! 1659: 1648 0002B98E 0d effffff4d8 fffffff4d3 movl _sgl_value_4,*_sgl_value_2 ! 1660: 1649 0002B999 # sgl_value_2 -= 8; /* get the FP addr to use */ ! 1661: 1650 0002B999 2c 08 effffff4cc subl2 $8,_sgl_value_2 ! 1662: 1651 0002B9A0 # asm("movl _sgl_value_2,r13"); /* set the FRAME POINTER */ ! 1663: 1652 0002B9A0 0d effffff4c6 5d movl _sgl_value_2,r13 ! 1664: 1653 0002B9A7 # asm("movl $2,r2"); /* r2 index = 2 longwords */ ! 1665: 1654 0002B9A7 0d 02 52 movl $2,r2 ! 1666: 1655 0002B9AA # asm("movl $3,r5"); /* r5 index = 3 longwords */ ! 1667: 1656 0002B9AA 0d 03 55 movl $3,r5 ! 1668: 1657 0002B9AD # asm("movl $4,r6"); /* r6 index = 4 longwords */ ! 1669: 1658 0002B9AD 0d 04 56 movl $4,r6 ! 1670: 1659 0002B9B0 # asm("ldf (r13)[r5]"); /* load the operand via SP */ ! 1671: 1660 0002B9B0 06 456d ldf (r13)[r5] ! 1672: 1661 0002B9B3 # asm("subf (r13)[r5]"); /* sub. the op. (ACC = 0 ) */ ! 1673: 1662 0002B9B3 d6 456d subf (r13)[r5] ! 1674: 1663 0002B9B6 # asm("addf (r13)[r2]"); /* add a '0' (ACC = 0 ) */ ! 1675: 1664 0002B9B6 c6 426d addf (r13)[r2] ! 1676: 1665 0002B9B9 # asm("subf (r13)[r5]"); /* sub. the op. (ACC =-op) */ ! 1677: 1666 0002B9B9 d6 456d subf (r13)[r5] ! 1678: 1667 0002B9BC # asm("addf (r13)[r5]"); /* add the op. (ACC = 0 ) */ ! 1679: 1668 0002B9BC c6 456d addf (r13)[r5] ! 1680: 1669 0002B9BF # asm("subf (r13)[r2]"); /* sub. a '0' (ACC = 0 ) */ ! 1681: 1670 0002B9BF d6 426d subf (r13)[r2] ! 1682: 1671 0002B9C2 # asm("addf (r13)[r5]"); /* add the op. (ACC = op) */ ! 1683: 1672 0002B9C2 c6 456d addf (r13)[r5] ! 1684: 1673 0002B9C5 # asm("subf (r13)[r5]"); /* sub. the op. (ACC = 0 ) */ ! 1685: 1674 0002B9C5 d6 456d subf (r13)[r5] ! 1686: 1675 0002B9C8 # asm("addf (r13)[r2]"); /* add a '0' (ACC = 0 ) */ ! 1687: 1676 0002B9C8 c6 426d addf (r13)[r2] ! 1688: 1677 0002B9CB # asm("subf (r13)[r2]"); /* sub. a '0' (ACC = 0 ) */ ! 1689: 1678 0002B9CB d6 426d subf (r13)[r2] ! 1690: 1679 0002B9CE # asm("addf (r13)[r5]"); /* add the op. (ACC = op) */ ! 1691: 1680 0002B9CE c6 456d addf (r13)[r5] ! 1692: 1681 0002B9D1 # asm("stf (r13)[r6]"); /* store -indexed by r6 */ ! 1693: 1682 0002B9D1 26 466d stf (r13)[r6] ! 1694: 1683 0002B9D4 # if( force_loop ) ! 1695: 1684 0002B9D4 5d effffff492 tstl _force_loop ! 1696: 1685 0002B9DA 31 02 jeql L362 ! 1697: 1686 0002B9DC # asm("brb _pipe7_10_lp1");; /* loop on the error */ ! 1698: 1687 0002B9DC 11 8c brb _pipe7_10_lp1 ! 1699: 1688 0002B9DE L362: ! 1700: 1689 0002B9DE # /* ! 1701: 1690 0002B9DE # * verify the results ! 1702: 1691 0002B9DE # */ ! 1703: 1692 0002B9DE # sgl_st_acc = pointer_data; /* move the stored result */ ! 1704: 1693 0002B9DE 0d effffff488 effffff483 movl _pointer_data,_sgl_st_acc ! 1705: 1694 0002B9E9 # asm("moval (r13),_sgl_value_3"); /* save the frame pointer */ ! 1706: 1695 0002B9E9 ed 6d effffff47c moval (r13),_sgl_value_3 ! 1707: 1696 0002B9F0 # if( (sgl_st_acc != sgl_expected) || /* verify the result... */ ! 1708: 1697 0002B9F0 # (sgl_value_3 != sgl_value_2) ) /* ... and the final FP */ ! 1709: 1698 0002B9F0 1d effffff476 effffff471 cmpl _sgl_st_acc,_sgl_expected ! 1710: 1699 0002B9FB 21 10 jneq L9998 ! 1711: 1700 0002B9FD 1d effffff469 effffff464 cmpl _sgl_value_3,_sgl_value_2 ! 1712: 1701 0002BA08 21 03 13 0094 jeql L363 ! 1713: 1702 0002BA0D L9998: ! 1714: 1703 0002BA0D # { ! 1715: 1704 0002BA0D # asm("movl _pre_event_fp,r13"); /* restore frame pointer */ ! 1716: 1705 0002BA0D 0d effffff459 5d movl _pre_event_fp,r13 ! 1717: 1706 0002BA14 # asm("movl _pre_event_sp,r14"); /* restore stack pointer */ ! 1718: 1707 0002BA14 0d effffff452 5e movl _pre_event_sp,r14 ! 1719: 1708 0002BA1B # errcnt++; /* bump the error count */ ! 1720: 1709 0002BA1B 6d effffff44b incl _errcnt ! 1721: 1710 0002BA21 # if ( prt_error ) { ! 1722: 1711 0002BA21 5d effffff445 tstl _prt_error ! 1723: 1712 0002BA27 31 4e jeql L364 ! 1724: 1713 0002BA29 # print_pipe7_er("indexed FP addressing"); ! 1725: 1714 0002BA29 .data 1 ! 1726: 1715 00000ed8 * L365: ! 1727: 1716 00000ed8 * 696E646578656420465020616 .ascii "indexed FP addressing\0" ! 1728: 46472657373696E6700 ! 1729: 1717 00000eee * .text ! 1730: 1718 0002BA29 dd 8f00000ed8 pushl $L365 ! 1731: 1719 0002BA2F fe 08 ef00000096 callf $8,_print_pipe7_er ! 1732: 1720 0002BA36 # writes("final Frame Pointer = "); ! 1733: 1721 0002BA36 .data 1 ! 1734: 1722 00000eee * L366: ! 1735: 1723 00000eee * 66696E616C204672616D65205 .ascii "final Frame Pointer = \0" ! 1736: 06F696E746572203D2000 ! 1737: 1724 00000f05 * .text ! 1738: 1725 0002BA36 dd 8f00000eee pushl $L366 ! 1739: 1726 0002BA3C fe 08 effffff429 callf $8,_writes ! 1740: 1727 0002BA43 # writeh( sgl_value_5 ); ! 1741: 1728 0002BA43 dd effffff423 pushl _sgl_value_5 ! 1742: 1729 0002BA49 fe 08 effffff41c callf $8,_writeh ! 1743: 1730 0002BA50 # writes(", expected FP = "); ! 1744: 1731 0002BA50 .data 1 ! 1745: 1732 00000f05 * L368: ! 1746: 1733 00000f05 * 2C20206578706563746564204 .ascii ", expected FP = \0" ! 1747: 650203D2000 ! 1748: 1734 00000f17 * .text ! 1749: 1735 0002BA50 dd 8f00000f05 pushl $L368 ! 1750: 1736 0002BA56 fe 08 effffff40f callf $8,_writes ! 1751: 1737 0002BA5D # writeh( sgl_value_4 ); ! 1752: 1738 0002BA5D dd effffff409 pushl _sgl_value_4 ! 1753: 1739 0002BA63 fe 08 effffff402 callf $8,_writeh ! 1754: 1740 0002BA6A # writes("\n"); ! 1755: 1741 0002BA6A .data 1 ! 1756: 1742 00000f17 * L369: ! 1757: 1743 00000f17 * 0A00 .ascii "\12\0" ! 1758: 1744 00000f19 * .text ! 1759: 1745 0002BA6A dd 8f00000f17 pushl $L369 ! 1760: 1746 0002BA70 fe 08 effffff3f5 callf $8,_writes ! 1761: 1747 0002BA77 # } ! 1762: 1748 0002BA77 # if ( halt_flg ) /* halt on error? */ ! 1763: 1749 0002BA77 L364: ! 1764: 1750 0002BA77 5d effffff3ef tstl _halt_flg ! 1765: 1751 0002BA7D 31 0d jeql L370 ! 1766: 1752 0002BA7F # pipe7_er_hlt( subtest ); ! 1767: 1753 0002BA7F dd effffff3e7 pushl _subtest ! 1768: 1754 0002BA85 fe 08 ef00000158 callf $8,_pipe7_er_hlt ! 1769: 1755 0002BA8C # if ( loop_on_err ) { ! 1770: 1756 0002BA8C L370: ! 1771: 1757 0002BA8C 5d effffff3da tstl _loop_on_err ! 1772: 1758 0002BA92 31 0d jeql L371 ! 1773: 1759 0002BA94 # force_loop = TRUE; /* set the force loop flag */ ! 1774: 1760 0002BA94 0d 01 effffff3d1 movl $1,_force_loop ! 1775: 1761 0002BA9B # asm("jmp _pipe7_10_lp1"); /* and loop */ ! 1776: 1762 0002BA9B 71 effffffec9 jmp _pipe7_10_lp1 ! 1777: 1763 0002BAA1 # } ! 1778: 1764 0002BAA1 # } /* end of compare error */ ! 1779: 1765 0002BAA1 L371: ! 1780: 1766 0002BAA1 # } while( index++ < max_ldf_1_index ); ! 1781: 1767 0002BAA1 L363: ! 1782: 1768 0002BAA1 L360: ! 1783: 1769 0002BAA1 0d effffff3c5 50 movl _index,r0 ! 1784: 1770 0002BAA8 6d effffff3be incl _index ! 1785: 1771 0002BAAE 1d 50 effffff3b7 cmpl r0,_max_ldf_1_index ! 1786: 1772 0002BAB5 81 03 13 fe73 jlss L361 ! 1787: 1773 0002BABA L359: ! 1788: 1774 0002BABA # asm("movl _pre_event_fp,r13"); /* restore the frame pointer */ ! 1789: 1775 0002BABA 0d effffff3ac 5d movl _pre_event_fp,r13 ! 1790: 1776 0002BAC1 # asm("movl _pre_event_sp,r14"); /* restore the stack pointer */ ! 1791: 1777 0002BAC1 0d effffff3a5 5e movl _pre_event_sp,r14 ! 1792: 1778 0002BAC8 # } /* end of subtest 10 */ ! 1793: 1779 0002BAC8 40 ret#2 ! 1794: 1780 0002BAC9 .set L355,0x0 ! 1795: 1781 0002BAC9 L357: ! 1796: 1782 0002BAC9 13 fe47 jbr L358 ! 1797: 1783 0002BACC .data ! 1798: 1784 00000de8 * .text ! 1799: 1785 0002BACC .align 1 ! 1800: 1786 0002BACC .globl _print_pipe7_er ! 1801: 1787 0002BACC _print_pipe7_er: ! 1802: 1788 0002BACC 0000 .word L372 ! 1803: 1789 0002BACE # ! 1804: 1790 0002BACE # ! 1805: 1791 0002BACE # /****************************************************************************** ! 1806: 1792 0002BACE # * ! 1807: 1793 0002BACE # * ERROR ROUTINE ! 1808: 1794 0002BACE # * ! 1809: 1795 0002BACE # * print an error in the following form ! 1810: 1796 0002BACE # * ! 1811: 1797 0002BACE # * operand = xxxxxxxx, final Acc = xxxxxxxx, data index = dd ! 1812: 1798 0002BACE # * expected Acc = xxxxxxxx ! 1813: 1799 0002BACE # * ! 1814: 1800 0002BACE # ******************************************************************************/ ! 1815: 1801 0002BACE # print_pipe7_er(msg) ! 1816: 1802 0002BACE # char *msg; ! 1817: 1803 0002BACE # { ! 1818: 1804 0002BACE 13 0110 jbr L374 ! 1819: 1805 0002BAD1 L375: ! 1820: 1806 0002BAD1 # writes("\n"); /* start a new print line */ ! 1821: 1807 0002BAD1 .data 1 ! 1822: 1808 00000f19 * L376: ! 1823: 1809 00000f19 * 0A00 .ascii "\12\0" ! 1824: 1810 00000f1b * .text ! 1825: 1811 0002BAD1 dd 8f00000f19 pushl $L376 ! 1826: 1812 0002BAD7 fe 08 effffff38e callf $8,_writes ! 1827: 1813 0002BADE # writes("cycle: "); ! 1828: 1814 0002BADE .data 1 ! 1829: 1815 00000f1b * L377: ! 1830: 1816 00000f1b * 6379636C653A2000 .ascii "cycle: \0" ! 1831: 1817 00000f23 * .text ! 1832: 1818 0002BADE dd 8f00000f1b pushl $L377 ! 1833: 1819 0002BAE4 fe 08 effffff381 callf $8,_writes ! 1834: 1820 0002BAEB # writed( cycle ); ! 1835: 1821 0002BAEB dd effffff37b pushl _cycle ! 1836: 1822 0002BAF1 fe 08 effffff374 callf $8,_writed ! 1837: 1823 0002BAF8 # writes(" test "); ! 1838: 1824 0002BAF8 .data 1 ! 1839: 1825 00000f23 * L379: ! 1840: 1826 00000f23 * 20746573742000 .ascii " test \0" ! 1841: 1827 00000f2a * .text ! 1842: 1828 0002BAF8 dd 8f00000f23 pushl $L379 ! 1843: 1829 0002BAFE fe 08 effffff367 callf $8,_writes ! 1844: 1830 0002BB05 # writed( test_no ); ! 1845: 1831 0002BB05 dd effffff361 pushl _test_no ! 1846: 1832 0002BB0B fe 08 effffff35a callf $8,_writed ! 1847: 1833 0002BB12 # writes(" (Pipe 7), subtest "); ! 1848: 1834 0002BB12 .data 1 ! 1849: 1835 00000f2a * L380: ! 1850: 1836 00000f2a * 202028506970652037292C207 .ascii " (Pipe 7), subtest \0" ! 1851: 37562746573742000 ! 1852: 1837 00000f3f * .text ! 1853: 1838 0002BB12 dd 8f00000f2a pushl $L380 ! 1854: 1839 0002BB18 fe 08 effffff34d callf $8,_writes ! 1855: 1840 0002BB1F # writed( subtest ); ! 1856: 1841 0002BB1F dd effffff347 pushl _subtest ! 1857: 1842 0002BB25 fe 08 effffff340 callf $8,_writed ! 1858: 1843 0002BB2C # writes(" error - "); ! 1859: 1844 0002BB2C .data 1 ! 1860: 1845 00000f3f * L381: ! 1861: 1846 00000f3f * 206572726F72202D2000 .ascii " error - \0" ! 1862: 1847 00000f49 * .text ! 1863: 1848 0002BB2C dd 8f00000f3f pushl $L381 ! 1864: 1849 0002BB32 fe 08 effffff333 callf $8,_writes ! 1865: 1850 0002BB39 # writes( msg ); ! 1866: 1851 0002BB39 dd ad04 pushl 4(fp) ! 1867: 1852 0002BB3C fe 08 effffff329 callf $8,_writes ! 1868: 1853 0002BB43 # writec('\n'); ! 1869: 1854 0002BB43 dd 0a pushl $10 ! 1870: 1855 0002BB45 fe 08 effffff320 callf $8,_writec ! 1871: 1856 0002BB4C # writes( ! 1872: 1857 0002BB4C # "LDF(op), SUBF(op), ADDF(0.0), SUBF(op), ADDF(op), SUBF(0.0),\n"); ! 1873: 1858 0002BB4C .data 1 ! 1874: 1859 00000f49 * L383: ! 1875: 1860 00000f49 * 4C4446286F70292C205355424 .ascii "LDF(op), SUBF(op), ADDF(0.0), SUBF(op), ADDF(op), SUBF(0.0),\12\0" ! 1876: 6286F70292C20414444462830 ! 1877: 2E30292C2053554246286F702 ! 1878: 92C202041444446286F70292C ! 1879: 20205355424628302E30292C0 ! 1880: A00 ! 1881: 1861 00000f89 * .text ! 1882: 1862 0002BB4C dd 8f00000f49 pushl $L383 ! 1883: 1863 0002BB52 fe 08 effffff313 callf $8,_writes ! 1884: 1864 0002BB59 # writes( ! 1885: 1865 0002BB59 # " ADDF(op), SUBF(op), ADDF(0.0), SUBF(0.0), ADDF(op), STF\n"); ! 1886: 1866 0002BB59 .data 1 ! 1887: 1867 00000f89 * L384: ! 1888: 1868 00000f89 * 2020202020202020204144444 .ascii " ADDF(op), SUBF(op), ADDF(0.0), SUBF(0.0), ADDF(op), S" ! 1889: 6286F70292C2053554246286F ! 1890: 70292C20204144444628302E3 ! 1891: 0292C205355424628302E3029 ! 1892: 2C2041444446286F70292C202 ! 1893: 053 ! 1894: 1869 00000fc9 * 54460A00 .ascii "TF\12\0" ! 1895: 1870 00000fcd * .text ! 1896: 1871 0002BB59 dd 8f00000f89 pushl $L384 ! 1897: 1872 0002BB5F fe 08 effffff306 callf $8,_writes ! 1898: 1873 0002BB66 # writes("operand = "); ! 1899: 1874 0002BB66 .data 1 ! 1900: 1875 00000fcd * L385: ! 1901: 1876 00000fcd * 6F706572616E64203D2000 .ascii "operand = \0" ! 1902: 1877 00000fd8 * .text ! 1903: 1878 0002BB66 dd 8f00000fcd pushl $L385 ! 1904: 1879 0002BB6C fe 08 effffff2f9 callf $8,_writes ! 1905: 1880 0002BB73 # write32h( sgl_value_1 ); ! 1906: 1881 0002BB73 dd effffff2f3 pushl _sgl_value_1 ! 1907: 1882 0002BB79 fe 08 effffff2ec callf $8,_write32h ! 1908: 1883 0002BB80 # writes(", final Acc = "); ! 1909: 1884 0002BB80 .data 1 ! 1910: 1885 00000fd8 * L386: ! 1911: 1886 00000fd8 * 2C20202066696E616C2041636 .ascii ", final Acc = \0" ! 1912: 3203D2000 ! 1913: 1887 00000fe9 * .text ! 1914: 1888 0002BB80 dd 8f00000fd8 pushl $L386 ! 1915: 1889 0002BB86 fe 08 effffff2df callf $8,_writes ! 1916: 1890 0002BB8D # write32h( sgl_st_acc ); ! 1917: 1891 0002BB8D dd effffff2d9 pushl _sgl_st_acc ! 1918: 1892 0002BB93 fe 08 effffff2d2 callf $8,_write32h ! 1919: 1893 0002BB9A # writes(", data index = "); ! 1920: 1894 0002BB9A .data 1 ! 1921: 1895 00000fe9 * L387: ! 1922: 1896 00000fe9 * 2C2020206461746120696E646 .ascii ", data index = \0" ! 1923: 578203D2000 ! 1924: 1897 00000ffb * .text ! 1925: 1898 0002BB9A dd 8f00000fe9 pushl $L387 ! 1926: 1899 0002BBA0 fe 08 effffff2c5 callf $8,_writes ! 1927: 1900 0002BBA7 # writed( index ); ! 1928: 1901 0002BBA7 dd effffff2bf pushl _index ! 1929: 1902 0002BBAD fe 08 effffff2b8 callf $8,_writed ! 1930: 1903 0002BBB4 # writec('\n'); ! 1931: 1904 0002BBB4 dd 0a pushl $10 ! 1932: 1905 0002BBB6 fe 08 effffff2af callf $8,_writec ! 1933: 1906 0002BBBD # writes(" expected Acc = "); ! 1934: 1907 0002BBBD .data 1 ! 1935: 1908 00000ffb * L388: ! 1936: 1909 00000ffb * 2020202020202020202020202 .ascii " expected Acc = \0" ! 1937: 0202020202020657870656374 ! 1938: 656420416363203D2000 ! 1939: 1910 0000101e * .text ! 1940: 1911 0002BBBD dd 8f00000ffb pushl $L388 ! 1941: 1912 0002BBC3 fe 08 effffff2a2 callf $8,_writes ! 1942: 1913 0002BBCA # write32h( sgl_expected ); ! 1943: 1914 0002BBCA dd effffff29c pushl _sgl_expected ! 1944: 1915 0002BBD0 fe 08 effffff295 callf $8,_write32h ! 1945: 1916 0002BBD7 # writec('\n'); ! 1946: 1917 0002BBD7 dd 0a pushl $10 ! 1947: 1918 0002BBD9 fe 08 effffff28c callf $8,_writec ! 1948: 1919 0002BBE0 # } ! 1949: 1920 0002BBE0 40 ret#2 ! 1950: 1921 0002BBE1 .set L372,0x0 ! 1951: 1922 0002BBE1 L374: ! 1952: 1923 0002BBE1 13 feed jbr L375 ! 1953: 1924 0002BBE4 .data ! 1954: 1925 00000de8 * .text ! 1955: 1926 0002BBE4 .align 1 ! 1956: 1927 0002BBE4 .globl _pipe7_er_hlt ! 1957: 1928 0002BBE4 _pipe7_er_hlt: ! 1958: 1929 0002BBE4 0000 .word L389 ! 1959: 1930 0002BBE6 # ! 1960: 1931 0002BBE6 # ! 1961: 1932 0002BBE6 # ! 1962: 1933 0002BBE6 # ! 1963: 1934 0002BBE6 # ! 1964: 1935 0002BBE6 # /****************************************************************************** ! 1965: 1936 0002BBE6 # * ! 1966: 1937 0002BBE6 # * HALT ON ERROR ROUTINE ! 1967: 1938 0002BBE6 # * ! 1968: 1939 0002BBE6 # * halt with the necessary information saved in the registers ! 1969: 1940 0002BBE6 # * ! 1970: 1941 0002BBE6 # ******************************************************************************/ ! 1971: 1942 0002BBE6 # pipe7_er_hlt( subtest ) ! 1972: 1943 0002BBE6 # int subtest; ! 1973: 1944 0002BBE6 # { ! 1974: 1945 0002BBE6 11 67 jbr L391 ! 1975: 1946 0002BBE8 L392: ! 1976: 1947 0002BBE8 # asm("movl _test_no,r0"); /* r0 = test number */ ! 1977: 1948 0002BBE8 0d effffff27e 50 movl _test_no,r0 ! 1978: 1949 0002BBEF # asm("movl _subtest,r1"); /* r1 = subtest number */ ! 1979: 1950 0002BBEF 0d effffff277 51 movl _subtest,r1 ! 1980: 1951 0002BBF6 # asm("movl $1,r2"); /* r2 = error code */ ! 1981: 1952 0002BBF6 0d 01 52 movl $1,r2 ! 1982: 1953 0002BBF9 # asm("movl _cycle,r3"); /* r3 = cycle count */ ! 1983: 1954 0002BBF9 0d effffff26d 53 movl _cycle,r3 ! 1984: 1955 0002BC00 # asm("movl _sgl_value_1,r4"); /* r4 = sgl operand */ ! 1985: 1956 0002BC00 0d effffff266 54 movl _sgl_value_1,r4 ! 1986: 1957 0002BC07 # asm("movl _sgl_st_acc,r5"); /* r5 = sgl stored */ ! 1987: 1958 0002BC07 0d effffff25f 55 movl _sgl_st_acc,r5 ! 1988: 1959 0002BC0E # asm("movl _sgl_expected,r6"); /* r6 = sgl expected */ ! 1989: 1960 0002BC0E 0d effffff258 56 movl _sgl_expected,r6 ! 1990: 1961 0002BC15 # asm("movl _index,r7"); /* r7 = data index */ ! 1991: 1962 0002BC15 0d effffff251 57 movl _index,r7 ! 1992: 1963 0002BC1C # asm("movl _sgl_value_2,r8"); /* r8 = floating zero */ ! 1993: 1964 0002BC1C 0d effffff24a 58 movl _sgl_value_2,r8 ! 1994: 1965 0002BC23 # if( subtest == 9 ) { ! 1995: 1966 0002BC23 1d ad04 09 cmpl 4(fp),$9 ! 1996: 1967 0002BC27 21 10 jneq L393 ! 1997: 1968 0002BC29 # asm("movl _sgl_value_3,r9"); /* r9 = final SP value */ ! 1998: 1969 0002BC29 0d effffff23d 59 movl _sgl_value_3,r9 ! 1999: 1970 0002BC30 # asm("movl _sgl_value_2,r10"); /* r10 = expected SP value */ ! 2000: 1971 0002BC30 0d effffff236 5a movl _sgl_value_2,r10 ! 2001: 1972 0002BC37 # } else ! 2002: 1973 0002BC37 11 14 jbr L394 ! 2003: 1974 0002BC39 L393: ! 2004: 1975 0002BC39 # if( subtest == 10 ) { ! 2005: 1976 0002BC39 1d ad04 0a cmpl 4(fp),$10 ! 2006: 1977 0002BC3D 21 0e jneq L395 ! 2007: 1978 0002BC3F # asm("movl _sgl_value_3,r9"); /* r9 = final FP value */ ! 2008: 1979 0002BC3F 0d effffff227 59 movl _sgl_value_3,r9 ! 2009: 1980 0002BC46 # asm("movl _sgl_value_2,r10"); /* r10 = expected FP value */ ! 2010: 1981 0002BC46 0d effffff220 5a movl _sgl_value_2,r10 ! 2011: 1982 0002BC4D # }; ! 2012: 1983 0002BC4D L395: ! 2013: 1984 0002BC4D L394: ! 2014: 1985 0002BC4D # asm(".globl _pipe7_1_hlt"); ! 2015: 1986 0002BC4D .globl _pipe7_1_hlt ! 2016: 1987 0002BC4D # asm("_pipe7_1_hlt:"); /* PC after the halt */ ! 2017: 1988 0002BC4D _pipe7_1_hlt: ! 2018: 1989 0002BC4D # asm("halt"); /* HALT ... */ ! 2019: 1990 0002BC4D 00 halt ! 2020: 1991 0002BC4E # } /* end of halt on error */ ! 2021: 1992 0002BC4E 40 ret#2 ! 2022: 1993 0002BC4F .set L389,0x0 ! 2023: 1994 0002BC4F L391: ! 2024: 1995 0002BC4F 11 97 jbr L392 ! 2025: 1996 0002BC51 .data ! 2026: 1996 00056ABD .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.