brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · e1f78e6 Raw
53 lines · plain
1// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -ast-dump -o - %s | FileCheck %s2// CHECK: NamespaceDecl {{.*}} implicit hlsl3// CHECK: TypeAliasTemplateDecl {{.*}} implicit vector4// CHECK-NEXT: TemplateTypeParmDecl {{.*}} class depth 0 index 0 element5// CHECK-NEXT: TemplateArgument type 'float'6// CHECK-NEXT: BuiltinType {{.*}} 'float'7// CHECK-NEXT: NonTypeTemplateParmDecl {{.*}} 'int' depth 0 index 1 element_count8// CHECK-NEXT: TemplateArgument expr9// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 410// CHECK-NEXT: TypeAliasDecl {{.*}} implicit vector 'vector<element, element_count>'11// CHECK-NEXT: DependentSizedExtVectorType {{.*}} 'vector<element, element_count>' dependent12// CHECK-NEXT: TemplateTypeParmType {{.*}} 'element' dependent depth 0 index 013// CHECK-NEXT: TemplateTypeParm {{.*}} 'element'14// CHECK-NEXT: DeclRefExpr {{.*}} 'int' lvalue15// NonTypeTemplateParm {{.*}} 'element_count' 'int'16 17// Make sure we got a using directive at the end.18// CHECK: UsingDirectiveDecl {{.*}} Namespace {{.*}} 'hlsl'19 20[numthreads(1,1,1)]21int entry() {22  // Verify that the alias is generated inside the hlsl namespace.23  hlsl::vector<float, 2> Vec2 = {1.0, 2.0};24 25  // CHECK: DeclStmt26  // CHECK-NEXT: VarDecl {{.*}} Vec2 'hlsl::vector<float, 2>':'vector<float, 2>' cinit27 28  // Verify that you don't need to specify the namespace.29  vector<int, 2> Vec2a = {1, 2};30 31  // CHECK: DeclStmt32  // CHECK-NEXT: VarDecl {{.*}} Vec2a 'vector<int, 2>' cinit33 34  // Build a bigger vector.35  vector<double, 4> Vec4 = {1.0, 2.0, 3.0, 4.0};36 37  // CHECK: DeclStmt38  // CHECK-NEXT: VarDecl {{.*}} used Vec4 'vector<double, 4>' cinit39 40  // Verify that swizzles still work.41  vector<double, 3> Vec3 = Vec4.xyz;42 43  // CHECK: DeclStmt {{.*}}44  // CHECK-NEXT: VarDecl {{.*}} Vec3 'vector<double, 3>' cinit45 46  // Verify that the implicit arguments generate the correct type.47  vector<> ImpVec4 = {1.0, 2.0, 3.0, 4.0};48 49  // CHECK: DeclStmt50  // CHECK-NEXT: VarDecl {{.*}} ImpVec4 'vector<>':'vector<float, 4>' cinit51  return 1;52}53