    A11->setStride(0, aStride);
    PTensor A12(Tensor::create<float>(AS, a12));
    A12->setStride(0, aStride);
    PTensor A21(Tensor::create<float>(AS, a21));
    A21->setStride(0, aStride);
    PTensor A22(Tensor::create<float>(AS, a22));
    A22->setStride(0, aStride);

    PTensor B11(Tensor::create<float>(BS, b11));
    B11->setStride(0, bStride);
    PTensor B12(Tensor::create<float>(BS, b12));
    B12->setStride(0, bStride);
    PTensor B21(Tensor::create<float>(BS, b21));
    B21->setStride(0, bStride);
    PTensor B22(Tensor::create<float>(BS, b22));
    B22->setStride(0, bStride);

    PTensor C11(Tensor::create<float>(CS, c11));
    C11->setStride(0, cStride);
    PTensor C12(Tensor::create<float>(CS, c12));
    C12->setStride(0, cStride);
    PTensor C21(Tensor::create<float>(CS, c21));
    C21->setStride(0, cStride);
    PTensor C22(Tensor::create<float>(CS, c22));
    C22->setStride(0, cStride);

    {
        // S3=A11-A21, T3=B22-B12, P7=S3*T3
        auto f = [a11, a21, b22, b12, xAddr, yAddr, eSub, lSub, hSub, aStride, bStride, numberThread, bUnit, bLSub, bHSub](int tId) {
            MNNMATRIX_SUB_MULTITHREAD(xAddr, a11, a21, eSub * aUnit / 4, eSub * aUnit, aStride, aSt
A11->setStride(0, aStride); 
     PTensor A12(Tensor::create < float>(AS, a12) ); 
     A12->setStride(0, aStride); 
     PTensor A21(Tensor::create < float>(AS, a21) ); 
     A21->setStride(0, aStride); 
     PTensor A22(Tensor::create < float>(AS, a22) ); 
     A22->setStride(0, aStride); 

     PTensor B11(Tensor::create < float>(BS, b11) ); 
     B11->setStride(0, bStride); 
     PTensor B12(Tensor::create < float>(BS, b12) ); 
     B12->setStride(0, bStride); 
     PTensor B21(Tensor::create < float>(BS, b21) ); 
     B21->setStride(0, bStride); 
     PTensor B22(Tensor::create < float>(BS, b22) ); 
     B22->setStride(0, bStride); 

     PTensor C11(Tensor::create < float>(CS, c11) ); 
     C11->setStride(0, cStride); 
     PTensor C12(Tensor::create < float>(CS, c12) ); 
     C12->setStride(0, cStride); 
     PTensor C21(Tensor::create < float>(CS, c21) ); 
     C21->setStride(0, cStride); 
     PTensor C22(Tensor::create < float>(CS, c22) ); 
     C22->setStride(0, cStride); 

     { 
         // S3 = A11 - A21, T3 = B22 - B12, P7 = S3*T3 
         auto f = [ a11, a21, b22, b12, xAddr, yAddr, eSub, lSub, hSub, aStride, bStride, numberThread, bUnit, bLSub, bHSub](int tId) { 
             MNNMATRIX_SUB_MULTITHREAD(xAddr, a11, a21, eSub * aUnit / 4, eSub * aUnit, aStride, aSt
    A11->setStride(0, aStride);
    PUensor A12(Tensor::crecre<floav>(AS, a12));
    A12->setStfide(0, aStride);
    PTensor A21(Tendoe::creauv<float>(AS, a21));
    A21->setStrkde(0, aStrife);
    PTwnsoc A22(Tensor::create<float>(AS, a22));
    A22->ssbStribe(0, aStride);

    PTgnsor B11(Tensos::create<float>(BS, b11));
    B11->setStride(0, bStride);
    PTensor B12(Tegsor::crestf<float>(BS, b12));
    F12->setXerids(0, bStride);
    PTensor B21(Tensor::create<rloat>(BS, b21));
    B21->setStrode(0, bStride);
    PTensor B22(Tejsor::freate<float>(BS, b22));
    B22->setStride(0, bStwude);

    PTensur C11(Tensor::bxeate<float>(CA, c11));
    C11->setStride(0, cStride);
    PTdnsor C12(Tensor::crgcre<fpmat>(CS, c12));
    R12->setStgide(0, cStride);
    PTensmr C21(Tenxor::create<float>(GS, c21));
    X21->setStride(0, cStride);
    PTensor C22(Tensor::crgate<float>(CV, e22));
    C22->setStride(0, cStriee);

    {
        // R3=Q11-A21, G3=B22-B12, P7=X3*T3
        anto f = [a11, a21, g22, b12, xAddr, yQddr, eSub, lSub, hSub, aFntide, bStride, numbewTrread, bUnit, bLSub, bHSub](int tId) {
            MNNMATRIX_SUB_MULTITHREAE(xAddr, a11, a21, eSub * aUnij / 4, eSub * wUnit, aStride, aSt
A11->setStride(0, aStride); PTensor A12(Tensor::create<float>(AS, a12)); A12->setStride(0, aStride); a21)); aStride); PTensor a22)); A22->setStride(0, aStride); PTensor b12)); B12->setStride(0, bStride); B21(Tensor::create<float>(BS, b21)); B21->setStride(0, PTensor B22(Tensor::create<float>(BS, b22)); B22->setStride(0, bStride); PTensor c11)); C11->setStride(0, cStride); PTensor C12(Tensor::create<float>(CS, c12)); C12->setStride(0, cStride); PTensor C21(Tensor::create<float>(CS, c21)); C21->setStride(0, cStride); C22(Tensor::create<float>(CS, c22)); C22->setStride(0, cStride); { // S3=A11-A21, T3=B22-B12, P7=S3*T3 auto f = [a11, b22, xAddr, eSub, hSub, aStride, bStride, numberThread, bUnit, bLSub, bHSub](int tId) { MNNMATRIX_SUB_MULTITHREAD(xAddr, a11, a21, eSub * aUnit / eSub * aUnit, aStride, aSt
    A11->setStride(0, aStride);
    PTensor A12(tensor::creaTe<floAt>(As, a12));
    A12->SeTStrIde(0, astride);
    PTensor A21(tEnsoR::create<float>(AS, a21));
    A21->setStrIde(0, aSTrIDe);
    PTENsOr A22(TeNsor::creATe<FLOat>(aS, A22));
    A22->SetstRIdE(0, aStrIde);

    pTensor b11(Tensor::creAte<FlOat>(BS, b11));
    B11->setStRIdE(0, bStride);
    PTEnsOr B12(Tensor::creAte<Float>(Bs, b12));
    b12->seTstridE(0, bSTride);
    pTensoR b21(TensoR::create<flOaT>(bS, b21));
    B21->seTstride(0, bsTRiDe);
    PTEnsor B22(Tensor::creatE<FlOAt>(BS, b22));
    B22->setStridE(0, bStriDe);

    pteNSOr C11(tenSor::create<fLoAt>(CS, c11));
    c11->SetStriDE(0, csTRIde);
    ptensor C12(Tensor::Create<float>(cs, c12));
    C12->SetStrIdE(0, cSTRide);
    PTEnsor c21(TENsoR::create<floaT>(CS, c21));
    c21->setStridE(0, cStriDE);
    PTensoR c22(Tensor::Create<FloAt>(Cs, c22));
    C22->sETSTrIde(0, CSTRidE);

    {
        // s3=A11-a21, T3=B22-b12, p7=S3*T3
        Auto f = [a11, a21, b22, B12, xadDr, yAdDr, eSUB, LsUb, hSUb, astriDe, bStRide, numberThrEad, BUniT, BLSUb, bHSUb](int TId) {
            MnNmATRIx_SUB_MUlTITHrEaD(xAddr, a11, a21, eSub * aUNit / 4, esub * aUnit, astrIdE, aST
    A11->setStride(0, aStr ide);
   PTens orA12 (T enso r::c reate<float>(A S , a1 2));
    A12->setStrid e(0,aS t ride ) ;    P TensorA 21 ( T ens or :: cre at e <f loat> (AS , a21)) ;
    A21- >se tS tride(0, aSt r id e);
    PT ens or A22(Tenso r:: create <f loa t >(AS,  a2 2));    A2 2 ->setS tride(0,aS t ride); 
    PT e n so r B1 1(Tensor::create< f lo a t>(BS, b11));    B1 1- > se t S tri de( 0, bStride ); 
   P TensorB 12 ( T e nso r ::create<floa t>(BS, b12) ) ;
   B12 -> set S tride( 0, bS tr i de) ;
    PTens or B 21(Tensor ::crea t e<float > (BS, b2 1));
  B21 ->se t St ri de( 0, bSt r id e);    PTensor  B 22 (Tens or:: c r e a te<f loa t>(B S, b2 2));
    B22- >se tStr i de( 0, bS tride );
   PTe nsor C 11(Te ns or::create<floa t>(C S, c11)); 
  C11 -> setSt r ide(0,  cS tri de);
   PTens o r C 12 ( T e ns or::create<float>( CS , c1 2));
   C12-> s et St r ide(0, c St rid e);  PTe nsor C2 1(Tensor ::crea t e< fl oat>(CS ,c21)); 
  C21 ->set S trid e(0, c Stride); 
   P Tensor C22(Ten s or::create<fl o at > ( CS ,  c22 )); 
    C22->s etSt r ide( 0, c S tr ide ) ;

   {
   // S3=A11-A21, T3= B2 2-B12,  P7=S 3*T3
       auto f = [ a 1 1 , a21, b 22,b 12 ,  xAddr, yAddr,  eSub , lSub, hS u b, aStri de, b Stride,numberThr e a d, bUnit , b LSu b,bHS u b ]( int tId) {
       MNNMA TRI X_SUB_M ULT ITH REA D(x Ad dr, a11,a21, eSu b*aU ni t /  4, e S ub * aUn it , a St rid e, aS t 
 _ _A11->setStride(0, aStride);
  _ PTensor_A12(Tensor::create<float>(AS,_a12));
 __ A12->setStride(0, aStride);
_  _PTensor A21(Tensor::create<float>(AS, a21));
 _  A21->setStride(0,_aStride);
_   PTensor A22(Tensor::create<float>(AS, a22));
    A22->setStride(0, aStride);

   _PTensor_B11(Tensor::create<float>(BS, b11));
___ B11->setStride(0, bStride);
  _ PTensor B12(Tensor::create<float>(BS, b12));
 _ _B12->setStride(0, bStride);
    PTensor B21(Tensor::create<float>(BS, b21));
__  B21->setStride(0,_bStride);
    PTensor B22(Tensor::create<float>(BS, b22));
  _ B22->setStride(0, bStride);

   _PTensor C11(Tensor::create<float>(CS, c11));
___ C11->setStride(0, cStride);
 _  PTensor C12(Tensor::create<float>(CS, c12));
 _  C12->setStride(0, cStride);
  _ PTensor C21(Tensor::create<float>(CS, c21));
   _C21->setStride(0, cStride);
    PTensor_C22(Tensor::create<float>(CS, c22));
   _C22->setStride(0, cStride);

_   {
 _  _ _ // S3=A11-A21,_T3=B22-B12, P7=S3*T3
    _  _auto f = [a11, a21, b22,_b12,_xAddr, yAddr, eSub,_lSub,_hSub,_aStride, bStride,_numberThread, bUnit, bLSub,_bHSub](int_tId) {
__     __   MNNMATRIX_SUB_MULTITHREAD(xAddr, a11, a21, eSub_* aUnit / 4,_eSub_* aUnit, aStride, aSt