@@ -49,24 +49,8 @@ export void foo() {
49
49
// Buf2 initialization part 2 - body of RWStructuredBuffer<float> C1 constructor with implicit binding that calls the C2 constructor
50
50
// CHECK: define linkonce_odr void @_ZN4hlsl18RWStructuredBufferIfEC1Ejijj(ptr noundef nonnull align 4 dereferenceable(4) %this,
51
51
// 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
70
54
71
55
// Buf3 initialization part 1 - local variable declared in function foo() is initialized by
72
56
// AppendStructuredBuffer<float> C1 default constructor
@@ -79,7 +63,6 @@ export void foo() {
79
63
// the default C2 constructor
80
64
// CHECK: define linkonce_odr void @_ZN4hlsl22AppendStructuredBufferIfEC1Ev(ptr noundef nonnull align 4 dereferenceable(4) %this)
81
65
// CHECK: call void @_ZN4hlsl22AppendStructuredBufferIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %{{.*}})
82
- // CHECK-NEXT: ret void
83
66
84
67
// Buf1 initialization part 3 - body of AppendStructuredBuffer<float> C2 constructor with explicit binding
85
68
// that initializes handle with @llvm.dx.resource.handlefrombinding
@@ -89,32 +72,14 @@ export void foo() {
89
72
// CHECK-SAME: i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i1 false)
90
73
// CHECK-NEXT: %__handle = getelementptr inbounds nuw %"class.hlsl::StructuredBuffer", ptr %{{.*}}, i32 0, i32 0
91
74
// CHECK-DXIL-NEXT: store target("dx.RawBuffer", float, 0, 0) %[[HANDLE]], ptr %__handle, align 4
92
- // CHECK-NEXT: ret void
93
75
94
76
// Buf2 initialization part 3 - body of RWStructuredBuffer<float> C2 constructor with implicit binding that initializes
95
77
// handle with @llvm.dx.resource.handlefromimplicitbinding
96
78
// CHECK: define linkonce_odr void @_ZN4hlsl18RWStructuredBufferIfEC2Ejijj(ptr noundef nonnull align 4 dereferenceable(4) %this,
97
79
// 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
118
83
119
84
// Buf3 initialization part 3 - body of AppendStructuredBuffer<float> default C2 constructor that
120
85
// initializes handle to poison
0 commit comments