Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-21 10:05:32

0001 /*
0002  *  qp_exe_op_vec.h  --
0003  *  Template for the vector numeric operations.
0004  *
0005  *  Original: 24-Nov-1995 22:11
0006  *
0007  *  Author:   Maarten Ballintijn <Maarten.Ballintijn@cern.ch>
0008  *
0009  *  $Id$
0010  *
0011  *  $Log$
0012  *  Revision 1.3  1996/04/23 18:38:34  maartenb
0013  *  - Add RCS keywords
0014  *
0015  *
0016  */
0017 
0018 case FC_VADD + (OP_BASE):
0019 {
0020     int     n, i, inc_o1;
0021     OP_TYPE     v;
0022 
0023     n = frame_size[framep];
0024     o1 = &stack[frame[framep]];
0025     inc_o1 = datatype_size[OP_DTYPE];
0026 
0027     v = 0;
0028     for ( i=0 ; i < n ; i++ ) {
0029         v += *((OP_TYPE *) o1);
0030         o1 += inc_o1;
0031     }
0032 
0033     POP_FRAME(1);
0034     NEW_FRAME(OP_DTYPE,1,r);
0035 
0036     *((OP_TYPE *) r) = v;
0037     break;
0038 }
0039 
0040 case FC_VMUL + (OP_BASE):
0041 {
0042     int     n, i, inc_o1;
0043     OP_TYPE     v;
0044 
0045     n = frame_size[framep];
0046     o1 = &stack[frame[framep]];
0047     inc_o1 = datatype_size[OP_DTYPE];
0048 
0049     v = 1;
0050     for ( i=0 ; i < n ; i++ ) {
0051         v *= *((OP_TYPE *) o1);
0052         o1 += inc_o1;
0053     }
0054 
0055     POP_FRAME(1);
0056     NEW_FRAME(OP_DTYPE,1,r);
0057 
0058     *((OP_TYPE *) r) = v;
0059     break;
0060 }
0061 
0062 case FC_VMIN + (OP_BASE):
0063 {
0064     int     n, i, inc_o1;
0065     OP_TYPE     v;
0066 
0067     n = frame_size[framep];
0068     o1 = &stack[frame[framep]];
0069     inc_o1 = datatype_size[OP_DTYPE];
0070 
0071     v = OP_TYPE_MAX;
0072     for ( i=0 ; i < n ; i++ ) {
0073         if ( v > *((OP_TYPE *) o1) ) {
0074             v = *((OP_TYPE *) o1);
0075         }
0076         o1 += inc_o1;
0077     }
0078 
0079     POP_FRAME(1);
0080     NEW_FRAME(OP_DTYPE,1,r);
0081 
0082     *((OP_TYPE *) r) = v;
0083     break;
0084 }
0085 
0086 case FC_VMAX + (OP_BASE):
0087 {
0088     int     n, i, inc_o1;
0089     OP_TYPE     v;
0090 
0091     n = frame_size[framep];
0092     o1 = &stack[frame[framep]];
0093     inc_o1 = datatype_size[OP_DTYPE];
0094 
0095     v = OP_TYPE_MIN;
0096     for ( i=0 ; i < n ; i++ ) {
0097         if ( v < *((OP_TYPE *) o1) ) {
0098             v = *((OP_TYPE *) o1);
0099         }
0100         o1 += inc_o1;
0101     }
0102 
0103     POP_FRAME(1);
0104     NEW_FRAME(OP_DTYPE,1,r);
0105 
0106     *((OP_TYPE *) r) = v;
0107     break;
0108 }