FLASH_SA_LU.c File Reference

(r)


Functions

FLA_Error FLASH_SA_LU (FLA_Obj B, FLA_Obj C, FLA_Obj D, FLA_Obj E, FLA_Obj p, FLA_Obj L, dim_t nb_alg)

Function Documentation

FLA_Error FLASH_SA_LU ( FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  D,
FLA_Obj  E,
FLA_Obj  p,
FLA_Obj  L,
dim_t  nb_alg 
)

References FLA_Cont_with_3x1_to_2x1(), FLA_Obj_length(), FLA_Part_2x1(), FLA_Repart_2x1_to_3x1(), FLA_SA_LU_task(), FLASH_Queue_get_enabled(), and FLASH_SA_FS().

Referenced by FLASH_LU_incpiv_var1(), and FLASH_LU_incpiv_var2().

00037 {
00038    FLA_Obj DT,              D0,
00039            DB,              D1,
00040                             D2;
00041 
00042    FLA_Obj ET,              E0,
00043            EB,              E1,
00044                             E2;
00045 
00046    FLA_Obj pT,              p0,
00047            pB,              p1,
00048                             p2;
00049 
00050    FLA_Obj LT,              L0,
00051            LB,              L1,
00052                             L2;
00053 
00054    FLA_Part_2x1( D,    &DT,
00055                        &DB,            0, FLA_TOP );
00056 
00057    FLA_Part_2x1( E,    &ET,
00058                        &EB,            0, FLA_TOP );
00059 
00060    FLA_Part_2x1( p,    &pT,
00061                        &pB,            0, FLA_TOP );
00062 
00063    FLA_Part_2x1( L,    &LT,
00064                        &LB,            0, FLA_TOP );
00065 
00066    while ( FLA_Obj_length( DT ) < FLA_Obj_length( D ) )
00067    {
00068       FLA_Repart_2x1_to_3x1( DT,                &D0,
00069                           /* ** */            /* ** */
00070                                                 &D1,
00071                              DB,                &D2,        1, FLA_BOTTOM );
00072 
00073       FLA_Repart_2x1_to_3x1( ET,                &E0,
00074                           /* ** */            /* ** */
00075                                                 &E1,
00076                              EB,                &E2,        1, FLA_BOTTOM );
00077 
00078       FLA_Repart_2x1_to_3x1( pT,                &p0,
00079                           /* ** */            /* ** */
00080                                                 &p1,
00081                              pB,                &p2,        1, FLA_BOTTOM );
00082 
00083       FLA_Repart_2x1_to_3x1( LT,                &L0,
00084                           /* ** */            /* ** */
00085                                                 &L1,
00086                              LB,                &L2,        1, FLA_BOTTOM );
00087 
00088       /*------------------------------------------------------------*/
00089 
00090       if ( FLASH_Queue_get_enabled( ) )
00091       {
00092          // Enqueue
00093          ENQUEUE_FLASH_SA_LU( *FLASH_OBJ_PTR_AT( B ),
00094                               *FLASH_OBJ_PTR_AT( D1 ),
00095                               *FLASH_OBJ_PTR_AT( p1 ),
00096                               *FLASH_OBJ_PTR_AT( L1 ),
00097                               nb_alg,
00098                               NULL );
00099       }
00100       else
00101       {
00102          // Execute leaf
00103          FLA_SA_LU_task( *FLASH_OBJ_PTR_AT( B ),
00104                          *FLASH_OBJ_PTR_AT( D1 ),
00105                          *FLASH_OBJ_PTR_AT( p1 ),
00106                          *FLASH_OBJ_PTR_AT( L1 ),
00107                          nb_alg,
00108                          NULL );
00109       }
00110       
00111       FLASH_SA_FS( L1,
00112                    D1, p1, C,
00113                            E1, nb_alg );
00114 
00115       /*------------------------------------------------------------*/
00116 
00117       FLA_Cont_with_3x1_to_2x1( &DT,                D0,
00118                                                     D1,
00119                               /* ** */           /* ** */
00120                                 &DB,                D2,     FLA_TOP );
00121 
00122       FLA_Cont_with_3x1_to_2x1( &ET,                E0,
00123                                                     E1,
00124                               /* ** */           /* ** */
00125                                 &EB,                E2,     FLA_TOP );
00126 
00127       FLA_Cont_with_3x1_to_2x1( &pT,                p0,
00128                                                     p1,
00129                               /* ** */           /* ** */
00130                                 &pB,                p2,     FLA_TOP );
00131 
00132       FLA_Cont_with_3x1_to_2x1( &LT,                L0,
00133                                                     L1,
00134                               /* ** */           /* ** */
00135                                 &LB,                L2,     FLA_TOP );
00136    }
00137    
00138    return FLA_SUCCESS;
00139 }


Generated on Mon Jul 6 05:45:56 2009 for libflame by  doxygen 1.5.9