Авто векторизация не работает

Я пытаюсь заставить мой код автоматически векторизовать, но он не работает.

int _tmain(int argc, _TCHAR* argv[])
{
    const int N = 4096;
    float x[N];
    float y[N];
    float sum = 0;

    //create random values for x and y 
    for (int i = 0; i < N; i++)
    {
        x[i] = rand() >> 1;
        y[i] = rand() >> 1;
    }

    for (int i = 0; i < N; i++){
        sum += x[i] * y[i];
    }
}

Здесь ни один цикл не векторизуется, но меня действительно интересует только второй цикл.

Я использую Visual Studio Express 2013 и собираю с/O2 а также/Qvec-report:2(Чтобы сообщить, был ли цикл векторизован) варианты. Когда я компилирую, я получаю следующее сообщение:

--- Analyzing function: main
c:\users\...\documents\visual studio 2013\projects\intrin3\intrin3\intrin3.cpp(28) : info C5002: loop not vectorized due to reason '1200'
c:\users\...\documents\visual studio 2013\projects\intrin3\intrin3\intrin3.cpp(41) : info C5002: loop not vectorized due to reason '1305'

Причина "1305", как можно видетьВОТ, говорит, что «компилятор не может различить правильную векторизуемую информацию типа для этого цикла». Я не совсем уверен, что это значит. Есть идеи?

После разбиения второго цикла на два цикла:

for (int i = 0; i < N; i++){
    sumarray[i] = x[i] * y[i];
}

for (int i = 0; i < N; i++){
    sum += sumarray[i];
}

Теперь первый из вышеуказанных циклов векторизуется, а второй - нет, опять же с кодом ошибки 1305.

Ответы на вопрос(2)

Ваш ответ на вопрос