[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