[llvm-dev] LLVM Matrix Multiplication Loop Vectorizer

hameeza ahmed via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 27 12:54:17 PDT 2017


Hello,
i am trying to vectorize a simple matrix multiplication in llvm;
here is my code;

#include <stdio.h>
#define N 1000

// This function multiplies A[][] and B[][], and stores
// the result in C[][]
void multiply(int A[][N], int B[][N], int C[][N])
{
    int i, j, k;
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
        {
            C[i][j] = 0;
            for (k = 0; k < N; k++)
                C[i][j] += A[i][k]*B[k][j];
        }
    }
}

here are the commands;



clang  -S -emit-llvm mat.c -march=knl -O3 -mllvm -disable-llvm-optzns -o
mat.ll

opt  -S -O3  mat.ll -o mat_o3.ll

llc -x86-asm-syntax=intel mat_o3.ll -o mat_intel.s


with this command i got the below error
opt  -S -O3 -force-vector-width=16 mat.ll -o mat_o3.ll


remark: <unknown>:0:0: loop not vectorized: value that could not be
identified as reduction is used outside the loop


it is unable to vectorize the matrix multiplication and in .ll and .s files
i see the scalar instructions.

Why is that so? What is my mistake?? Kindly correct me.

Looking forward to your reply

Thank You
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170628/bbfc7ffa/attachment.html>


More information about the llvm-dev mailing list