Skip to content

Commit e5fd99d

Browse files
committed
fixup: Use -O0 rather than -O1
1 parent 2c9a706 commit e5fd99d

File tree

1 file changed

+102
-100
lines changed

1 file changed

+102
-100
lines changed
Lines changed: 102 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -1,160 +1,162 @@
1-
// RUN: %clang_cc1 -std=hlsl202x -finclude-default-header -x hlsl -triple dxil-pc-shadermodel6.3-library %s -emit-llvm -O1 -o - | FileCheck %s --check-prefixes=CHECK -DFNATTRS="noundef nofpclass(nan inf)" -DTARGET=dx
2-
// RUN: %clang_cc1 -std=hlsl202x -finclude-default-header -x hlsl -triple spirv-unknown-vulkan-compute %s -emit-llvm -O1 -o - | FileCheck %s --check-prefixes=CHECK -DFNATTRS="spir_func noundef nofpclass(nan inf)" -DTARGET=spv
1+
// RUN: %clang_cc1 -std=hlsl202x -finclude-default-header -x hlsl -triple dxil-pc-shadermodel6.3-library %s -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK -DFNATTRS="noundef nofpclass(nan inf)" -DTARGET=dx
2+
// RUN: %clang_cc1 -std=hlsl202x -finclude-default-header -x hlsl -triple spirv-unknown-vulkan-compute %s -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK -DFNATTRS="spir_func noundef nofpclass(nan inf)" -DTARGET=spv
33

44
// CHECK: define [[FNATTRS]] float @_Z16test_lerp_doubled(
5-
// CHECK-NEXT: [[ENTRY:.*:]]
6-
// CHECK-NEXT: [[CONV:%.*]] = fptrunc {{.*}} double [[P0:%.*]] to float
7-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} float @llvm.[[TARGET]].lerp.f32(float [[CONV]], float [[CONV]], float [[CONV]])
8-
// CHECK-NEXT: ret float [[LERP]]
5+
// CHECK: [[CONV0:%.*]] = fptrunc {{.*}} double %{{.*}} to float
6+
// CHECK: [[CONV1:%.*]] = fptrunc {{.*}} double %{{.*}} to float
7+
// CHECK: [[CONV2:%.*]] = fptrunc {{.*}} double %{{.*}} to float
8+
// CHECK: [[LERP:%.*]] = call {{.*}} float @llvm.[[TARGET]].lerp.f32(float [[CONV0]], float [[CONV1]], float [[CONV2]])
9+
// CHECK: ret float [[LERP]]
910
float test_lerp_double(double p0) { return lerp(p0, p0, p0); }
1011

1112
// CHECK: define [[FNATTRS]] <2 x float> @_Z17test_lerp_double2Dv2_d(
12-
// CHECK-NEXT: [[ENTRY:.*:]]
13-
// CHECK-NEXT: [[CONV:%.*]] = fptrunc {{.*}} <2 x double> [[P0:%.*]] to <2 x float>
14-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} <2 x float> @llvm.[[TARGET]].lerp.v2f32(<2 x float> [[CONV]], <2 x float> [[CONV]], <2 x float> [[CONV]])
15-
// CHECK-NEXT: ret <2 x float> [[LERP]]
13+
// CHECK: [[CONV0:%.*]] = fptrunc {{.*}} <2 x double> %{{.*}} to <2 x float>
14+
// CHECK: [[CONV1:%.*]] = fptrunc {{.*}} <2 x double> %{{.*}} to <2 x float>
15+
// CHECK: [[CONV2:%.*]] = fptrunc {{.*}} <2 x double> %{{.*}} to <2 x float>
16+
// CHECK: [[LERP:%.*]] = call {{.*}} <2 x float> @llvm.[[TARGET]].lerp.v2f32(<2 x float> [[CONV0]], <2 x float> [[CONV1]], <2 x float> [[CONV2]])
17+
// CHECK: ret <2 x float> [[LERP]]
1618
float2 test_lerp_double2(double2 p0) { return lerp(p0, p0, p0); }
1719

1820
// CHECK: define [[FNATTRS]] <3 x float> @_Z17test_lerp_double3Dv3_d(
19-
// CHECK-NEXT: [[ENTRY:.*:]]
20-
// CHECK-NEXT: [[CONV:%.*]] = fptrunc {{.*}} <3 x double> [[P0:%.*]] to <3 x float>
21-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} <3 x float> @llvm.[[TARGET]].lerp.v3f32(<3 x float> [[CONV]], <3 x float> [[CONV]], <3 x float> [[CONV]])
22-
// CHECK-NEXT: ret <3 x float> [[LERP]]
23-
//
21+
// CHECK: [[CONV0:%.*]] = fptrunc {{.*}} <3 x double> %{{.*}} to <3 x float>
22+
// CHECK: [[CONV1:%.*]] = fptrunc {{.*}} <3 x double> %{{.*}} to <3 x float>
23+
// CHECK: [[CONV2:%.*]] = fptrunc {{.*}} <3 x double> %{{.*}} to <3 x float>
24+
// CHECK: [[LERP:%.*]] = call {{.*}} <3 x float> @llvm.[[TARGET]].lerp.v3f32(<3 x float> [[CONV0]], <3 x float> [[CONV1]], <3 x float> [[CONV2]])
25+
// CHECK: ret <3 x float> [[LERP]]
2426
float3 test_lerp_double3(double3 p0) { return lerp(p0, p0, p0); }
2527

2628
// CHECK: define [[FNATTRS]] <4 x float> @_Z17test_lerp_double4Dv4_d(
27-
// CHECK-NEXT: [[ENTRY:.*:]]
28-
// CHECK-NEXT: [[CONV:%.*]] = fptrunc {{.*}} <4 x double> [[P0:%.*]] to <4 x float>
29-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} <4 x float> @llvm.[[TARGET]].lerp.v4f32(<4 x float> [[CONV]], <4 x float> [[CONV]], <4 x float> [[CONV]])
30-
// CHECK-NEXT: ret <4 x float> [[LERP]]
31-
//
29+
// CHECK: [[CONV0:%.*]] = fptrunc {{.*}} <4 x double> %{{.*}} to <4 x float>
30+
// CHECK: [[CONV1:%.*]] = fptrunc {{.*}} <4 x double> %{{.*}} to <4 x float>
31+
// CHECK: [[CONV2:%.*]] = fptrunc {{.*}} <4 x double> %{{.*}} to <4 x float>
32+
// CHECK: [[LERP:%.*]] = call {{.*}} <4 x float> @llvm.[[TARGET]].lerp.v4f32(<4 x float> [[CONV0]], <4 x float> [[CONV1]], <4 x float> [[CONV2]])
33+
// CHECK: ret <4 x float> [[LERP]]
3234
float4 test_lerp_double4(double4 p0) { return lerp(p0, p0, p0); }
3335

3436
// CHECK: define [[FNATTRS]] float @_Z13test_lerp_inti(
35-
// CHECK-NEXT: [[ENTRY:.*:]]
36-
// CHECK-NEXT: [[CONV:%.*]] = sitofp i32 [[P0:%.*]] to float
37-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} float @llvm.[[TARGET]].lerp.f32(float [[CONV]], float [[CONV]], float [[CONV]])
38-
// CHECK-NEXT: ret float [[LERP]]
39-
//
37+
// CHECK: [[CONV0:%.*]] = sitofp i32 %{{.*}} to float
38+
// CHECK: [[CONV1:%.*]] = sitofp i32 %{{.*}} to float
39+
// CHECK: [[CONV2:%.*]] = sitofp i32 %{{.*}} to float
40+
// CHECK: [[LERP:%.*]] = call {{.*}} float @llvm.[[TARGET]].lerp.f32(float [[CONV0]], float [[CONV1]], float [[CONV2]])
41+
// CHECK: ret float [[LERP]]
4042
float test_lerp_int(int p0) { return lerp(p0, p0, p0); }
4143

4244
// CHECK: define [[FNATTRS]] <2 x float> @_Z14test_lerp_int2Dv2_i(
43-
// CHECK-NEXT: [[ENTRY:.*:]]
44-
// CHECK-NEXT: [[CONV:%.*]] = sitofp <2 x i32> [[P0:%.*]] to <2 x float>
45-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} <2 x float> @llvm.[[TARGET]].lerp.v2f32(<2 x float> [[CONV]], <2 x float> [[CONV]], <2 x float> [[CONV]])
46-
// CHECK-NEXT: ret <2 x float> [[LERP]]
47-
//
45+
// CHECK: [[CONV0:%.*]] = sitofp <2 x i32> %{{.*}} to <2 x float>
46+
// CHECK: [[CONV1:%.*]] = sitofp <2 x i32> %{{.*}} to <2 x float>
47+
// CHECK: [[CONV2:%.*]] = sitofp <2 x i32> %{{.*}} to <2 x float>
48+
// CHECK: [[LERP:%.*]] = call {{.*}} <2 x float> @llvm.[[TARGET]].lerp.v2f32(<2 x float> [[CONV0]], <2 x float> [[CONV1]], <2 x float> [[CONV2]])
49+
// CHECK: ret <2 x float> [[LERP]]
4850
float2 test_lerp_int2(int2 p0) { return lerp(p0, p0, p0); }
4951

5052
// CHECK: define [[FNATTRS]] <3 x float> @_Z14test_lerp_int3Dv3_i(
51-
// CHECK-NEXT: [[ENTRY:.*:]]
52-
// CHECK-NEXT: [[CONV:%.*]] = sitofp <3 x i32> [[P0:%.*]] to <3 x float>
53-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} <3 x float> @llvm.[[TARGET]].lerp.v3f32(<3 x float> [[CONV]], <3 x float> [[CONV]], <3 x float> [[CONV]])
54-
// CHECK-NEXT: ret <3 x float> [[LERP]]
55-
//
53+
// CHECK: [[CONV0:%.*]] = sitofp <3 x i32> %{{.*}} to <3 x float>
54+
// CHECK: [[CONV1:%.*]] = sitofp <3 x i32> %{{.*}} to <3 x float>
55+
// CHECK: [[CONV2:%.*]] = sitofp <3 x i32> %{{.*}} to <3 x float>
56+
// CHECK: [[LERP:%.*]] = call {{.*}} <3 x float> @llvm.[[TARGET]].lerp.v3f32(<3 x float> [[CONV0]], <3 x float> [[CONV1]], <3 x float> [[CONV2]])
57+
// CHECK: ret <3 x float> [[LERP]]
5658
float3 test_lerp_int3(int3 p0) { return lerp(p0, p0, p0); }
5759

5860
// CHECK: define [[FNATTRS]] <4 x float> @_Z14test_lerp_int4Dv4_i(
59-
// CHECK-NEXT: [[ENTRY:.*:]]
60-
// CHECK-NEXT: [[CONV:%.*]] = sitofp <4 x i32> [[P0:%.*]] to <4 x float>
61-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} <4 x float> @llvm.[[TARGET]].lerp.v4f32(<4 x float> [[CONV]], <4 x float> [[CONV]], <4 x float> [[CONV]])
62-
// CHECK-NEXT: ret <4 x float> [[LERP]]
63-
//
61+
// CHECK: [[CONV0:%.*]] = sitofp <4 x i32> %{{.*}} to <4 x float>
62+
// CHECK: [[CONV1:%.*]] = sitofp <4 x i32> %{{.*}} to <4 x float>
63+
// CHECK: [[CONV2:%.*]] = sitofp <4 x i32> %{{.*}} to <4 x float>
64+
// CHECK: [[LERP:%.*]] = call {{.*}} <4 x float> @llvm.[[TARGET]].lerp.v4f32(<4 x float> [[CONV0]], <4 x float> [[CONV1]], <4 x float> [[CONV2]])
65+
// CHECK: ret <4 x float> [[LERP]]
6466
float4 test_lerp_int4(int4 p0) { return lerp(p0, p0, p0); }
6567

6668
// CHECK: define [[FNATTRS]] float @_Z14test_lerp_uintj(
67-
// CHECK-NEXT: [[ENTRY:.*:]]
68-
// CHECK-NEXT: [[CONV:%.*]] = uitofp i32 [[P0:%.*]] to float
69-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} float @llvm.[[TARGET]].lerp.f32(float [[CONV]], float [[CONV]], float [[CONV]])
70-
// CHECK-NEXT: ret float [[LERP]]
71-
//
69+
// CHECK: [[CONV0:%.*]] = uitofp i32 %{{.*}} to float
70+
// CHECK: [[CONV1:%.*]] = uitofp i32 %{{.*}} to float
71+
// CHECK: [[CONV2:%.*]] = uitofp i32 %{{.*}} to float
72+
// CHECK: [[LERP:%.*]] = call {{.*}} float @llvm.[[TARGET]].lerp.f32(float [[CONV0]], float [[CONV1]], float [[CONV2]])
73+
// CHECK: ret float [[LERP]]
7274
float test_lerp_uint(uint p0) { return lerp(p0, p0, p0); }
7375

7476
// CHECK: define [[FNATTRS]] <2 x float> @_Z15test_lerp_uint2Dv2_j(
75-
// CHECK-NEXT: [[ENTRY:.*:]]
76-
// CHECK-NEXT: [[CONV:%.*]] = uitofp <2 x i32> [[P0:%.*]] to <2 x float>
77-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} <2 x float> @llvm.[[TARGET]].lerp.v2f32(<2 x float> [[CONV]], <2 x float> [[CONV]], <2 x float> [[CONV]])
78-
// CHECK-NEXT: ret <2 x float> [[LERP]]
79-
//
77+
// CHECK: [[CONV0:%.*]] = uitofp <2 x i32> %{{.*}} to <2 x float>
78+
// CHECK: [[CONV1:%.*]] = uitofp <2 x i32> %{{.*}} to <2 x float>
79+
// CHECK: [[CONV2:%.*]] = uitofp <2 x i32> %{{.*}} to <2 x float>
80+
// CHECK: [[LERP:%.*]] = call {{.*}} <2 x float> @llvm.[[TARGET]].lerp.v2f32(<2 x float> [[CONV0]], <2 x float> [[CONV1]], <2 x float> [[CONV2]])
81+
// CHECK: ret <2 x float> [[LERP]]
8082
float2 test_lerp_uint2(uint2 p0) { return lerp(p0, p0, p0); }
8183

8284
// CHECK: define [[FNATTRS]] <3 x float> @_Z15test_lerp_uint3Dv3_j(
83-
// CHECK-NEXT: [[ENTRY:.*:]]
84-
// CHECK-NEXT: [[CONV:%.*]] = uitofp <3 x i32> [[P0:%.*]] to <3 x float>
85-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} <3 x float> @llvm.[[TARGET]].lerp.v3f32(<3 x float> [[CONV]], <3 x float> [[CONV]], <3 x float> [[CONV]])
86-
// CHECK-NEXT: ret <3 x float> [[LERP]]
87-
//
85+
// CHECK: [[CONV0:%.*]] = uitofp <3 x i32> %{{.*}} to <3 x float>
86+
// CHECK: [[CONV1:%.*]] = uitofp <3 x i32> %{{.*}} to <3 x float>
87+
// CHECK: [[CONV2:%.*]] = uitofp <3 x i32> %{{.*}} to <3 x float>
88+
// CHECK: [[LERP:%.*]] = call {{.*}} <3 x float> @llvm.[[TARGET]].lerp.v3f32(<3 x float> [[CONV0]], <3 x float> [[CONV1]], <3 x float> [[CONV2]])
89+
// CHECK: ret <3 x float> [[LERP]]
8890
float3 test_lerp_uint3(uint3 p0) { return lerp(p0, p0, p0); }
8991

9092
// CHECK: define [[FNATTRS]] <4 x float> @_Z15test_lerp_uint4Dv4_j(
91-
// CHECK-NEXT: [[ENTRY:.*:]]
92-
// CHECK-NEXT: [[CONV:%.*]] = uitofp <4 x i32> [[P0:%.*]] to <4 x float>
93-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} <4 x float> @llvm.[[TARGET]].lerp.v4f32(<4 x float> [[CONV]], <4 x float> [[CONV]], <4 x float> [[CONV]])
94-
// CHECK-NEXT: ret <4 x float> [[LERP]]
95-
//
93+
// CHECK: [[CONV0:%.*]] = uitofp <4 x i32> %{{.*}} to <4 x float>
94+
// CHECK: [[CONV1:%.*]] = uitofp <4 x i32> %{{.*}} to <4 x float>
95+
// CHECK: [[CONV2:%.*]] = uitofp <4 x i32> %{{.*}} to <4 x float>
96+
// CHECK: [[LERP:%.*]] = call {{.*}} <4 x float> @llvm.[[TARGET]].lerp.v4f32(<4 x float> [[CONV0]], <4 x float> [[CONV1]], <4 x float> [[CONV2]])
97+
// CHECK: ret <4 x float> [[LERP]]
9698
float4 test_lerp_uint4(uint4 p0) { return lerp(p0, p0, p0); }
9799

98100
// CHECK: define [[FNATTRS]] float @_Z17test_lerp_int64_tl(
99-
// CHECK-NEXT: [[ENTRY:.*:]]
100-
// CHECK-NEXT: [[CONV:%.*]] = sitofp i64 [[P0:%.*]] to float
101-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} float @llvm.[[TARGET]].lerp.f32(float [[CONV]], float [[CONV]], float [[CONV]])
102-
// CHECK-NEXT: ret float [[LERP]]
103-
//
101+
// CHECK: [[CONV0:%.*]] = sitofp i64 %{{.*}} to float
102+
// CHECK: [[CONV1:%.*]] = sitofp i64 %{{.*}} to float
103+
// CHECK: [[CONV2:%.*]] = sitofp i64 %{{.*}} to float
104+
// CHECK: [[LERP:%.*]] = call {{.*}} float @llvm.[[TARGET]].lerp.f32(float [[CONV0]], float [[CONV1]], float [[CONV2]])
105+
// CHECK: ret float [[LERP]]
104106
float test_lerp_int64_t(int64_t p0) { return lerp(p0, p0, p0); }
105107

106108
// CHECK: define [[FNATTRS]] <2 x float> @_Z18test_lerp_int64_t2Dv2_l(
107-
// CHECK-NEXT: [[ENTRY:.*:]]
108-
// CHECK-NEXT: [[CONV:%.*]] = sitofp <2 x i64> [[P0:%.*]] to <2 x float>
109-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} <2 x float> @llvm.[[TARGET]].lerp.v2f32(<2 x float> [[CONV]], <2 x float> [[CONV]], <2 x float> [[CONV]])
110-
// CHECK-NEXT: ret <2 x float> [[LERP]]
111-
//
109+
// CHECK: [[CONV0:%.*]] = sitofp <2 x i64> %{{.*}} to <2 x float>
110+
// CHECK: [[CONV1:%.*]] = sitofp <2 x i64> %{{.*}} to <2 x float>
111+
// CHECK: [[CONV2:%.*]] = sitofp <2 x i64> %{{.*}} to <2 x float>
112+
// CHECK: [[LERP:%.*]] = call {{.*}} <2 x float> @llvm.[[TARGET]].lerp.v2f32(<2 x float> [[CONV0]], <2 x float> [[CONV1]], <2 x float> [[CONV2]])
113+
// CHECK: ret <2 x float> [[LERP]]
112114
float2 test_lerp_int64_t2(int64_t2 p0) { return lerp(p0, p0, p0); }
113115

114116
// CHECK: define [[FNATTRS]] <3 x float> @_Z18test_lerp_int64_t3Dv3_l(
115-
// CHECK-NEXT: [[ENTRY:.*:]]
116-
// CHECK-NEXT: [[CONV:%.*]] = sitofp <3 x i64> [[P0:%.*]] to <3 x float>
117-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} <3 x float> @llvm.[[TARGET]].lerp.v3f32(<3 x float> [[CONV]], <3 x float> [[CONV]], <3 x float> [[CONV]])
118-
// CHECK-NEXT: ret <3 x float> [[LERP]]
119-
//
117+
// CHECK: [[CONV0:%.*]] = sitofp <3 x i64> %{{.*}} to <3 x float>
118+
// CHECK: [[CONV1:%.*]] = sitofp <3 x i64> %{{.*}} to <3 x float>
119+
// CHECK: [[CONV2:%.*]] = sitofp <3 x i64> %{{.*}} to <3 x float>
120+
// CHECK: [[LERP:%.*]] = call {{.*}} <3 x float> @llvm.[[TARGET]].lerp.v3f32(<3 x float> [[CONV0]], <3 x float> [[CONV1]], <3 x float> [[CONV2]])
121+
// CHECK: ret <3 x float> [[LERP]]
120122
float3 test_lerp_int64_t3(int64_t3 p0) { return lerp(p0, p0, p0); }
121123

122124
// CHECK: define [[FNATTRS]] <4 x float> @_Z18test_lerp_int64_t4Dv4_l(
123-
// CHECK-NEXT: [[ENTRY:.*:]]
124-
// CHECK-NEXT: [[CONV:%.*]] = sitofp <4 x i64> [[P0:%.*]] to <4 x float>
125-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} <4 x float> @llvm.[[TARGET]].lerp.v4f32(<4 x float> [[CONV]], <4 x float> [[CONV]], <4 x float> [[CONV]])
126-
// CHECK-NEXT: ret <4 x float> [[LERP]]
127-
//
125+
// CHECK: [[CONV0:%.*]] = sitofp <4 x i64> %{{.*}} to <4 x float>
126+
// CHECK: [[CONV1:%.*]] = sitofp <4 x i64> %{{.*}} to <4 x float>
127+
// CHECK: [[CONV2:%.*]] = sitofp <4 x i64> %{{.*}} to <4 x float>
128+
// CHECK: [[LERP:%.*]] = call {{.*}} <4 x float> @llvm.[[TARGET]].lerp.v4f32(<4 x float> [[CONV0]], <4 x float> [[CONV1]], <4 x float> [[CONV2]])
129+
// CHECK: ret <4 x float> [[LERP]]
128130
float4 test_lerp_int64_t4(int64_t4 p0) { return lerp(p0, p0, p0); }
129131

130132
// CHECK: define [[FNATTRS]] float @_Z18test_lerp_uint64_tm(
131-
// CHECK-NEXT: [[ENTRY:.*:]]
132-
// CHECK-NEXT: [[CONV:%.*]] = uitofp i64 [[P0:%.*]] to float
133-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} float @llvm.[[TARGET]].lerp.f32(float [[CONV]], float [[CONV]], float [[CONV]])
134-
// CHECK-NEXT: ret float [[LERP]]
135-
//
133+
// CHECK: [[CONV0:%.*]] = uitofp i64 %{{.*}} to float
134+
// CHECK: [[CONV1:%.*]] = uitofp i64 %{{.*}} to float
135+
// CHECK: [[CONV2:%.*]] = uitofp i64 %{{.*}} to float
136+
// CHECK: [[LERP:%.*]] = call {{.*}} float @llvm.[[TARGET]].lerp.f32(float [[CONV0]], float [[CONV1]], float [[CONV2]])
137+
// CHECK: ret float [[LERP]]
136138
float test_lerp_uint64_t(uint64_t p0) { return lerp(p0, p0, p0); }
137139

138140
// CHECK: define [[FNATTRS]] <2 x float> @_Z19test_lerp_uint64_t2Dv2_m(
139-
// CHECK-NEXT: [[ENTRY:.*:]]
140-
// CHECK-NEXT: [[CONV:%.*]] = uitofp <2 x i64> [[P0:%.*]] to <2 x float>
141-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} <2 x float> @llvm.[[TARGET]].lerp.v2f32(<2 x float> [[CONV]], <2 x float> [[CONV]], <2 x float> [[CONV]])
142-
// CHECK-NEXT: ret <2 x float> [[LERP]]
143-
//
141+
// CHECK: [[CONV0:%.*]] = uitofp <2 x i64> %{{.*}} to <2 x float>
142+
// CHECK: [[CONV1:%.*]] = uitofp <2 x i64> %{{.*}} to <2 x float>
143+
// CHECK: [[CONV2:%.*]] = uitofp <2 x i64> %{{.*}} to <2 x float>
144+
// CHECK: [[LERP:%.*]] = call {{.*}} <2 x float> @llvm.[[TARGET]].lerp.v2f32(<2 x float> [[CONV0]], <2 x float> [[CONV1]], <2 x float> [[CONV2]])
145+
// CHECK: ret <2 x float> [[LERP]]
144146
float2 test_lerp_uint64_t2(uint64_t2 p0) { return lerp(p0, p0, p0); }
145147

146148
// CHECK: define [[FNATTRS]] <3 x float> @_Z19test_lerp_uint64_t3Dv3_m(
147-
// CHECK-NEXT: [[ENTRY:.*:]]
148-
// CHECK-NEXT: [[CONV:%.*]] = uitofp <3 x i64> [[P0:%.*]] to <3 x float>
149-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} <3 x float> @llvm.[[TARGET]].lerp.v3f32(<3 x float> [[CONV]], <3 x float> [[CONV]], <3 x float> [[CONV]])
150-
// CHECK-NEXT: ret <3 x float> [[LERP]]
151-
//
149+
// CHECK: [[CONV0:%.*]] = uitofp <3 x i64> %{{.*}} to <3 x float>
150+
// CHECK: [[CONV1:%.*]] = uitofp <3 x i64> %{{.*}} to <3 x float>
151+
// CHECK: [[CONV2:%.*]] = uitofp <3 x i64> %{{.*}} to <3 x float>
152+
// CHECK: [[LERP:%.*]] = call {{.*}} <3 x float> @llvm.[[TARGET]].lerp.v3f32(<3 x float> [[CONV0]], <3 x float> [[CONV1]], <3 x float> [[CONV2]])
153+
// CHECK: ret <3 x float> [[LERP]]
152154
float3 test_lerp_uint64_t3(uint64_t3 p0) { return lerp(p0, p0, p0); }
153155

154156
// CHECK: define [[FNATTRS]] <4 x float> @_Z19test_lerp_uint64_t4Dv4_m(
155-
// CHECK-NEXT: [[ENTRY:.*:]]
156-
// CHECK-NEXT: [[CONV:%.*]] = uitofp <4 x i64> [[P0:%.*]] to <4 x float>
157-
// CHECK-NEXT: [[LERP:%.*]] = tail call {{.*}} <4 x float> @llvm.[[TARGET]].lerp.v4f32(<4 x float> [[CONV]], <4 x float> [[CONV]], <4 x float> [[CONV]])
158-
// CHECK-NEXT: ret <4 x float> [[LERP]]
159-
//
157+
// CHECK: [[CONV0:%.*]] = uitofp <4 x i64> %{{.*}} to <4 x float>
158+
// CHECK: [[CONV1:%.*]] = uitofp <4 x i64> %{{.*}} to <4 x float>
159+
// CHECK: [[CONV2:%.*]] = uitofp <4 x i64> %{{.*}} to <4 x float>
160+
// CHECK: [[LERP:%.*]] = call {{.*}} <4 x float> @llvm.[[TARGET]].lerp.v4f32(<4 x float> [[CONV0]], <4 x float> [[CONV1]], <4 x float> [[CONV2]])
161+
// CHECK: ret <4 x float> [[LERP]]
160162
float4 test_lerp_uint64_t4(uint64_t4 p0) { return lerp(p0, p0, p0); }

0 commit comments

Comments
 (0)