*AINDMS1PRST -- ADDS TO FORM A STACKED TRACE 00000305 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** *TITLE S1PRST -- ADDS TO FORM A STACKED TRACE 00000404 *A AUTHOR H.HOOGRAAT 00000500 *A DESIGNER H.HOOGRAAT 00000600 *A LANGUAGE S/370 ASSEMBLER F 00000700 *A SYSTEM IBM (SEE CRAY) 00000800 *A WRITTEN 00000900 * REVISED 11-15-77 COOPER - CORRECT MUTING OF THE 00001000 * LAST SAMPLE. 00001100 * REVISED 10-21-86 REM. CONVERTED TO VECTOR INSTRUCTIONS. 00001200 *A 00001300 *A 00001400 *A CALL S1PRST ( XTEM, STACK, DIVS, NOSAMP ) 00001500 *A XTEM = INPUT/OUTPUT DATA ARRAY. R4 00001600 *A STACK = WORK ARRAY TO HOLD STACKED TRACES. R4 00001700 *A DIVS = WORK ARRAY TO HOLD STACK COUNTS. R4 00001800 *A NOSAMP = NUMBER OF SAMPLES I4 00001900 *A 00002000 *A 00002100 *A S1PRST PREPARES XTEM FOR ADDITION INTO THE TRACE STACK. MUTED 00002200 *A PORTIONS OF A TRACE ARE NOT STACKED AND HENCE NOT NORMALIZED. 00002300 *A A MUTED PORTION IS DEFINED AS MORE THAN 2 CONSECUTIVE ZERO 00002400 *A SAMPLES. 00002500 *AEND 00002600 *TITLE S1NORM -- DIVIDES TO NORMALIZE A STACKED TRACE 00002700 *A AUTHOR H.HOOGRAAT 00002800 *A DESIGNER H.HOOGRAAT 00002900 *A LANGUAGE S/370 ASSEMBLER F 00003000 *A SYSTEM IBM (SEE CRAY) 00003100 *A WRITTEN 00003200 * REVISED 10-21-86 REM. CONVERTED TO VECTOR INSTRUCTIONS. 00003300 *A 00003400 *A 00003500 *A CALL S1NORM ( XTEM, STACK, DIVS, NOSAMP ) 00003600 *A XTEM = INPUT/OUTPUT DATA ARRAY. R4 00003700 *A STACK = WORK ARRAY TO HOLD STACKED TRACES. R4 00003800 *A DIVS = WORK ARRAY TO HOLD STACK COUNTS. R4 00003900 *A NOSAMP = NUMBER OF SAMPLES I4 00004000 *A 00004100 *A 00004200 *A S1NORM RETURNS A STACKED TRACE IN XTEM AS COMPUTED FROM 00004300 *A STACK/DIVS. 00004400 *A 00004500 *AEND 00004600 S1PRST CSECT 00004700 ENTRY S1NORM 00004800 COPY S1REG 00004900 V0 EQU 0 VECTOR REGISTER 0 00005000 V2 EQU 2 VECTOR REGISTER 2 00005100 XTEM EQU R2 00005200 STACK EQU R3 00005300 DIVS EQU R4 00005400 BASER EQU R12 00005500 * 00005600 USING *,BASER 00005700 * 00005800 BASEADD STM R2,R12,28(R13) SAVE USERS REGISTERS 00005900 LR BASER,R15 00006000 * 00006100 LM R2,R5,0(R1) LOAD CALLING SEQUENCE 00006200 L R5,0(R5) LOAD VALUE OF NOSAMP 00006300 LTR R5,R5 TEST FOR 0 00006400 BZ RETURN EXIT IF NONE ON THIS CALL 00006500 * 00006600 SER FR0,FR0 CREATE A ZERO VALUE 00006700 LE FR2,=E'1.0' PUT A 1 IN FLOAT REG 2 00006800 LR R6,STACK CREATE ANOTHER STACK INDEX 00006900 LR R7,XTEM CREATE ANOTHER XTEM INDEX 00007000 LR R8,DIVS CREATE ANOTHER DIVS INDEX 00007100 VSVMM 1 00007200 * 00007300 VLOOP1 VLVCU R5 00007400 VCES 6,FR0,XTEM MARK ALL NON-ZERO INPUT VALUES 00007500 VLE V0,STACK LOAD SUM ARRAY 00007600 VAE V0,V0,R7 ADD INPUT ARRAY TO SUM ARRAY 00007700 VSTME V0,R6 STORE RESULTS BACK IN SUM ARRAY 00007800 VLEQ V0,FR2 SET VECTOR TO ALL 1.0'S 00007900 VAE V0,V0,DIVS ADD DIVS ARRAY(UNDER MASK- ONLY NOT 0) 00008000 VSTME V0,R8 STORE RESULTS BACK IN DIVS ARRAY 00008100 BP VLOOP1 00008200 * 00008300 VSVMM 0 00008400 * 00008500 RETURN LM R2,R12,28(R13) RESTORE REGISTERS 00008600 BR R14 00008700 * 00008800 S1NORM STM R2,R12,28(R13) S1NORM ENTRY-SAVE REGISTERS 00008900 * 00009000 LA R2,S1NORM-BASEADD COMPUTE PROPER BASE ADDRESS 00009100 LR BASER,R15 00009200 SR BASER,R2 00009300 * 00009400 LM R2,R5,0(R1) LOAD CALLING SEQUENCE 00009500 L R5,0(R5) LOAD VALUE OF NOSAMP 00009600 LTR R5,R5 TEST FOR 0 00009700 BZ RETURN RETURN IF NONE ON THIS CALL 00009800 * 00009900 LR R7,DIVS SAVE START ADDRESS OF DIVS ARRAY 00010000 SER FR0,FR0 CREATE A 0 VALUE 00010100 VSVMM 1 SET MASK TO NOT PROCESS ZEROS 00010200 * 00010300 VLOOP2 VLVCU R5 00010400 VCES 6,FR0,DIVS DETERMINE ZEROS 00010500 VLEQ V0,FR0 LOAD VECTOR WITH ZEROS 00010600 VLE V2,STACK LOAD VECTOR WITH STACK ARRAY 00010700 VDE V0,V2,R7 DIVIDE BY DIVS ARRAY 00010800 VSTE V0,XTEM STORE IN XTEM ARRAY 00010900 BP VLOOP2 CONTINUE LOOP IF NECESSARY 00011000 * 00011100 VSVMM 0 TURN OFF MASKING 00011200 B RETURN 00011300 * 00011400 LTORG 00011500 * 00011600 END 00011700