98 lines · plain
1// RUN: %clang_cc1 -emit-llvm -O0 -cl-std=CL2.0 -o - %s | FileCheck %s2// RUN: %clang_cc1 -emit-llvm -O0 -cl-std=CL1.2 -o - %s | FileCheck %s3 4/*** for ***/5void for_count()6{7// CHECK-LABEL: for_count8 __attribute__((opencl_unroll_hint(8)))9 for( int i = 0; i < 1000; ++i);10// CHECK: br label %{{.*}}, !llvm.loop ![[FOR_COUNT:.*]]11}12 13void for_disable()14{15// CHECK-LABEL: for_disable16 __attribute__((opencl_unroll_hint(1)))17 for( int i = 0; i < 1000; ++i);18// CHECK: br label %{{.*}}, !llvm.loop ![[FOR_DISABLE:.*]]19}20 21void for_enable()22{23// CHECK-LABEL: for_enable24 __attribute__((opencl_unroll_hint))25 for( int i = 0; i < 1000; ++i);26// CHECK: br label %{{.*}}, !llvm.loop ![[FOR_ENABLE:.*]]27}28 29/*** while ***/30void while_count()31{32// CHECK-LABEL: while_count33 int i = 1000;34 __attribute__((opencl_unroll_hint(8)))35 while(i-->0);36// CHECK: br label %{{.*}}, !llvm.loop ![[WHILE_COUNT:.*]]37}38 39void while_disable()40{41// CHECK-LABEL: while_disable42 int i = 1000;43 __attribute__((opencl_unroll_hint(1)))44 while(i-->0);45// CHECK: br label %{{.*}}, !llvm.loop ![[WHILE_DISABLE:.*]]46}47 48void while_enable()49{50// CHECK-LABEL: while_enable51 int i = 1000;52 __attribute__((opencl_unroll_hint))53 while(i-->0);54// CHECK: br label %{{.*}}, !llvm.loop ![[WHILE_ENABLE:.*]]55}56 57/*** do ***/58void do_count()59{60// CHECK-LABEL: do_count61 int i = 1000;62 __attribute__((opencl_unroll_hint(8)))63 do {} while(i--> 0);64// CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !llvm.loop ![[DO_COUNT:.*]]65}66 67void do_disable()68{69// CHECK-LABEL: do_disable70 int i = 1000;71 __attribute__((opencl_unroll_hint(1)))72 do {} while(i--> 0);73// CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !llvm.loop ![[DO_DISABLE:.*]]74}75 76void do_enable()77{78// CHECK-LABEL: do_enable79 int i = 1000;80 __attribute__((opencl_unroll_hint))81 do {} while(i--> 0);82// CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !llvm.loop ![[DO_ENABLE:.*]]83}84 85 86// CHECK: ![[FOR_COUNT]] = distinct !{![[FOR_COUNT]], ![[COUNT:.*]]}87// CHECK: ![[COUNT]] = !{!"llvm.loop.unroll.count", i32 8}88// CHECK: ![[FOR_DISABLE]] = distinct !{![[FOR_DISABLE]], ![[DISABLE:.*]]}89// CHECK: ![[DISABLE]] = !{!"llvm.loop.unroll.disable"}90// CHECK: ![[FOR_ENABLE]] = distinct !{![[FOR_ENABLE]], ![[ENABLE:.*]]}91// CHECK: ![[ENABLE]] = !{!"llvm.loop.unroll.enable"}92// CHECK: ![[WHILE_COUNT]] = distinct !{![[WHILE_COUNT]], ![[COUNT]]}93// CHECK: ![[WHILE_DISABLE]] = distinct !{![[WHILE_DISABLE]], ![[DISABLE]]}94// CHECK: ![[WHILE_ENABLE]] = distinct !{![[WHILE_ENABLE]], ![[ENABLE]]}95// CHECK: ![[DO_COUNT]] = distinct !{![[DO_COUNT]], ![[COUNT]]}96// CHECK: ![[DO_DISABLE]] = distinct !{![[DO_DISABLE]], ![[DISABLE]]}97// CHECK: ![[DO_ENABLE]] = distinct !{![[DO_ENABLE]], ![[ENABLE]]}98