98 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Common Lisp
		
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Common Lisp
		
	
	
	
| // RUN: %clang_cc1 -emit-llvm -O0 -cl-std=CL2.0 -o - %s | FileCheck %s
 | |
| // RUN: %clang_cc1 -emit-llvm -O0 -cl-std=CL1.2 -o - %s | FileCheck %s
 | |
| 
 | |
| /*** for ***/
 | |
| void for_count()
 | |
| {
 | |
| // CHECK-LABEL: for_count
 | |
|     __attribute__((opencl_unroll_hint(8)))
 | |
|     for( int i = 0; i < 1000; ++i);
 | |
| // CHECK: br label %{{.*}}, !llvm.loop ![[FOR_COUNT:.*]]
 | |
| }
 | |
| 
 | |
| void for_disable()
 | |
| {
 | |
| // CHECK-LABEL: for_disable
 | |
|     __attribute__((opencl_unroll_hint(1)))
 | |
|     for( int i = 0; i < 1000; ++i);
 | |
| // CHECK: br label %{{.*}}, !llvm.loop ![[FOR_DISABLE:.*]]
 | |
| }
 | |
| 
 | |
| void for_enable()
 | |
| {
 | |
| // CHECK-LABEL: for_enable
 | |
|     __attribute__((opencl_unroll_hint))
 | |
|     for( int i = 0; i < 1000; ++i);
 | |
| // CHECK: br label %{{.*}}, !llvm.loop ![[FOR_ENABLE:.*]]
 | |
| }
 | |
| 
 | |
| /*** while ***/
 | |
| void while_count()
 | |
| {
 | |
| // CHECK-LABEL: while_count
 | |
|     int i = 1000;
 | |
|     __attribute__((opencl_unroll_hint(8)))
 | |
|     while(i-->0);
 | |
| // CHECK: br label %{{.*}}, !llvm.loop ![[WHILE_COUNT:.*]]
 | |
| }
 | |
| 
 | |
| void while_disable()
 | |
| {
 | |
| // CHECK-LABEL: while_disable
 | |
|     int i = 1000;
 | |
|     __attribute__((opencl_unroll_hint(1)))
 | |
|     while(i-->0);
 | |
| // CHECK: br label %{{.*}}, !llvm.loop ![[WHILE_DISABLE:.*]]
 | |
| }
 | |
| 
 | |
| void while_enable()
 | |
| {
 | |
| // CHECK-LABEL: while_enable
 | |
|     int i = 1000;
 | |
|     __attribute__((opencl_unroll_hint))
 | |
|     while(i-->0);
 | |
| // CHECK: br label %{{.*}}, !llvm.loop ![[WHILE_ENABLE:.*]]
 | |
| }
 | |
| 
 | |
| /*** do ***/
 | |
| void do_count()
 | |
| {
 | |
| // CHECK-LABEL: do_count
 | |
|     int i = 1000;
 | |
|     __attribute__((opencl_unroll_hint(8)))
 | |
|     do {} while(i--> 0);
 | |
| // CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !llvm.loop ![[DO_COUNT:.*]]
 | |
| }
 | |
| 
 | |
| void do_disable()
 | |
| {
 | |
| // CHECK-LABEL: do_disable
 | |
|     int i = 1000;
 | |
|     __attribute__((opencl_unroll_hint(1)))
 | |
|     do {} while(i--> 0);
 | |
| // CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !llvm.loop ![[DO_DISABLE:.*]]
 | |
| }
 | |
| 
 | |
| void do_enable()
 | |
| {
 | |
| // CHECK-LABEL: do_enable
 | |
|     int i = 1000;
 | |
|     __attribute__((opencl_unroll_hint))
 | |
|     do {} while(i--> 0);
 | |
| // CHECK: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !llvm.loop ![[DO_ENABLE:.*]]
 | |
| }
 | |
| 
 | |
| 
 | |
| // CHECK: ![[FOR_COUNT]]     =  distinct !{![[FOR_COUNT]],  ![[COUNT:.*]]}
 | |
| // CHECK: ![[COUNT]]         =  !{!"llvm.loop.unroll.count", i32 8}
 | |
| // CHECK: ![[FOR_DISABLE]]   =  distinct !{![[FOR_DISABLE]],  ![[DISABLE:.*]]}
 | |
| // CHECK: ![[DISABLE]]       =  !{!"llvm.loop.unroll.disable"}
 | |
| // CHECK: ![[FOR_ENABLE]]      =  distinct !{![[FOR_ENABLE]],  ![[ENABLE:.*]]}
 | |
| // CHECK: ![[ENABLE]]          =  !{!"llvm.loop.unroll.enable"}
 | |
| // CHECK: ![[WHILE_COUNT]]   =  distinct !{![[WHILE_COUNT]],    ![[COUNT]]}
 | |
| // CHECK: ![[WHILE_DISABLE]] =  distinct !{![[WHILE_DISABLE]],  ![[DISABLE]]}
 | |
| // CHECK: ![[WHILE_ENABLE]]    =  distinct !{![[WHILE_ENABLE]],     ![[ENABLE]]}
 | |
| // CHECK: ![[DO_COUNT]]      =  distinct !{![[DO_COUNT]],       ![[COUNT]]}
 | |
| // CHECK: ![[DO_DISABLE]]    =  distinct !{![[DO_DISABLE]],     ![[DISABLE]]}
 | |
| // CHECK: ![[DO_ENABLE]]       =  distinct !{![[DO_ENABLE]],        ![[ENABLE]]}
 |