anchor.diff:        END_TIME = hecmw_Wtime()
         time_Ax = time_Ax + END_TIME - START_TIME
   
  -      if (async_matvec_flg) then
  -        START_TIME= HECMW_WTIME()
  -        call hecmw_update_3_R_wait (hecMESH, ireq)
  -        END_TIME= HECMW_WTIME()
  -        if (present(COMMtime)) COMMtime = COMMtime + END_TIME - START_TIME
  -
  -        START_TIME = hecmw_Wtime()
  -
  -        do i = 1, N
  -          jS= index_o(i-1) + 1
  -          jE= index_o(i  )
  -          if (jS > jE) cycle
  -          YV1= 0.d0
  -          YV2= 0.d0
  -          YV3= 0.d0
  -          do j=jS, jE
  -            in = item_o(j)
  -            X1= X(3*(N+in)-2)
  -            X2= X(3*(N+in)-1)
  -            X3= X(3*(N+in)  )
  -            YV1= YV1 + A_o(9*j-8)*X1 + A_o(9*j-7)*X2 + A_o(9*j-6)*X3
  -            YV2= YV2 + A_o(9*j-5)*X1 + A_o(9*j-4)*X2 + A_o(9*j-3)*X3
  -            YV3= YV3 + A_o(9*j-2)*X1 + A_o(9*j-1)*X2 + A_o(9*j  )*X3
  -          enddo
  -          Y(3*i-2)= Y(3*i-2)+YV1
  -          Y(3*i-1)= Y(3*i-1)+YV2
  -          Y(3*i  )= Y(3*i  )+YV3
  -        enddo
  -
  -        END_TIME = hecmw_Wtime()
  -        time_Ax = time_Ax + END_TIME - START_TIME
  -      endif
  +      ! if (async_matvec_flg) then
  +      !   START_TIME= HECMW_WTIME()
  +      !   call hecmw_update_3_R_wait (hecMESH, ireq)
  +      !   END_TIME= HECMW_WTIME()
  +      !   if (present(COMMtime)) COMMtime = COMMtime + END_TIME - START_TIME
  +
  +      !   START_TIME = hecmw_Wtime()
  +
  +      !   do i = 1, N
  +      !     jS= index_o(i-1) + 1
  +      !     jE= index_o(i  )
  +      !     if (jS > jE) cycle
  +      !     YV1= 0.d0
  +      !     YV2= 0.d0
  +      !     YV3= 0.d0
  +      !     do j=jS, jE
  +      !       in = item_o(j)
  +      !       X1= X(3*(N+in)-2)
  +      !       X2= X(3*(N+in)-1)
  +      !       X3= X(3*(N+in)  )
  +      !       YV1= YV1 + A_o(9*j-8)*X1 + A_o(9*j-7)*X2 + A_o(9*j-6)*X3
  +      !       YV2= YV2 + A_o(9*j-5)*X1 + A_o(9*j-4)*X2 + A_o(9*j-3)*X3
  +      !       YV3= YV3 + A_o(9*j-2)*X1 + A_o(9*j-1)*X2 + A_o(9*j  )*X3
  +      !     enddo
  +      !     Y(3*i-2)= Y(3*i-2)+YV1
  +      !     Y(3*i-1)= Y(3*i-1)+YV2
  +      !     Y(3*i  )= Y(3*i  )+YV3
  +      !   enddo
  +
  +      !   END_TIME = hecmw_Wtime()
  +      !   time_Ax = time_Ax + END_TIME - START_TIME
  +      ! endif
   
       ENDIF
   
  
positive.code:   real(kind=kreal), save :: time_Ax = 0.d0
    logical, save :: mpcmatvec_flg = .false.
  
    ! for communication hiding in matvec
    integer(kind=kint), save, allocatable :: index_o(:), item_o(:)
    real(kind=kreal), save, allocatable :: A_o(:)
    logical, save :: async_matvec_flg = .false.
  
  contains
  
negative.code:           jE= indexU(i  )
            do j= jS, jE
              in  = itemU(j)
              ! if (async_matvec_flg .and. in > N) cycle
              X1= X(3*in-2)
              X2= X(3*in-1)
              X3= X(3*in  )
  