@@ -326,6 +326,27 @@ RESOURCE<float> Buffer;
326326// CHECK-LOAD-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'Index' 'unsigned int'
327327// CHECK-LOAD-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
328328
329+ // Load with status method
330+
331+ // CHECK-LOAD: CXXMethodDecl {{.*}} Load 'element_type (unsigned int, unsigned int &)'
332+ // CHECK-LOAD-NEXT: ParmVarDecl {{.*}} Index 'unsigned int'
333+ // CHECK-LOAD-NEXT: ParmVarDecl {{.*}} Status 'unsigned int &'
334+ // CHECK-LOAD-NEXT: CompoundStmt
335+ // CHECK-LOAD-NEXT: ReturnStmt
336+ // CHECK-LOAD-NEXT: UnaryOperator {{.*}} 'hlsl_device element_type' prefix '*' cannot overflow
337+ // CHECK-LOAD-NEXT: CallExpr {{.*}} 'hlsl_device element_type *'
338+ // CHECK-LOAD-NEXT: ImplicitCastExpr {{.*}} <BuiltinFnToFnPtr>
339+ // CHECK-LOAD-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} '__builtin_hlsl_resource_load_with_status' 'void (...) noexcept'
340+ // CHECK-LOAD-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
341+ // CHECK-LOAD-UAV-SAME{LITERAL}: [[hlsl::resource_class(UAV)]]
342+ // CHECK-LOAD-SRV-SAME{LITERAL}: [[hlsl::resource_class(SRV)]]
343+ // CHECK-LOAD-SAME{LITERAL}: [[hlsl::contained_type(element_type)]]
344+ // CHECK-LOAD-SAME: lvalue .__handle {{.*}}
345+ // CHECK-LOAD-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this
346+ // CHECK-LOAD-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'Index' 'unsigned int'
347+ // CHECK-LOAD-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'Status' 'unsigned int &'
348+ // CHECK-LOAD-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
349+
329350// IncrementCounter method
330351
331352// CHECK-COUNTER: CXXMethodDecl {{.*}} IncrementCounter 'unsigned int ()'
0 commit comments