Как подтвердить отключение векторизации в дизассемблере?

VectorizedMatrixMultiplier.h // часть кода с векторизацией

  template <typename T> class VectorizedMatrixMultiplier : public MatrixMultiplier<T> {
void mul(Matrix<T>& firstMatrix, Matrix<T>& secondMatrix, Matrix<T>* resultMatrix, int m, int n, int l) {
    for (auto i = 0; i < firstMatrix.minorHeight; i++) {
        T *__restrict temp = resultMatrix->matrix[m][n][i];

        for (auto j = 0; j < secondMatrix.minorWidth; j++) {
            T *__restrict temp2 = secondMatrix.matrix[l][n][j];

            for (auto k = 0; k < secondMatrix.minorWidth; k++) {
                temp[k] += firstMatrix.matrix[m][l][i][j] * temp2[k];
            }
        }
    }
}

NonVectorizedMatrixMultiplier.h //часть кода без векторизации

template <typename T> class NonVectorizedMatrixMultiplier : public MatrixMultiplier<T> {
void mul(Matrix<T>& firstMatrix, Matrix<T>& secondMatrix, Matrix<T>* resultMatrix, int m, int n, int l) {
    for (auto i = 0; i < firstMatrix.minorHeight; i++) {
        T* __restrict temp = resultMatrix->matrix[m][n][i];

        for (auto j = 0; j < secondMatrix.minorWidth; j++) {
            T* __restrict temp2 = secondMatrix.matrix[l][n][j];
#pragma loop(no_vector)// после этой строчки я отключил векторизацию в следующем цикле
            for (auto k = 0; k < secondMatrix.minorWidth; k++) {
                temp[k] += firstMatrix.matrix[m][l][i][j] * temp2[k];
            }
        }
    }
}

вот этот же код в отладчике (с вкл. дизассемблерного кода): с включенной векторизацией с векторизацией с выключенной векторизацией без векторизации

НО они полностью идентичны. Как всё же убедиться, что векторизация была выключена ?


Ответы (0 шт):