@@ -49,24 +49,8 @@ export void foo() {
4949// Buf2 initialization part 2 - body of RWStructuredBuffer<float> C1 constructor with implicit binding that calls the C2 constructor
5050// CHECK: define linkonce_odr void @_ZN4hlsl18RWStructuredBufferIfEC1Ejijj(ptr noundef nonnull align 4 dereferenceable(4) %this,
5151// CHECK-SAME: i32 noundef %spaceNo, i32 noundef %range, i32 noundef %index, i32 noundef %orderId)
52- // CHECK-NEXT: entry:
53- // CHECK-NEXT: %this.addr = alloca ptr, align 4
54- // CHECK-NEXT: %spaceNo.addr = alloca i32, align 4
55- // CHECK-NEXT: %range.addr = alloca i32, align 4
56- // CHECK-NEXT: %index.addr = alloca i32, align 4
57- // CHECK-NEXT: %orderId.addr = alloca i32, align 4
58- // CHECK-NEXT: store ptr %this, ptr %this.addr, align 4
59- // CHECK-NEXT: store i32 %spaceNo, ptr %spaceNo.addr, align 4
60- // CHECK-NEXT: store i32 %range, ptr %range.addr, align 4
61- // CHECK-NEXT: store i32 %index, ptr %index.addr, align 4
62- // CHECK-NEXT: store i32 %orderId, ptr %orderId.addr, align 4
63- // CHECK-NEXT: %this1 = load ptr, ptr %this.addr, align 4
64- // CHECK-NEXT: %0 = load i32, ptr %spaceNo.addr, align 4
65- // CHECK-NEXT: %1 = load i32, ptr %range.addr, align 4
66- // CHECK-NEXT: %2 = load i32, ptr %index.addr, align 4
67- // CHECK-NEXT: %3 = load i32, ptr %orderId.addr, align 4
68- // CHECK-NEXT: call void @_ZN4hlsl18RWStructuredBufferIfEC2Ejijj(ptr noundef nonnull align 4 dereferenceable(4) %this1, i32 noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3) #4
69- // CHECK-NEXT: ret void
52+ // CHECK: call void @_ZN4hlsl18RWStructuredBufferIfEC2Ejijj(ptr noundef nonnull align 4 dereferenceable(4)
53+ // CHECK-SAME; %{{.*}}, i32 noundef %{{.*}}, i32 noundef %{{.*}}, i32 noundef %{{.*}}, i32 noundef %{{.*}}) #4
7054
7155// Buf3 initialization part 1 - local variable declared in function foo() is initialized by
7256// AppendStructuredBuffer<float> C1 default constructor
@@ -79,7 +63,6 @@ export void foo() {
7963// the default C2 constructor
8064// CHECK: define linkonce_odr void @_ZN4hlsl22AppendStructuredBufferIfEC1Ev(ptr noundef nonnull align 4 dereferenceable(4) %this)
8165// CHECK: call void @_ZN4hlsl22AppendStructuredBufferIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %{{.*}})
82- // CHECK-NEXT: ret void
8366
8467// Buf1 initialization part 3 - body of AppendStructuredBuffer<float> C2 constructor with explicit binding
8568// that initializes handle with @llvm.dx.resource.handlefrombinding
@@ -89,32 +72,14 @@ export void foo() {
8972// CHECK-SAME: i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i1 false)
9073// CHECK-NEXT: %__handle = getelementptr inbounds nuw %"class.hlsl::StructuredBuffer", ptr %{{.*}}, i32 0, i32 0
9174// CHECK-DXIL-NEXT: store target("dx.RawBuffer", float, 0, 0) %[[HANDLE]], ptr %__handle, align 4
92- // CHECK-NEXT: ret void
9375
9476// Buf2 initialization part 3 - body of RWStructuredBuffer<float> C2 constructor with implicit binding that initializes
9577// handle with @llvm.dx.resource.handlefromimplicitbinding
9678// CHECK: define linkonce_odr void @_ZN4hlsl18RWStructuredBufferIfEC2Ejijj(ptr noundef nonnull align 4 dereferenceable(4) %this,
9779// CHECK-SAME: i32 noundef %spaceNo, i32 noundef %range, i32 noundef %index, i32 noundef %orderId) unnamed_addr #1 align 2 {
98- // CHECK-NEXT: entry:
99- // CHECK-NEXT: %this.addr = alloca ptr, align 4
100- // CHECK-NEXT: %spaceNo.addr = alloca i32, align 4
101- // CHECK-NEXT: %range.addr = alloca i32, align 4
102- // CHECK-NEXT: %index.addr = alloca i32, align 4
103- // CHECK-NEXT: %orderId.addr = alloca i32, align 4
104- // CHECK-NEXT: store ptr %this, ptr %this.addr, align 4
105- // CHECK-NEXT: store i32 %spaceNo, ptr %spaceNo.addr, align 4
106- // CHECK-NEXT: store i32 %range, ptr %range.addr, align 4
107- // CHECK-NEXT: store i32 %index, ptr %index.addr, align 4
108- // CHECK-NEXT: store i32 %orderId, ptr %orderId.addr, align 4
109- // CHECK-NEXT: %this1 = load ptr, ptr %this.addr, align 4
110- // CHECK-NEXT: %0 = load i32, ptr %spaceNo.addr, align 4
111- // CHECK-NEXT: %1 = load i32, ptr %range.addr, align 4
112- // CHECK-NEXT: %2 = load i32, ptr %index.addr, align 4
113- // CHECK-NEXT: %3 = load i32, ptr %orderId.addr, align 4
114- // CHECK-NEXT: %4 = call target("dx.RawBuffer", float, 1, 0) @llvm.dx.resource.handlefromimplicitbinding.tdx.RawBuffer_f32_1_0t(i32 %3, i32 %0, i32 %1, i32 %2, i1 false)
115- // CHECK-NEXT: %__handle = getelementptr inbounds nuw %"class.hlsl::RWStructuredBuffer", ptr %this1, i32 0, i32 0
116- // CHECK-NEXT: store target("dx.RawBuffer", float, 1, 0) %4, ptr %__handle, align 4
117- // CHECK-NEXT: ret void
80+ // CHECK: %[[HANDLE:.*]] = call target("dx.RawBuffer", float, 1, 0) @llvm.dx.resource.handlefromimplicitbinding.tdx.RawBuffer_f32_1_0t(i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i1 false)
81+ // CHECK-NEXT: %__handle = getelementptr inbounds nuw %"class.hlsl::RWStructuredBuffer", ptr %{{.*}}, i32 0, i32 0
82+ // CHECK-NEXT: store target("dx.RawBuffer", float, 1, 0) %[[HANDLE]], ptr %__handle, align 4
11883
11984// Buf3 initialization part 3 - body of AppendStructuredBuffer<float> default C2 constructor that
12085// initializes handle to poison
0 commit comments