[cfe-dev] generate vectorized code
Rail Shafigulin via cfe-dev
cfe-dev at lists.llvm.org
Wed Mar 16 11:31:43 PDT 2016
My question is:
How do I make clang to generate assembly with vector instruction for my
target?
The back story is:
I've added a few vector instructions to my target and confirmed that they
are used by running my code on the test below and using a following
command:
opt i.esencia.ll -S -march=esencia -mcpu=esencia -loop-vectorize | llc
-mcpu=esencia -o i.esencia.s
target datalayout = "E-m:e-p:32:32-i64:32-f64:32-v64:32-v128:32-a:0:32-n32"
target triple = "esencia"
; Function Attrs: nounwind uwtable
define i32 @main() {
entry:
%z = alloca <4 x i32>
%a = alloca <4 x i32>
%b = alloca <4 x i32>
%a.l = load <4 x i32>* %a
%b.l = load <4 x i32>* %b
%z.l = add <4 x i32> %a.l, %b.l
store <4 x i32> %z.l, <4 x i32>* %z
ret i32 0
}
Now I'm trying to run clang and vectorize the following test:
#define N 16
int main () {
int a[N], b[N];
int c[N];
for (int i = 0; i < N; ++i)
c[i] = a[i] + b[i];
int sum=0;
for (int i = 0; i < N; ++i)
sum += c[i];
return sum;
}
Here are the command lines I tried:
clang -S test.c --target=esencia -fvectorize -o test.esencia.s
clang -S test.c --target=esencia -fvectorize -fslp-vectorize-aggressive -o
test.esencia.s -fslp-vectorize
clang -S test.c --target=esencia -fvectorize -fslp-vectorize-aggressive -o
test.esencia.s -fslp-vectorize -fno-lax-vector-conversions
Unfortunately nothing worked. Can someone help me out? I can't really
figure out why this is not working.
Any help is appreciated.
--
Rail Shafigulin
Software Engineer
Esencia Technologies
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160316/41c2c588/attachment.html>
More information about the cfe-dev
mailing list