Skip to content

Commit f644255

Browse files
hekotagithub-actions[bot]
authored andcommitted
Automerge: [HLSL] Remove resource constructors with binding (#157008)
Removes resource constructors that take binding information per proposal update llvm/wg-hlsl#336. The constructors are replaced by static `__createFromBinding` and `__createFromImplicitBinding` methods on the resource class.
2 parents 9f6c5af + 087f4fc commit f644255

File tree

6 files changed

+1
-192
lines changed

6 files changed

+1
-192
lines changed

clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.cpp

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -761,49 +761,6 @@ BuiltinTypeDeclBuilder &BuiltinTypeDeclBuilder::addDefaultHandleConstructor() {
761761
.finalize();
762762
}
763763

764-
BuiltinTypeDeclBuilder &
765-
BuiltinTypeDeclBuilder::addHandleConstructorFromBinding() {
766-
if (Record->isCompleteDefinition())
767-
return *this;
768-
769-
using PH = BuiltinTypeMethodBuilder::PlaceHolder;
770-
ASTContext &AST = SemaRef.getASTContext();
771-
QualType HandleType = getResourceHandleField()->getType();
772-
773-
return BuiltinTypeMethodBuilder(*this, "", AST.VoidTy, false, true)
774-
.addParam("registerNo", AST.UnsignedIntTy)
775-
.addParam("spaceNo", AST.UnsignedIntTy)
776-
.addParam("range", AST.IntTy)
777-
.addParam("index", AST.UnsignedIntTy)
778-
.addParam("name", AST.getPointerType(AST.CharTy.withConst()))
779-
.callBuiltin("__builtin_hlsl_resource_handlefrombinding", HandleType,
780-
PH::Handle, PH::_0, PH::_1, PH::_2, PH::_3, PH::_4)
781-
.assign(PH::Handle, PH::LastStmt)
782-
.finalize();
783-
}
784-
785-
BuiltinTypeDeclBuilder &
786-
BuiltinTypeDeclBuilder::addHandleConstructorFromImplicitBinding() {
787-
if (Record->isCompleteDefinition())
788-
return *this;
789-
790-
using PH = BuiltinTypeMethodBuilder::PlaceHolder;
791-
ASTContext &AST = SemaRef.getASTContext();
792-
QualType HandleType = getResourceHandleField()->getType();
793-
794-
return BuiltinTypeMethodBuilder(*this, "", AST.VoidTy, false, true)
795-
.addParam("spaceNo", AST.UnsignedIntTy)
796-
.addParam("range", AST.IntTy)
797-
.addParam("index", AST.UnsignedIntTy)
798-
.addParam("orderId", AST.UnsignedIntTy)
799-
.addParam("name", AST.getPointerType(AST.CharTy.withConst()))
800-
.callBuiltin("__builtin_hlsl_resource_handlefromimplicitbinding",
801-
HandleType, PH::Handle, PH::_3, PH::_0, PH::_1, PH::_2,
802-
PH::_4)
803-
.assign(PH::Handle, PH::LastStmt)
804-
.finalize();
805-
}
806-
807764
// Adds static method that initializes resource from binding:
808765
//
809766
// static Resource<T> __createFromBinding(unsigned registerNo,

clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,6 @@ class BuiltinTypeDeclBuilder {
7878

7979
// Builtin types constructors
8080
BuiltinTypeDeclBuilder &addDefaultHandleConstructor();
81-
BuiltinTypeDeclBuilder &addHandleConstructorFromBinding();
82-
BuiltinTypeDeclBuilder &addHandleConstructorFromImplicitBinding();
8381
BuiltinTypeDeclBuilder &addCopyConstructor();
8482
BuiltinTypeDeclBuilder &addCopyAssignmentOperator();
8583

clang/lib/Sema/HLSLExternalSemaSource.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,7 @@ static BuiltinTypeDeclBuilder setupBufferType(CXXRecordDecl *Decl, Sema &S,
135135
.addCopyConstructor()
136136
.addCopyAssignmentOperator()
137137
.addCreateFromBinding()
138-
.addCreateFromImplicitBinding()
139-
.addHandleConstructorFromBinding()
140-
.addHandleConstructorFromImplicitBinding();
138+
.addCreateFromImplicitBinding();
141139
}
142140

143141
// This function is responsible for constructing the constraint expression for

clang/test/AST/HLSL/ByteAddressBuffers-AST.hlsl

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -142,53 +142,5 @@ RESOURCE Buffer;
142142
// CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::[[RESOURCE]]' lvalue Var {{.*}} 'tmp' 'hlsl::[[RESOURCE]]'
143143
// CHECK-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
144144

145-
// Constructor from binding
146-
147-
// CHECK: CXXConstructorDecl {{.*}} [[RESOURCE]] 'void (unsigned int, unsigned int, int, unsigned int, const char *)' inline
148-
// CHECK-NEXT: ParmVarDecl {{.*}} registerNo 'unsigned int'
149-
// CHECK-NEXT: ParmVarDecl {{.*}} spaceNo 'unsigned int'
150-
// CHECK-NEXT: ParmVarDecl {{.*}} range 'int'
151-
// CHECK-NEXT: ParmVarDecl {{.*}} index 'unsigned int'
152-
// CHECK-NEXT: ParmVarDecl {{.*}} name 'const char *'
153-
// CHECK-NEXT: CompoundStmt {{.*}}
154-
// CHECK-NEXT: BinaryOperator {{.*}} '='
155-
// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle
156-
// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]' lvalue implicit this
157-
// CHECK-NEXT: CallExpr {{.*}} '__hlsl_resource_t
158-
// CHECK-NEXT: ImplicitCastExpr {{.*}} <BuiltinFnToFnPtr>
159-
// CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} '__builtin_hlsl_resource_handlefrombinding'
160-
// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle
161-
// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]' lvalue implicit this
162-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'registerNo' 'unsigned int'
163-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'spaceNo' 'unsigned int'
164-
// CHECK-NEXT: DeclRefExpr {{.*}} 'int' ParmVar {{.*}} 'range' 'int'
165-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'index' 'unsigned int'
166-
// CHECK-NEXT: DeclRefExpr {{.*}} 'const char *' ParmVar {{.*}} 'name' 'const char *'
167-
// CHECK-NEXT: AlwaysInlineAttr
168-
169-
// Constructor from implicit binding
170-
171-
// CHECK: CXXConstructorDecl {{.*}} [[RESOURCE]] 'void (unsigned int, int, unsigned int, unsigned int, const char *)' inline
172-
// CHECK-NEXT: ParmVarDecl {{.*}} spaceNo 'unsigned int'
173-
// CHECK-NEXT: ParmVarDecl {{.*}} range 'int'
174-
// CHECK-NEXT: ParmVarDecl {{.*}} index 'unsigned int'
175-
// CHECK-NEXT: ParmVarDecl {{.*}} orderId 'unsigned int'
176-
// CHECK-NEXT: ParmVarDecl {{.*}} name 'const char *'
177-
// CHECK-NEXT: CompoundStmt {{.*}}
178-
// CHECK-NEXT: BinaryOperator {{.*}} '='
179-
// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle
180-
// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]' lvalue implicit this
181-
// CHECK-NEXT: CallExpr {{.*}} '__hlsl_resource_t
182-
// CHECK-NEXT: ImplicitCastExpr {{.*}} <BuiltinFnToFnPtr>
183-
// CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} '__builtin_hlsl_resource_handlefromimplicitbinding'
184-
// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle
185-
// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]' lvalue implicit this
186-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'orderId' 'unsigned int'
187-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'spaceNo' 'unsigned int'
188-
// CHECK-NEXT: DeclRefExpr {{.*}} 'int' ParmVar {{.*}} 'range' 'int'
189-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'index' 'unsigned int'
190-
// CHECK-NEXT: DeclRefExpr {{.*}} 'const char *' ParmVar {{.*}} 'name' 'const char *'
191-
// CHECK-NEXT: AlwaysInlineAttr
192-
193145
// CHECK-NOSUBSCRIPT-NOT: CXXMethodDecl {{.*}} operator[] 'const char8_t &(unsigned int) const'
194146
// CHECK-NOSUBSCRIPT-NOT: CXXMethodDecl {{.*}} operator[] 'char8_t &(unsigned int)'

clang/test/AST/HLSL/StructuredBuffers-AST.hlsl

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -185,54 +185,6 @@ RESOURCE<float> Buffer;
185185
// CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue Var {{.*}} 'tmp' 'hlsl::[[RESOURCE]]<element_type>'
186186
// CHECK-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
187187

188-
// Constructor from binding
189-
190-
// CHECK: CXXConstructorDecl {{.*}} [[RESOURCE]]<element_type> 'void (unsigned int, unsigned int, int, unsigned int, const char *)' inline
191-
// CHECK-NEXT: ParmVarDecl {{.*}} registerNo 'unsigned int'
192-
// CHECK-NEXT: ParmVarDecl {{.*}} spaceNo 'unsigned int'
193-
// CHECK-NEXT: ParmVarDecl {{.*}} range 'int'
194-
// CHECK-NEXT: ParmVarDecl {{.*}} index 'unsigned int'
195-
// CHECK-NEXT: ParmVarDecl {{.*}} name 'const char *'
196-
// CHECK-NEXT: CompoundStmt {{.*}}
197-
// CHECK-NEXT: BinaryOperator {{.*}} '='
198-
// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle
199-
// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this
200-
// CHECK-NEXT: CallExpr {{.*}} '__hlsl_resource_t
201-
// CHECK-NEXT: ImplicitCastExpr {{.*}} <BuiltinFnToFnPtr>
202-
// CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} '__builtin_hlsl_resource_handlefrombinding'
203-
// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle
204-
// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this
205-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'registerNo' 'unsigned int'
206-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'spaceNo' 'unsigned int'
207-
// CHECK-NEXT: DeclRefExpr {{.*}} 'int' ParmVar {{.*}} 'range' 'int'
208-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'index' 'unsigned int'
209-
// CHECK-NEXT: DeclRefExpr {{.*}} 'const char *' ParmVar {{.*}} 'name' 'const char *'
210-
// CHECK-NEXT: AlwaysInlineAttr
211-
212-
// Constructor from implicit binding
213-
214-
// CHECK: CXXConstructorDecl {{.*}} [[RESOURCE]]<element_type> 'void (unsigned int, int, unsigned int, unsigned int, const char *)' inline
215-
// CHECK-NEXT: ParmVarDecl {{.*}} spaceNo 'unsigned int'
216-
// CHECK-NEXT: ParmVarDecl {{.*}} range 'int'
217-
// CHECK-NEXT: ParmVarDecl {{.*}} index 'unsigned int'
218-
// CHECK-NEXT: ParmVarDecl {{.*}} orderId 'unsigned int'
219-
// CHECK-NEXT: ParmVarDecl {{.*}} name 'const char *'
220-
// CHECK-NEXT: CompoundStmt {{.*}}
221-
// CHECK-NEXT: BinaryOperator {{.*}} '='
222-
// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle
223-
// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this
224-
// CHECK-NEXT: CallExpr {{.*}} '__hlsl_resource_t
225-
// CHECK-NEXT: ImplicitCastExpr {{.*}} <BuiltinFnToFnPtr>
226-
// CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} '__builtin_hlsl_resource_handlefromimplicitbinding'
227-
// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle
228-
// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this
229-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'orderId' 'unsigned int'
230-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'spaceNo' 'unsigned int'
231-
// CHECK-NEXT: DeclRefExpr {{.*}} 'int' ParmVar {{.*}} 'range' 'int'
232-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'index' 'unsigned int'
233-
// CHECK-NEXT: DeclRefExpr {{.*}} 'const char *' ParmVar {{.*}} 'name' 'const char *'
234-
// CHECK-NEXT: AlwaysInlineAttr
235-
236188
// Subscript operators
237189

238190
// CHECK-SUBSCRIPT: CXXMethodDecl {{.*}} operator[] 'const hlsl_device element_type &(unsigned int) const'

clang/test/AST/HLSL/TypedBuffers-AST.hlsl

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -160,54 +160,6 @@ RESOURCE<float> Buffer;
160160
// CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue Var {{.*}} 'tmp' 'hlsl::[[RESOURCE]]<element_type>'
161161
// CHECK-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
162162

163-
// Constructor from binding
164-
165-
// CHECK: CXXConstructorDecl {{.*}} [[RESOURCE]]<element_type> 'void (unsigned int, unsigned int, int, unsigned int, const char *)' inline
166-
// CHECK-NEXT: ParmVarDecl {{.*}} registerNo 'unsigned int'
167-
// CHECK-NEXT: ParmVarDecl {{.*}} spaceNo 'unsigned int'
168-
// CHECK-NEXT: ParmVarDecl {{.*}} range 'int'
169-
// CHECK-NEXT: ParmVarDecl {{.*}} index 'unsigned int'
170-
// CHECK-NEXT: ParmVarDecl {{.*}} name 'const char *'
171-
// CHECK-NEXT: CompoundStmt {{.*}}
172-
// CHECK-NEXT: BinaryOperator {{.*}} '='
173-
// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle
174-
// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this
175-
// CHECK-NEXT: CallExpr {{.*}} '__hlsl_resource_t
176-
// CHECK-NEXT: ImplicitCastExpr {{.*}} <BuiltinFnToFnPtr>
177-
// CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} '__builtin_hlsl_resource_handlefrombinding'
178-
// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle
179-
// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this
180-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'registerNo' 'unsigned int'
181-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'spaceNo' 'unsigned int'
182-
// CHECK-NEXT: DeclRefExpr {{.*}} 'int' ParmVar {{.*}} 'range' 'int'
183-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'index' 'unsigned int'
184-
// CHECK-NEXT: DeclRefExpr {{.*}} 'const char *' ParmVar {{.*}} 'name' 'const char *'
185-
// CHECK-NEXT: AlwaysInlineAttr
186-
187-
// Constructor from implicit binding
188-
189-
// CHECK: CXXConstructorDecl {{.*}} [[RESOURCE]]<element_type> 'void (unsigned int, int, unsigned int, unsigned int, const char *)' inline
190-
// CHECK-NEXT: ParmVarDecl {{.*}} spaceNo 'unsigned int'
191-
// CHECK-NEXT: ParmVarDecl {{.*}} range 'int'
192-
// CHECK-NEXT: ParmVarDecl {{.*}} index 'unsigned int'
193-
// CHECK-NEXT: ParmVarDecl {{.*}} orderId 'unsigned int'
194-
// CHECK-NEXT: ParmVarDecl {{.*}} name 'const char *'
195-
// CHECK-NEXT: CompoundStmt {{.*}}
196-
// CHECK-NEXT: BinaryOperator {{.*}} '='
197-
// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle
198-
// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this
199-
// CHECK-NEXT: CallExpr {{.*}} '__hlsl_resource_t
200-
// CHECK-NEXT: ImplicitCastExpr {{.*}} <BuiltinFnToFnPtr>
201-
// CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} '__builtin_hlsl_resource_handlefromimplicitbinding'
202-
// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle
203-
// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this
204-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'orderId' 'unsigned int'
205-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'spaceNo' 'unsigned int'
206-
// CHECK-NEXT: DeclRefExpr {{.*}} 'int' ParmVar {{.*}} 'range' 'int'
207-
// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'index' 'unsigned int'
208-
// CHECK-NEXT: DeclRefExpr {{.*}} 'const char *' ParmVar {{.*}} 'name' 'const char *'
209-
// CHECK-NEXT: AlwaysInlineAttr
210-
211163
// Subscript operators
212164

213165
// CHECK: CXXMethodDecl {{.*}} operator[] 'const hlsl_device element_type &(unsigned int) const'

0 commit comments

Comments
 (0)