LCOV - code coverage report
Current view: top level - ballet/reedsol - fd_reedsol_encode_64.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 222 0.0 %
Date: 2026-03-19 18:19:27 Functions: 0 1 0.0 %

          Line data    Source code
       1             : /* Note: This file is auto generated. */
       2             : #include "fd_reedsol_ppt.h"
       3             : 
       4             : FD_FN_UNSANITIZED void
       5             : fd_reedsol_private_encode_64( ulong                 shred_sz,
       6             :                               uchar const * const * data_shred,
       7             :                               ulong                 data_shred_cnt,
       8             :                               uchar       * const * parity_shred,
       9           0 :                               ulong                 parity_shred_cnt ) {
      10           0 :   for( ulong shred_pos=0UL; shred_pos<shred_sz; /* advanced manually at end of loop */ ) {
      11           0 :     gf_t in00 = gf_ldu( data_shred[  0 ] + shred_pos );  gf_t in01 = gf_ldu( data_shred[  1 ] + shred_pos );
      12           0 :     gf_t in02 = gf_ldu( data_shred[  2 ] + shred_pos );  gf_t in03 = gf_ldu( data_shred[  3 ] + shred_pos );
      13           0 :     gf_t in04 = gf_ldu( data_shred[  4 ] + shred_pos );  gf_t in05 = gf_ldu( data_shred[  5 ] + shred_pos );
      14           0 :     gf_t in06 = gf_ldu( data_shred[  6 ] + shred_pos );  gf_t in07 = gf_ldu( data_shred[  7 ] + shred_pos );
      15           0 :     gf_t in08 = gf_ldu( data_shred[  8 ] + shred_pos );  gf_t in09 = gf_ldu( data_shred[  9 ] + shred_pos );
      16           0 :     gf_t in10 = gf_ldu( data_shred[ 10 ] + shred_pos );  gf_t in11 = gf_ldu( data_shred[ 11 ] + shred_pos );
      17           0 :     gf_t in12 = gf_ldu( data_shred[ 12 ] + shred_pos );  gf_t in13 = gf_ldu( data_shred[ 13 ] + shred_pos );
      18           0 :     gf_t in14 = gf_ldu( data_shred[ 14 ] + shred_pos );  gf_t in15 = gf_ldu( data_shred[ 15 ] + shred_pos );
      19           0 :     gf_t in16 = gf_ldu( data_shred[ 16 ] + shred_pos );  gf_t in17 = gf_ldu( data_shred[ 17 ] + shred_pos );
      20           0 :     gf_t in18 = gf_ldu( data_shred[ 18 ] + shred_pos );  gf_t in19 = gf_ldu( data_shred[ 19 ] + shred_pos );
      21           0 :     gf_t in20 = gf_ldu( data_shred[ 20 ] + shred_pos );  gf_t in21 = gf_ldu( data_shred[ 21 ] + shred_pos );
      22           0 :     gf_t in22 = gf_ldu( data_shred[ 22 ] + shred_pos );  gf_t in23 = gf_ldu( data_shred[ 23 ] + shred_pos );
      23           0 :     gf_t in24 = gf_ldu( data_shred[ 24 ] + shred_pos );  gf_t in25 = gf_ldu( data_shred[ 25 ] + shred_pos );
      24           0 :     gf_t in26 = gf_ldu( data_shred[ 26 ] + shred_pos );  gf_t in27 = gf_ldu( data_shred[ 27 ] + shred_pos );
      25           0 :     gf_t in28 = gf_ldu( data_shred[ 28 ] + shred_pos );  gf_t in29 = gf_ldu( data_shred[ 29 ] + shred_pos );
      26           0 :     gf_t in30 = gf_ldu( data_shred[ 30 ] + shred_pos );  gf_t in31 = gf_ldu( data_shred[ 31 ] + shred_pos );
      27           0 :     gf_t in32 = gf_zero();  gf_t in33 = gf_zero();  gf_t in34 = gf_zero();  gf_t in35 = gf_zero();
      28           0 :     gf_t in36 = gf_zero();  gf_t in37 = gf_zero();  gf_t in38 = gf_zero();  gf_t in39 = gf_zero();
      29           0 :     gf_t in40 = gf_zero();  gf_t in41 = gf_zero();  gf_t in42 = gf_zero();  gf_t in43 = gf_zero();
      30           0 :     gf_t in44 = gf_zero();  gf_t in45 = gf_zero();  gf_t in46 = gf_zero();  gf_t in47 = gf_zero();
      31           0 :     gf_t in48 = gf_zero();  gf_t in49 = gf_zero();  gf_t in50 = gf_zero();  gf_t in51 = gf_zero();
      32           0 :     gf_t in52 = gf_zero();  gf_t in53 = gf_zero();  gf_t in54 = gf_zero();  gf_t in55 = gf_zero();
      33           0 :     gf_t in56 = gf_zero();  gf_t in57 = gf_zero();  gf_t in58 = gf_zero();  gf_t in59 = gf_zero();
      34           0 :     gf_t in60 = gf_zero();  gf_t in61 = gf_zero();  gf_t in62 = gf_zero();  gf_t in63 = gf_zero();
      35           0 :     switch( data_shred_cnt ) {
      36           0 :       case 64UL: in63 = gf_ldu( data_shred[ 63 ] + shred_pos ); FALLTHRU
      37           0 :       case 63UL: in62 = gf_ldu( data_shred[ 62 ] + shred_pos ); FALLTHRU
      38           0 :       case 62UL: in61 = gf_ldu( data_shred[ 61 ] + shred_pos ); FALLTHRU
      39           0 :       case 61UL: in60 = gf_ldu( data_shred[ 60 ] + shred_pos ); FALLTHRU
      40           0 :       case 60UL: in59 = gf_ldu( data_shred[ 59 ] + shred_pos ); FALLTHRU
      41           0 :       case 59UL: in58 = gf_ldu( data_shred[ 58 ] + shred_pos ); FALLTHRU
      42           0 :       case 58UL: in57 = gf_ldu( data_shred[ 57 ] + shred_pos ); FALLTHRU
      43           0 :       case 57UL: in56 = gf_ldu( data_shred[ 56 ] + shred_pos ); FALLTHRU
      44           0 :       case 56UL: in55 = gf_ldu( data_shred[ 55 ] + shred_pos ); FALLTHRU
      45           0 :       case 55UL: in54 = gf_ldu( data_shred[ 54 ] + shred_pos ); FALLTHRU
      46           0 :       case 54UL: in53 = gf_ldu( data_shred[ 53 ] + shred_pos ); FALLTHRU
      47           0 :       case 53UL: in52 = gf_ldu( data_shred[ 52 ] + shred_pos ); FALLTHRU
      48           0 :       case 52UL: in51 = gf_ldu( data_shred[ 51 ] + shred_pos ); FALLTHRU
      49           0 :       case 51UL: in50 = gf_ldu( data_shred[ 50 ] + shred_pos ); FALLTHRU
      50           0 :       case 50UL: in49 = gf_ldu( data_shred[ 49 ] + shred_pos ); FALLTHRU
      51           0 :       case 49UL: in48 = gf_ldu( data_shred[ 48 ] + shred_pos ); FALLTHRU
      52           0 :       case 48UL: in47 = gf_ldu( data_shred[ 47 ] + shred_pos ); FALLTHRU
      53           0 :       case 47UL: in46 = gf_ldu( data_shred[ 46 ] + shred_pos ); FALLTHRU
      54           0 :       case 46UL: in45 = gf_ldu( data_shred[ 45 ] + shred_pos ); FALLTHRU
      55           0 :       case 45UL: in44 = gf_ldu( data_shred[ 44 ] + shred_pos ); FALLTHRU
      56           0 :       case 44UL: in43 = gf_ldu( data_shred[ 43 ] + shred_pos ); FALLTHRU
      57           0 :       case 43UL: in42 = gf_ldu( data_shred[ 42 ] + shred_pos ); FALLTHRU
      58           0 :       case 42UL: in41 = gf_ldu( data_shred[ 41 ] + shred_pos ); FALLTHRU
      59           0 :       case 41UL: in40 = gf_ldu( data_shred[ 40 ] + shred_pos ); FALLTHRU
      60           0 :       case 40UL: in39 = gf_ldu( data_shred[ 39 ] + shred_pos ); FALLTHRU
      61           0 :       case 39UL: in38 = gf_ldu( data_shred[ 38 ] + shred_pos ); FALLTHRU
      62           0 :       case 38UL: in37 = gf_ldu( data_shred[ 37 ] + shred_pos ); FALLTHRU
      63           0 :       case 37UL: in36 = gf_ldu( data_shred[ 36 ] + shred_pos ); FALLTHRU
      64           0 :       case 36UL: in35 = gf_ldu( data_shred[ 35 ] + shred_pos ); FALLTHRU
      65           0 :       case 35UL: in34 = gf_ldu( data_shred[ 34 ] + shred_pos ); FALLTHRU
      66           0 :       case 34UL: in33 = gf_ldu( data_shred[ 33 ] + shred_pos ); FALLTHRU
      67           0 :       case 33UL: in32 = gf_ldu( data_shred[ 32 ] + shred_pos );
      68           0 :     }
      69           0 :     #define ALL_VARS in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63
      70           0 :     #define ALL_VARS_REF &in00, &in01, &in02, &in03, &in04, &in05, &in06, &in07, &in08, &in09, &in10, &in11, &in12, &in13, &in14, &in15, &in16, &in17, &in18, &in19, &in20, &in21, &in22, &in23, &in24, &in25, &in26, &in27, &in28, &in29, &in30, &in31, &in32, &in33, &in34, &in35, &in36, &in37, &in38, &in39, &in40, &in41, &in42, &in43, &in44, &in45, &in46, &in47, &in48, &in49, &in50, &in51, &in52, &in53, &in54, &in55, &in56, &in57, &in58, &in59, &in60, &in61, &in62, &in63
      71           0 :     switch( data_shred_cnt ) {
      72           0 :       case 64UL: FD_REEDSOL_GENERATE_IFFT( 64,  0, ALL_VARS ); break;
      73           0 :       case 63UL: fd_reedsol_ppt_64_63( ALL_VARS_REF ); break;
      74           0 :       case 62UL: fd_reedsol_ppt_64_62( ALL_VARS_REF ); break;
      75           0 :       case 61UL: fd_reedsol_ppt_64_61( ALL_VARS_REF ); break;
      76           0 :       case 60UL: fd_reedsol_ppt_64_60( ALL_VARS_REF ); break;
      77           0 :       case 59UL: fd_reedsol_ppt_64_59( ALL_VARS_REF ); break;
      78           0 :       case 58UL: fd_reedsol_ppt_64_58( ALL_VARS_REF ); break;
      79           0 :       case 57UL: fd_reedsol_ppt_64_57( ALL_VARS_REF ); break;
      80           0 :       case 56UL: fd_reedsol_ppt_64_56( ALL_VARS_REF ); break;
      81           0 :       case 55UL: fd_reedsol_ppt_64_55( ALL_VARS_REF ); break;
      82           0 :       case 54UL: fd_reedsol_ppt_64_54( ALL_VARS_REF ); break;
      83           0 :       case 53UL: fd_reedsol_ppt_64_53( ALL_VARS_REF ); break;
      84           0 :       case 52UL: fd_reedsol_ppt_64_52( ALL_VARS_REF ); break;
      85           0 :       case 51UL: fd_reedsol_ppt_64_51( ALL_VARS_REF ); break;
      86           0 :       case 50UL: fd_reedsol_ppt_64_50( ALL_VARS_REF ); break;
      87           0 :       case 49UL: fd_reedsol_ppt_64_49( ALL_VARS_REF ); break;
      88           0 :       case 48UL: fd_reedsol_ppt_64_48( ALL_VARS_REF ); break;
      89           0 :       case 47UL: fd_reedsol_ppt_64_47( ALL_VARS_REF ); break;
      90           0 :       case 46UL: fd_reedsol_ppt_64_46( ALL_VARS_REF ); break;
      91           0 :       case 45UL: fd_reedsol_ppt_64_45( ALL_VARS_REF ); break;
      92           0 :       case 44UL: fd_reedsol_ppt_64_44( ALL_VARS_REF ); break;
      93           0 :       case 43UL: fd_reedsol_ppt_64_43( ALL_VARS_REF ); break;
      94           0 :       case 42UL: fd_reedsol_ppt_64_42( ALL_VARS_REF ); break;
      95           0 :       case 41UL: fd_reedsol_ppt_64_41( ALL_VARS_REF ); break;
      96           0 :       case 40UL: fd_reedsol_ppt_64_40( ALL_VARS_REF ); break;
      97           0 :       case 39UL: fd_reedsol_ppt_64_39( ALL_VARS_REF ); break;
      98           0 :       case 38UL: fd_reedsol_ppt_64_38( ALL_VARS_REF ); break;
      99           0 :       case 37UL: fd_reedsol_ppt_64_37( ALL_VARS_REF ); break;
     100           0 :       case 36UL: fd_reedsol_ppt_64_36( ALL_VARS_REF ); break;
     101           0 :       case 35UL: fd_reedsol_ppt_64_35( ALL_VARS_REF ); break;
     102           0 :       case 34UL: fd_reedsol_ppt_64_34( ALL_VARS_REF ); break;
     103           0 :       case 33UL: fd_reedsol_ppt_64_33( ALL_VARS_REF ); break;
     104           0 :     }
     105             :     /* That generated the first 64-data_shred_cnt parity shreds in the
     106             :        last 64-data_shred_cnt variables. We might only need
     107             :        parity_shred_cnt of them though. */
     108           0 :     ulong total_shreds = data_shred_cnt+parity_shred_cnt;
     109           0 :     switch( data_shred_cnt ) {
     110           0 :       case 33UL: if( total_shreds <= 33UL ) break; gf_stu( parity_shred[ 33UL-data_shred_cnt ] + shred_pos, in33 ); in33 = gf_zero(); FALLTHRU
     111           0 :       case 34UL: if( total_shreds <= 34UL ) break; gf_stu( parity_shred[ 34UL-data_shred_cnt ] + shred_pos, in34 ); in34 = gf_zero(); FALLTHRU
     112           0 :       case 35UL: if( total_shreds <= 35UL ) break; gf_stu( parity_shred[ 35UL-data_shred_cnt ] + shred_pos, in35 ); in35 = gf_zero(); FALLTHRU
     113           0 :       case 36UL: if( total_shreds <= 36UL ) break; gf_stu( parity_shred[ 36UL-data_shred_cnt ] + shred_pos, in36 ); in36 = gf_zero(); FALLTHRU
     114           0 :       case 37UL: if( total_shreds <= 37UL ) break; gf_stu( parity_shred[ 37UL-data_shred_cnt ] + shred_pos, in37 ); in37 = gf_zero(); FALLTHRU
     115           0 :       case 38UL: if( total_shreds <= 38UL ) break; gf_stu( parity_shred[ 38UL-data_shred_cnt ] + shred_pos, in38 ); in38 = gf_zero(); FALLTHRU
     116           0 :       case 39UL: if( total_shreds <= 39UL ) break; gf_stu( parity_shred[ 39UL-data_shred_cnt ] + shred_pos, in39 ); in39 = gf_zero(); FALLTHRU
     117           0 :       case 40UL: if( total_shreds <= 40UL ) break; gf_stu( parity_shred[ 40UL-data_shred_cnt ] + shred_pos, in40 ); in40 = gf_zero(); FALLTHRU
     118           0 :       case 41UL: if( total_shreds <= 41UL ) break; gf_stu( parity_shred[ 41UL-data_shred_cnt ] + shred_pos, in41 ); in41 = gf_zero(); FALLTHRU
     119           0 :       case 42UL: if( total_shreds <= 42UL ) break; gf_stu( parity_shred[ 42UL-data_shred_cnt ] + shred_pos, in42 ); in42 = gf_zero(); FALLTHRU
     120           0 :       case 43UL: if( total_shreds <= 43UL ) break; gf_stu( parity_shred[ 43UL-data_shred_cnt ] + shred_pos, in43 ); in43 = gf_zero(); FALLTHRU
     121           0 :       case 44UL: if( total_shreds <= 44UL ) break; gf_stu( parity_shred[ 44UL-data_shred_cnt ] + shred_pos, in44 ); in44 = gf_zero(); FALLTHRU
     122           0 :       case 45UL: if( total_shreds <= 45UL ) break; gf_stu( parity_shred[ 45UL-data_shred_cnt ] + shred_pos, in45 ); in45 = gf_zero(); FALLTHRU
     123           0 :       case 46UL: if( total_shreds <= 46UL ) break; gf_stu( parity_shred[ 46UL-data_shred_cnt ] + shred_pos, in46 ); in46 = gf_zero(); FALLTHRU
     124           0 :       case 47UL: if( total_shreds <= 47UL ) break; gf_stu( parity_shred[ 47UL-data_shred_cnt ] + shred_pos, in47 ); in47 = gf_zero(); FALLTHRU
     125           0 :       case 48UL: if( total_shreds <= 48UL ) break; gf_stu( parity_shred[ 48UL-data_shred_cnt ] + shred_pos, in48 ); in48 = gf_zero(); FALLTHRU
     126           0 :       case 49UL: if( total_shreds <= 49UL ) break; gf_stu( parity_shred[ 49UL-data_shred_cnt ] + shred_pos, in49 ); in49 = gf_zero(); FALLTHRU
     127           0 :       case 50UL: if( total_shreds <= 50UL ) break; gf_stu( parity_shred[ 50UL-data_shred_cnt ] + shred_pos, in50 ); in50 = gf_zero(); FALLTHRU
     128           0 :       case 51UL: if( total_shreds <= 51UL ) break; gf_stu( parity_shred[ 51UL-data_shred_cnt ] + shred_pos, in51 ); in51 = gf_zero(); FALLTHRU
     129           0 :       case 52UL: if( total_shreds <= 52UL ) break; gf_stu( parity_shred[ 52UL-data_shred_cnt ] + shred_pos, in52 ); in52 = gf_zero(); FALLTHRU
     130           0 :       case 53UL: if( total_shreds <= 53UL ) break; gf_stu( parity_shred[ 53UL-data_shred_cnt ] + shred_pos, in53 ); in53 = gf_zero(); FALLTHRU
     131           0 :       case 54UL: if( total_shreds <= 54UL ) break; gf_stu( parity_shred[ 54UL-data_shred_cnt ] + shred_pos, in54 ); in54 = gf_zero(); FALLTHRU
     132           0 :       case 55UL: if( total_shreds <= 55UL ) break; gf_stu( parity_shred[ 55UL-data_shred_cnt ] + shred_pos, in55 ); in55 = gf_zero(); FALLTHRU
     133           0 :       case 56UL: if( total_shreds <= 56UL ) break; gf_stu( parity_shred[ 56UL-data_shred_cnt ] + shred_pos, in56 ); in56 = gf_zero(); FALLTHRU
     134           0 :       case 57UL: if( total_shreds <= 57UL ) break; gf_stu( parity_shred[ 57UL-data_shred_cnt ] + shred_pos, in57 ); in57 = gf_zero(); FALLTHRU
     135           0 :       case 58UL: if( total_shreds <= 58UL ) break; gf_stu( parity_shred[ 58UL-data_shred_cnt ] + shred_pos, in58 ); in58 = gf_zero(); FALLTHRU
     136           0 :       case 59UL: if( total_shreds <= 59UL ) break; gf_stu( parity_shred[ 59UL-data_shred_cnt ] + shred_pos, in59 ); in59 = gf_zero(); FALLTHRU
     137           0 :       case 60UL: if( total_shreds <= 60UL ) break; gf_stu( parity_shred[ 60UL-data_shred_cnt ] + shred_pos, in60 ); in60 = gf_zero(); FALLTHRU
     138           0 :       case 61UL: if( total_shreds <= 61UL ) break; gf_stu( parity_shred[ 61UL-data_shred_cnt ] + shred_pos, in61 ); in61 = gf_zero(); FALLTHRU
     139           0 :       case 62UL: if( total_shreds <= 62UL ) break; gf_stu( parity_shred[ 62UL-data_shred_cnt ] + shred_pos, in62 ); in62 = gf_zero(); FALLTHRU
     140           0 :       case 63UL: if( total_shreds <= 63UL ) break; gf_stu( parity_shred[ 63UL-data_shred_cnt ] + shred_pos, in63 ); in63 = gf_zero();
     141           0 :     }
     142           0 :     ulong parity_produced  = fd_ulong_min( 64UL - data_shred_cnt, parity_shred_cnt );
     143           0 :     ulong parity_remaining = parity_shred_cnt - parity_produced;
     144           0 :     if( FD_UNLIKELY( parity_remaining>0UL ) ) {
     145             :       /* Produce another 64 parity shreds */
     146           0 :       FD_REEDSOL_GENERATE_FFT(  64, 64, ALL_VARS );
     147           0 :       switch( parity_remaining ) {
     148           0 :         default:
     149           0 :         case 64UL: gf_stu( parity_shred[ 63UL+parity_produced ] + shred_pos, in63 ); FALLTHRU
     150           0 :         case 63UL: gf_stu( parity_shred[ 62UL+parity_produced ] + shred_pos, in62 ); FALLTHRU
     151           0 :         case 62UL: gf_stu( parity_shred[ 61UL+parity_produced ] + shred_pos, in61 ); FALLTHRU
     152           0 :         case 61UL: gf_stu( parity_shred[ 60UL+parity_produced ] + shred_pos, in60 ); FALLTHRU
     153           0 :         case 60UL: gf_stu( parity_shred[ 59UL+parity_produced ] + shred_pos, in59 ); FALLTHRU
     154           0 :         case 59UL: gf_stu( parity_shred[ 58UL+parity_produced ] + shred_pos, in58 ); FALLTHRU
     155           0 :         case 58UL: gf_stu( parity_shred[ 57UL+parity_produced ] + shred_pos, in57 ); FALLTHRU
     156           0 :         case 57UL: gf_stu( parity_shred[ 56UL+parity_produced ] + shred_pos, in56 ); FALLTHRU
     157           0 :         case 56UL: gf_stu( parity_shred[ 55UL+parity_produced ] + shred_pos, in55 ); FALLTHRU
     158           0 :         case 55UL: gf_stu( parity_shred[ 54UL+parity_produced ] + shred_pos, in54 ); FALLTHRU
     159           0 :         case 54UL: gf_stu( parity_shred[ 53UL+parity_produced ] + shred_pos, in53 ); FALLTHRU
     160           0 :         case 53UL: gf_stu( parity_shred[ 52UL+parity_produced ] + shred_pos, in52 ); FALLTHRU
     161           0 :         case 52UL: gf_stu( parity_shred[ 51UL+parity_produced ] + shred_pos, in51 ); FALLTHRU
     162           0 :         case 51UL: gf_stu( parity_shred[ 50UL+parity_produced ] + shred_pos, in50 ); FALLTHRU
     163           0 :         case 50UL: gf_stu( parity_shred[ 49UL+parity_produced ] + shred_pos, in49 ); FALLTHRU
     164           0 :         case 49UL: gf_stu( parity_shred[ 48UL+parity_produced ] + shred_pos, in48 ); FALLTHRU
     165           0 :         case 48UL: gf_stu( parity_shred[ 47UL+parity_produced ] + shred_pos, in47 ); FALLTHRU
     166           0 :         case 47UL: gf_stu( parity_shred[ 46UL+parity_produced ] + shred_pos, in46 ); FALLTHRU
     167           0 :         case 46UL: gf_stu( parity_shred[ 45UL+parity_produced ] + shred_pos, in45 ); FALLTHRU
     168           0 :         case 45UL: gf_stu( parity_shred[ 44UL+parity_produced ] + shred_pos, in44 ); FALLTHRU
     169           0 :         case 44UL: gf_stu( parity_shred[ 43UL+parity_produced ] + shred_pos, in43 ); FALLTHRU
     170           0 :         case 43UL: gf_stu( parity_shred[ 42UL+parity_produced ] + shred_pos, in42 ); FALLTHRU
     171           0 :         case 42UL: gf_stu( parity_shred[ 41UL+parity_produced ] + shred_pos, in41 ); FALLTHRU
     172           0 :         case 41UL: gf_stu( parity_shred[ 40UL+parity_produced ] + shred_pos, in40 ); FALLTHRU
     173           0 :         case 40UL: gf_stu( parity_shred[ 39UL+parity_produced ] + shred_pos, in39 ); FALLTHRU
     174           0 :         case 39UL: gf_stu( parity_shred[ 38UL+parity_produced ] + shred_pos, in38 ); FALLTHRU
     175           0 :         case 38UL: gf_stu( parity_shred[ 37UL+parity_produced ] + shred_pos, in37 ); FALLTHRU
     176           0 :         case 37UL: gf_stu( parity_shred[ 36UL+parity_produced ] + shred_pos, in36 ); FALLTHRU
     177           0 :         case 36UL: gf_stu( parity_shred[ 35UL+parity_produced ] + shred_pos, in35 ); FALLTHRU
     178           0 :         case 35UL: gf_stu( parity_shred[ 34UL+parity_produced ] + shred_pos, in34 ); FALLTHRU
     179           0 :         case 34UL: gf_stu( parity_shred[ 33UL+parity_produced ] + shred_pos, in33 ); FALLTHRU
     180           0 :         case 33UL: gf_stu( parity_shred[ 32UL+parity_produced ] + shred_pos, in32 ); FALLTHRU
     181           0 :         case 32UL: gf_stu( parity_shred[ 31UL+parity_produced ] + shred_pos, in31 ); FALLTHRU
     182           0 :         case 31UL: gf_stu( parity_shred[ 30UL+parity_produced ] + shred_pos, in30 ); FALLTHRU
     183           0 :         case 30UL: gf_stu( parity_shred[ 29UL+parity_produced ] + shred_pos, in29 ); FALLTHRU
     184           0 :         case 29UL: gf_stu( parity_shred[ 28UL+parity_produced ] + shred_pos, in28 ); FALLTHRU
     185           0 :         case 28UL: gf_stu( parity_shred[ 27UL+parity_produced ] + shred_pos, in27 ); FALLTHRU
     186           0 :         case 27UL: gf_stu( parity_shred[ 26UL+parity_produced ] + shred_pos, in26 ); FALLTHRU
     187           0 :         case 26UL: gf_stu( parity_shred[ 25UL+parity_produced ] + shred_pos, in25 ); FALLTHRU
     188           0 :         case 25UL: gf_stu( parity_shred[ 24UL+parity_produced ] + shred_pos, in24 ); FALLTHRU
     189           0 :         case 24UL: gf_stu( parity_shred[ 23UL+parity_produced ] + shred_pos, in23 ); FALLTHRU
     190           0 :         case 23UL: gf_stu( parity_shred[ 22UL+parity_produced ] + shred_pos, in22 ); FALLTHRU
     191           0 :         case 22UL: gf_stu( parity_shred[ 21UL+parity_produced ] + shred_pos, in21 ); FALLTHRU
     192           0 :         case 21UL: gf_stu( parity_shred[ 20UL+parity_produced ] + shred_pos, in20 ); FALLTHRU
     193           0 :         case 20UL: gf_stu( parity_shred[ 19UL+parity_produced ] + shred_pos, in19 ); FALLTHRU
     194           0 :         case 19UL: gf_stu( parity_shred[ 18UL+parity_produced ] + shred_pos, in18 ); FALLTHRU
     195           0 :         case 18UL: gf_stu( parity_shred[ 17UL+parity_produced ] + shred_pos, in17 ); FALLTHRU
     196           0 :         case 17UL: gf_stu( parity_shred[ 16UL+parity_produced ] + shred_pos, in16 ); FALLTHRU
     197           0 :         case 16UL: gf_stu( parity_shred[ 15UL+parity_produced ] + shred_pos, in15 ); FALLTHRU
     198           0 :         case 15UL: gf_stu( parity_shred[ 14UL+parity_produced ] + shred_pos, in14 ); FALLTHRU
     199           0 :         case 14UL: gf_stu( parity_shred[ 13UL+parity_produced ] + shred_pos, in13 ); FALLTHRU
     200           0 :         case 13UL: gf_stu( parity_shred[ 12UL+parity_produced ] + shred_pos, in12 ); FALLTHRU
     201           0 :         case 12UL: gf_stu( parity_shred[ 11UL+parity_produced ] + shred_pos, in11 ); FALLTHRU
     202           0 :         case 11UL: gf_stu( parity_shred[ 10UL+parity_produced ] + shred_pos, in10 ); FALLTHRU
     203           0 :         case 10UL: gf_stu( parity_shred[  9UL+parity_produced ] + shred_pos, in09 ); FALLTHRU
     204           0 :         case  9UL: gf_stu( parity_shred[  8UL+parity_produced ] + shred_pos, in08 ); FALLTHRU
     205           0 :         case  8UL: gf_stu( parity_shred[  7UL+parity_produced ] + shred_pos, in07 ); FALLTHRU
     206           0 :         case  7UL: gf_stu( parity_shred[  6UL+parity_produced ] + shred_pos, in06 ); FALLTHRU
     207           0 :         case  6UL: gf_stu( parity_shred[  5UL+parity_produced ] + shred_pos, in05 ); FALLTHRU
     208           0 :         case  5UL: gf_stu( parity_shred[  4UL+parity_produced ] + shred_pos, in04 ); FALLTHRU
     209           0 :         case  4UL: gf_stu( parity_shred[  3UL+parity_produced ] + shred_pos, in03 ); FALLTHRU
     210           0 :         case  3UL: gf_stu( parity_shred[  2UL+parity_produced ] + shred_pos, in02 ); FALLTHRU
     211           0 :         case  2UL: gf_stu( parity_shred[  1UL+parity_produced ] + shred_pos, in01 ); FALLTHRU
     212           0 :         case  1UL: gf_stu( parity_shred[  0UL+parity_produced ] + shred_pos, in00 );
     213           0 :       }
     214           0 :       parity_produced += fd_ulong_min( 64UL, parity_remaining );
     215           0 :       parity_remaining = parity_shred_cnt - parity_produced;
     216           0 :     }
     217           0 :     if( FD_UNLIKELY( parity_remaining>0UL ) ) {
     218             :       /* Produce another 64 parity shreds */
     219           0 :       FD_REEDSOL_GENERATE_IFFT( 64, 64, ALL_VARS );
     220           0 :       FD_REEDSOL_GENERATE_FFT(  64, 128, ALL_VARS );
     221           0 :       switch( parity_remaining ) {
     222           0 :         default:
     223           0 :         case  4UL: gf_stu( parity_shred[  3UL+parity_produced ] + shred_pos, in03 ); FALLTHRU
     224           0 :         case  3UL: gf_stu( parity_shred[  2UL+parity_produced ] + shred_pos, in02 ); FALLTHRU
     225           0 :         case  2UL: gf_stu( parity_shred[  1UL+parity_produced ] + shred_pos, in01 ); FALLTHRU
     226           0 :         case  1UL: gf_stu( parity_shred[  0UL+parity_produced ] + shred_pos, in00 );
     227           0 :       }
     228           0 :       parity_produced += fd_ulong_min( 4UL, parity_remaining );
     229           0 :       parity_remaining = parity_shred_cnt - parity_produced;
     230           0 :     }
     231           0 :     #undef ALL_VARS
     232             :     /* In order to handle shred sizes that are not divisible by 32, we clamp
     233             :        shred_pos to shred_sz-32 when shred_sz-32<shred_pos<shred_sz
     234             :        (after the increment). */
     235           0 :     shred_pos += GF_WIDTH;
     236           0 :     shred_pos = fd_ulong_if( ((shred_sz-GF_WIDTH)<shred_pos) & (shred_pos<shred_sz), shred_sz-GF_WIDTH, shred_pos );
     237           0 :   }
     238           0 : }

Generated by: LCOV version 1.14