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

   1  00000000                                  LL0:
   2  00000000                                  	.data
   3  00000d58 *                                	.text
   4  00000000                                  	.align	1
   5  00000000                                  	.globl	_mull2
   6  00000000                                  _mull2:
   7  00023F34    0000                          	.word	L215
   8  00023F36                                   # #include "fpp_defs.h"
   9  00023F36                                   # 
  10  00023F36                                   # 
  11  00023F36                                   # /***************************************************************************
  12  00023F36                                   # *
  13  00023F36                                   # *       MULL2 -MULTIPLY INTEGER 2 INSTRUCTION TEST
  14  00023F36                                   # *
  15  00023F36                                   # *****************************************************************************/
  16  00023F36                                   # mull2()
  17  00023F36                                   # {
  18  00023F36    11 4f                         	jbr 	L217
  19  00023F38                                  L218:
  20  00023F38                                   #         asm(".globl _mull2_t");
  21  00023F38                                  .globl _mull2_t
  22  00023F38                                   #         asm("_mull2_t:");                       /* entry address            */
  23  00023F38                                  _mull2_t:
  24  00023F38                                   #         if( (cycle == 1) && (prt_hdrs) )        /* print headers on 1st cycle */
  25  00023F38    1d effffffff6 01              	cmpl	_cycle,$1
  26  00023F3F    21 15                         	jneq	L219
  27  00023F41    5d efffffffed                 	tstl	_prt_hdrs
  28  00023F47    31 0d                         	jeql	L219
  29  00023F49                                   #         {
  30  00023F49                                   #            writes(" MULL2");
  31  00023F49                                  	.data	1
  32  00000d58 *                                L221:
  33  00000d58 *  204D554C4C3200                	.ascii	" MULL2\0"
  34  00000d5f *                                	.text
  35  00023F49    dd 8f00000d58                 	pushl	$L221
  36  00023F4F    fe 08 efffffffde              	callf	$8,_writes
  37  00023F56                                   #         }
  38  00023F56                                   #         mull2_1();                              /* register data / SGL acc. */
  39  00023F56                                  L219:
  40  00023F56    fe 04 ef0000002d              	callf	$4,_mull2_1
  41  00023F5D                                   #         mull2_2();                              /* memory data   / DBL acc. */
  42  00023F5D    fe 04 ef000001d2              	callf	$4,_mull2_2
  43  00023F64                                   #         mull2_3();                              /* register corruption test */
  44  00023F64    fe 04 ef000003db              	callf	$4,_mull2_3
  45  00023F6B                                   #         mull2_4();                              /* PSL corruption test      */
  46  00023F6B    fe 04 ef0000056a              	callf	$4,_mull2_4
  47  00023F72                                   #         mull2_5();                              /* pipelined entry test     */
  48  00023F72    fe 04 ef0000070d              	callf	$4,_mull2_5
  49  00023F79                                   #         mull2_6();                              /* pipelined exit test      */
  50  00023F79    fe 04 ef000008d8              	callf	$4,_mull2_6
  51  00023F80                                   #         asm("jmp *return");                     /* return to the test monitor */
  52  00023F80    71 ffffffffae                 jmp *return
  53  00023F86                                   # }
  54  00023F86    40                            	ret#2
  55  00023F87                                  	.set	L215,0x0
  56  00023F87                                  L217:
  57  00023F87    11 af                         	jbr 	L218
  58  00023F89                                  	.data
  59  00000d58 *                                	.text
  60  00023F89    00                            	.align	1
  61  00023F8A                                  	.globl	_mull2_1
  62  00023F8A                                  _mull2_1:
  63  00023F8A    0000                          	.word	L228
  64  00023F8C                                   #   
  65  00023F8C                                   # 
  66  00023F8C                                   # 
  67  00023F8C                                   # /************************************************************************
  68  00023F8C                                   # *
  69  00023F8C                                   # *        SUBTEST 1 - register addressing / single precsion accumulator
  70  00023F8C                                   # *
  71  00023F8C                                   # ************************************************************************/
  72  00023F8C                                   # mull2_1() 
  73  00023F8C                                   # {
  74  00023F8C    13 01a4                       	jbr 	L230
  75  00023F8F                                  L231:
  76  00023F8F                                   #         force_loop = FALSE;
  77  00023F8F    4d efffffff9f                 	clrl	_force_loop
  78  00023F95                                   #         subtest = 1;
  79  00023F95    0d 01 efffffff98              	movl	$1,_subtest
  80  00023F9C                                   #         for( index = 0; index < max_mull_1_index; index++ ) {
  81  00023F9C    4d efffffff92                 	clrl	_index
  82  00023FA2                                  L234:
  83  00023FA2    1d efffffff8c efffffff87      	cmpl	_index,_max_mull_1_index
  84  00023FAD    91 03 13 0180                 	jgeq	L233
  85  00023FB2                                   #            sgl_value_1  = mull_1_data[index].op_1; /* get operand 1        */
  86  00023FB2    5c 0c efffffff7b 50           	mull3	$12,_index,r0
  87  00023FBA    0d e000000000 efffffff6f      	movl	_mull_1_data(r0),_sgl_value_1
  88  00023FC5                                   #            sgl_value_2  = mull_1_data[index].op_2; /* get operand 2        */
  89  00023FC5    5c 0c efffffff68 50           	mull3	$12,_index,r0
  90  00023FCD    0d e000000004 efffffff5c      	movl	_mull_1_data+4(r0),_sgl_value_2
  91  00023FD8                                   # 	   sgl_value_4  = mull_1_data[index].exp;  /* get expected results */
  92  00023FD8    5c 0c efffffff55 50           	mull3	$12,_index,r0
  93  00023FE0    0d e000000008 efffffff49      	movl	_mull_1_data+8(r0),_sgl_value_4
  94  00023FEB                                   #            sgl_ld_acc   = 0x12345678;		   /* set acc data pattern */
  95  00023FEB    0d 8f12345678 efffffff3e      	movl	$305419896,_sgl_ld_acc
  96  00023FF6                                   # 	   sgl_expected = sgl_ld_acc;		   /* final Acc expected   */
  97  00023FF6    0d efffffff38 efffffff33      	movl	_sgl_ld_acc,_sgl_expected
  98  00024001                                   # /*
  99  00024001                                   #  * If LOOP ON ERROR is set, this is the loop for this subtest.
 100  00024001                                   # */
 101  00024001                                   #            asm("_mull2_1_lp1:");
 102  00024001                                  _mull2_1_lp1:
 103  00024001                                   #            asm("movl _sgl_value_1,r3");         /* move the 1st data to r3 */
 104  00024001    0d efffffff2d 53              movl _sgl_value_1,r3
 105  00024008                                   #            asm("movl _sgl_value_2,r4");         /* move the 2nd data to r4 */
 106  00024008    0d efffffff26 54              movl _sgl_value_2,r4
 107  0002400F                                   #            asm("movl _sgl_ld_acc,r5");  	/* move the acc data to r5 */
 108  0002400F    0d efffffff1f 55              movl _sgl_ld_acc,r5
 109  00024016                                   #            asm("ldf r5");			/* load the acc            */
 110  00024016    06 55                         ldf r5
 111  00024018                                   # 	   asm("mull2 r3,r4");                  /* do the multiply         */
 112  00024018    4c 53 54                      mull2 r3,r4
 113  0002401B                                   #            asm("nop");
 114  0002401B    10                            nop
 115  0002401C                                   #            asm("stf _sgl_st_acc");		/* save the acc            */
 116  0002401C    26 efffffff12                 stf _sgl_st_acc
 117  00024022                                   #            if( force_loop )
 118  00024022    5d efffffff0c                 	tstl	_force_loop
 119  00024028    31 02                         	jeql	L235
 120  0002402A                                   #                 asm("brb _mull2_1_lp1");;
 121  0002402A    11 d5                         brb _mull2_1_lp1
 122  0002402C                                  L235:
 123  0002402C                                   #            asm("movl r4,_sgl_value_3");
 124  0002402C    0d 54 efffffff01              movl r4,_sgl_value_3
 125  00024033                                   # 	   if( sgl_expected != sgl_st_acc )  {   /* COMPARE the values      */
 126  00024033    1d effffffefb effffffef6      	cmpl	_sgl_expected,_sgl_st_acc
 127  0002403E    21 03 13 0098                 	jeql	L236
 128  00024043                                   #               errcnt++;                         /* bump the error count    */
 129  00024043    6d effffffeeb                 	incl	_errcnt
 130  00024049                                   #               if ( prt_error ) {
 131  00024049    5d effffffee5                 	tstl	_prt_error
 132  0002404F    31 64                         	jeql	L237
 133  00024051                                   #                   print_mull2_error("(Reg. Data) -THE ACC WAS MODIFIED");
 134  00024051                                  	.data	1
 135  00000d5f *                                L239:
 136  00000d5f *  285265672E204461746129202     	.ascii	"(Reg. Data) -THE ACC WAS MODIFIED\0"
                  D544845204143432057415320
                  4D4F44494649454400
 137  00000d81 *                                	.text
 138  00024051    dd 8f00000d5f                 	pushl	$L239
 139  00024057    fe 08 ef000009cc              	callf	$8,_print_mull2_error
 140  0002405E                                   # 		  writes("initial Acc = ");
 141  0002405E                                  	.data	1
 142  00000d81 *                                L240:
 143  00000d81 *  696E697469616C20416363203     	.ascii	"initial Acc = \0"
                  D2000
 144  00000d90 *                                	.text
 145  0002405E    dd 8f00000d81                 	pushl	$L240
 146  00024064    fe 08 effffffec9              	callf	$8,_writes
 147  0002406B                                   #                   write32h( sgl_ld_acc );
 148  0002406B    dd effffffec3                 	pushl	_sgl_ld_acc
 149  00024071    fe 08 effffffebc              	callf	$8,_write32h
 150  00024078                                   #                   writes(",     final Acc = ");
 151  00024078                                  	.data	1
 152  00000d90 *                                L242:
 153  00000d90 *  2C202020202066696E616C204     	.ascii	",     final Acc = \0"
                  16363203D2000
 154  00000da3 *                                	.text
 155  00024078    dd 8f00000d90                 	pushl	$L242
 156  0002407E    fe 08 effffffeaf              	callf	$8,_writes
 157  00024085                                   #                   write32h( sgl_st_acc );
 158  00024085    dd effffffea9                 	pushl	_sgl_st_acc
 159  0002408B    fe 08 effffffea2              	callf	$8,_write32h
 160  00024092                                   # 		  writes("\n                         expected Acc = ");
 161  00024092                                  	.data	1
 162  00000da3 *                                L243:
 163  00000da3 *  0A20202020202020202020202     	.ascii	"\12                         expected Acc = \0"
                  0202020202020202020202020
                  2065787065637465642041636
                  3203D2000
 164  00000dcd *                                	.text
 165  00024092    dd 8f00000da3                 	pushl	$L243
 166  00024098    fe 08 effffffe95              	callf	$8,_writes
 167  0002409F                                   #                   write32h( sgl_expected );
 168  0002409F    dd effffffe8f                 	pushl	_sgl_expected
 169  000240A5    fe 08 effffffe88              	callf	$8,_write32h
 170  000240AC                                   #                   writec('\n');
 171  000240AC    dd 0a                         	pushl	$10
 172  000240AE    fe 08 effffffe7f              	callf	$8,_writec
 173  000240B5                                   #               }
 174  000240B5                                   # 	      if ( halt_flg )                   /* halt on error?          */
 175  000240B5                                  L237:
 176  000240B5    5d effffffe79                 	tstl	_halt_flg
 177  000240BB    31 09                         	jeql	L245
 178  000240BD                                   #                   mull2_halt( 4 );
 179  000240BD    dd 04                         	pushl	$4
 180  000240BF    fe 08 ef00000a6a              	callf	$8,_mull2_halt
 181  000240C6                                   #               if ( loop_on_err ) {
 182  000240C6                                  L245:
 183  000240C6    5d effffffe68                 	tstl	_loop_on_err
 184  000240CC    31 0d                         	jeql	L247
 185  000240CE                                   #                   force_loop = TRUE;            /* set the force loop flag */
 186  000240CE    0d 01 effffffe5f              	movl	$1,_force_loop
 187  000240D5                                   #                   asm("jmp _mull2_1_lp1");      /* and loop                */
 188  000240D5    71 efffffff26                 jmp _mull2_1_lp1
 189  000240DB                                   #               }  /* end of loop-on-error */
 190  000240DB                                   #            } /* end of acc corr error */
 191  000240DB                                  L247:
 192  000240DB                                   # 	   if( sgl_value_4 != sgl_value_3 )    /* COMPARE the values      */
 193  000240DB                                  L236:
 194  000240DB    1d effffffe53 effffffe4e      	cmpl	_sgl_value_4,_sgl_value_3
 195  000240E6    31 41                         	jeql	L248
 196  000240E8                                   #            {
 197  000240E8                                   #               errcnt++;                         /* bump the error count    */
 198  000240E8    6d effffffe46                 	incl	_errcnt
 199  000240EE                                   #               if ( prt_error ) {
 200  000240EE    5d effffffe40                 	tstl	_prt_error
 201  000240F4    31 0d                         	jeql	L249
 202  000240F6                                   #                   print_mull2_error("(Reg. Data) -BAD MULTIPLY RESULT");
 203  000240F6                                  	.data	1
 204  00000dcd *                                L250:
 205  00000dcd *  285265672E204461746129202     	.ascii	"(Reg. Data) -BAD MULTIPLY RESULT\0"
                  D424144204D554C5449504C59
                  20524553554C5400
 206  00000dee *                                	.text
 207  000240F6    dd 8f00000dcd                 	pushl	$L250
 208  000240FC    fe 08 ef00000927              	callf	$8,_print_mull2_error
 209  00024103                                   #               }
 210  00024103                                   # 	      if ( halt_flg )                   /* halt on error?          */
 211  00024103                                  L249:
 212  00024103    5d effffffe2b                 	tstl	_halt_flg
 213  00024109    31 09                         	jeql	L251
 214  0002410B                                   #                   mull2_halt( 1 );
 215  0002410B    dd 01                         	pushl	$1
 216  0002410D    fe 08 ef00000a1c              	callf	$8,_mull2_halt
 217  00024114                                   #               if ( loop_on_err ) {
 218  00024114                                  L251:
 219  00024114    5d effffffe1a                 	tstl	_loop_on_err
 220  0002411A    31 0d                         	jeql	L252
 221  0002411C                                   #                   force_loop = TRUE;            /* set the force loop flag */
 222  0002411C    0d 01 effffffe11              	movl	$1,_force_loop
 223  00024123                                   #                   asm("jmp _mull2_1_lp1");      /* and loop                */
 224  00024123    71 effffffed8                 jmp _mull2_1_lp1
 225  00024129                                   #               }  /* end of loop-on-error */
 226  00024129                                   #            } /* end of multiply error */
 227  00024129                                  L252:
 228  00024129                                   #         }
 229  00024129                                  L248:
 230  00024129                                  L232:
 231  00024129    6d effffffe05                 	incl	_index
 232  0002412F    13 fe70                       	jbr 	L234
 233  00024132                                  L233:
 234  00024132                                   # }  /* end of subtest 1 */
 235  00024132    40                            	ret#2
 236  00024133                                  	.set	L228,0x0
 237  00024133                                  L230:
 238  00024133    13 fe59                       	jbr 	L231
 239  00024136                                  	.data
 240  00000d58 *                                	.text
 241  00024136                                  	.align	1
 242  00024136                                  	.globl	_mull2_2
 243  00024136                                  _mull2_2:
 244  00024136    0000                          	.word	L253
 245  00024138                                   #   
 246  00024138                                   # 
 247  00024138                                   # 
 248  00024138                                   # /************************************************************************
 249  00024138                                   # *
 250  00024138                                   # *        SUBTEST 2 - cache addressing / double precsion accumulator
 251  00024138                                   # *
 252  00024138                                   # ************************************************************************/
 253  00024138                                   # mull2_2() 
 254  00024138                                   # {
 255  00024138    13 0207                       	jbr 	L255
 256  0002413B                                  L256:
 257  0002413B                                   #         force_loop = FALSE;
 258  0002413B    4d effffffdf3                 	clrl	_force_loop
 259  00024141                                   #         subtest = 2;
 260  00024141    0d 02 effffffdec              	movl	$2,_subtest
 261  00024148                                   #         for( index = 0; index < max_mull_1_index; index++ ) {
 262  00024148    4d effffffde6                 	clrl	_index
 263  0002414E                                  L259:
 264  0002414E    1d effffffde0 effffffddb      	cmpl	_index,_max_mull_1_index
 265  00024159    91 03 13 01e3                 	jgeq	L258
 266  0002415E                                   #            sgl_value_1  = mull_1_data[index].op_1; /* get operand 1        */
 267  0002415E    5c 0c effffffdcf 50           	mull3	$12,_index,r0
 268  00024166    0d e000000000 effffffdc3      	movl	_mull_1_data(r0),_sgl_value_1
 269  00024171                                   #            sgl_value_2  = mull_1_data[index].op_2; /* get operand 2        */
 270  00024171    5c 0c effffffdbc 50           	mull3	$12,_index,r0
 271  00024179    0d e000000004 effffffdb0      	movl	_mull_1_data+4(r0),_sgl_value_2
 272  00024184                                   # 	   sgl_value_4  = mull_1_data[index].exp;  /* get expected results */
 273  00024184    5c 0c effffffda9 50           	mull3	$12,_index,r0
 274  0002418C    0d e000000008 effffffd9d      	movl	_mull_1_data+8(r0),_sgl_value_4
 275  00024197                                   #            dbl_ld_acc.m = 0x12345678;		   /* set acc data pattern */
 276  00024197    0d 8f12345678 effffffd92      	movl	$305419896,_dbl_ld_acc
 277  000241A2                                   #            dbl_ld_acc.l = 0x9abcdef0;
 278  000241A2    0d 8f9abcdef0 effffffd8b      	movl	$-1698898192,_dbl_ld_acc+4
 279  000241AD                                   # 	   dbl_expected.m = dbl_ld_acc.m;	   /* final Acc expected   */
 280  000241AD    0d effffffd81 effffffd7c      	movl	_dbl_ld_acc,_dbl_expected
 281  000241B8                                   # 	   dbl_expected.l = dbl_ld_acc.l;
 282  000241B8    0d effffffd7a effffffd75      	movl	_dbl_ld_acc+4,_dbl_expected+4
 283  000241C3                                   # /*
 284  000241C3                                   #  * If LOOP ON ERROR is set, this is the loop for this subtest.
 285  000241C3                                   # */
 286  000241C3                                   #            asm("_mull2_2_lp1:");
 287  000241C3                                  _mull2_2_lp1:
 288  000241C3                                   # 	   sgl_value_3 = sgl_value_2;		/* set initial op 2 data   */
 289  000241C3    0d effffffd6b effffffd66      	movl	_sgl_value_2,_sgl_value_3
 290  000241CE                                   #            asm("ldd _dbl_ld_acc");		/* load the acc            */
 291  000241CE    07 effffffd60                 ldd _dbl_ld_acc
 292  000241D4                                   # 	   asm("mull2 _sgl_value_1,_sgl_value_3"); /* multiply the integers */
 293  000241D4    4c effffffd5a effffffd55      mull2 _sgl_value_1,_sgl_value_3
 294  000241DF                                   #            asm("nop");
 295  000241DF    10                            nop
 296  000241E0                                   #            asm("std _dbl_st_acc");		/* save the acc            */
 297  000241E0    27 effffffd4e                 std _dbl_st_acc
 298  000241E6                                   #            if( force_loop )
 299  000241E6    5d effffffd48                 	tstl	_force_loop
 300  000241EC    31 02                         	jeql	L260
 301  000241EE                                   #                 asm("brb _mull2_2_lp1");;
 302  000241EE    11 d3                         brb _mull2_2_lp1
 303  000241F0                                  L260:
 304  000241F0                                   # 	   if( (dbl_expected.m != dbl_st_acc.m) ||    /* COMPARE the Acc */
 305  000241F0                                   # 	       (dbl_expected.l != dbl_st_acc.l) )  { 
 306  000241F0    1d effffffd3e effffffd39      	cmpl	_dbl_expected,_dbl_st_acc
 307  000241FB    21 10                         	jneq	L9999
 308  000241FD    1d effffffd35 effffffd30      	cmpl	_dbl_expected+4,_dbl_st_acc+4
 309  00024208    21 03 13 00dd                 	jeql	L261
 310  0002420D                                  L9999:
 311  0002420D                                   #               errcnt++;                         /* bump the error count    */
 312  0002420D    6d effffffd21                 	incl	_errcnt
 313  00024213                                   #               if ( prt_error ) {
 314  00024213    5d effffffd1b                 	tstl	_prt_error
 315  00024219    21 03 13 00a6                 	jeql	L262
 316  0002421E                                   #                   print_mull2_error("(Memory data) -THE ACC WAS MODIFIED");
 317  0002421E                                  	.data	1
 318  00000dee *                                L263:
 319  00000dee *  284D656D6F727920646174612     	.ascii	"(Memory data) -THE ACC WAS MODIFIED\0"
                  9202D54484520414343205741
                  53204D4F44494649454400
 320  00000e12 *                                	.text
 321  0002421E    dd 8f00000dee                 	pushl	$L263
 322  00024224    fe 08 ef000007ff              	callf	$8,_print_mull2_error
 323  0002422B                                   # 		  writes("initial Acc = ");
 324  0002422B                                  	.data	1
 325  00000e12 *                                L264:
 326  00000e12 *  696E697469616C20416363203     	.ascii	"initial Acc = \0"
                  D2000
 327  00000e21 *                                	.text
 328  0002422B    dd 8f00000e12                 	pushl	$L264
 329  00024231    fe 08 effffffcfc              	callf	$8,_writes
 330  00024238                                   #                   write32h( dbl_ld_acc.m );
 331  00024238    dd effffffcf6                 	pushl	_dbl_ld_acc
 332  0002423E    fe 08 effffffcef              	callf	$8,_write32h
 333  00024245                                   # 		  writec(' ');
 334  00024245    dd 20                         	pushl	$32
 335  00024247    fe 08 effffffce6              	callf	$8,_writec
 336  0002424E                                   #                   write32h( dbl_ld_acc.l );
 337  0002424E    dd effffffce4                 	pushl	_dbl_ld_acc+4
 338  00024254    fe 08 effffffcd9              	callf	$8,_write32h
 339  0002425B                                   #                   writes(",     final Acc = ");
 340  0002425B                                  	.data	1
 341  00000e21 *                                L265:
 342  00000e21 *  2C202020202066696E616C204     	.ascii	",     final Acc = \0"
                  16363203D2000
 343  00000e34 *                                	.text
 344  0002425B    dd 8f00000e21                 	pushl	$L265
 345  00024261    fe 08 effffffccc              	callf	$8,_writes
 346  00024268                                   #                   write32h( dbl_st_acc.m );
 347  00024268    dd effffffcc6                 	pushl	_dbl_st_acc
 348  0002426E    fe 08 effffffcbf              	callf	$8,_write32h
 349  00024275                                   # 		  writec(' ');
 350  00024275    dd 20                         	pushl	$32
 351  00024277    fe 08 effffffcb6              	callf	$8,_writec
 352  0002427E                                   #                   write32h( dbl_st_acc.l );
 353  0002427E    dd effffffcb4                 	pushl	_dbl_st_acc+4
 354  00024284    fe 08 effffffca9              	callf	$8,_write32h
 355  0002428B                                   # 		  writes("\n                                  expected Acc = ");
 356  0002428B                                  	.data	1
 357  00000e34 *                                L266:
 358  00000e34 *  0A20202020202020202020202     	.ascii	"\12                                  expected Acc = \0"
                  0202020202020202020202020
                  2020202020202020202065787
                  0656374656420416363203D20
                  00
 359  00000e67 *                                	.text
 360  0002428B    dd 8f00000e34                 	pushl	$L266
 361  00024291    fe 08 effffffc9c              	callf	$8,_writes
 362  00024298                                   #                   write32h( dbl_expected.m );
 363  00024298    dd effffffc96                 	pushl	_dbl_expected
 364  0002429E    fe 08 effffffc8f              	callf	$8,_write32h
 365  000242A5                                   # 		  writec(' ');
 366  000242A5    dd 20                         	pushl	$32
 367  000242A7    fe 08 effffffc86              	callf	$8,_writec
 368  000242AE                                   #                   write32h( dbl_expected.l );
 369  000242AE    dd effffffc84                 	pushl	_dbl_expected+4
 370  000242B4    fe 08 effffffc79              	callf	$8,_write32h
 371  000242BB                                   #                   writec('\n');
 372  000242BB    dd 0a                         	pushl	$10
 373  000242BD    fe 08 effffffc70              	callf	$8,_writec
 374  000242C4                                   #               }
 375  000242C4                                   # 	      if ( halt_flg )                   /* halt on error?          */
 376  000242C4                                  L262:
 377  000242C4    5d effffffc6a                 	tstl	_halt_flg
 378  000242CA    31 09                         	jeql	L267
 379  000242CC                                   #                   mull2_halt( 4 );
 380  000242CC    dd 04                         	pushl	$4
 381  000242CE    fe 08 ef0000085b              	callf	$8,_mull2_halt
 382  000242D5                                   #               if ( loop_on_err ) {
 383  000242D5                                  L267:
 384  000242D5    5d effffffc59                 	tstl	_loop_on_err
 385  000242DB    31 0d                         	jeql	L268
 386  000242DD                                   #                   force_loop = TRUE;            /* set the force loop flag */
 387  000242DD    0d 01 effffffc50              	movl	$1,_force_loop
 388  000242E4                                   #                   asm("jmp _mull2_2_lp1");      /* and loop                */
 389  000242E4    71 effffffed9                 jmp _mull2_2_lp1
 390  000242EA                                   #               }  /* end of loop-on-error */
 391  000242EA                                   #            } /* end of acc corr error */
 392  000242EA                                  L268:
 393  000242EA                                   # 	   if( sgl_value_4 != sgl_value_3 )    /* COMPARE the values      */
 394  000242EA                                  L261:
 395  000242EA    1d effffffc44 effffffc3f      	cmpl	_sgl_value_4,_sgl_value_3
 396  000242F5    31 41                         	jeql	L269
 397  000242F7                                   #            {
 398  000242F7                                   #               errcnt++;                         /* bump the error count    */
 399  000242F7    6d effffffc37                 	incl	_errcnt
 400  000242FD                                   #               if ( prt_error ) {
 401  000242FD    5d effffffc31                 	tstl	_prt_error
 402  00024303    31 0d                         	jeql	L270
 403  00024305                                   #                   print_mull2_error("(Memory data) -BAD MULTIPLY RESULT");
 404  00024305                                  	.data	1
 405  00000e67 *                                L271:
 406  00000e67 *  284D656D6F727920646174612     	.ascii	"(Memory data) -BAD MULTIPLY RESULT\0"
                  9202D424144204D554C544950
                  4C5920524553554C5400
 407  00000e8a *                                	.text
 408  00024305    dd 8f00000e67                 	pushl	$L271
 409  0002430B    fe 08 ef00000718              	callf	$8,_print_mull2_error
 410  00024312                                   #               }
 411  00024312                                   # 	      if ( halt_flg )                   /* halt on error?          */
 412  00024312                                  L270:
 413  00024312    5d effffffc1c                 	tstl	_halt_flg
 414  00024318    31 09                         	jeql	L272
 415  0002431A                                   #                   mull2_halt( 1 );
 416  0002431A    dd 01                         	pushl	$1
 417  0002431C    fe 08 ef0000080d              	callf	$8,_mull2_halt
 418  00024323                                   #               if ( loop_on_err ) {
 419  00024323                                  L272:
 420  00024323    5d effffffc0b                 	tstl	_loop_on_err
 421  00024329    31 0d                         	jeql	L273
 422  0002432B                                   #                   force_loop = TRUE;            /* set the force loop flag */
 423  0002432B    0d 01 effffffc02              	movl	$1,_force_loop
 424  00024332                                   #                   asm("jmp _mull2_2_lp1");      /* and loop                */
 425  00024332    71 effffffe8b                 jmp _mull2_2_lp1
 426  00024338                                   #               }  /* end of loop-on-error */
 427  00024338                                   #            } /* end of multiply error */
 428  00024338                                  L273:
 429  00024338                                   #         }
 430  00024338                                  L269:
 431  00024338                                  L257:
 432  00024338    6d effffffbf6                 	incl	_index
 433  0002433E    13 fe0d                       	jbr 	L259
 434  00024341                                  L258:
 435  00024341                                   # }  /* end of subtest 2 */
 436  00024341    40                            	ret#2
 437  00024342                                  	.set	L253,0x0
 438  00024342                                  L255:
 439  00024342    13 fdf6                       	jbr 	L256
 440  00024345                                  	.data
 441  00000d58 *                                	.text
 442  00024345    00                            	.align	1
 443  00024346                                  	.globl	_mull2_3
 444  00024346                                  _mull2_3:
 445  00024346    0000                          	.word	L274
 446  00024348                                   #   
 447  00024348                                   # 
 448  00024348                                   # 
 449  00024348                                   # /************************************************************************
 450  00024348                                   # *
 451  00024348                                   # *               SUBTEST 3 - register corruption test
 452  00024348                                   # *
 453  00024348                                   # ************************************************************************/
 454  00024348                                   # mull2_3() 
 455  00024348                                   # {
 456  00024348    13 018e                       	jbr 	L276
 457  0002434B                                  L277:
 458  0002434B                                   #         force_loop = FALSE;
 459  0002434B    4d effffffbe3                 	clrl	_force_loop
 460  00024351                                   #         subtest = 3;
 461  00024351    0d 03 effffffbdc              	movl	$3,_subtest
 462  00024358                                   #         fill_reg_buf( load_regs );		/* get pattern for registers */
 463  00024358    dd 8f00000000                 	pushl	$_load_regs
 464  0002435E    fe 08 effffffbcf              	callf	$8,_fill_reg_buf
 465  00024365                                   # 	for( index = 0; index < max_mull_1_index; index++ ) {
 466  00024365    4d effffffbc9                 	clrl	_index
 467  0002436B                                  L281:
 468  0002436B    1d effffffbc3 effffffbbe      	cmpl	_index,_max_mull_1_index
 469  00024376    91 03 13 015d                 	jgeq	L280
 470  0002437B                                   #            sgl_value_1  = mull_1_data[index].op_1; /* get operand 1        */
 471  0002437B    5c 0c effffffbb2 50           	mull3	$12,_index,r0
 472  00024383    0d e000000000 effffffba6      	movl	_mull_1_data(r0),_sgl_value_1
 473  0002438E                                   #            sgl_value_2  = mull_1_data[index].op_2; /* get operand 2        */
 474  0002438E    5c 0c effffffb9f 50           	mull3	$12,_index,r0
 475  00024396    0d e000000004 effffffb93      	movl	_mull_1_data+4(r0),_sgl_value_2
 476  000243A1                                   #            sgl_value_4  = mull_1_data[index].exp;  /* get expected results */
 477  000243A1    5c 0c effffffb8c 50           	mull3	$12,_index,r0
 478  000243A9    0d e000000008 effffffb80      	movl	_mull_1_data+8(r0),_sgl_value_4
 479  000243B4                                   # /*
 480  000243B4                                   #  * If LOOP ON ERROR is set, this is the loop for this subtest.
 481  000243B4                                   # */
 482  000243B4                                   #            asm("_mull2_3_lp1:");
 483  000243B4                                  _mull2_3_lp1:
 484  000243B4                                   # 	   sgl_value_3 = sgl_value_2;		/* set operand 2        */
 485  000243B4    0d effffffb7a effffffb75      	movl	_sgl_value_2,_sgl_value_3
 486  000243BF                                   #            asm("loadr $0x1fff,_load_regs");	/* load regs 0 - 12     */
 487  000243BF    ab 891fff effffffb6c          loadr $0x1fff,_load_regs
 488  000243C8                                   # 	   asm("mull2 _sgl_value_1,_sgl_value_3");/* do the multiply    */
 489  000243C8    4c effffffb66 effffffb61      mull2 _sgl_value_1,_sgl_value_3
 490  000243D3                                   #            asm("nop");
 491  000243D3    10                            nop
 492  000243D4                                   #            asm("storer $0x1fff,_store_regs");	/* store regs 0 - 12    */
 493  000243D4    bb 891fff effffffb57          storer $0x1fff,_store_regs
 494  000243DD                                   # 	   if( force_loop )
 495  000243DD    5d effffffb51                 	tstl	_force_loop
 496  000243E3    31 02                         	jeql	L282
 497  000243E5                                   #                 asm("brb _mull2_3_lp1");
 498  000243E5    11 cd                         brb _mull2_3_lp1
 499  000243E7                                   # /*
 500  000243E7                                   #  * Now check the result
 501  000243E7                                   # */
 502  000243E7                                   #         index2 = 0;
 503  000243E7                                  L282:
 504  000243E7    4d effffffb47                 	clrl	_index2
 505  000243ED                                   #         while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) )
 506  000243ED                                  L283:
 507  000243ED    0d effffffb41 50              	movl	_index2,r0
 508  000243F4    0d effffffb3a 51              	movl	_index2,r1
 509  000243FB    1d 40effffffb32               	cmpl	_load_regs[r0],_store_regs[r1]
                  41effffffb2c 
 510  00024408    21 11                         	jneq	L284
 511  0002440A    1d effffffb24 0d              	cmpl	_index2,$13
 512  00024411    81 08                         	jgeq	L284
 513  00024413                                   #              index2++;                          /* check reg values        */
 514  00024413    6d effffffb1b                 	incl	_index2
 515  00024419    11 d2                         	jbr 	L283
 516  0002441B                                  L284:
 517  0002441B                                   #         if( index2 < 13 ) {                     /* error if index2 < 13    */
 518  0002441B    1d effffffb13 0d              	cmpl	_index2,$13
 519  00024422    91 03 13 00a8                 	jgeq	L285
 520  00024427                                   #               errcnt++;                         /* bump the error count    */
 521  00024427    6d effffffb07                 	incl	_errcnt
 522  0002442D                                   # 	      if ( prt_error ) {
 523  0002442D    5d effffffb01                 	tstl	_prt_error
 524  00024433    31 74                         	jeql	L286
 525  00024435                                   #                   print_mull2_error(" -A REGISTER WAS MODIFIED");
 526  00024435                                  	.data	1
 527  00000e8a *                                L287:
 528  00000e8a *  202D412052454749535445522     	.ascii	" -A REGISTER WAS MODIFIED\0"
                  0574153204D4F444946494544
                  00
 529  00000ea4 *                                	.text
 530  00024435    dd 8f00000e8a                 	pushl	$L287
 531  0002443B    fe 08 ef000005e8              	callf	$8,_print_mull2_error
 532  00024442                                   #                   writes("register ");
 533  00024442                                  	.data	1
 534  00000ea4 *                                L288:
 535  00000ea4 *  72656769737465722000          	.ascii	"register \0"
 536  00000eae *                                	.text
 537  00024442    dd 8f00000ea4                 	pushl	$L288
 538  00024448    fe 08 effffffae5              	callf	$8,_writes
 539  0002444F                                   # 	          writeh( index2 );
 540  0002444F    dd effffffadf                 	pushl	_index2
 541  00024455    fe 08 effffffad8              	callf	$8,_writeh
 542  0002445C                                   # 	          writes(" = ");
 543  0002445C                                  	.data	1
 544  00000eae *                                L290:
 545  00000eae *  203D2000                      	.ascii	" = \0"
 546  00000eb2 *                                	.text
 547  0002445C    dd 8f00000eae                 	pushl	$L290
 548  00024462    fe 08 effffffacb              	callf	$8,_writes
 549  00024469                                   # 	          write32h( store_regs[index2] );
 550  00024469    0d effffffac5 50              	movl	_index2,r0
 551  00024470    dd 40effffffabd               	pushl	_store_regs[r0]
 552  00024477    fe 08 effffffab6              	callf	$8,_write32h
 553  0002447E                                   # 	          writes(",  should be = ");
 554  0002447E                                  	.data	1
 555  00000eb2 *                                L291:
 556  00000eb2 *  2C202073686F756C642062652     	.ascii	",  should be = \0"
                  03D2000
 557  00000ec2 *                                	.text
 558  0002447E    dd 8f00000eb2                 	pushl	$L291
 559  00024484    fe 08 effffffaa9              	callf	$8,_writes
 560  0002448B                                   #                   write32h( load_regs[index2] );
 561  0002448B    0d effffffaa3 50              	movl	_index2,r0
 562  00024492    dd 40effffffa9b               	pushl	_load_regs[r0]
 563  00024499    fe 08 effffffa94              	callf	$8,_write32h
 564  000244A0                                   #                   writec('\n');
 565  000244A0    dd 0a                         	pushl	$10
 566  000244A2    fe 08 effffffa8b              	callf	$8,_writec
 567  000244A9                                   #               }
 568  000244A9                                   # 	      if ( halt_flg )                   /* halt on error?          */
 569  000244A9                                  L286:
 570  000244A9    5d effffffa85                 	tstl	_halt_flg
 571  000244AF    31 09                         	jeql	L292
 572  000244B1                                   #                   mull2_halt( 2 );
 573  000244B1    dd 02                         	pushl	$2
 574  000244B3    fe 08 ef00000676              	callf	$8,_mull2_halt
 575  000244BA                                   #               if ( loop_on_err ) {
 576  000244BA                                  L292:
 577  000244BA    5d effffffa74                 	tstl	_loop_on_err
 578  000244C0    31 0d                         	jeql	L293
 579  000244C2                                   #                   force_loop = TRUE;            /* set the force loop flag */
 580  000244C2    0d 01 effffffa6b              	movl	$1,_force_loop
 581  000244C9                                   #                   asm("jmp _mull2_3_lp1");      /* and loop                */
 582  000244C9    71 effffffee5                 jmp _mull2_3_lp1
 583  000244CF                                   #               };  /* end of loop-on-error */
 584  000244CF                                  L293:
 585  000244CF                                   #            } /* end of multiply error */
 586  000244CF                                   #         }
 587  000244CF                                  L285:
 588  000244CF                                  L279:
 589  000244CF    6d effffffa5f                 	incl	_index
 590  000244D5    13 fe93                       	jbr 	L281
 591  000244D8                                  L280:
 592  000244D8                                   # }  /* end of subtest 3 */
 593  000244D8    40                            	ret#2
 594  000244D9                                  	.set	L274,0x0
 595  000244D9                                  L276:
 596  000244D9    13 fe6f                       	jbr 	L277
 597  000244DC                                  	.data
 598  00000d58 *                                	.text
 599  000244DC                                  	.align	1
 600  000244DC                                  	.globl	_mull2_4
 601  000244DC                                  _mull2_4:
 602  000244DC    0000                          	.word	L294
 603  000244DE                                   #   
 604  000244DE                                   # 
 605  000244DE                                   # 
 606  000244DE                                   # /************************************************************************
 607  000244DE                                   # *
 608  000244DE                                   # *               SUBTEST 4 - PSL corruption test
 609  000244DE                                   # *
 610  000244DE                                   # ************************************************************************/
 611  000244DE                                   # mull2_4() 
 612  000244DE                                   # {
 613  000244DE    13 01a2                       	jbr 	L296
 614  000244E1                                  L297:
 615  000244E1                                   #         force_loop = FALSE;
 616  000244E1    4d effffffa4d                 	clrl	_force_loop
 617  000244E7                                   #         subtest = 4;
 618  000244E7    0d 04 effffffa46              	movl	$4,_subtest
 619  000244EE                                   # 	status_index = 0;
 620  000244EE    4d effffffa40                 	clrl	_status_index
 621  000244F4                                   # 	for( index = 0; index < max_mull_1_index; index++ ) {
 622  000244F4    4d effffffa3a                 	clrl	_index
 623  000244FA                                  L300:
 624  000244FA    1d effffffa34 effffffa2f      	cmpl	_index,_max_mull_1_index
 625  00024505    91 03 13 0178                 	jgeq	L299
 626  0002450A                                   #            sgl_value_1  = mull_1_data[index].op_1; /* get operand 1        */
 627  0002450A    5c 0c effffffa23 50           	mull3	$12,_index,r0
 628  00024512    0d e000000000 effffffa17      	movl	_mull_1_data(r0),_sgl_value_1
 629  0002451D                                   #            sgl_value_2  = mull_1_data[index].op_2; /* get operand 2        */
 630  0002451D    5c 0c effffffa10 50           	mull3	$12,_index,r0
 631  00024525    0d e000000004 effffffa04      	movl	_mull_1_data+4(r0),_sgl_value_2
 632  00024530                                   #            sgl_value_4  = mull_1_data[index].exp;  /* get expected results */
 633  00024530    5c 0c effffff9fd 50           	mull3	$12,_index,r0
 634  00024538    0d e000000008 effffff9f1      	movl	_mull_1_data+8(r0),_sgl_value_4
 635  00024543                                   #            sgl_dummy1   = status_array[status_index]; /* status = +, -, 0 */
 636  00024543    0d effffff9eb 50              	movl	_status_index,r0
 637  0002454A    0d 40effffff9e3               	movl	_status_array[r0],_sgl_dummy1
                  effffff9de 
 638  00024556                                   # /*
 639  00024556                                   #  * If LOOP ON ERROR is set, this is the loop for this subtest.
 640  00024556                                   # */
 641  00024556                                   #            asm("_mull2_4_lp1:");
 642  00024556                                  _mull2_4_lp1:
 643  00024556                                   # 	   sgl_value_3 = sgl_value_2;		/* set operand 2        */
 644  00024556    0d effffff9d8 effffff9d3      	movl	_sgl_value_2,_sgl_value_3
 645  00024561                                   #            asm("tstl _sgl_dummy1");
 646  00024561    5d effffff9cd                 tstl _sgl_dummy1
 647  00024567                                   # 	   asm("movpsl _init_psl");		/* save the initial PSL */
 648  00024567    cd effffff9c7                 movpsl _init_psl
 649  0002456D                                   # 	   asm("mull2 _sgl_value_1,_sgl_value_3");/* do the multiply    */
 650  0002456D    4c effffff9c1 effffff9bc      mull2 _sgl_value_1,_sgl_value_3
 651  00024578                                   # 	   asm("movpsl _psl_val");		/* save the final PSL   */
 652  00024578    cd effffff9b6                 movpsl _psl_val
 653  0002457E                                   # 	   if( force_loop )
 654  0002457E    5d effffff9b0                 	tstl	_force_loop
 655  00024584    31 02                         	jeql	L301
 656  00024586                                   #                 asm("brb _mull2_4_lp1");
 657  00024586    11 ce                         brb _mull2_4_lp1
 658  00024588                                   # /*
 659  00024588                                   #  * Now check the result
 660  00024588                                   # */
 661  00024588                                   #         exp_psl = init_psl & 0xffffff3;		/* strip off the PSL status */
 662  00024588                                  L301:
 663  00024588    bc 8f0ffffff3 effffff9a1      	andl3	$268435443,_init_psl,r0
                  50 
 664  00024594    0d 50 effffff999              	movl	r0,_exp_psl
 665  0002459B                                   # 	if( sgl_value_4 < 0 )			/* check the MULL result */
 666  0002459B    5d effffff993                 	tstl	_sgl_value_4
 667  000245A1    81 07                         	jgeq	L302
 668  000245A3                                   # 	   exp_psl |= PSL_N;			/* set the NEGATIVE bit */
 669  000245A3    8c 08 effffff98a              	orl2	$8,_exp_psl
 670  000245AA                                   # 	if( !sgl_value_4 )
 671  000245AA                                  L302:
 672  000245AA    5d effffff984                 	tstl	_sgl_value_4
 673  000245B0    21 07                         	jneq	L303
 674  000245B2                                   # 	   exp_psl |= PSL_Z;			/* set the ZERO bit */
 675  000245B2    8c 04 effffff97b              	orl2	$4,_exp_psl
 676  000245B9                                   #         if( psl_val != exp_psl ) { 		/* was the final PSL correct */
 677  000245B9                                  L303:
 678  000245B9    1d effffff975 effffff970      	cmpl	_psl_val,_exp_psl
 679  000245C4    21 03 13 0098                 	jeql	L304
 680  000245C9                                   #               errcnt++;                         /* bump the error count    */
 681  000245C9    6d effffff965                 	incl	_errcnt
 682  000245CF                                   # 	      if ( prt_error ) {
 683  000245CF    5d effffff95f                 	tstl	_prt_error
 684  000245D5    31 64                         	jeql	L305
 685  000245D7                                   #                   print_mull2_error(" -INCORRECT FINAL PSL");
 686  000245D7                                  	.data	1
 687  00000ec2 *                                L306:
 688  00000ec2 *  202D494E434F5252454354204     	.ascii	" -INCORRECT FINAL PSL\0"
                  6494E414C2050534C00
 689  00000ed8 *                                	.text
 690  000245D7    dd 8f00000ec2                 	pushl	$L306
 691  000245DD    fe 08 ef00000446              	callf	$8,_print_mull2_error
 692  000245E4                                   #                   writes("initial PSL = ");
 693  000245E4                                  	.data	1
 694  00000ed8 *                                L307:
 695  00000ed8 *  696E697469616C2050534C203     	.ascii	"initial PSL = \0"
                  D2000
 696  00000ee7 *                                	.text
 697  000245E4    dd 8f00000ed8                 	pushl	$L307
 698  000245EA    fe 08 effffff943              	callf	$8,_writes
 699  000245F1                                   # 	          write32h( init_psl );
 700  000245F1    dd effffff93d                 	pushl	_init_psl
 701  000245F7    fe 08 effffff936              	callf	$8,_write32h
 702  000245FE                                   # 	          writes(",  final PSL = ");
 703  000245FE                                  	.data	1
 704  00000ee7 *                                L308:
 705  00000ee7 *  2C202066696E616C2050534C2     	.ascii	",  final PSL = \0"
                  03D2000
 706  00000ef7 *                                	.text
 707  000245FE    dd 8f00000ee7                 	pushl	$L308
 708  00024604    fe 08 effffff929              	callf	$8,_writes
 709  0002460B                                   # 		  write32h( psl_val );
 710  0002460B    dd effffff923                 	pushl	_psl_val
 711  00024611    fe 08 effffff91c              	callf	$8,_write32h
 712  00024618                                   # 		  writes(",  expected PSL = ");
 713  00024618                                  	.data	1
 714  00000ef7 *                                L309:
 715  00000ef7 *  2C20206578706563746564205     	.ascii	",  expected PSL = \0"
                  0534C203D2000
 716  00000f0a *                                	.text
 717  00024618    dd 8f00000ef7                 	pushl	$L309
 718  0002461E    fe 08 effffff90f              	callf	$8,_writes
 719  00024625                                   # 		  write32h( exp_psl );
 720  00024625    dd effffff909                 	pushl	_exp_psl
 721  0002462B    fe 08 effffff902              	callf	$8,_write32h
 722  00024632                                   #                   writec('\n');
 723  00024632    dd 0a                         	pushl	$10
 724  00024634    fe 08 effffff8f9              	callf	$8,_writec
 725  0002463B                                   #               }
 726  0002463B                                   # 	      if ( halt_flg )                   /* halt on error?          */
 727  0002463B                                  L305:
 728  0002463B    5d effffff8f3                 	tstl	_halt_flg
 729  00024641    31 09                         	jeql	L310
 730  00024643                                   #                   mull2_halt( 3 );
 731  00024643    dd 03                         	pushl	$3
 732  00024645    fe 08 ef000004e4              	callf	$8,_mull2_halt
 733  0002464C                                   #               if ( loop_on_err ) {
 734  0002464C                                  L310:
 735  0002464C    5d effffff8e2                 	tstl	_loop_on_err
 736  00024652    31 0d                         	jeql	L311
 737  00024654                                   #                   force_loop = TRUE;            /* set the force loop flag */
 738  00024654    0d 01 effffff8d9              	movl	$1,_force_loop
 739  0002465B                                   #                   asm("jmp _mull2_4_lp1");      /* and loop                */
 740  0002465B    71 effffffef5                 jmp _mull2_4_lp1
 741  00024661                                   #               };  /* end of loop-on-error */
 742  00024661                                  L311:
 743  00024661                                   #            }; /* end of error */
 744  00024661                                  L304:
 745  00024661                                   # 	   if( ++status_index >= 3 )
 746  00024661    6d effffff8cd                 	incl	_status_index
 747  00024667    0d effffff8c7 50              	movl	_status_index,r0
 748  0002466E    1d 50 03                      	cmpl	r0,$3
 749  00024671    91 06                         	jlss	L312
 750  00024673                                   # 	      status_index = 0;
 751  00024673    4d effffff8bb                 	clrl	_status_index
 752  00024679                                   #         }
 753  00024679                                  L312:
 754  00024679                                  L298:
 755  00024679    6d effffff8b5                 	incl	_index
 756  0002467F    13 fe78                       	jbr 	L300
 757  00024682                                  L299:
 758  00024682                                   # }  /* end of subtest 4 */
 759  00024682    40                            	ret#2
 760  00024683                                  	.set	L294,0x0
 761  00024683                                  L296:
 762  00024683    13 fe5b                       	jbr 	L297
 763  00024686                                  	.data
 764  00000d58 *                                	.text
 765  00024686                                  	.align	1
 766  00024686                                  	.globl	_mull2_5
 767  00024686                                  _mull2_5:
 768  00024686    0000                          	.word	L313
 769  00024688                                   #   
 770  00024688                                   # 
 771  00024688                                   # 
 772  00024688                                   # /************************************************************************
 773  00024688                                   # *
 774  00024688                                   # *        SUBTEST 5 - Pipelined Entry test
 775  00024688                                   # *
 776  00024688                                   # ************************************************************************/
 777  00024688                                   # mull2_5() 
 778  00024688                                   # {
 779  00024688    13 01ca                       	jbr 	L315
 780  0002468B                                  L316:
 781  0002468B                                   #         force_loop = FALSE;
 782  0002468B    4d effffff8a3                 	clrl	_force_loop
 783  00024691                                   #         subtest = 5;
 784  00024691    0d 05 effffff89c              	movl	$5,_subtest
 785  00024698                                   #         for( index = 0; index < max_mull_1_index; index++ ) {
 786  00024698    4d effffff896                 	clrl	_index
 787  0002469E                                  L319:
 788  0002469E    1d effffff890 effffff88b      	cmpl	_index,_max_mull_1_index
 789  000246A9    91 03 13 01a6                 	jgeq	L318
 790  000246AE                                   #            sgl_value_1  = mull_1_data[index].op_1; /* get operand 1        */
 791  000246AE    5c 0c effffff87f 50           	mull3	$12,_index,r0
 792  000246B6    0d e000000000 effffff873      	movl	_mull_1_data(r0),_sgl_value_1
 793  000246C1                                   #            sgl_value_2  = mull_1_data[index].op_2; /* get operand 2        */
 794  000246C1    5c 0c effffff86c 50           	mull3	$12,_index,r0
 795  000246C9    0d e000000004 effffff860      	movl	_mull_1_data+4(r0),_sgl_value_2
 796  000246D4                                   # 	   sgl_value_4  = mull_1_data[index].exp;  /* get expected results */
 797  000246D4    5c 0c effffff859 50           	mull3	$12,_index,r0
 798  000246DC    0d e000000008 effffff84d      	movl	_mull_1_data+8(r0),_sgl_value_4
 799  000246E7                                   #            sgl_ld_acc   = 0x12345678;		   /* set acc data pattern */
 800  000246E7    0d 8f12345678 effffff842      	movl	$305419896,_sgl_ld_acc
 801  000246F2                                   # 	   sgl_expected = sgl_ld_acc;		   /* final Acc expected   */
 802  000246F2    0d effffff83c effffff837      	movl	_sgl_ld_acc,_sgl_expected
 803  000246FD                                   # 	   sgl_value_10 = 0x40800000;		   /* floating "1.0"       */
 804  000246FD    0d 8f40800000 effffff82c      	movl	$1082130432,_sgl_value_10
 805  00024708                                   # /*
 806  00024708                                   #  * If LOOP ON ERROR is set, this is the loop for this subtest.
 807  00024708                                   # */
 808  00024708                                   #            asm("_mull2_5_lp1:");
 809  00024708                                  _mull2_5_lp1:
 810  00024708                                   # 	   sgl_value_3 = sgl_value_2;		/* set integer operand 2   */
 811  00024708    0d effffff826 effffff821      	movl	_sgl_value_2,_sgl_value_3
 812  00024713                                   #            asm("ldf _sgl_ld_acc");		/* load the acc            */
 813  00024713    06 effffff81b                 ldf _sgl_ld_acc
 814  00024719                                   # 	   asm("mulf _sgl_value_10");		/* do a floating multiply  */
 815  00024719    e6 effffff815                 mulf _sgl_value_10
 816  0002471F                                   # 	   asm("mull2 _sgl_value_1,_sgl_value_3"); /* do the int. multiply */
 817  0002471F    4c effffff80f effffff80a      mull2 _sgl_value_1,_sgl_value_3
 818  0002472A                                   #            asm("nop");
 819  0002472A    10                            nop
 820  0002472B                                   # 	   asm("stf _sgl_st_acc");		/* save the acc            */
 821  0002472B    26 effffff803                 stf _sgl_st_acc
 822  00024731                                   #            if( force_loop )
 823  00024731    5d effffff7fd                 	tstl	_force_loop
 824  00024737    31 02                         	jeql	L320
 825  00024739                                   #                 asm("brb _mull2_5_lp1");;
 826  00024739    11 cd                         brb _mull2_5_lp1
 827  0002473B                                  L320:
 828  0002473B                                   # 	   if( sgl_expected != sgl_st_acc )  {   /* COMPARE the values      */
 829  0002473B    1d effffff7f3 effffff7ee      	cmpl	_sgl_expected,_sgl_st_acc
 830  00024746    21 03 13 00b2                 	jeql	L321
 831  0002474B                                   #               errcnt++;                         /* bump the error count    */
 832  0002474B    6d effffff7e3                 	incl	_errcnt
 833  00024751                                   #               if ( prt_error ) {
 834  00024751    5d effffff7dd                 	tstl	_prt_error
 835  00024757    31 7e                         	jeql	L322
 836  00024759                                   #                   print_mull2_error("(Piped Entry) -BAD FINAL ACC");
 837  00024759                                  	.data	1
 838  00000f0a *                                L323:
 839  00000f0a *  28506970656420456E7472792     	.ascii	"(Piped Entry) -BAD FINAL ACC\0"
                  9202D4241442046494E414C20
                  41434300
 840  00000f27 *                                	.text
 841  00024759    dd 8f00000f0a                 	pushl	$L323
 842  0002475F    fe 08 ef000002c4              	callf	$8,_print_mull2_error
 843  00024766                                   # 		  writes("initial Acc = ");
 844  00024766                                  	.data	1
 845  00000f27 *                                L324:
 846  00000f27 *  696E697469616C20416363203     	.ascii	"initial Acc = \0"
                  D2000
 847  00000f36 *                                	.text
 848  00024766    dd 8f00000f27                 	pushl	$L324
 849  0002476C    fe 08 effffff7c1              	callf	$8,_writes
 850  00024773                                   #                   write32h( sgl_ld_acc );
 851  00024773    dd effffff7bb                 	pushl	_sgl_ld_acc
 852  00024779    fe 08 effffff7b4              	callf	$8,_write32h
 853  00024780                                   #                   writes(",     final Acc = ");
 854  00024780                                  	.data	1
 855  00000f36 *                                L325:
 856  00000f36 *  2C202020202066696E616C204     	.ascii	",     final Acc = \0"
                  16363203D2000
 857  00000f49 *                                	.text
 858  00024780    dd 8f00000f36                 	pushl	$L325
 859  00024786    fe 08 effffff7a7              	callf	$8,_writes
 860  0002478D                                   #                   write32h( sgl_st_acc );
 861  0002478D    dd effffff7a1                 	pushl	_sgl_st_acc
 862  00024793    fe 08 effffff79a              	callf	$8,_write32h
 863  0002479A                                   # 		  writes("\nFPP operand = ");
 864  0002479A                                  	.data	1
 865  00000f49 *                                L326:
 866  00000f49 *  0A465050206F706572616E642     	.ascii	"\12FPP operand = \0"
                  03D2000
 867  00000f59 *                                	.text
 868  0002479A    dd 8f00000f49                 	pushl	$L326
 869  000247A0    fe 08 effffff78d              	callf	$8,_writes
 870  000247A7                                   # 		  write32h( sgl_value_10 );
 871  000247A7    dd effffff787                 	pushl	_sgl_value_10
 872  000247AD    fe 08 effffff780              	callf	$8,_write32h
 873  000247B4                                   # 		  writes(",  expected Acc = ");
 874  000247B4                                  	.data	1
 875  00000f59 *                                L327:
 876  00000f59 *  2C20206578706563746564204     	.ascii	",  expected Acc = \0"
                  16363203D2000
 877  00000f6c *                                	.text
 878  000247B4    dd 8f00000f59                 	pushl	$L327
 879  000247BA    fe 08 effffff773              	callf	$8,_writes
 880  000247C1                                   #                   write32h( sgl_expected );
 881  000247C1    dd effffff76d                 	pushl	_sgl_expected
 882  000247C7    fe 08 effffff766              	callf	$8,_write32h
 883  000247CE                                   #                   writec('\n');
 884  000247CE    dd 0a                         	pushl	$10
 885  000247D0    fe 08 effffff75d              	callf	$8,_writec
 886  000247D7                                   #               }
 887  000247D7                                   # 	      if ( halt_flg )                   /* halt on error?          */
 888  000247D7                                  L322:
 889  000247D7    5d effffff757                 	tstl	_halt_flg
 890  000247DD    31 09                         	jeql	L328
 891  000247DF                                   #                   mull2_halt( 5 );
 892  000247DF    dd 05                         	pushl	$5
 893  000247E1    fe 08 ef00000348              	callf	$8,_mull2_halt
 894  000247E8                                   #               if ( loop_on_err ) {
 895  000247E8                                  L328:
 896  000247E8    5d effffff746                 	tstl	_loop_on_err
 897  000247EE    31 0d                         	jeql	L329
 898  000247F0                                   #                   force_loop = TRUE;            /* set the force loop flag */
 899  000247F0    0d 01 effffff73d              	movl	$1,_force_loop
 900  000247F7                                   #                   asm("jmp _mull2_5_lp1");      /* and loop                */
 901  000247F7    71 efffffff0b                 jmp _mull2_5_lp1
 902  000247FD                                   #               }  /* end of loop-on-error */
 903  000247FD                                   #            } /* end of acc corr error */
 904  000247FD                                  L329:
 905  000247FD                                   # 	   if( sgl_value_4 != sgl_value_3 )    /* COMPARE the values      */
 906  000247FD                                  L321:
 907  000247FD    1d effffff731 effffff72c      	cmpl	_sgl_value_4,_sgl_value_3
 908  00024808    31 41                         	jeql	L330
 909  0002480A                                   #            {
 910  0002480A                                   #               errcnt++;                         /* bump the error count    */
 911  0002480A    6d effffff724                 	incl	_errcnt
 912  00024810                                   #               if ( prt_error ) {
 913  00024810    5d effffff71e                 	tstl	_prt_error
 914  00024816    31 0d                         	jeql	L331
 915  00024818                                   #                   print_mull2_error("(Piped Entry) -BAD MULTIPLY RESULT");
 916  00024818                                  	.data	1
 917  00000f6c *                                L332:
 918  00000f6c *  28506970656420456E7472792     	.ascii	"(Piped Entry) -BAD MULTIPLY RESULT\0"
                  9202D424144204D554C544950
                  4C5920524553554C5400
 919  00000f8f *                                	.text
 920  00024818    dd 8f00000f6c                 	pushl	$L332
 921  0002481E    fe 08 ef00000205              	callf	$8,_print_mull2_error
 922  00024825                                   #               }
 923  00024825                                   # 	      if ( halt_flg )                   /* halt on error?          */
 924  00024825                                  L331:
 925  00024825    5d effffff709                 	tstl	_halt_flg
 926  0002482B    31 09                         	jeql	L333
 927  0002482D                                   #                   mull2_halt( 1 );
 928  0002482D    dd 01                         	pushl	$1
 929  0002482F    fe 08 ef000002fa              	callf	$8,_mull2_halt
 930  00024836                                   #               if ( loop_on_err ) {
 931  00024836                                  L333:
 932  00024836    5d effffff6f8                 	tstl	_loop_on_err
 933  0002483C    31 0d                         	jeql	L334
 934  0002483E                                   #                   force_loop = TRUE;            /* set the force loop flag */
 935  0002483E    0d 01 effffff6ef              	movl	$1,_force_loop
 936  00024845                                   #                   asm("jmp _mull2_5_lp1");      /* and loop                */
 937  00024845    71 effffffebd                 jmp _mull2_5_lp1
 938  0002484B                                   #               }  /* end of loop-on-error */
 939  0002484B                                   #            } /* end of multiply error */
 940  0002484B                                  L334:
 941  0002484B                                   #         }
 942  0002484B                                  L330:
 943  0002484B                                  L317:
 944  0002484B    6d effffff6e3                 	incl	_index
 945  00024851    13 fe4a                       	jbr 	L319
 946  00024854                                  L318:
 947  00024854                                   # }  /* end of subtest 5 */
 948  00024854    40                            	ret#2
 949  00024855                                  	.set	L313,0x0
 950  00024855                                  L315:
 951  00024855    13 fe33                       	jbr 	L316
 952  00024858                                  	.data
 953  00000d58 *                                	.text
 954  00024858                                  	.align	1
 955  00024858                                  	.globl	_mull2_6
 956  00024858                                  _mull2_6:
 957  00024858    0000                          	.word	L335
 958  0002485A                                   #   
 959  0002485A                                   # 
 960  0002485A                                   # 
 961  0002485A                                   # /************************************************************************
 962  0002485A                                   # *
 963  0002485A                                   # *        SUBTEST 6 - Pipelined Exit test
 964  0002485A                                   # *
 965  0002485A                                   # ************************************************************************/
 966  0002485A                                   # mull2_6() 
 967  0002485A                                   # {
 968  0002485A    13 01c9                       	jbr 	L337
 969  0002485D                                  L338:
 970  0002485D                                   #         force_loop = FALSE;
 971  0002485D    4d effffff6d1                 	clrl	_force_loop
 972  00024863                                   #         subtest = 6;
 973  00024863    0d 06 effffff6ca              	movl	$6,_subtest
 974  0002486A                                   #         for( index = 0; index < max_mull_1_index; index++ ) {
 975  0002486A    4d effffff6c4                 	clrl	_index
 976  00024870                                  L341:
 977  00024870    1d effffff6be effffff6b9      	cmpl	_index,_max_mull_1_index
 978  0002487B    91 03 13 01a5                 	jgeq	L340
 979  00024880                                   #            sgl_value_1  = mull_1_data[index].op_1; /* get operand 1        */
 980  00024880    5c 0c effffff6ad 50           	mull3	$12,_index,r0
 981  00024888    0d e000000000 effffff6a1      	movl	_mull_1_data(r0),_sgl_value_1
 982  00024893                                   #            sgl_value_2  = mull_1_data[index].op_2; /* get operand 2        */
 983  00024893    5c 0c effffff69a 50           	mull3	$12,_index,r0
 984  0002489B    0d e000000004 effffff68e      	movl	_mull_1_data+4(r0),_sgl_value_2
 985  000248A6                                   # 	   sgl_value_4  = mull_1_data[index].exp;  /* get expected results */
 986  000248A6    5c 0c effffff687 50           	mull3	$12,_index,r0
 987  000248AE    0d e000000008 effffff67b      	movl	_mull_1_data+8(r0),_sgl_value_4
 988  000248B9                                   # 	   sgl_ld_acc   = 0x40800000;		   /* floating "1.0"       */
 989  000248B9    0d 8f40800000 effffff670      	movl	$1082130432,_sgl_ld_acc
 990  000248C4                                   #            sgl_value_10 = 0x12345678;		   /* set acc data pattern */
 991  000248C4    0d 8f12345678 effffff665      	movl	$305419896,_sgl_value_10
 992  000248CF                                   # 	   sgl_expected = sgl_value_10;		   /* final Acc expected   */
 993  000248CF    0d effffff65f effffff65a      	movl	_sgl_value_10,_sgl_expected
 994  000248DA                                   # /*
 995  000248DA                                   #  * If LOOP ON ERROR is set, this is the loop for this subtest.
 996  000248DA                                   # */
 997  000248DA                                   #            asm("_mull2_6_lp1:");
 998  000248DA                                  _mull2_6_lp1:
 999  000248DA                                   # 	   sgl_value_3 = sgl_value_2;		/* set integer operand 2   */
1000  000248DA    0d effffff654 effffff64f      	movl	_sgl_value_2,_sgl_value_3
1001  000248E5                                   #            asm("ldf _sgl_ld_acc");		/* load the acc            */
1002  000248E5    06 effffff649                 ldf _sgl_ld_acc
1003  000248EB                                   # 	   asm("mull2 _sgl_value_1,_sgl_value_3"); /* do the int. multiply */
1004  000248EB    4c effffff643 effffff63e      mull2 _sgl_value_1,_sgl_value_3
1005  000248F6                                   # 	   asm("mulf _sgl_value_10");		/* do a floating multiply  */
1006  000248F6    e6 effffff638                 mulf _sgl_value_10
1007  000248FC                                   #            asm("stf _sgl_st_acc");		/* save the acc            */
1008  000248FC    26 effffff632                 stf _sgl_st_acc
1009  00024902                                   #            if( force_loop )
1010  00024902    5d effffff62c                 	tstl	_force_loop
1011  00024908    31 02                         	jeql	L342
1012  0002490A                                   #                 asm("brb _mull2_6_lp1");;
1013  0002490A    11 ce                         brb _mull2_6_lp1
1014  0002490C                                  L342:
1015  0002490C                                   # 	   if( sgl_expected != sgl_st_acc )  {   /* COMPARE the values      */
1016  0002490C    1d effffff622 effffff61d      	cmpl	_sgl_expected,_sgl_st_acc
1017  00024917    21 03 13 00b2                 	jeql	L343
1018  0002491C                                   #               errcnt++;                         /* bump the error count    */
1019  0002491C    6d effffff612                 	incl	_errcnt
1020  00024922                                   #               if ( prt_error ) {
1021  00024922    5d effffff60c                 	tstl	_prt_error
1022  00024928    31 7e                         	jeql	L344
1023  0002492A                                   #                   print_mull2_error("(Piped Exit) -BAD FINAL ACC");
1024  0002492A                                  	.data	1
1025  00000f8f *                                L345:
1026  00000f8f *  2850697065642045786974292     	.ascii	"(Piped Exit) -BAD FINAL ACC\0"
                  02D4241442046494E414C2041
                  434300
1027  00000fab *                                	.text
1028  0002492A    dd 8f00000f8f                 	pushl	$L345
1029  00024930    fe 08 ef000000f3              	callf	$8,_print_mull2_error
1030  00024937                                   # 		  writes("initial Acc = ");
1031  00024937                                  	.data	1
1032  00000fab *                                L346:
1033  00000fab *  696E697469616C20416363203     	.ascii	"initial Acc = \0"
                  D2000
1034  00000fba *                                	.text
1035  00024937    dd 8f00000fab                 	pushl	$L346
1036  0002493D    fe 08 effffff5f0              	callf	$8,_writes
1037  00024944                                   #                   write32h( sgl_ld_acc );
1038  00024944    dd effffff5ea                 	pushl	_sgl_ld_acc
1039  0002494A    fe 08 effffff5e3              	callf	$8,_write32h
1040  00024951                                   #                   writes(",     final Acc = ");
1041  00024951                                  	.data	1
1042  00000fba *                                L347:
1043  00000fba *  2C202020202066696E616C204     	.ascii	",     final Acc = \0"
                  16363203D2000
1044  00000fcd *                                	.text
1045  00024951    dd 8f00000fba                 	pushl	$L347
1046  00024957    fe 08 effffff5d6              	callf	$8,_writes
1047  0002495E                                   #                   write32h( sgl_st_acc );
1048  0002495E    dd effffff5d0                 	pushl	_sgl_st_acc
1049  00024964    fe 08 effffff5c9              	callf	$8,_write32h
1050  0002496B                                   # 		  writes("\nFPP operand = ");
1051  0002496B                                  	.data	1
1052  00000fcd *                                L348:
1053  00000fcd *  0A465050206F706572616E642     	.ascii	"\12FPP operand = \0"
                  03D2000
1054  00000fdd *                                	.text
1055  0002496B    dd 8f00000fcd                 	pushl	$L348
1056  00024971    fe 08 effffff5bc              	callf	$8,_writes
1057  00024978                                   # 		  write32h( sgl_value_10 );
1058  00024978    dd effffff5b6                 	pushl	_sgl_value_10
1059  0002497E    fe 08 effffff5af              	callf	$8,_write32h
1060  00024985                                   # 		  writes(",  expected Acc = ");
1061  00024985                                  	.data	1
1062  00000fdd *                                L349:
1063  00000fdd *  2C20206578706563746564204     	.ascii	",  expected Acc = \0"
                  16363203D2000
1064  00000ff0 *                                	.text
1065  00024985    dd 8f00000fdd                 	pushl	$L349
1066  0002498B    fe 08 effffff5a2              	callf	$8,_writes
1067  00024992                                   #                   write32h( sgl_expected );
1068  00024992    dd effffff59c                 	pushl	_sgl_expected
1069  00024998    fe 08 effffff595              	callf	$8,_write32h
1070  0002499F                                   #                   writec('\n');
1071  0002499F    dd 0a                         	pushl	$10
1072  000249A1    fe 08 effffff58c              	callf	$8,_writec
1073  000249A8                                   #               }
1074  000249A8                                   # 	      if ( halt_flg )                   /* halt on error?          */
1075  000249A8                                  L344:
1076  000249A8    5d effffff586                 	tstl	_halt_flg
1077  000249AE    31 09                         	jeql	L350
1078  000249B0                                   #                   mull2_halt( 5 );
1079  000249B0    dd 05                         	pushl	$5
1080  000249B2    fe 08 ef00000177              	callf	$8,_mull2_halt
1081  000249B9                                   #               if ( loop_on_err ) {
1082  000249B9                                  L350:
1083  000249B9    5d effffff575                 	tstl	_loop_on_err
1084  000249BF    31 0d                         	jeql	L351
1085  000249C1                                   #                   force_loop = TRUE;            /* set the force loop flag */
1086  000249C1    0d 01 effffff56c              	movl	$1,_force_loop
1087  000249C8                                   #                   asm("jmp _mull2_6_lp1");      /* and loop                */
1088  000249C8    71 efffffff0c                 jmp _mull2_6_lp1
1089  000249CE                                   #               }  /* end of loop-on-error */
1090  000249CE                                   #            } /* end of acc corr error */
1091  000249CE                                  L351:
1092  000249CE                                   # 	   if( sgl_value_4 != sgl_value_3 )    /* COMPARE the values      */
1093  000249CE                                  L343:
1094  000249CE    1d effffff560 effffff55b      	cmpl	_sgl_value_4,_sgl_value_3
1095  000249D9    31 41                         	jeql	L352
1096  000249DB                                   #            {
1097  000249DB                                   #               errcnt++;                         /* bump the error count    */
1098  000249DB    6d effffff553                 	incl	_errcnt
1099  000249E1                                   #               if ( prt_error ) {
1100  000249E1    5d effffff54d                 	tstl	_prt_error
1101  000249E7    31 0d                         	jeql	L353
1102  000249E9                                   #                   print_mull2_error("(Piped Exit) -BAD MULTIPLY RESULT");
1103  000249E9                                  	.data	1
1104  00000ff0 *                                L354:
1105  00000ff0 *  2850697065642045786974292     	.ascii	"(Piped Exit) -BAD MULTIPLY RESULT\0"
                  02D424144204D554C5449504C
                  5920524553554C5400
1106  00001012 *                                	.text
1107  000249E9    dd 8f00000ff0                 	pushl	$L354
1108  000249EF    fe 08 ef00000034              	callf	$8,_print_mull2_error
1109  000249F6                                   #               }
1110  000249F6                                   # 	      if ( halt_flg )                   /* halt on error?          */
1111  000249F6                                  L353:
1112  000249F6    5d effffff538                 	tstl	_halt_flg
1113  000249FC    31 09                         	jeql	L355
1114  000249FE                                   #                   mull2_halt( 1 );
1115  000249FE    dd 01                         	pushl	$1
1116  00024A00    fe 08 ef00000129              	callf	$8,_mull2_halt
1117  00024A07                                   #               if ( loop_on_err ) {
1118  00024A07                                  L355:
1119  00024A07    5d effffff527                 	tstl	_loop_on_err
1120  00024A0D    31 0d                         	jeql	L356
1121  00024A0F                                   #                   force_loop = TRUE;            /* set the force loop flag */
1122  00024A0F    0d 01 effffff51e              	movl	$1,_force_loop
1123  00024A16                                   #                   asm("jmp _mull2_6_lp1");      /* and loop                */
1124  00024A16    71 effffffebe                 jmp _mull2_6_lp1
1125  00024A1C                                   #               }  /* end of loop-on-error */
1126  00024A1C                                   #            } /* end of multiply error */
1127  00024A1C                                  L356:
1128  00024A1C                                   #         }
1129  00024A1C                                  L352:
1130  00024A1C                                  L339:
1131  00024A1C    6d effffff512                 	incl	_index
1132  00024A22    13 fe4b                       	jbr 	L341
1133  00024A25                                  L340:
1134  00024A25                                   # }  /* end of subtest 6 */
1135  00024A25    40                            	ret#2
1136  00024A26                                  	.set	L335,0x0
1137  00024A26                                  L337:
1138  00024A26    13 fe34                       	jbr 	L338
1139  00024A29                                  	.data
1140  00000d58 *                                	.text
1141  00024A29    00                            	.align	1
1142  00024A2A                                  	.globl	_print_mull2_error
1143  00024A2A                                  _print_mull2_error:
1144  00024A2A    0000                          	.word	L357
1145  00024A2C                                   #   
1146  00024A2C                                   # 
1147  00024A2C                                   # 
1148  00024A2C                                   # /*****************************************************************************
1149  00024A2C                                   # *
1150  00024A2C                                   # *               Print an error message of the form:
1151  00024A2C                                   # *
1152  00024A2C                                   # *  cycle: xx  MULL2 test xx, subtest xx  <"your message here">
1153  00024A2C                                   # *    operand 1 = xxxxxxxx,        result = xxxxxxxx,   data index = xx
1154  00024A2C                                   # *    operand 2 = xxxxxxxx,      expected = xxxxxxxx
1155  00024A2C                                   # *
1156  00024A2C                                   # *****************************************************************************/
1157  00024A2C                                   # print_mull2_error(msg)
1158  00024A2C                                   # char *msg;                                      /* addressing mode msg */
1159  00024A2C                                   # {
1160  00024A2C    13 00fe                       	jbr 	L359
1161  00024A2F                                  L360:
1162  00024A2F                                   #                  writes(" \n");             /* start a new print line   */
1163  00024A2F                                  	.data	1
1164  00001012 *                                L361:
1165  00001012 *  200A00                        	.ascii	" \12\0"
1166  00001015 *                                	.text
1167  00024A2F    dd 8f00001012                 	pushl	$L361
1168  00024A35    fe 08 effffff4f8              	callf	$8,_writes
1169  00024A3C                                   #                  writes("cycle: ");
1170  00024A3C                                  	.data	1
1171  00001015 *                                L362:
1172  00001015 *  6379636C653A2000              	.ascii	"cycle: \0"
1173  0000101d *                                	.text
1174  00024A3C    dd 8f00001015                 	pushl	$L362
1175  00024A42    fe 08 effffff4eb              	callf	$8,_writes
1176  00024A49                                   #                  writed( cycle );
1177  00024A49    dd effffff4e5                 	pushl	_cycle
1178  00024A4F    fe 08 effffff4de              	callf	$8,_writed
1179  00024A56                                   #                  writes("  MULL2 test ");
1180  00024A56                                  	.data	1
1181  0000101d *                                L364:
1182  0000101d *  20204D554C4C3220746573742     	.ascii	"  MULL2 test \0"
                  000
1183  0000102b *                                	.text
1184  00024A56    dd 8f0000101d                 	pushl	$L364
1185  00024A5C    fe 08 effffff4d1              	callf	$8,_writes
1186  00024A63                                   #                  writed( test_no );
1187  00024A63    dd effffff4cb                 	pushl	_test_no
1188  00024A69    fe 08 effffff4c4              	callf	$8,_writed
1189  00024A70                                   # 		 writes(", subtest ");
1190  00024A70                                  	.data	1
1191  0000102b *                                L365:
1192  0000102b *  2C20737562746573742000        	.ascii	", subtest \0"
1193  00001036 *                                	.text
1194  00024A70    dd 8f0000102b                 	pushl	$L365
1195  00024A76    fe 08 effffff4b7              	callf	$8,_writes
1196  00024A7D                                   # 		 writed( subtest );
1197  00024A7D    dd effffff4b1                 	pushl	_subtest
1198  00024A83    fe 08 effffff4aa              	callf	$8,_writed
1199  00024A8A                                   # 		 writes("  ");
1200  00024A8A                                  	.data	1
1201  00001036 *                                L366:
1202  00001036 *  202000                        	.ascii	"  \0"
1203  00001039 *                                	.text
1204  00024A8A    dd 8f00001036                 	pushl	$L366
1205  00024A90    fe 08 effffff49d              	callf	$8,_writes
1206  00024A97                                   # 		 writes( msg );
1207  00024A97    dd ad04                       	pushl	4(fp)
1208  00024A9A    fe 08 effffff493              	callf	$8,_writes
1209  00024AA1                                   #                  writes("\n  operand 1 = ");
1210  00024AA1                                  	.data	1
1211  00001039 *                                L367:
1212  00001039 *  0A20206F706572616E6420312     	.ascii	"\12  operand 1 = \0"
                  03D2000
1213  00001049 *                                	.text
1214  00024AA1    dd 8f00001039                 	pushl	$L367
1215  00024AA7    fe 08 effffff486              	callf	$8,_writes
1216  00024AAE                                   # 		 write32h( sgl_value_1 );
1217  00024AAE    dd effffff480                 	pushl	_sgl_value_1
1218  00024AB4    fe 08 effffff479              	callf	$8,_write32h
1219  00024ABB                                   # 		 writes(",        result = ");
1220  00024ABB                                  	.data	1
1221  00001049 *                                L368:
1222  00001049 *  2C20202020202020207265737     	.ascii	",        result = \0"
                  56C74203D2000
1223  0000105c *                                	.text
1224  00024ABB    dd 8f00001049                 	pushl	$L368
1225  00024AC1    fe 08 effffff46c              	callf	$8,_writes
1226  00024AC8                                   # 		 write32h( sgl_value_3 );
1227  00024AC8    dd effffff466                 	pushl	_sgl_value_3
1228  00024ACE    fe 08 effffff45f              	callf	$8,_write32h
1229  00024AD5                                   # 		 writes(",   data index = ");
1230  00024AD5                                  	.data	1
1231  0000105c *                                L369:
1232  0000105c *  2C2020206461746120696E646     	.ascii	",   data index = \0"
                  578203D2000
1233  0000106e *                                	.text
1234  00024AD5    dd 8f0000105c                 	pushl	$L369
1235  00024ADB    fe 08 effffff452              	callf	$8,_writes
1236  00024AE2                                   # 		 writed( index );
1237  00024AE2    dd effffff44c                 	pushl	_index
1238  00024AE8    fe 08 effffff445              	callf	$8,_writed
1239  00024AEF                                   #                  writes("\n  operand 2 = ");
1240  00024AEF                                  	.data	1
1241  0000106e *                                L370:
1242  0000106e *  0A20206F706572616E6420322     	.ascii	"\12  operand 2 = \0"
                  03D2000
1243  0000107e *                                	.text
1244  00024AEF    dd 8f0000106e                 	pushl	$L370
1245  00024AF5    fe 08 effffff438              	callf	$8,_writes
1246  00024AFC                                   # 		 write32h( sgl_value_2 );
1247  00024AFC    dd effffff432                 	pushl	_sgl_value_2
1248  00024B02    fe 08 effffff42b              	callf	$8,_write32h
1249  00024B09                                   # 		 writes(",      expected = ");
1250  00024B09                                  	.data	1
1251  0000107e *                                L371:
1252  0000107e *  2C20202020202065787065637     	.ascii	",      expected = \0"
                  46564203D2000
1253  00001091 *                                	.text
1254  00024B09    dd 8f0000107e                 	pushl	$L371
1255  00024B0F    fe 08 effffff41e              	callf	$8,_writes
1256  00024B16                                   # 		 write32h( sgl_value_4 );
1257  00024B16    dd effffff418                 	pushl	_sgl_value_4
1258  00024B1C    fe 08 effffff411              	callf	$8,_write32h
1259  00024B23                                   # 		 writec('\n');
1260  00024B23    dd 0a                         	pushl	$10
1261  00024B25    fe 08 effffff408              	callf	$8,_writec
1262  00024B2C                                   # }
1263  00024B2C    40                            	ret#2
1264  00024B2D                                  	.set	L357,0x0
1265  00024B2D                                  L359:
1266  00024B2D    13 feff                       	jbr 	L360
1267  00024B30                                  	.data
1268  00000d58 *                                	.text
1269  00024B30                                  	.align	1
1270  00024B30                                  	.globl	_mull2_halt
1271  00024B30                                  _mull2_halt:
1272  00024B30    0000                          	.word	L372
1273  00024B32                                   #   
1274  00024B32                                   # 
1275  00024B32                                   # 
1276  00024B32                                   # /***************************************************************************
1277  00024B32                                   # *
1278  00024B32                                   # *               HALT ON AN ERROR
1279  00024B32                                   # *
1280  00024B32                                   # ***************************************************************************/
1281  00024B32                                   # mull2_halt( code )
1282  00024B32                                   # int code;					/* error code to use */
1283  00024B32                                   # {
1284  00024B32    13 0152                       	jbr 	L374
1285  00024B35                                  L375:
1286  00024B35                                   # 	sgl_dummy1 = code;			/* save the error code    */
1287  00024B35    0d ad04 effffff3f7            	movl	4(fp),_sgl_dummy1
1288  00024B3D                                   #         asm("movl _test_no,r0");     		/* r0  = test number      */
1289  00024B3D    0d effffff3f1 50              movl _test_no,r0
1290  00024B44                                   #         asm("movl _subtest,r1");     		/* r1  = subtest number   */
1291  00024B44    0d effffff3ea 51              movl _subtest,r1
1292  00024B4B                                   #         asm("movl _sgl_dummy1,r2");  		/* r2  = error code       */
1293  00024B4B    0d effffff3e3 52              movl _sgl_dummy1,r2
1294  00024B52                                   #         asm("movl _cycle,r3");       		/* r3  = cycle count      */
1295  00024B52    0d effffff3dc 53              movl _cycle,r3
1296  00024B59                                   #         asm("movl _sgl_value_1,r4"); 		/* r4  = operand 1        */
1297  00024B59    0d effffff3d5 54              movl _sgl_value_1,r4
1298  00024B60                                   #         asm("movl _sgl_value_2,r5"); 		/* r5  = operand 2        */
1299  00024B60    0d effffff3ce 55              movl _sgl_value_2,r5
1300  00024B67                                   #         asm("movl _sgl_value_3,r6"); 		/* r6  = MULL2's result   */
1301  00024B67    0d effffff3c7 56              movl _sgl_value_3,r6
1302  00024B6E                                   # 	if( code == 1 ) {
1303  00024B6E    1d ad04 01                    	cmpl	4(fp),$1
1304  00024B72    21 11                         	jneq	L376
1305  00024B74                                   # 	     asm("movl _sgl_value_4,r7"); 	/* r7  = expected result  */
1306  00024B74    0d effffff3ba 57              movl _sgl_value_4,r7
1307  00024B7B                                   # 	     asm("movl _index,r8");;		/* r8  = data index       */
1308  00024B7B    0d effffff3b3 58              movl _index,r8
1309  00024B82                                   # 	}
1310  00024B82                                   # 	 else if( code == 2 )  {  /* corrupted register */
1311  00024B82    13 0100                       	jbr 	L377
1312  00024B85                                  L376:
1313  00024B85    1d ad04 02                    	cmpl	4(fp),$2
1314  00024B89    21 3e                         	jneq	L378
1315  00024B8B                                   # 	     sgl_dummy1 = store_regs[index2];   /* get the actual reg data */
1316  00024B8B    0d effffff3a3 50              	movl	_index2,r0
1317  00024B92    0d 40effffff39b               	movl	_store_regs[r0],_sgl_dummy1
                  effffff396 
1318  00024B9E                                   # 	     sgl_dummy2 = load_regs[index2];    /* get the data expected  */
1319  00024B9E    0d effffff390 50              	movl	_index2,r0
1320  00024BA5    0d 40effffff388               	movl	_load_regs[r0],_sgl_dummy2
                  effffff383 
1321  00024BB1                                   # 	     asm("movl _index2,r7");		/* r7  = register number  */
1322  00024BB1    0d effffff37d 57              movl _index2,r7
1323  00024BB8                                   # 	     asm("movl _sgl_dummy1,r8");	/* r8  = final reg value  */
1324  00024BB8    0d effffff376 58              movl _sgl_dummy1,r8
1325  00024BBF                                   # 	     asm("movl _sgl_dummy2,r9");	/* r9  = expected value   */
1326  00024BBF    0d effffff36f 59              movl _sgl_dummy2,r9
1327  00024BC6                                   # 	}
1328  00024BC6                                   # 	 else if( code == 3 ) {  /* corrupted PSL */
1329  00024BC6    13 00bc                       	jbr 	L379
1330  00024BC9                                  L378:
1331  00024BC9    1d ad04 03                    	cmpl	4(fp),$3
1332  00024BCD    21 18                         	jneq	L380
1333  00024BCF                                   #              asm("movl _init_psl,r7");          /* r7  = initial PSL     */
1334  00024BCF    0d effffff35f 57              movl _init_psl,r7
1335  00024BD6                                   #              asm("movl _psl_val,r8");           /* r8  = final PSL       */
1336  00024BD6    0d effffff358 58              movl _psl_val,r8
1337  00024BDD                                   #              asm("movl _exp_psl,r9");           /* r9  = expected PSL    */
1338  00024BDD    0d effffff351 59              movl _exp_psl,r9
1339  00024BE4                                   #         }
1340  00024BE4                                   # 	 else if( code == 4 ) {  /* corrupted Acc */
1341  00024BE4    13 009e                       	jbr 	L381
1342  00024BE7                                  L380:
1343  00024BE7    1d ad04 04                    	cmpl	4(fp),$4
1344  00024BEB    21 6f                         	jneq	L382
1345  00024BED                                   # 	     if( subtest == 1 ) {	/* single precision */
1346  00024BED    1d effffff341 01              	cmpl	_subtest,$1
1347  00024BF4    21 33                         	jneq	L383
1348  00024BF6                                   # 		 dbl_ld_acc.m = sgl_ld_acc;
1349  00024BF6    0d effffff338 effffff333      	movl	_sgl_ld_acc,_dbl_ld_acc
1350  00024C01                                   # 		 dbl_ld_acc.l = 0;
1351  00024C01    4d effffff331                 	clrl	_dbl_ld_acc+4
1352  00024C07                                   # 		 dbl_st_acc.m = sgl_st_acc;
1353  00024C07    0d effffff327 effffff322      	movl	_sgl_st_acc,_dbl_st_acc
1354  00024C12                                   # 		 dbl_st_acc.l = 0;
1355  00024C12    4d effffff320                 	clrl	_dbl_st_acc+4
1356  00024C18                                   # 		 dbl_expected.m = sgl_expected;
1357  00024C18    0d effffff316 effffff311      	movl	_sgl_expected,_dbl_expected
1358  00024C23                                   # 		 dbl_expected.l = 0;
1359  00024C23    4d effffff30f                 	clrl	_dbl_expected+4
1360  00024C29                                   # 	     };
1361  00024C29                                  L383:
1362  00024C29                                   # 	     asm("movl _index,r7");		/* r7  = data index       */
1363  00024C29    0d effffff305 57              movl _index,r7
1364  00024C30                                   # 	     asm("movl _dbl_ld_acc,r8");	/* r8  = MS initial Acc.  */
1365  00024C30    0d effffff2fe 58              movl _dbl_ld_acc,r8
1366  00024C37                                   # 	     asm("movl _dbl_ld_acc+4,r9");	/* r9  = LS initial Acc.  */
1367  00024C37    0d effffff2fb 59              movl _dbl_ld_acc+4,r9
1368  00024C3E                                   # 	     asm("movl _dbl_st_acc,r10");	/* r10 = MS final Acc.    */
1369  00024C3E    0d effffff2f0 5a              movl _dbl_st_acc,r10
1370  00024C45                                   # 	     asm("movl _dbl_st_acc+4,r11");	/* r11 = LS final Acc.    */
1371  00024C45    0d effffff2ed 5b              movl _dbl_st_acc+4,r11
1372  00024C4C                                   # 	     asm("movl _dbl_expected,r12");	/* r12 = MS expected Acc. */
1373  00024C4C    0d effffff2e2 5c              movl _dbl_expected,r12
1374  00024C53                                   # 	     asm("movl _dbl_expected+4,r13");	/* r13 = LS expected Acc. */
1375  00024C53    0d effffff2df 5d              movl _dbl_expected+4,r13
1376  00024C5A                                   # 	}
1377  00024C5A                                   # 	 else if( code == 5 ) {  /* bad final Acc */
1378  00024C5A    11 29                         	jbr 	L384
1379  00024C5C                                  L382:
1380  00024C5C    1d ad04 05                    	cmpl	4(fp),$5
1381  00024C60    21 23                         	jneq	L385
1382  00024C62                                   # 	     asm("movl _index,r7");		/* r7  = data index       */
1383  00024C62    0d effffff2cc 57              movl _index,r7
1384  00024C69                                   # 	     asm("movl _sgl_ld_acc,r8");	/* r8  = initial Acc.     */
1385  00024C69    0d effffff2c5 58              movl _sgl_ld_acc,r8
1386  00024C70                                   # 	     asm("movl _sgl_value_10,r9");	/* r9  = fpp operand      */
1387  00024C70    0d effffff2be 59              movl _sgl_value_10,r9
1388  00024C77                                   # 	     asm("movl _sgl_st_acc,r10");	/* r10 = final Acc.       */
1389  00024C77    0d effffff2b7 5a              movl _sgl_st_acc,r10
1390  00024C7E                                   # 	     asm("movl _sgl_expected,r11");	/* r11 = expected Acc.    */
1391  00024C7E    0d effffff2b0 5b              movl _sgl_expected,r11
1392  00024C85                                   # 	};
1393  00024C85                                  L385:
1394  00024C85                                  L384:
1395  00024C85                                  L381:
1396  00024C85                                  L379:
1397  00024C85                                  L377:
1398  00024C85                                   # 	asm("halt");                   /* HALT ...                */
1399  00024C85    00                            halt
1400  00024C86                                   # }
1401  00024C86    40                            	ret#2
1402  00024C87                                  	.set	L372,0x0
1403  00024C87                                  L374:
1404  00024C87    13 feab                       	jbr 	L375
1405  00024C8A                                  	.data
1405  00048BBE                                  	.data

unix.superglobalmegacorp.com

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