File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / d / macro4 / pipe10.lst
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Sun Jul 28 12:30:56 2019 UTC (6 years, 11 months ago) by root
Branches: bsd, MAIN
CVS tags: v121, HEAD
Power 6/32 Unix version 1.21

   1  00000000                                  LL0:
   2  00000000                                  	.data
   3  00000278 *                                	.text
   4  00000000                                  	.align	1
   5  00000000                                  	.globl	_pipe_10
   6  00000000                                  _pipe_10:
   7  0002CCDC    0000                          	.word	L215
   8  0002CCDE                                   # #include "fpp_defs.h"
   9  0002CCDE                                   # 
  10  0002CCDE                                   # 
  11  0002CCDE                                   # /*****************************************************************************
  12  0002CCDE                                   # *
  13  0002CCDE                                   # *		PIPELINE TEST #10 
  14  0002CCDE                                   # *
  15  0002CCDE                                   # *	LDF(op1), MULF(op2), STF op3, SUBF op3, STF
  16  0002CCDE                                   # *
  17  0002CCDE                                   # *  -where the operands are the fmacro1 MULF data patterns. The SUBF operand
  18  0002CCDE                                   # *   is the stored result of the MULF.
  19  0002CCDE                                   # *  -If the 1st STF isn't completed before the SUBF data is fetched then we
  20  0002CCDE                                   # *   won't get a final accumulator of zero.
  21  0002CCDE                                   # *****************************************************************************/
  22  0002CCDE                                   # pipe_10()
  23  0002CCDE                                   # {
  24  0002CCDE    13 00ee                       	jbr 	L217
  25  0002CCE1                                  L218:
  26  0002CCE1                                   # 	asm(".globl _pipeline_10_t");
  27  0002CCE1                                  .globl _pipeline_10_t
  28  0002CCE1                                   # 	asm("_pipeline_10_t:");
  29  0002CCE1                                  _pipeline_10_t:
  30  0002CCE1                                   # 	if( (cycle == 1) && (prt_hdrs) )	/* print headers on 1st cycle */
  31  0002CCE1    1d effffffff5 01              	cmpl	_cycle,$1
  32  0002CCE8    21 15                         	jneq	L219
  33  0002CCEA    5d efffffffec                 	tstl	_prt_hdrs
  34  0002CCF0    31 0d                         	jeql	L219
  35  0002CCF2                                   # 	   writes(" PIPE_10");
  36  0002CCF2                                  	.data	1
  37  00000278 *                                L221:
  38  00000278 *  20504950455F313000            	.ascii	" PIPE_10\0"
  39  00000281 *                                	.text
  40  0002CCF2    dd 8f00000278                 	pushl	$L221
  41  0002CCF8    fe 08 efffffffdd              	callf	$8,_writes
  42  0002CCFF                                   # 	force_loop = FALSE;			/* clear force_loop flag */
  43  0002CCFF                                  L219:
  44  0002CCFF    4d efffffffd7                 	clrl	_force_loop
  45  0002CD05                                   # 	for( index = 0; index <= max_mulf_1_index; index++ )
  46  0002CD05    4d efffffffd1                 	clrl	_index
  47  0002CD0B                                  L224:
  48  0002CD0B    1d efffffffcb efffffffc6      	cmpl	_index,_max_mulf_1_index
  49  0002CD16    51 03 13 00ad                 	jgtr	L223
  50  0002CD1B                                   # 	{
  51  0002CD1B                                   # 	      sgl_value_1  = mulf_1_data[index].op_1;	/* get the data    */
  52  0002CD1B    5c 0c efffffffba 50           	mull3	$12,_index,r0
  53  0002CD23    0d e000000000 efffffffae      	movl	_mulf_1_data(r0),_sgl_value_1
  54  0002CD2E                                   # 	      sgl_value_2  = mulf_1_data[index].op_2;	/*   operands      */
  55  0002CD2E    5c 0c efffffffa7 50           	mull3	$12,_index,r0
  56  0002CD36    0d e000000004 efffffff9b      	movl	_mulf_1_data+4(r0),_sgl_value_2
  57  0002CD41                                   # 	      sgl_expected = mulf_1_data[index].exp; 
  58  0002CD41    5c 0c efffffff94 50           	mull3	$12,_index,r0
  59  0002CD49    0d e000000008 efffffff88      	movl	_mulf_1_data+8(r0),_sgl_expected
  60  0002CD54                                   # /*
  61  0002CD54                                   #  *  This is the start of the LOOP ON ERROR section
  62  0002CD54                                   # */
  63  0002CD54                                   # 	      asm("_pipe10_1_lp:");
  64  0002CD54                                  _pipe10_1_lp:
  65  0002CD54                                   # 	      asm("ldf _sgl_value_1");		/* get the 1st operand     */
  66  0002CD54    06 efffffff82                 ldf _sgl_value_1
  67  0002CD5A                                   # 	      asm("mulf _sgl_value_2");		/* multiply by the 2nd op. */
  68  0002CD5A    e6 efffffff7c                 mulf _sgl_value_2
  69  0002CD60                                   # 	      asm("stf _sgl_value_3");		/* save the MULF result    */
  70  0002CD60    26 efffffff76                 stf _sgl_value_3
  71  0002CD66                                   # 	      asm("subf _sgl_value_3");		/* and subtract it again   */
  72  0002CD66    d6 efffffff70                 subf _sgl_value_3
  73  0002CD6C                                   # 	      asm("stf _sgl_st_acc");		/* save the final result   */
  74  0002CD6C    26 efffffff6a                 stf _sgl_st_acc
  75  0002CD72                                   # 	      if( force_loop ) 
  76  0002CD72    5d efffffff64                 	tstl	_force_loop
  77  0002CD78    31 02                         	jeql	L225
  78  0002CD7A                                   # 	            asm("brb _pipe10_1_lp");;	/* loop on the error */
  79  0002CD7A    11 d8                         brb _pipe10_1_lp
  80  0002CD7C                                  L225:
  81  0002CD7C                                   # /*
  82  0002CD7C                                   #  *   Verify the results
  83  0002CD7C                                   # */
  84  0002CD7C                                   # 	      if( sgl_st_acc ) {		/* the Acc s/b cleared */
  85  0002CD7C    5d efffffff5a                 	tstl	_sgl_st_acc
  86  0002CD82    31 3b                         	jeql	L226
  87  0002CD84                                   # 	            errcnt++;			/* bump the error count    */
  88  0002CD84    6d efffffff52                 	incl	_errcnt
  89  0002CD8A                                   # 	            if ( prt_error ) 
  90  0002CD8A    5d efffffff4c                 	tstl	_prt_error
  91  0002CD90    31 07                         	jeql	L227
  92  0002CD92                                   # 			  pipe10_print();	/* print the error mesage  */
  93  0002CD92    fe 04 ef00000039              	callf	$4,_pipe10_print
  94  0002CD99                                   # 	            if ( halt_flg )
  95  0002CD99                                  L227:
  96  0002CD99    5d efffffff3d                 	tstl	_halt_flg
  97  0002CD9F    31 09                         	jeql	L229
  98  0002CDA1                                   # 	                  pipe10_halt( 1 );	/* halt on the error       */
  99  0002CDA1    dd 01                         	pushl	$1
 100  0002CDA3    fe 08 ef00000156              	callf	$8,_pipe10_halt
 101  0002CDAA                                   # 	            if ( loop_on_err ) {
 102  0002CDAA                                  L229:
 103  0002CDAA    5d efffffff2c                 	tstl	_loop_on_err
 104  0002CDB0    31 0d                         	jeql	L231
 105  0002CDB2                                   # 			  force_loop = TRUE;
 106  0002CDB2    0d 01 efffffff23              	movl	$1,_force_loop
 107  0002CDB9                                   # 	                  asm("jmp _pipe10_1_lp");;   
 108  0002CDB9    71 efffffff95                 jmp _pipe10_1_lp
 109  0002CDBF                                   # 	            }
 110  0002CDBF                                   # 	      }
 111  0002CDBF                                  L231:
 112  0002CDBF                                   # 	} 
 113  0002CDBF                                  L226:
 114  0002CDBF                                  L222:
 115  0002CDBF    6d efffffff17                 	incl	_index
 116  0002CDC5    13 ff43                       	jbr 	L224
 117  0002CDC8                                  L223:
 118  0002CDC8                                   # 	asm("jmp *return");		/* return to the test monitor       */
 119  0002CDC8    71 ffffffff0e                 jmp *return
 120  0002CDCE                                   # }
 121  0002CDCE    40                            	ret#2
 122  0002CDCF                                  	.set	L215,0x0
 123  0002CDCF                                  L217:
 124  0002CDCF    13 ff0f                       	jbr 	L218
 125  0002CDD2                                  	.data
 126  00000278 *                                	.text
 127  0002CDD2                                  	.align	1
 128  0002CDD2                                  	.globl	_pipe10_print
 129  0002CDD2                                  _pipe10_print:
 130  0002CDD2    0000                          	.word	L232
 131  0002CDD4                                   # 
 132  0002CDD4                                   # 
 133  0002CDD4                                   # 
 134  0002CDD4                                   # 
 135  0002CDD4                                   # /*
 136  0002CDD4                                   #  **************************************************************************
 137  0002CDD4                                   #  *
 138  0002CDD4                                   #  *		print an error message of the form
 139  0002CDD4                                   #  *
 140  0002CDD4                                   #  * cycle: xx  Test xx, Error subtracting the stored data (op3),  index = xx
 141  0002CDD4                                   #  * test sequence = LDF(op1), MULF(op2), STF(op3), SUBF(op3), STF
 142  0002CDD4                                   #  * operand 1 = xxxxxxxx,     final Acc = xxxxxxxx,   data index = dd
 143  0002CDD4                                   #  * operand 2 = xxxxxxxx,  expected Acc = xxxxxxxx
 144  0002CDD4                                   #  * operand 3 = xxxxxxxx,  expected op3 = xxxxxxxx
 145  0002CDD4                                   # **************************************************************************/
 146  0002CDD4                                   # pipe10_print()
 147  0002CDD4                                   # {
 148  0002CDD4    13 0125                       	jbr 	L234
 149  0002CDD7                                  L235:
 150  0002CDD7                                   # 	writes(" \n");		/* start a new print line   */
 151  0002CDD7                                  	.data	1
 152  00000281 *                                L236:
 153  00000281 *  200A00                        	.ascii	" \12\0"
 154  00000284 *                                	.text
 155  0002CDD7    dd 8f00000281                 	pushl	$L236
 156  0002CDDD    fe 08 effffffef8              	callf	$8,_writes
 157  0002CDE4                                   # 	writes("cycle: ");
 158  0002CDE4                                  	.data	1
 159  00000284 *                                L237:
 160  00000284 *  6379636C653A2000              	.ascii	"cycle: \0"
 161  0000028c *                                	.text
 162  0002CDE4    dd 8f00000284                 	pushl	$L237
 163  0002CDEA    fe 08 effffffeeb              	callf	$8,_writes
 164  0002CDF1                                   # 	writed( cycle );
 165  0002CDF1    dd effffffee5                 	pushl	_cycle
 166  0002CDF7    fe 08 effffffede              	callf	$8,_writed
 167  0002CDFE                                   # 	writes("  Test ");
 168  0002CDFE                                  	.data	1
 169  0000028c *                                L239:
 170  0000028c *  2020546573742000              	.ascii	"  Test \0"
 171  00000294 *                                	.text
 172  0002CDFE    dd 8f0000028c                 	pushl	$L239
 173  0002CE04    fe 08 effffffed1              	callf	$8,_writes
 174  0002CE0B                                   # 	writed( test_no );
 175  0002CE0B    dd effffffecb                 	pushl	_test_no
 176  0002CE11    fe 08 effffffec4              	callf	$8,_writed
 177  0002CE18                                   # 	writes("   (Pipe 10), error\n");
 178  0002CE18                                  	.data	1
 179  00000294 *                                L240:
 180  00000294 *  2020202850697065203130292     	.ascii	"   (Pipe 10), error\12\0"
                  C206572726F720A00
 181  000002a9 *                                	.text
 182  0002CE18    dd 8f00000294                 	pushl	$L240
 183  0002CE1E    fe 08 effffffeb7              	callf	$8,_writes
 184  0002CE25                                   # 	writes(" LDF(op1), MULF(op2), STF(op3), SUBF(op3), STF\n");
 185  0002CE25                                  	.data	1
 186  000002a9 *                                L241:
 187  000002a9 *  204C4446286F7031292C204D5     	.ascii	" LDF(op1), MULF(op2), STF(op3), SUBF(op3), STF\12\0"
                  54C46286F7032292C20535446
                  286F7033292C2053554246286
                  F7033292C205354460A00
 188  000002d9 *                                	.text
 189  0002CE25    dd 8f000002a9                 	pushl	$L241
 190  0002CE2B    fe 08 effffffeaa              	callf	$8,_writes
 191  0002CE32                                   # 	writes("operand 1 = ");
 192  0002CE32                                  	.data	1
 193  000002d9 *                                L242:
 194  000002d9 *  6F706572616E642031203D200     	.ascii	"operand 1 = \0"
                  0
 195  000002e6 *                                	.text
 196  0002CE32    dd 8f000002d9                 	pushl	$L242
 197  0002CE38    fe 08 effffffe9d              	callf	$8,_writes
 198  0002CE3F                                   #  	write32h( sgl_value_1 );
 199  0002CE3F    dd effffffe97                 	pushl	_sgl_value_1
 200  0002CE45    fe 08 effffffe90              	callf	$8,_write32h
 201  0002CE4C                                   # 	writes(",     final Acc = ");
 202  0002CE4C                                  	.data	1
 203  000002e6 *                                L244:
 204  000002e6 *  2C202020202066696E616C204     	.ascii	",     final Acc = \0"
                  16363203D2000
 205  000002f9 *                                	.text
 206  0002CE4C    dd 8f000002e6                 	pushl	$L244
 207  0002CE52    fe 08 effffffe83              	callf	$8,_writes
 208  0002CE59                                   # 	write32h( sgl_st_acc );
 209  0002CE59    dd effffffe7d                 	pushl	_sgl_st_acc
 210  0002CE5F    fe 08 effffffe76              	callf	$8,_write32h
 211  0002CE66                                   # 	writes(",   data index = ");
 212  0002CE66                                  	.data	1
 213  000002f9 *                                L245:
 214  000002f9 *  2C2020206461746120696E646     	.ascii	",   data index = \0"
                  578203D2000
 215  0000030b *                                	.text
 216  0002CE66    dd 8f000002f9                 	pushl	$L245
 217  0002CE6C    fe 08 effffffe69              	callf	$8,_writes
 218  0002CE73                                   # 	writed( index );
 219  0002CE73    dd effffffe63                 	pushl	_index
 220  0002CE79    fe 08 effffffe5c              	callf	$8,_writed
 221  0002CE80                                   # 	writec('\n');
 222  0002CE80    dd 0a                         	pushl	$10
 223  0002CE82    fe 08 effffffe53              	callf	$8,_writec
 224  0002CE89                                   # 	writes("operand 2 = ");
 225  0002CE89                                  	.data	1
 226  0000030b *                                L247:
 227  0000030b *  6F706572616E642032203D200     	.ascii	"operand 2 = \0"
                  0
 228  00000318 *                                	.text
 229  0002CE89    dd 8f0000030b                 	pushl	$L247
 230  0002CE8F    fe 08 effffffe46              	callf	$8,_writes
 231  0002CE96                                   # 	write32h( sgl_value_2 );
 232  0002CE96    dd effffffe40                 	pushl	_sgl_value_2
 233  0002CE9C    fe 08 effffffe39              	callf	$8,_write32h
 234  0002CEA3                                   # 	writes(",  expected Acc = ");
 235  0002CEA3                                  	.data	1
 236  00000318 *                                L248:
 237  00000318 *  2C20206578706563746564204     	.ascii	",  expected Acc = \0"
                  16363203D2000
 238  0000032b *                                	.text
 239  0002CEA3    dd 8f00000318                 	pushl	$L248
 240  0002CEA9    fe 08 effffffe2c              	callf	$8,_writes
 241  0002CEB0                                   # 	write32h( 0 );
 242  0002CEB0    dd 00                         	pushl	$0
 243  0002CEB2    fe 08 effffffe23              	callf	$8,_write32h
 244  0002CEB9                                   # 	writec('\n');
 245  0002CEB9    dd 0a                         	pushl	$10
 246  0002CEBB    fe 08 effffffe1a              	callf	$8,_writec
 247  0002CEC2                                   # 	writes("operand 3 = ");
 248  0002CEC2                                  	.data	1
 249  0000032b *                                L249:
 250  0000032b *  6F706572616E642033203D200     	.ascii	"operand 3 = \0"
                  0
 251  00000338 *                                	.text
 252  0002CEC2    dd 8f0000032b                 	pushl	$L249
 253  0002CEC8    fe 08 effffffe0d              	callf	$8,_writes
 254  0002CECF                                   # 	write32h( sgl_value_3 );
 255  0002CECF    dd effffffe07                 	pushl	_sgl_value_3
 256  0002CED5    fe 08 effffffe00              	callf	$8,_write32h
 257  0002CEDC                                   # 	writes(",  expected op3 = ");
 258  0002CEDC                                  	.data	1
 259  00000338 *                                L250:
 260  00000338 *  2C20206578706563746564206     	.ascii	",  expected op3 = \0"
                  F7033203D2000
 261  0000034b *                                	.text
 262  0002CEDC    dd 8f00000338                 	pushl	$L250
 263  0002CEE2    fe 08 effffffdf3              	callf	$8,_writes
 264  0002CEE9                                   # 	write32h( 0 );
 265  0002CEE9    dd 00                         	pushl	$0
 266  0002CEEB    fe 08 effffffdea              	callf	$8,_write32h
 267  0002CEF2                                   # 	writec('\n');
 268  0002CEF2    dd 0a                         	pushl	$10
 269  0002CEF4    fe 08 effffffde1              	callf	$8,_writec
 270  0002CEFB                                   # }
 271  0002CEFB    40                            	ret#2
 272  0002CEFC                                  	.set	L232,0x0
 273  0002CEFC                                  L234:
 274  0002CEFC    13 fed8                       	jbr 	L235
 275  0002CEFF                                  	.data
 276  00000278 *                                	.text
 277  0002CEFF    00                            	.align	1
 278  0002CF00                                  	.globl	_pipe10_halt
 279  0002CF00                                  _pipe10_halt:
 280  0002CF00    0000                          	.word	L251
 281  0002CF02                                   # 
 282  0002CF02                                   # 
 283  0002CF02                                   # 
 284  0002CF02                                   # /*
 285  0002CF02                                   #  **************************************************************************
 286  0002CF02                                   #  *
 287  0002CF02                                   #  *		HALT ON AN ERROR
 288  0002CF02                                   #  *
 289  0002CF02                                   #  **************************************************************************
 290  0002CF02                                   # */
 291  0002CF02                                   # pipe10_halt()
 292  0002CF02                                   # {
 293  0002CF02    11 4d                         	jbr 	L253
 294  0002CF04                                  L254:
 295  0002CF04                                   # 	 sgl_value_4 = 0;
 296  0002CF04    4d effffffdd2                 	clrl	_sgl_value_4
 297  0002CF0A                                   # 	 asm("movl _test_no,r0");	/* r0  = test number        */
 298  0002CF0A    0d effffffdcc 50              movl _test_no,r0
 299  0002CF11                                   # 	 asm("movl $1,r1");		/* r1  = subtest number     */
 300  0002CF11    0d 01 51                      movl $1,r1
 301  0002CF14                                   # 	 asm("movl $1,r2");		/* r2  = error code         */
 302  0002CF14    0d 01 52                      movl $1,r2
 303  0002CF17                                   # 	 asm("movl _cycle,r3");		/* r3  = cycle count        */
 304  0002CF17    0d effffffdbf 53              movl _cycle,r3
 305  0002CF1E                                   # 	 asm("movl _sgl_value_1,r4");	/* r4  = sgl operand #1     */
 306  0002CF1E    0d effffffdb8 54              movl _sgl_value_1,r4
 307  0002CF25                                   # 	 asm("movl _sgl_value_2,r5");	/* r5  = sgl operand #2     */
 308  0002CF25    0d effffffdb1 55              movl _sgl_value_2,r5
 309  0002CF2C                                   # 	 asm("movl _sgl_value_3,r6");	/* r6  = sgl operand #3     */
 310  0002CF2C    0d effffffdaa 56              movl _sgl_value_3,r6
 311  0002CF33                                   # 	 asm("movl _sgl_st_acc,r7");	/* r7  = sgl stored         */
 312  0002CF33    0d effffffda3 57              movl _sgl_st_acc,r7
 313  0002CF3A                                   # 	 asm("movl _sgl_expected,r8");	/* r8  = sgl expected       */
 314  0002CF3A    0d effffffd9c 58              movl _sgl_expected,r8
 315  0002CF41                                   # 	 asm("movl _sgl_value_4,r9");	/* r9  = op3 expected       */
 316  0002CF41    0d effffffd95 59              movl _sgl_value_4,r9
 317  0002CF48                                   # 	 asm("movl _index,r10");	/* r10  = data index        */
 318  0002CF48    0d effffffd8e 5a              movl _index,r10
 319  0002CF4F                                   # 	 asm("halt");			/* HALT ...                 */
 320  0002CF4F    00                            halt
 321  0002CF50                                   # }  
 322  0002CF50    40                            	ret#2
 323  0002CF51                                  	.set	L251,0x0
 324  0002CF51                                  L253:
 325  0002CF51    11 b1                         	jbr 	L254
 326  0002CF53                                  	.data
 326  00059C2F                                  	.data

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.