diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh old mode 100644 new mode 100755 index e692c988..ab75e951 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -178,7 +178,7 @@ echo 'int main() { return a; } ' > foo.c -clang++-$VERSION -g -o bar foo.c +clang-$VERSION -g -o bar foo.c if test ! -f /usr/lib/llvm-$VERSION/lib/libomp.so; then @@ -279,6 +279,52 @@ g++ -nostdinc++ -I/usr/lib/llvm-$VERSION/bin/../include/c++/v1/ -L/usr/lib/llvm- foo.cpp -nodefaultlibs -std=c++17 -lc++ -lc++abi -lm -lc -lgcc_s -lgcc ./o > /dev/null + +if test ! -f /usr/lib/llvm-$VERSION/include/polly/LinkAllPasses.h; then + echo "Install libclang-common-$VERSION-dev for polly"; + exit -1; +fi + +# Polly +echo " +#define N 1536 +float A[N][N]; +float B[N][N]; +float C[N][N]; + +void init_array() +{ + int i, j; + for (i = 0; i < N; i++) { + for (j = 0; j < N; j++) { + A[i][j] = (1+(i*j)%1024)/2.0; + B[i][j] = (1+(i*j)%1024)/2.0; + } + } +} + +int main() +{ + int i, j, k; + double t_start, t_end; + init_array(); + 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] = C[i][j] + A[i][k] * B[k][j]; + } + } + return 0; +} +" > foo.c +clang-$VERSION -O3 -mllvm -polly foo.c +clang-$VERSION -O3 -mllvm -polly -mllvm -polly-parallel -lgomp foo.c +clang-$VERSION -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine foo.c +clang-$VERSION -S -emit-llvm foo.c -o matmul.s +opt-$VERSION -S -polly-canonicalize matmul.s > matmul.preopt.ll > /dev/null +opt-$VERSION -basicaa -polly-ast -analyze -q matmul.preopt.ll -polly-process-unprofitable > /dev/null + echo "b main run bt @@ -359,6 +405,8 @@ mkdir cmaketest/foo/ rm -rf cmaketest + + CLANG=clang-$VERSION #command -v "$CLANG" 1>/dev/null 2>/dev/null || { printf "Usage:\n%s CLANGEXE [ARGS]\n" "$0" 1>&2; exit 1; } #shift