// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump -disable-llvm-passes -finclude-default-header -o - %s | FileCheck %s // CHECK: CXXRecordDecl {{.*}} SamplerState definition // CHECK: FinalAttr {{.*}} Implicit final // CHECK-NEXT: FieldDecl {{.*}} implicit {{.*}} __handle '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK: CXXRecordDecl {{.*}} SamplerComparisonState definition // CHECK: FinalAttr {{.*}} Implicit final // CHECK-NEXT: FieldDecl {{.*}} implicit {{.*}} __handle '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK: ClassTemplateDecl {{.*}} Texture2D // CHECK: TemplateTypeParmDecl {{.*}} element_type // CHECK: CXXRecordDecl {{.*}} Texture2D // CHECK: FinalAttr {{.*}} Implicit final // CHECK: ClassTemplatePartialSpecializationDecl {{.*}} Texture2D definition explicit_specialization // CHECK: TemplateArgument type 'vector':'vector' // CHECK: TemplateTypeParmDecl {{.*}} element_type // CHECK: NonTypeTemplateParmDecl {{.*}} element_count // CHECK-NEXT: FieldDecl {{.*}} implicit __handle '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK: CXXMethodDecl {{.*}} Load 'vector (vector)' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_load_level' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} Load 'vector (vector, vector)' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_load_level' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} operator[] 'vector const hlsl_device &(vector) const' inline // CHECK-NEXT: ParmVarDecl {{.*}} Index 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: UnaryOperator {{.*}} 'vector hlsl_device' lvalue prefix '*' cannot overflow // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector hlsl_device *' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_getpointer' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'const hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Index' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} Sample 'vector (hlsl::SamplerState, vector)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_sample' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} Sample 'vector (hlsl::SamplerState, vector, vector)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_sample' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} Sample 'vector (hlsl::SamplerState, vector, vector, float)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Clamp 'float' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_sample' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'Clamp' 'float' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} SampleBias 'vector (hlsl::SamplerState, vector, float)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Bias 'float' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_sample_bias' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'Bias' 'float' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} SampleBias 'vector (hlsl::SamplerState, vector, float, vector)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Bias 'float' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_sample_bias' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'Bias' 'float' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} SampleBias 'vector (hlsl::SamplerState, vector, float, vector, float)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Bias 'float' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Clamp 'float' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_sample_bias' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'Bias' 'float' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'Clamp' 'float' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} SampleGrad 'vector (hlsl::SamplerState, vector, vector, vector)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} DDX 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} DDY 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_sample_grad' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'DDX' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'DDY' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} SampleGrad 'vector (hlsl::SamplerState, vector, vector, vector, vector)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} DDX 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} DDY 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_sample_grad' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'DDX' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'DDY' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} SampleGrad 'vector (hlsl::SamplerState, vector, vector, vector, vector, float)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} DDX 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} DDY 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Clamp 'float' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_sample_grad' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'DDX' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'DDY' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'Clamp' 'float' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} SampleLevel 'vector (hlsl::SamplerState, vector, float)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} LOD 'float' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_sample_level' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'LOD' 'float' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} SampleLevel 'vector (hlsl::SamplerState, vector, float, vector)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} LOD 'float' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_sample_level' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'LOD' 'float' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} SampleCmp 'float (hlsl::SamplerComparisonState, vector, float)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'float' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_sample_cmp' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerComparisonState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerComparisonState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'CompareValue' 'float' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} SampleCmp 'float (hlsl::SamplerComparisonState, vector, float, vector)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'float' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_sample_cmp' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerComparisonState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerComparisonState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'CompareValue' 'float' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} SampleCmp 'float (hlsl::SamplerComparisonState, vector, float, vector, float)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Clamp 'float' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'float' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_sample_cmp' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerComparisonState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerComparisonState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'CompareValue' 'float' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'Clamp' 'float' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} SampleCmpLevelZero 'float (hlsl::SamplerComparisonState, vector, float)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'float' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_sample_cmp_level_zero' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerComparisonState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerComparisonState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'CompareValue' 'float' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} SampleCmpLevelZero 'float (hlsl::SamplerComparisonState, vector, float, vector)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'float' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_sample_cmp_level_zero' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerComparisonState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerComparisonState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'CompareValue' 'float' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} CalculateLevelOfDetail 'float (hlsl::SamplerState, vector)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'float' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_calculate_lod' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} CalculateLevelOfDetailUnclamped 'float (hlsl::SamplerState, vector)' // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'float' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_calculate_lod_unclamped' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(Sampler)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} GetDimensions 'void (out unsigned int, out unsigned int)' // CHECK-NEXT: ParmVarDecl {{.*}} width 'unsigned int &__restrict' // CHECK-NEXT: HLSLParamModifierAttr {{.*}} out // CHECK-NEXT: ParmVarDecl {{.*}} height 'unsigned int &__restrict' // CHECK-NEXT: HLSLParamModifierAttr {{.*}} out // CHECK-NEXT: CompoundStmt // CHECK-NEXT: CallExpr {{.*}} // CHECK-NEXT: DeclRefExpr {{.*}} '__builtin_hlsl_resource_getdimensions_xy' 'void (__hlsl_resource_t, unsigned int &, unsigned int &) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}} 'width' 'unsigned int &__restrict' // CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}} 'height' 'unsigned int &__restrict' // CHECK: CXXMethodDecl {{.*}} GetDimensions 'void (unsigned int, out unsigned int, out unsigned int, out unsigned int)' // CHECK-NEXT: ParmVarDecl {{.*}} mipLevel 'unsigned int' // CHECK-NEXT: ParmVarDecl {{.*}} width 'unsigned int &__restrict' // CHECK-NEXT: HLSLParamModifierAttr {{.*}} out // CHECK-NEXT: ParmVarDecl {{.*}} height 'unsigned int &__restrict' // CHECK-NEXT: HLSLParamModifierAttr {{.*}} out // CHECK-NEXT: ParmVarDecl {{.*}} numberOfLevels 'unsigned int &__restrict' // CHECK-NEXT: HLSLParamModifierAttr {{.*}} out // CHECK-NEXT: CompoundStmt // CHECK-NEXT: CallExpr {{.*}} // CHECK-NEXT: DeclRefExpr {{.*}} '__builtin_hlsl_resource_getdimensions_levels_xy' 'void (__hlsl_resource_t, unsigned int, unsigned int &, unsigned int &, unsigned int &) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}} 'mipLevel' 'unsigned int' // CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}} 'width' 'unsigned int &__restrict' // CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}} 'height' 'unsigned int &__restrict' // CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}} 'numberOfLevels' 'unsigned int &__restrict' // CHECK: CXXMethodDecl {{.*}} GetDimensions 'void (out float, out float)' // CHECK-NEXT: ParmVarDecl {{.*}} width 'float &__restrict' // CHECK-NEXT: HLSLParamModifierAttr {{.*}} out // CHECK-NEXT: ParmVarDecl {{.*}} height 'float &__restrict' // CHECK-NEXT: HLSLParamModifierAttr {{.*}} out // CHECK-NEXT: CompoundStmt // CHECK-NEXT: CallExpr {{.*}} // CHECK-NEXT: DeclRefExpr {{.*}} '__builtin_hlsl_resource_getdimensions_xy_float' 'void (__hlsl_resource_t, float &, float &) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'width' 'float &__restrict' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'height' 'float &__restrict' // CHECK: CXXMethodDecl {{.*}} GetDimensions 'void (unsigned int, out float, out float, out float)' // CHECK-NEXT: ParmVarDecl {{.*}} mipLevel 'unsigned int' // CHECK-NEXT: ParmVarDecl {{.*}} width 'float &__restrict' // CHECK-NEXT: HLSLParamModifierAttr {{.*}} out // CHECK-NEXT: ParmVarDecl {{.*}} height 'float &__restrict' // CHECK-NEXT: HLSLParamModifierAttr {{.*}} out // CHECK-NEXT: ParmVarDecl {{.*}} numberOfLevels 'float &__restrict' // CHECK-NEXT: HLSLParamModifierAttr {{.*}} out // CHECK-NEXT: CompoundStmt // CHECK-NEXT: CallExpr {{.*}} // CHECK-NEXT: DeclRefExpr {{.*}} '__builtin_hlsl_resource_getdimensions_levels_xy_float' 'void (__hlsl_resource_t, unsigned int, float &, float &, float &) noexcept' // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t // CHECK-SAME{LITERAL}: [[hlsl::resource_class(SRV)]] // CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector)]] // CHECK-SAME{LITERAL}: [[hlsl::resource_dimension(2D)]] // CHECK-SAME: ' lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D>' lvalue implicit this // CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' lvalue ParmVar {{.*}} 'mipLevel' 'unsigned int' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'width' 'float &__restrict' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'height' 'float &__restrict' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'numberOfLevels' 'float &__restrict' // CHECK: CXXMethodDecl {{.*}} Gather 'vector (hlsl::SamplerState, vector)' inline // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_gather' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D<{{.*}}>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 0 // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} Gather 'vector (hlsl::SamplerState, vector, vector)' inline // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_gather' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D<{{.*}}>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 0 // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} GatherRed 'vector (hlsl::SamplerState, vector)' inline // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_gather' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D<{{.*}}>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 0 // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} GatherRed 'vector (hlsl::SamplerState, vector, vector)' inline // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_gather' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D<{{.*}}>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 0 // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} GatherGreen 'vector (hlsl::SamplerState, vector)' inline // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_gather' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D<{{.*}}>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 1 // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} GatherGreen 'vector (hlsl::SamplerState, vector, vector)' inline // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_gather' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D<{{.*}}>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 1 // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} GatherBlue 'vector (hlsl::SamplerState, vector)' inline // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_gather' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D<{{.*}}>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 2 // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} GatherBlue 'vector (hlsl::SamplerState, vector, vector)' inline // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_gather' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D<{{.*}}>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 2 // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} GatherAlpha 'vector (hlsl::SamplerState, vector)' inline // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_gather' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D<{{.*}}>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 3 // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} GatherAlpha 'vector (hlsl::SamplerState, vector, vector)' inline // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_gather' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D<{{.*}}>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 3 // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} GatherCmp 'vector (hlsl::SamplerComparisonState, vector, float)' inline // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_gather_cmp' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D<{{.*}}>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerComparisonState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerComparisonState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'CompareValue' 'float' // CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 0 // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} GatherCmp 'vector (hlsl::SamplerComparisonState, vector, float, vector)' inline // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_gather_cmp' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D<{{.*}}>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerComparisonState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerComparisonState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'CompareValue' 'float' // CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 0 // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} GatherCmpRed 'vector (hlsl::SamplerComparisonState, vector, float)' inline // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_gather_cmp' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D<{{.*}}>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerComparisonState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerComparisonState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'CompareValue' 'float' // CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 0 // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} GatherCmpGreen 'vector (hlsl::SamplerComparisonState, vector, float)' inline // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_gather_cmp' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D<{{.*}}>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerComparisonState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerComparisonState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'CompareValue' 'float' // CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 1 // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} GatherCmpBlue 'vector (hlsl::SamplerComparisonState, vector, float)' inline // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_gather_cmp' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D<{{.*}}>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerComparisonState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerComparisonState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'CompareValue' 'float' // CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 2 // CHECK-NEXT: AlwaysInlineAttr // CHECK: CXXMethodDecl {{.*}} GatherCmpAlpha 'vector (hlsl::SamplerComparisonState, vector, float, vector)' inline // CHECK-NEXT: ParmVarDecl {{.*}} Sampler 'hlsl::SamplerComparisonState' // CHECK-NEXT: ParmVarDecl {{.*}} Location 'vector' // CHECK-NEXT: ParmVarDecl {{.*}} CompareValue 'float' // CHECK-NEXT: ParmVarDecl {{.*}} Offset 'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: CStyleCastExpr {{.*}} 'vector' // CHECK-NEXT: CallExpr {{.*}} '' // CHECK-NEXT: DeclRefExpr {{.*}} '' Function {{.*}} '__builtin_hlsl_resource_gather_cmp' 'void (...) noexcept' // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::Texture2D<{{.*}}>' lvalue implicit this // CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::SamplerComparisonState' lvalue ParmVar {{.*}} 'Sampler' 'hlsl::SamplerComparisonState' // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Location' 'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'CompareValue' 'float' // CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 3 // CHECK-NEXT: DeclRefExpr {{.*}} 'vector' lvalue ParmVar {{.*}} 'Offset' 'vector' // CHECK-NEXT: AlwaysInlineAttr Texture2D t; SamplerState s; SamplerComparisonState scs; void main(float2 loc, float cmp) { t.Sample(s, loc); t.Sample(s, loc, int2(1, 2)); t.Sample(s, loc, int2(1, 2), 1.0); t.SampleBias(s, loc, 0.0); t.SampleBias(s, loc, 0.0, int2(1, 2)); t.SampleBias(s, loc, 0.0, int2(1, 2), 1.0); t.SampleGrad(s, loc, float2(0,0), float2(0,0)); t.SampleGrad(s, loc, float2(0,0), float2(0,0), int2(1, 2)); t.SampleGrad(s, loc, float2(0,0), float2(0,0), int2(1, 2), 1.0); t.SampleLevel(s, loc, 0.0); t.SampleLevel(s, loc, 0.0, int2(1, 2)); t.SampleCmp(scs, loc, cmp); t.SampleCmp(scs, loc, cmp, int2(1, 2)); t.SampleCmp(scs, loc, cmp, int2(1, 2), 1.0f); t.SampleCmpLevelZero(scs, loc, cmp); t.SampleCmpLevelZero(scs, loc, cmp, int2(1, 2)); t.CalculateLevelOfDetail(s, loc); t.CalculateLevelOfDetailUnclamped(s, loc); t.Gather(s, loc); uint u_w, u_h, u_l; float f_w, f_h, f_l; t.GetDimensions(u_w, u_h); t.GetDimensions(0, u_w, u_h, u_l); t.GetDimensions(f_w, f_h); t.GetDimensions(0, f_w, f_h, f_l); }