brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.9 KiB · 167f562 Raw
216 lines · cpp
1// RUN: %clang_cc1 %s -fopenacc -ast-dump | FileCheck %s2 3// Test this with PCH.4// RUN: %clang_cc1 %s -fopenacc -emit-pch -o %t %s5// RUN: %clang_cc1 %s -fopenacc -include-pch %t -ast-dump-all | FileCheck %s6#ifndef PCH_HELPER7#define PCH_HELPER8void NormalUses() {9  // CHECK: FunctionDecl{{.*}}NormalUses10  // CHECK-NEXT: CompoundStmt11 12  int Val;13 14#pragma acc parallel loop gang(dim:1)15  for(int i = 0; i < 5; ++i);16  // CHECK: OpenACCCombinedConstruct{{.*}} parallel loop17  // CHECK-NEXT: gang clause dim18  // CHECK-NEXT: ConstantExpr19  // CHECK-NEXT: value: Int 120  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 121  // CHECK-NEXT: ForStmt22  // CHECK: NullStmt23 24#pragma acc parallel loop gang(static:Val)25  for(int i = 0; i < 5; ++i);26  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} parallel loop27  // CHECK-NEXT: gang clause static28  // CHECK-NEXT: ImplicitCastExpr29  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'int'30  // CHECK-NEXT: ForStmt31  // CHECK: NullStmt32 33#pragma acc kernels loop gang(num:1) gang(static:Val)34  for(int i = 0; i < 5; ++i);35  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} kernels loop36  // CHECK-NEXT: gang clause num37  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 138  // CHECK-NEXT: gang clause static39  // CHECK-NEXT: ImplicitCastExpr40  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'int'41  // CHECK-NEXT: ForStmt42  // CHECK: NullStmt43 44#pragma acc parallel loop gang(dim:1, static:Val)45  for(int i = 0; i < 5; ++i);46  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} parallel loop47  // CHECK-NEXT: gang clause dim static48  // CHECK-NEXT: ConstantExpr49  // CHECK-NEXT: value: Int 150  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 151  // CHECK-NEXT: ImplicitCastExpr52  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'int'53  // CHECK-NEXT: ForStmt54  // CHECK: NullStmt55 56#pragma acc serial loop gang(static:Val)57  for(int i = 0; i < 5; ++i);58  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} serial loop59  // CHECK-NEXT: gang clause static60  // CHECK-NEXT: ImplicitCastExpr61  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'int'62  // CHECK-NEXT: ForStmt63  // CHECK: NullStmt64 65#pragma acc serial loop gang(static:*)66  for(int i = 0; i < 5; ++i);67  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} serial loop68  // CHECK-NEXT: gang clause static69  // CHECK-NEXT: OpenACCAsteriskSizeExpr70  // CHECK-NEXT: ForStmt71  // CHECK: NullStmt72 73#pragma acc serial loop gang74  for(int i = 0; i < 5; ++i);75  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} serial loop76  // CHECK-NEXT: gang clause77  // CHECK-NEXT: ForStmt78  // CHECK: NullStmt79 80#pragma acc kernels loop gang(num:1)81  for(int i = 0; i < 5; ++i);82  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} kernels loop83  // CHECK-NEXT: gang clause num84  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 185  // CHECK-NEXT: ForStmt86  // CHECK: NullStmt87}88 89template<typename T, unsigned One>90void TemplateUses(T Val) {91  // CHECK: FunctionTemplateDecl{{.*}}TemplateUses92  // CHECK-NEXT: TemplateTypeParmDecl {{.*}} referenced typename depth 0 index 0 T93  // CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} referenced 'unsigned int' depth 0 index 1 One94  // CHECK-NEXT: FunctionDecl{{.*}} TemplateUses 'void (T)'95  // CHECK-NEXT: ParmVarDecl{{.*}} referenced Val 'T'96  // CHECK-NEXT: CompoundStmt97 98#pragma acc parallel loop gang(dim:One)99  for(int i = 0; i < 5; ++i);100  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} parallel loop101  // CHECK-NEXT: gang clause dim102  // CHECK-NEXT: DeclRefExpr{{.*}}'One' 'unsigned int'103  // CHECK-NEXT: ForStmt104  // CHECK: NullStmt105 106#pragma acc parallel loop gang(static:Val)107  for(int i = 0; i < 5; ++i);108  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} parallel loop109  // CHECK-NEXT: gang clause static110  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'T'111  // CHECK-NEXT: ForStmt112  // CHECK: NullStmt113 114 115#pragma acc parallel loop gang(static:*)116  for(int i = 0; i < 5; ++i);117  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} parallel loop118  // CHECK-NEXT: gang clause static119  // CHECK-NEXT: OpenACCAsteriskSizeExpr120  // CHECK-NEXT: ForStmt121  // CHECK: NullStmt122 123#pragma acc parallel loop gang(dim:One) gang(static:Val)124  for(int i = 0; i < 5; ++i);125  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} parallel loop126  // CHECK-NEXT: gang clause dim127  // CHECK-NEXT: DeclRefExpr{{.*}}'One' 'unsigned int'128  // CHECK-NEXT: gang clause static129  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'T'130  // CHECK-NEXT: ForStmt131  // CHECK: NullStmt132 133#pragma acc parallel loop gang(dim:One, static:Val)134  for(int i = 0; i < 5; ++i);135  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} parallel loop136  // CHECK-NEXT: gang clause dim static137  // CHECK-NEXT: DeclRefExpr{{.*}}'One' 'unsigned int'138  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'T'139  // CHECK-NEXT: ForStmt140  // CHECK: NullStmt141 142#pragma acc serial loop gang143  for(int i = 0; i < 5; ++i);144  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} serial loop145  // CHECK-NEXT: gang clause146  // CHECK-NEXT: ForStmt147  // CHECK: NullStmt148 149  // Instantiation:150  // CHECK-NEXT: FunctionDecl{{.*}} used TemplateUses 'void (int)' implicit_instantiation151  // CHECK-NEXT: TemplateArgument type 'int'152  // CHECK-NEXT: BuiltinType{{.*}} 'int'153  // CHECK-NEXT: TemplateArgument integral '1U'154  // CHECK-NEXT: ParmVarDecl{{.*}} used Val 'int'155  // CHECK-NEXT: CompoundStmt156 157  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} parallel loop158  // CHECK-NEXT: gang clause dim159  // CHECK-NEXT: ConstantExpr160  // CHECK-NEXT: value: Int 1161  // CHECK-NEXT: SubstNonTypeTemplateParmExpr162  // CHECK-NEXT: NonTypeTemplateParmDecl163  // CHECK-NEXT: IntegerLiteral{{.*}}'unsigned int' 1164  // CHECK-NEXT: ForStmt165  // CHECK: NullStmt166 167  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} parallel loop168  // CHECK-NEXT: gang clause static169  // CHECK-NEXT: ImplicitCastExpr170  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'int'171  // CHECK-NEXT: ForStmt172  // CHECK: NullStmt173 174  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} parallel loop175  // CHECK-NEXT: gang clause static176  // CHECK-NEXT: OpenACCAsteriskSizeExpr177  // CHECK-NEXT: ForStmt178  // CHECK: NullStmt179 180  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} parallel loop181  // CHECK-NEXT: gang clause dim182  // CHECK-NEXT: ConstantExpr183  // CHECK-NEXT: value: Int 1184  // CHECK-NEXT: SubstNonTypeTemplateParmExpr185  // CHECK-NEXT: NonTypeTemplateParmDecl186  // CHECK-NEXT: IntegerLiteral{{.*}}'unsigned int' 1187  // CHECK-NEXT: gang clause static188  // CHECK-NEXT: ImplicitCastExpr189  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'int'190  // CHECK-NEXT: ForStmt191  // CHECK: NullStmt192 193  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} parallel loop194  // CHECK-NEXT: gang clause dim static195  // CHECK-NEXT: ConstantExpr196  // CHECK-NEXT: value: Int 1197  // CHECK-NEXT: SubstNonTypeTemplateParmExpr198  // CHECK-NEXT: NonTypeTemplateParmDecl199  // CHECK-NEXT: IntegerLiteral{{.*}}'unsigned int' 1200  // CHECK-NEXT: ImplicitCastExpr201  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'int'202  // CHECK-NEXT: ForStmt203  // CHECK: NullStmt204 205  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} serial loop206  // CHECK-NEXT: gang clause207  // CHECK-NEXT: ForStmt208  // CHECK: NullStmt209}210 211void inst() {212  TemplateUses<int, 1>(5);213}214 215#endif // PCH_HELPER216