                     }\
                 }\
             } else {\
-                if (flags & GHOST_SPMV_VSHIFT) {\
+                if (flags & (GHOST_SPMV_VSHIFT | GHOST_SPMV_SHIFT)) {\
                     if (flags & GHOST_SPMV_DOT) {\
                         CALL(func,dt1,dt2,false,false,true,true,__VA_ARGS__)\
                     } else {\

        dot3 = blockReduceSum(dot3);

        if (threadIdx.x==0) {
            localdot[0*ncols*blockDim.y*gridDim.x + col*gridDim.x + blockIdx.x] = dot1;
            localdot[1*ncols*blockDim.y*gridDim.x + col*gridDim.x + blockIdx.x] = dot2;
            localdot[2*ncols*blockDim.y*gridDim.x + col*gridDim.x + blockIdx.x] = dot3;
        }
    }
#endif

            tmp = scale<v_t>(alpha,tmp);
        }
        if (do_axpby) {
            lhs[lhs_lda*i+col] = axpy<v_t,v_t>(tmp,lhs[lhs_lda*i+col],beta);
        } else {
            lhs[lhs_lda*i+col] = tmp;
        }
    }
#ifdef LOCALDOT_ONTHEFLY 
