223 lines · plain
1! RUN: %flang_fc1 -fdebug-dump-parse-tree -x cuda %s 2>&1 | FileCheck %s2include "cuf-sanity-common"3!CHECK: Program -> ProgramUnit -> SubroutineSubprogram4!CHECK: | SubroutineStmt5!CHECK: | | Name = 'atcuf'6!CHECK: | SpecificationPart7!CHECK: | | ImplicitPart -> 8!CHECK: | ExecutionPart -> Block9!CHECK: | EndSubroutineStmt -> 10!CHECK: ProgramUnit -> SubroutineSubprogram11!CHECK: | SubroutineStmt12!CHECK: | | Name = 'cudadefd'13!CHECK: | SpecificationPart14!CHECK: | | ImplicitPart -> 15!CHECK: | ExecutionPart -> Block16!CHECK: | EndSubroutineStmt -> 17!CHECK: ProgramUnit -> Module18!CHECK: | ModuleStmt -> Name = 'm'19!CHECK: | SpecificationPart20!CHECK: | | ImplicitPart -> 21!CHECK: | | DeclarationConstruct -> SpecificationConstruct -> TypeDeclarationStmt22!CHECK: | | | DeclarationTypeSpec -> IntrinsicTypeSpec -> Real23!CHECK: | | | AttrSpec -> Allocatable24!CHECK: | | | AttrSpec -> CUDADataAttr = Pinned25!CHECK: | | | EntityDecl26!CHECK: | | | | Name = 'pa'27!CHECK: | | | | ArraySpec -> DeferredShapeSpecList -> int28!CHECK: | ModuleSubprogramPart29!CHECK: | | ContainsStmt30!CHECK: | | ModuleSubprogram -> SubroutineSubprogram31!CHECK: | | | SubroutineStmt32!CHECK: | | | | PrefixSpec -> Attributes -> CUDASubprogramAttrs = Device33!CHECK: | | | | Name = 'devicesub'34!CHECK: | | | SpecificationPart35!CHECK: | | | | ImplicitPart -> 36!CHECK: | | | ExecutionPart -> Block37!CHECK: | | | EndSubroutineStmt -> 38!CHECK: | | ModuleSubprogram -> FunctionSubprogram39!CHECK: | | | FunctionStmt40!CHECK: | | | | PrefixSpec -> Attributes -> CUDASubprogramAttrs = Device41!CHECK: | | | | PrefixSpec -> DeclarationTypeSpec -> IntrinsicTypeSpec -> Real42!CHECK: | | | | Name = 'devicefunc'43!CHECK: | | | SpecificationPart44!CHECK: | | | | ImplicitPart -> 45!CHECK: | | | ExecutionPart -> Block46!CHECK: | | | | ExecutionPartConstruct -> ExecutableConstruct -> ActionStmt -> AssignmentStmt = 'devicefunc=1._4'47!CHECK: | | | | | Variable = 'devicefunc'48!CHECK: | | | | | | Designator -> DataRef -> Name = 'devicefunc'49!CHECK: | | | | | Expr = '1._4'50!CHECK: | | | | | | LiteralConstant -> RealLiteralConstant51!CHECK: | | | | | | | Real = '1.'52!CHECK: | | | EndFunctionStmt -> 53!CHECK: | | ModuleSubprogram -> SubroutineSubprogram54!CHECK: | | | SubroutineStmt55!CHECK: | | | | PrefixSpec -> Attributes -> CUDASubprogramAttrs = Global56!CHECK: | | | | Name = 'globalsub'57!CHECK: | | | SpecificationPart58!CHECK: | | | | ImplicitPart -> 59!CHECK: | | | ExecutionPart -> Block60!CHECK: | | | EndSubroutineStmt -> 61!CHECK: | | ModuleSubprogram -> SubroutineSubprogram62!CHECK: | | | SubroutineStmt63!CHECK: | | | | PrefixSpec -> Attributes -> CUDASubprogramAttrs = Grid_Global64!CHECK: | | | | Name = 'gridglobalsub'65!CHECK: | | | SpecificationPart66!CHECK: | | | | ImplicitPart -> 67!CHECK: | | | ExecutionPart -> Block68!CHECK: | | | EndSubroutineStmt -> 69!CHECK: | | ModuleSubprogram -> SubroutineSubprogram70!CHECK: | | | SubroutineStmt71!CHECK: | | | | PrefixSpec -> Attributes -> CUDASubprogramAttrs = Host72!CHECK: | | | | Name = 'hostsub'73!CHECK: | | | SpecificationPart74!CHECK: | | | | ImplicitPart -> 75!CHECK: | | | ExecutionPart -> Block76!CHECK: | | | EndSubroutineStmt -> 77!CHECK: | | ModuleSubprogram -> SubroutineSubprogram78!CHECK: | | | SubroutineStmt79!CHECK: | | | | PrefixSpec -> Attributes -> CUDASubprogramAttrs = Global80!CHECK: | | | | PrefixSpec -> Launch_Bounds -> Scalar -> Integer -> Constant -> Expr = '1_4'81!CHECK: | | | | | LiteralConstant -> IntLiteralConstant = '1'82!CHECK: | | | | Scalar -> Integer -> Constant -> Expr = '2_4'83!CHECK: | | | | | LiteralConstant -> IntLiteralConstant = '2'84!CHECK: | | | | Name = 'lbsub'85!CHECK: | | | SpecificationPart86!CHECK: | | | | ImplicitPart -> 87!CHECK: | | | ExecutionPart -> Block88!CHECK: | | | EndSubroutineStmt -> 89!CHECK: | | ModuleSubprogram -> SubroutineSubprogram90!CHECK: | | | SubroutineStmt91!CHECK: | | | | PrefixSpec -> Attributes -> CUDASubprogramAttrs = Global92!CHECK: | | | | PrefixSpec -> Cluster_Dims -> Scalar -> Integer -> Constant -> Expr = '1_4'93!CHECK: | | | | | LiteralConstant -> IntLiteralConstant = '1'94!CHECK: | | | | Scalar -> Integer -> Constant -> Expr = '2_4'95!CHECK: | | | | | LiteralConstant -> IntLiteralConstant = '2'96!CHECK: | | | | Scalar -> Integer -> Constant -> Expr = '3_4'97!CHECK: | | | | | LiteralConstant -> IntLiteralConstant = '3'98!CHECK: | | | | Name = 'cdsub'99!CHECK: | | | SpecificationPart100!CHECK: | | | | ImplicitPart -> 101!CHECK: | | | ExecutionPart -> Block102!CHECK: | | | EndSubroutineStmt -> 103!CHECK: | | ModuleSubprogram -> SubroutineSubprogram104!CHECK: | | | SubroutineStmt105!CHECK: | | | | PrefixSpec -> Attributes -> CUDASubprogramAttrs = Device106!CHECK: | | | | Name = 'attrs'107!CHECK: | | | SpecificationPart108!CHECK: | | | | ImplicitPart -> 109!CHECK: | | | | DeclarationConstruct -> SpecificationConstruct -> OtherSpecificationStmt -> CUDAAttributesStmt110!CHECK: | | | | | CUDADataAttr = Device111!CHECK: | | | | | Name = 'devx1'112!CHECK: | | | | DeclarationConstruct -> SpecificationConstruct -> TypeDeclarationStmt113!CHECK: | | | | | DeclarationTypeSpec -> IntrinsicTypeSpec -> Real114!CHECK: | | | | | AttrSpec -> CUDADataAttr = Device115!CHECK: | | | | | EntityDecl116!CHECK: | | | | | | Name = 'devx2'117!CHECK: | | | ExecutionPart -> Block118!CHECK: | | | EndSubroutineStmt -> 119!CHECK: | | ModuleSubprogram -> SubroutineSubprogram120!CHECK: | | | SubroutineStmt121!CHECK: | | | | Name = 'test'122!CHECK: | | | SpecificationPart123!CHECK: | | | | ImplicitPart -> 124!CHECK: | | | | DeclarationConstruct -> SpecificationConstruct -> TypeDeclarationStmt125!CHECK: | | | | | DeclarationTypeSpec -> IntrinsicTypeSpec -> Logical126!CHECK: | | | | | EntityDecl127!CHECK: | | | | | | Name = 'ispinned'128!CHECK: | | | ExecutionPart -> Block129!CHECK: | | | | ExecutionPartConstruct -> ExecutableConstruct -> CUFKernelDoConstruct130!CHECK: | | | | | Directive131!CHECK: | | | | | | Scalar -> Integer -> Constant -> Expr = '1_4'132!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '1'133!CHECK: | | | | | | Scalar -> Integer -> Expr = '1_4'134!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '1'135!CHECK: | | | | | DoConstruct136!CHECK: | | | | | | NonLabelDoStmt137!CHECK: | | | | | | | LoopControl -> LoopBounds138!CHECK: | | | | | | | | Scalar -> Name = 'j'139!CHECK: | | | | | | | | Scalar -> Expr = '1_4'140!CHECK: | | | | | | | | | LiteralConstant -> IntLiteralConstant = '1'141!CHECK: | | | | | | | | Scalar -> Expr = '10_4'142!CHECK: | | | | | | | | | LiteralConstant -> IntLiteralConstant = '10'143!CHECK: | | | | | | Block144!CHECK: | | | | | | EndDoStmt -> 145!CHECK: | | | | ExecutionPartConstruct -> ExecutableConstruct -> CUFKernelDoConstruct146!CHECK: | | | | | Directive147!CHECK: | | | | | | StarOrExpr -> Scalar -> Integer -> Expr = '1_4'148!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '1'149!CHECK: | | | | | | StarOrExpr -> Scalar -> Integer -> Expr = '2_4'150!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '2'151!CHECK: | | | | | | StarOrExpr -> Scalar -> Integer -> Expr = '3_4'152!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '3'153!CHECK: | | | | | | Scalar -> Integer -> Expr = '1_4'154!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '1'155!CHECK: | | | | | DoConstruct156!CHECK: | | | | | | NonLabelDoStmt157!CHECK: | | | | | | | LoopControl -> LoopBounds158!CHECK: | | | | | | | | Scalar -> Name = 'j'159!CHECK: | | | | | | | | Scalar -> Expr = '1_4'160!CHECK: | | | | | | | | | LiteralConstant -> IntLiteralConstant = '1'161!CHECK: | | | | | | | | Scalar -> Expr = '10_4'162!CHECK: | | | | | | | | | LiteralConstant -> IntLiteralConstant = '10'163!CHECK: | | | | | | Block164!CHECK: | | | | | | EndDoStmt -> 165!CHECK: | | | | ExecutionPartConstruct -> ExecutableConstruct -> ActionStmt -> CallStmt = 'CALL globalsub<<<1_4,2_4>>>()'166!CHECK: | | | | | Call167!CHECK: | | | | | | ProcedureDesignator -> Name = 'globalsub'168!CHECK: | | | | | Chevrons169!CHECK: | | | | | | StarOrExpr -> Scalar -> Expr = '1_4'170!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '1'171!CHECK: | | | | | | Scalar -> Expr = '2_4'172!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '2'173!CHECK: | | | | ExecutionPartConstruct -> ExecutableConstruct -> ActionStmt -> CallStmt = 'CALL globalsub<<<1_4,2_4,3_4>>>()'174!CHECK: | | | | | Call175!CHECK: | | | | | | ProcedureDesignator -> Name = 'globalsub'176!CHECK: | | | | | Chevrons177!CHECK: | | | | | | StarOrExpr -> Scalar -> Expr = '1_4'178!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '1'179!CHECK: | | | | | | Scalar -> Expr = '2_4'180!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '2'181!CHECK: | | | | | | Scalar -> Expr = '3_4'182!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '3'183!CHECK: | | | | ExecutionPartConstruct -> ExecutableConstruct -> ActionStmt -> CallStmt = 'CALL globalsub<<<1_4,2_4,3_4,4_4>>>()'184!CHECK: | | | | | Call185!CHECK: | | | | | | ProcedureDesignator -> Name = 'globalsub'186!CHECK: | | | | | Chevrons187!CHECK: | | | | | | StarOrExpr -> Scalar -> Expr = '1_4'188!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '1'189!CHECK: | | | | | | Scalar -> Expr = '2_4'190!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '2'191!CHECK: | | | | | | Scalar -> Expr = '3_4'192!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '3'193!CHECK: | | | | | | Scalar -> Integer -> Expr = '4_4'194!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '4'195!CHECK: | | | | ExecutionPartConstruct -> ExecutableConstruct -> ActionStmt -> CallStmt = 'CALL globalsub<<<1_4,2_4,9._4,4_4>>>()'196!CHECK: | | | | | Call197!CHECK: | | | | | | ProcedureDesignator -> Name = 'globalsub'198!CHECK: | | | | | Chevrons199!CHECK: | | | | | | StarOrExpr -> Scalar -> Expr = '1_4'200!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '1'201!CHECK: | | | | | | Scalar -> Expr = '2_4'202!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '2'203!CHECK: | | | | | | Scalar -> Expr = '9._4'204!CHECK: | | | | | | | Multiply205!CHECK: | | | | | | | | Expr = '8.9999997615814208984375e-1_4'206!CHECK: | | | | | | | | | LiteralConstant -> RealLiteralConstant207!CHECK: | | | | | | | | | | Real = '0.9'208!CHECK: | | | | | | | | Expr = '10_4'209!CHECK: | | | | | | | | | LiteralConstant -> IntLiteralConstant = '10'210!CHECK: | | | | | | Scalar -> Integer -> Expr = '4_4'211!CHECK: | | | | | | | LiteralConstant -> IntLiteralConstant = '4'212!CHECK: | | | | ExecutionPartConstruct -> ExecutableConstruct -> ActionStmt -> AllocateStmt213!CHECK: | | | | | Allocation214!CHECK: | | | | | | AllocateObject = 'pa'215!CHECK: | | | | | | | Name = 'pa'216!CHECK: | | | | | | AllocateShapeSpec217!CHECK: | | | | | | | Scalar -> Integer -> Expr = '32_4'218!CHECK: | | | | | | | | LiteralConstant -> IntLiteralConstant = '32'219!CHECK: | | | | | AllocOpt -> Pinned -> Scalar -> Logical -> Variable = 'ispinned'220!CHECK: | | | | | | Designator -> DataRef -> Name = 'ispinned'221!CHECK: | | | EndSubroutineStmt -> 222!CHECK: | EndModuleStmt -> 223