@@ -18,9 +18,9 @@ export void foo() {
18
18
AppendStructuredBuffer <float > Buf3;
19
19
}
20
20
21
- // CHECK: %"class.hlsl::StructuredBuffer" = type { target("dx.RawBuffer", float, 0, 0) }
22
- // CHECK: %"class.hlsl::RWStructuredBuffer" = type { target("dx.RawBuffer", float, 1, 0) }
23
- // CHECK: %"class.hlsl::AppendStructuredBuffer" = type { target("dx.RawBuffer", float, 1, 0) }
21
+ // CHECK-DXIL : %"class.hlsl::StructuredBuffer" = type { target("dx.RawBuffer", float, 0, 0) }
22
+ // CHECK-DXIL : %"class.hlsl::RWStructuredBuffer" = type { target("dx.RawBuffer", float, 1, 0) }
23
+ // CHECK-DXIL : %"class.hlsl::AppendStructuredBuffer" = type { target("dx.RawBuffer", float, 1, 0) }
24
24
25
25
// CHECK: @_ZL4Buf1 = internal global %"class.hlsl::StructuredBuffer" poison, align 4
26
26
// CHECK: @[[Buf1Str:.*]] = private unnamed_addr constant [5 x i8] c"Buf1\00", align 1
@@ -37,12 +37,14 @@ export void foo() {
37
37
// Buf1 initialization part 2 - body of StructuredBuffer<float>::::__createFromBinding
38
38
39
39
// CHECK: define {{.*}} void @_ZN4hlsl16StructuredBufferIfE19__createFromBindingEjjijPKc(
40
- // CHECK-SAME: ptr {{.*}} sret(%"class.hlsl::StructuredBuffer") align 4 %[[Tmp1 :.*]], i32 noundef %registerNo,
40
+ // CHECK-SAME: ptr {{.*}} sret(%"class.hlsl::StructuredBuffer") align 4 %[[RetValue1 :.*]], i32 noundef %registerNo,
41
41
// CHECK-SAME: i32 noundef %spaceNo, i32 noundef %range, i32 noundef %index, ptr noundef %name)
42
- // CHECK: %[[Handle1:.*]] = call target("dx.RawBuffer", float, 0, 0)
43
- // CHECK-SAME: @llvm.dx.resource.handlefrombinding.tdx.RawBuffer_f32_0_0t(
44
- // CHECK: call void @_ZN4hlsl16StructuredBufferIfEC1EU13_Res_t_Raw_CTfu17__hlsl_resource_t(
45
- // CHECK-SAME: ptr {{.*}} %[[Tmp1]], target("dx.RawBuffer", float, 0, 0) %[[Handle1]])
42
+ // CHECK: %[[Tmp1:.*]] = alloca %"class.hlsl::StructuredBuffer", align 4
43
+ // CHECK-DXIL: %[[Handle1:.*]] = call target("dx.RawBuffer", float, 0, 0)
44
+ // CHECK-DXIL-SAME: @llvm.dx.resource.handlefrombinding.tdx.RawBuffer_f32_0_0t(
45
+ // CHECK: %__handle = getelementptr inbounds nuw %"class.hlsl::StructuredBuffer", ptr %[[Tmp1]], i32 0, i32 0
46
+ // CHECK-DXIL: store target("dx.RawBuffer", float, 0, 0) %[[Handle1]], ptr %__handle, align 4
47
+ // CHECK-DXIL: call void @llvm.memcpy.p0.p0.i32(ptr align 4 %[[RetValue1]], ptr align 4 %[[Tmp1]], i32 4, i1 false)
46
48
47
49
// Buf2 initialization part 1 - global init function that calls RWStructuredBuffer<float>::__createFromImplicitBinding
48
50
// CHECK: define internal void @__cxx_global_var_init.1()
@@ -52,12 +54,14 @@ export void foo() {
52
54
53
55
// Buf2 initialization part 2 - body of RWStructuredBuffer<float>::__createFromImplicitBinding
54
56
// CHECK: define linkonce_odr hidden void @_ZN4hlsl18RWStructuredBufferIfE27__createFromImplicitBindingEjjijPKc(
55
- // CHECK-SAME: ptr {{.*}} sret(%"class.hlsl::RWStructuredBuffer") align 4 %[[Tmp2 :.*]], i32 noundef %orderId,
57
+ // CHECK-SAME: ptr {{.*}} sret(%"class.hlsl::RWStructuredBuffer") align 4 %[[RetValue2 :.*]], i32 noundef %orderId,
56
58
// CHECK-SAME: i32 noundef %spaceNo, i32 noundef %range, i32 noundef %index, ptr noundef %name)
57
- // CHECK: %[[Handle2:.*]] = call target("dx.RawBuffer", float, 1, 0)
58
- // CHECK-SAME: @llvm.dx.resource.handlefromimplicitbinding.tdx.RawBuffer_f32_1_0t(
59
- // CHECK: call void @_ZN4hlsl18RWStructuredBufferIfEC1EU13_Res_u_Raw_CTfu17__hlsl_resource_t(
60
- // CHECK-SAME: ptr {{.*}} %[[Tmp2]], target("dx.RawBuffer", float, 1, 0) %[[Handle2]])
59
+ // CHECK: %[[Tmp2:.*]] = alloca %"class.hlsl::RWStructuredBuffer", align 4
60
+ // CHECK-DXIL: %[[Handle2:.*]] = call target("dx.RawBuffer", float, 1, 0)
61
+ // CHECK-DXIL-SAME: @llvm.dx.resource.handlefromimplicitbinding.tdx.RawBuffer_f32_1_0t(
62
+ // CHECK: %__handle = getelementptr inbounds nuw %"class.hlsl::RWStructuredBuffer", ptr %[[Tmp2]], i32 0, i32 0
63
+ // CHECK-DXIL: store target("dx.RawBuffer", float, 1, 0) %[[Handle2]], ptr %__handle, align 4
64
+ // CHECK-DXIL: call void @llvm.memcpy.p0.p0.i32(ptr align 4 %[[RetValue2]], ptr align 4 %[[Tmp2]], i32 4, i1 false)
61
65
62
66
// Buf3 initialization part 1 - local variable declared in function foo() is initialized by
63
67
// AppendStructuredBuffer<float> C1 default constructor
@@ -71,23 +75,11 @@ export void foo() {
71
75
// CHECK: define linkonce_odr hidden void @_ZN4hlsl22AppendStructuredBufferIfEC1Ev(ptr noundef nonnull align 4 dereferenceable(4) %this)
72
76
// CHECK: call void @_ZN4hlsl22AppendStructuredBufferIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %{{.*}})
73
77
74
- // Buf1 initialization part 3 - body of StructuredBuffer<float> constructor with handle
75
- // CHECK: define linkonce_odr hidden void @_ZN4hlsl16StructuredBufferIfEC1EU13_Res_t_Raw_CTfu17__hlsl_resource_t(ptr {{.*}} %this,
76
- // CHECK-SAME: target("dx.RawBuffer", float, 0, 0) %handle)
77
- // CHECK: %[[HandlePtr1:.*]] = getelementptr inbounds nuw %"class.hlsl::StructuredBuffer", ptr %{{.*}}, i32 0, i32 0
78
- // CHECK-DXIL-NEXT: store target("dx.RawBuffer", float, 0, 0) %{{.*}}, ptr %[[HandlePtr1]], align 4
79
-
80
- // Buf2 initialization part 3 - body of RWStructuredBuffer<float> constructor with handle
81
- // CHECK: define linkonce_odr hidden void @_ZN4hlsl18RWStructuredBufferIfEC2EU13_Res_u_Raw_CTfu17__hlsl_resource_t(ptr {{.*}} %this,
82
- // CHECK-SAME: target("dx.RawBuffer", float, 1, 0) %handle)
83
- // CHECK: %[[HandlePtr2:.*]] = getelementptr inbounds nuw %"class.hlsl::RWStructuredBuffer", ptr %{{.*}}, i32 0, i32 0
84
- // CHECK-DXIL-NEXT: store target("dx.RawBuffer", float, 1, 0) %{{.*}}, ptr %[[HandlePtr2]], align 4
85
-
86
78
// Buf3 initialization part 3 - body of AppendStructuredBuffer<float> default C2 constructor that
87
79
// initializes handle to poison
88
80
// CHECK: define linkonce_odr hidden void @_ZN4hlsl22AppendStructuredBufferIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %this)
89
81
// CHECK: %__handle = getelementptr inbounds nuw %"class.hlsl::AppendStructuredBuffer", ptr %{{.*}}, i32 0, i32 0
90
- // CHECK: store target("dx.RawBuffer", float, 1, 0) poison, ptr %__handle, align 4
82
+ // CHECK-DXIL : store target("dx.RawBuffer", float, 1, 0) poison, ptr %__handle, align 4
91
83
92
84
// Module initialization
93
85
// CHECK: define internal void @_GLOBAL__sub_I_StructuredBuffers_constructors.hlsl()
0 commit comments