~ryan-rmarcus/pocl/pocl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
AT_BANNER([llvmopencl passes tests])

AT_SETUP([LoopBarriers pass])
AT_KEYWORDS([llvmopencl])
# Skip this group until pass ordering stabilizes.
AT_CHECK([exit 77])
for i in $abs_top_srcdir/tests/loopbarriers*_input.ll
do
  input=`echo $i | sed 's/.*\///'`
  golden=`echo $input | sed s/_input.ll/_golden.ll/`
  output=`echo $input | sed s/_input.ll/_output.ll/`
  reapply=`echo $input | sed s/_input.ll/_reapply.ll/`
  echo "input=$input"
  echo "output=$output"
  echo "golden=$golden"
  echo "reapply=$reapply"
  cp $abs_top_srcdir/tests/$input .
  cp $abs_top_srcdir/tests/$golden .
  AT_CHECK([opt -load $abs_top_builddir/lib/llvmopencl/.libs/llvmopencl.so -verify-dom-info -verify-loop-info -loop-barriers -S -o $output $input])
  AT_CHECK([opt -load $abs_top_builddir/lib/llvmopencl/.libs/llvmopencl.so -verify-dom-info -verify-loop-info -loop-barriers -loop-barriers -S -o $reapply $input])
  AT_CHECK([cmp $output $golden])
  AT_CHECK([cmp $reapply $output])
done
AT_CLEANUP

AT_SETUP([CanonicalizeBarriers pass])
AT_KEYWORDS([llvmopencl])
# Skip this group until pass ordering stabilizes.
AT_CHECK([exit 77])
for i in $abs_top_srcdir/tests/barriers*_input.ll
do
  input=`echo $i | sed 's/.*\///'`
  golden=`echo $input | sed s/_input.ll/_golden.ll/`
  output=`echo $input | sed s/_input.ll/_output.ll/`
  reapply=`echo $input | sed s/_input.ll/_reapply.ll/`
  echo "input=$input"
  echo "output=$output"
  echo "golden=$golden"
  echo "reapply=$reapply"
  cp $abs_top_srcdir/tests/$input .
  cp $abs_top_srcdir/tests/$golden .
  AT_CHECK([opt -load $abs_top_builddir/lib/llvmopencl/.libs/llvmopencl.so -verify-dom-info -verify-loop-info -barriers -S -o $output $input])
  AT_CHECK([opt -load $abs_top_builddir/lib/llvmopencl/.libs/llvmopencl.so -verify-dom-info -verify-loop-info -barriers -barriers -S -o $reapply $input])
  AT_CHECK([cmp $output $golden])
  AT_CHECK([cmp $reapply $output])
done
AT_CLEANUP

AT_SETUP([BarrierTailReplication pass])
AT_KEYWORDS([llvmopencl])
# Skip this group until pass ordering stabilizes.
AT_CHECK([exit 77])
for i in $abs_top_srcdir/tests/barriertails*_input.ll
do
  input=`echo $i | sed 's/.*\///'`
  golden=`echo $input | sed s/_input.ll/_golden.ll/`
  output=`echo $input | sed s/_input.ll/_output.ll/`
  reapply=`echo $input | sed s/_input.ll/_reapply.ll/`
  echo "input=$input"
  echo "output=$output"
  echo "golden=$golden"
  echo "reapply=$reapply"
  cp $abs_top_srcdir/tests/$input .
  cp $abs_top_srcdir/tests/$golden .
  AT_CHECK([opt -load $abs_top_builddir/lib/llvmopencl/.libs/llvmopencl.so -verify-dom-info -verify-loop-info -barriertails -S -o $output $input])
  AT_CHECK([opt -load $abs_top_builddir/lib/llvmopencl/.libs/llvmopencl.so -verify-dom-info -verify-loop-info -barriertails -barriertails -S -o $reapply $input])
  AT_CHECK([cmp $output $golden])
  AT_CHECK([cmp $reapply $output])
done
AT_CLEANUP

AT_SETUP([Pass composition])
AT_KEYWORDS([llvmopencl])
# Skip this group until pass ordering stabilizes.
AT_CHECK([exit 77])
for type in btr loops barriers workitem
do
  for i in $abs_top_srcdir/tests/*_$type.ll
  do
    golden=`echo $i | sed 's/.*\///' | sed s/.ll/_golden.ll/`
    input=`echo $golden | sed s/_${type}_golden.ll/.ll/`
    output=`echo $golden | sed s/_golden.ll/_output.ll/`
    echo "input=$input"
    echo "output=$output"
    echo "golden=$golden"
    cp $i $golden
    cp $abs_top_srcdir/tests/$input .
    case $type in
      btr)      AT_CHECK([opt -load $abs_top_builddir/lib/llvmopencl/.libs/llvmopencl.so -verify-dom-info -verify-loop-info -barriertails -S -o $output $input], 0, ignore, ignore) ;;
      loops)    AT_CHECK([opt -load $abs_top_builddir/lib/llvmopencl/.libs/llvmopencl.so -verify-dom-info -verify-loop-info -loop-simplify -loop-barriers -S -o $output $input], 0, ignore, ignore) ;;
      barriers) AT_CHECK([opt -load $abs_top_builddir/lib/llvmopencl/.libs/llvmopencl.so -verify-dom-info -verify-loop-info -barriers -S -o $output $input], 0, ignore, ignore) ;;
      workitem) AT_CHECK([opt -load $abs_top_builddir/lib/llvmopencl/.libs/llvmopencl.so -verify-dom-info -verify-loop-info -workitem -local-size=2 2 2 -S -o $output $input], 0, ignore, ignore) ;;
    esac
    AT_CHECK([cmp $output $golden])
  done
done
AT_CLEANUP