[clang] [HLSL] Correct SPIRV CHECKs in derivative tests (PR #176609)
via cfe-commits
cfe-commits at lists.llvm.org
Sat Jan 17 15:14:40 PST 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-hlsl
Author: Gregory Roth (pow2clk)
<details>
<summary>Changes</summary>
The LABEL CHECKS intended to correspond to the CHECK-SPIRV directives were misformed such that they had no effect. Given the similarity of the output for SPIRV and DXIL, I've replaced them with common checks using variables to match the parts that differ.
---
Patch is 39.30 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/176609.diff
10 Files Affected:
- (modified) clang/test/CodeGenHLSL/builtins/ddx-coarse-builtin.hlsl (+4-10)
- (modified) clang/test/CodeGenHLSL/builtins/ddx-coarse.hlsl (+10-34)
- (modified) clang/test/CodeGenHLSL/builtins/ddx-fine-builtin.hlsl (+4-10)
- (modified) clang/test/CodeGenHLSL/builtins/ddx-fine.hlsl (+10-34)
- (modified) clang/test/CodeGenHLSL/builtins/ddx.hlsl (+18-42)
- (modified) clang/test/CodeGenHLSL/builtins/ddy-coarse-builtin.hlsl (+4-10)
- (modified) clang/test/CodeGenHLSL/builtins/ddy-coarse.hlsl (+10-34)
- (modified) clang/test/CodeGenHLSL/builtins/ddy-fine-builtin.hlsl (+4-10)
- (modified) clang/test/CodeGenHLSL/builtins/ddy-fine.hlsl (+10-34)
- (modified) clang/test/CodeGenHLSL/builtins/ddy.hlsl (+18-42)
``````````diff
diff --git a/clang/test/CodeGenHLSL/builtins/ddx-coarse-builtin.hlsl b/clang/test/CodeGenHLSL/builtins/ddx-coarse-builtin.hlsl
index 01216eefadba2..e79fcf266833e 100644
--- a/clang/test/CodeGenHLSL/builtins/ddx-coarse-builtin.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/ddx-coarse-builtin.hlsl
@@ -1,26 +1,20 @@
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple dxil-pc-shadermodel6.3-library %s \
// RUN: -emit-llvm -disable-llvm-passes -fnative-half-type -o - | \
-// RUN: FileCheck %s --check-prefixes=CHECK
+// RUN: FileCheck %s -DTGT=dx
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple spirv-pc-vulkan-compute %s \
// RUN: -emit-llvm -disable-llvm-passes -fnative-half-type -o - | \
-// RUN: FileCheck %s --check-prefixes=CHECK-SPIRV
+// RUN: FileCheck %s -DTGT=spv
// CHECK-LABEL: half @_Z19test_f16_ddx_coarseDh
-// CHECK: %hlsl.ddx.coarse = call {{.*}} half @llvm.dx.ddx.coarse.f16(half %{{.*}})
+// CHECK: %hlsl.ddx.coarse = call {{.*}} half @llvm.[[TGT]].ddx.coarse.f16(half %{{.*}})
// CHECK: ret half %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: half @_Z19test_f16_ddx_coarseDh
-// CHECK-SPIRV: %hlsl.ddx.coarse = call {{.*}} half @llvm.spv.ddx.coarse.f16(half %{{.*}})
-// CHECK-SPIRV: ret half %hlsl.ddx.coarse
half test_f16_ddx_coarse(half val) {
return __builtin_hlsl_elementwise_ddx_coarse(val);
}
// CHECK-LABEL: float @_Z19test_f32_ddx_coarsef
-// CHECK: %hlsl.ddx.coarse = call {{.*}} float @llvm.dx.ddx.coarse.f32(float %{{.*}})
+// CHECK: %hlsl.ddx.coarse = call {{.*}} float @llvm.[[TGT]].ddx.coarse.f32(float %{{.*}})
// CHECK: ret float %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: float @_Z19test_f32_ddx_coarsef
-// CHECK-SPIRV: %hlsl.ddx.coarse = call {{.*}} float @llvm.spv.ddx.coarse.f32(float %{{.*}})
-// CHECK-SPIRV: ret float %hlsl.ddx.coarse
float test_f32_ddx_coarse(float val) {
return __builtin_hlsl_elementwise_ddx_coarse(val);
}
diff --git a/clang/test/CodeGenHLSL/builtins/ddx-coarse.hlsl b/clang/test/CodeGenHLSL/builtins/ddx-coarse.hlsl
index c200d4715629e..e7cd4c71cb405 100644
--- a/clang/test/CodeGenHLSL/builtins/ddx-coarse.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/ddx-coarse.hlsl
@@ -1,86 +1,62 @@
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple dxil-pc-shadermodel6.3-library %s \
// RUN: -emit-llvm -disable-llvm-passes -fnative-half-type -o - | \
-// RUN: FileCheck %s --check-prefixes=CHECK
+// RUN: FileCheck %s -DTGT=dx
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple spirv-pc-vulkan-compute %s \
// RUN: -emit-llvm -disable-llvm-passes -fnative-half-type -o - | \
-// RUN: FileCheck %s --check-prefixes=CHECK-SPIRV
+// RUN: FileCheck %s -DTGT=spv
// CHECK-LABEL: half @_Z19test_f16_ddx_coarseDh
-// CHECK: %hlsl.ddx.coarse = call {{.*}} half @llvm.dx.ddx.coarse.f16(half %{{.*}})
+// CHECK: %hlsl.ddx.coarse = call {{.*}} half @llvm.[[TGT]].ddx.coarse.f16(half %{{.*}})
// CHECK: ret half %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: half @_Z19test_f16_ddx_coarseDh
-// CHECK-SPIRV: %hlsl.ddx.coarse = call {{.*}} half @llvm.spv.ddx.coarse.f16(half %{{.*}})
-// CHECK-SPIRV: ret half %hlsl.ddx.coarse
half test_f16_ddx_coarse(half val) {
return ddx_coarse(val);
}
// CHECK-LABEL: <2 x half> @_Z20test_f16_ddx_coarse2Dv2_Dh
-// CHECK: %hlsl.ddx.coarse = call {{.*}} <2 x half> @llvm.dx.ddx.coarse.v2f16(<2 x half> %{{.*}})
+// CHECK: %hlsl.ddx.coarse = call {{.*}} <2 x half> @llvm.[[TGT]].ddx.coarse.v2f16(<2 x half> %{{.*}})
// CHECK: ret <2 x half> %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: <2 x half> @_Z20test_f16_ddx_coarse2Dv2_Dh
-// CHECK-SPIRV: %hlsl.ddx.coarse = call {{.*}} <2 x half> @llvm.spv.ddx.coarse.v2f16(<2 x half> %{{.*}})
-// CHECK-SPIRV: ret <2 x half> %hlsl.ddx.coarse
half2 test_f16_ddx_coarse2(half2 val) {
return ddx_coarse(val);
}
// CHECK-LABEL: <3 x half> @_Z20test_f16_ddx_coarse3Dv3_Dh
-// CHECK: %hlsl.ddx.coarse = call {{.*}} <3 x half> @llvm.dx.ddx.coarse.v3f16(<3 x half> %{{.*}})
+// CHECK: %hlsl.ddx.coarse = call {{.*}} <3 x half> @llvm.[[TGT]].ddx.coarse.v3f16(<3 x half> %{{.*}})
// CHECK: ret <3 x half> %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: <3 x half> @_Z20test_f16_ddx_coarse3Dv3_Dh
-// CHECK-SPIRV: %hlsl.ddx.coarse = call {{.*}} <3 x half> @llvm.spv.ddx.coarse.v3f16(<3 x half> %{{.*}})
-// CHECK-SPIRV: ret <3 x half> %hlsl.ddx.coarse
half3 test_f16_ddx_coarse3(half3 val) {
return ddx_coarse(val);
}
// CHECK-LABEL: <4 x half> @_Z20test_f16_ddx_coarse4Dv4_Dh
-// CHECK: %hlsl.ddx.coarse = call {{.*}} <4 x half> @llvm.dx.ddx.coarse.v4f16(<4 x half> %{{.*}})
+// CHECK: %hlsl.ddx.coarse = call {{.*}} <4 x half> @llvm.[[TGT]].ddx.coarse.v4f16(<4 x half> %{{.*}})
// CHECK: ret <4 x half> %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: <4 x half> @_Z20test_f16_ddx_coarse4Dv4_Dh
-// CHECK-SPIRV: %hlsl.ddx.coarse = call {{.*}} <4 x half> @llvm.spv.ddx.coarse.v4f16(<4 x half> %{{.*}})
-// CHECK-SPIRV: ret <4 x half> %hlsl.ddx.coarse
half4 test_f16_ddx_coarse4(half4 val) {
return ddx_coarse(val);
}
// CHECK-LABEL: float @_Z19test_f32_ddx_coarsef
-// CHECK: %hlsl.ddx.coarse = call {{.*}} float @llvm.dx.ddx.coarse.f32(float %{{.*}})
+// CHECK: %hlsl.ddx.coarse = call {{.*}} float @llvm.[[TGT]].ddx.coarse.f32(float %{{.*}})
// CHECK: ret float %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: float @_Z19test_f32_ddx_coarsef
-// CHECK-SPIRV: %hlsl.ddx.coarse = call {{.*}} float @llvm.spv.ddx.coarse.f32(float %{{.*}})
-// CHECK-SPIRV: ret float %hlsl.ddx.coarse
float test_f32_ddx_coarse(float val) {
return ddx_coarse(val);
}
// CHECK-LABEL: <2 x float> @_Z20test_f32_ddx_coarse2Dv2_f
-// CHECK: %hlsl.ddx.coarse = call {{.*}} <2 x float> @llvm.dx.ddx.coarse.v2f32(<2 x float> %{{.*}})
+// CHECK: %hlsl.ddx.coarse = call {{.*}} <2 x float> @llvm.[[TGT]].ddx.coarse.v2f32(<2 x float> %{{.*}})
// CHECK: ret <2 x float> %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: <2 x float> @_Z20test_f32_ddx_coarse2Dv2_f
-// CHECK-SPIRV: %hlsl.ddx.coarse = call {{.*}} <2 x float> @llvm.spv.ddx.coarse.v2f32(<2 x float> %{{.*}})
-// CHECK-SPIRV: ret <2 x float> %hlsl.ddx.coarse
float2 test_f32_ddx_coarse2(float2 val) {
return ddx_coarse(val);
}
// CHECK-LABEL: <3 x float> @_Z20test_f32_ddx_coarse3Dv3_f
-// CHECK: %hlsl.ddx.coarse = call {{.*}} <3 x float> @llvm.dx.ddx.coarse.v3f32(<3 x float> %{{.*}})
+// CHECK: %hlsl.ddx.coarse = call {{.*}} <3 x float> @llvm.[[TGT]].ddx.coarse.v3f32(<3 x float> %{{.*}})
// CHECK: ret <3 x float> %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: <3 x float> @_Z20test_f32_ddx_coarse3Dv3_f
-// CHECK-SPIRV: %hlsl.ddx.coarse = call {{.*}} <3 x float> @llvm.spv.ddx.coarse.v3f32(<3 x float> %{{.*}})
-// CHECK-SPIRV: ret <3 x float> %hlsl.ddx.coarse
float3 test_f32_ddx_coarse3(float3 val) {
return ddx_coarse(val);
}
// CHECK-LABEL: <4 x float> @_Z20test_f32_ddx_coarse4Dv4_f
-// CHECK: %hlsl.ddx.coarse = call {{.*}} <4 x float> @llvm.dx.ddx.coarse.v4f32(<4 x float> %{{.*}})
+// CHECK: %hlsl.ddx.coarse = call {{.*}} <4 x float> @llvm.[[TGT]].ddx.coarse.v4f32(<4 x float> %{{.*}})
// CHECK: ret <4 x float> %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: <4 x float> @_Z20test_f32_ddx_coarse4Dv4_f
-// CHECK-SPIRV: %hlsl.ddx.coarse = call {{.*}} <4 x float> @llvm.spv.ddx.coarse.v4f32(<4 x float> %{{.*}})
-// CHECK-SPIRV: ret <4 x float> %hlsl.ddx.coarse
float4 test_f32_ddx_coarse4(float4 val) {
return ddx_coarse(val);
}
diff --git a/clang/test/CodeGenHLSL/builtins/ddx-fine-builtin.hlsl b/clang/test/CodeGenHLSL/builtins/ddx-fine-builtin.hlsl
index 69f7ab3c6ce62..ef8d4d0770a26 100644
--- a/clang/test/CodeGenHLSL/builtins/ddx-fine-builtin.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/ddx-fine-builtin.hlsl
@@ -1,26 +1,20 @@
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple dxil-pc-shadermodel6.3-library %s \
// RUN: -emit-llvm -disable-llvm-passes -fnative-half-type -o - | \
-// RUN: FileCheck %s --check-prefixes=CHECK
+// RUN: FileCheck %s -DTGT=dx
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple spirv-pc-vulkan-compute %s \
// RUN: -emit-llvm -disable-llvm-passes -fnative-half-type -o - | \
-// RUN: FileCheck %s --check-prefixes=CHECK-SPIRV
+// RUN: FileCheck %s -DTGT=spv
// CHECK-LABEL: half @_Z17test_f16_ddx_fineDh
-// CHECK: %hlsl.ddx.fine = call {{.*}} half @llvm.dx.ddx.fine.f16(half %{{.*}})
+// CHECK: %hlsl.ddx.fine = call {{.*}} half @llvm.[[TGT]].ddx.fine.f16(half %{{.*}})
// CHECK: ret half %hlsl.ddx.fine
-// CHECK-LABEL-SPIRV: half @_Z17test_f16_ddx_fineDh
-// CHECK-SPIRV: %hlsl.ddx.fine = call {{.*}} half @llvm.spv.ddx.fine.f16(half %{{.*}})
-// CHECK-SPIRV: ret half %hlsl.ddx.fine
half test_f16_ddx_fine(half val) {
return __builtin_hlsl_elementwise_ddx_fine(val);
}
// CHECK-LABEL: float @_Z17test_f32_ddx_finef
-// CHECK: %hlsl.ddx.fine = call {{.*}} float @llvm.dx.ddx.fine.f32(float %{{.*}})
+// CHECK: %hlsl.ddx.fine = call {{.*}} float @llvm.[[TGT]].ddx.fine.f32(float %{{.*}})
// CHECK: ret float %hlsl.ddx.fine
-// CHECK-LABEL-SPIRV: float @_Z17test_f32_ddx_finef
-// CHECK-SPIRV: %hlsl.ddx.fine = call {{.*}} float @llvm.spv.ddx.fine.f32(float %{{.*}})
-// CHECK-SPIRV: ret float %hlsl.ddx.fine
float test_f32_ddx_fine(float val) {
return __builtin_hlsl_elementwise_ddx_fine(val);
}
diff --git a/clang/test/CodeGenHLSL/builtins/ddx-fine.hlsl b/clang/test/CodeGenHLSL/builtins/ddx-fine.hlsl
index 2630260abcb43..68e8223a3e8ab 100644
--- a/clang/test/CodeGenHLSL/builtins/ddx-fine.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/ddx-fine.hlsl
@@ -1,86 +1,62 @@
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple dxil-pc-shadermodel6.3-library %s \
// RUN: -emit-llvm -disable-llvm-passes -fnative-half-type -o - | \
-// RUN: FileCheck %s --check-prefixes=CHECK
+// RUN: FileCheck %s -DTGT=dx
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple spirv-pc-vulkan-compute %s \
// RUN: -emit-llvm -disable-llvm-passes -fnative-half-type -o - | \
-// RUN: FileCheck %s --check-prefixes=CHECK-SPIRV
+// RUN: FileCheck %s -DTGT=spv
// CHECK-LABEL: half @_Z17test_f16_ddx_fineDh
-// CHECK: %hlsl.ddx.fine = call {{.*}} half @llvm.dx.ddx.fine.f16(half %{{.*}})
+// CHECK: %hlsl.ddx.fine = call {{.*}} half @llvm.[[TGT]].ddx.fine.f16(half %{{.*}})
// CHECK: ret half %hlsl.ddx.fine
-// CHECK-LABEL-SPIRV: half @_Z17test_f16_ddx_fineDh
-// CHECK-SPIRV: %hlsl.ddx.fine = call {{.*}} half @llvm.spv.ddx.fine.f16(half %{{.*}})
-// CHECK-SPIRV: ret half %hlsl.ddx.fine
half test_f16_ddx_fine(half val) {
return ddx_fine(val);
}
// CHECK-LABEL: <2 x half> @_Z18test_f16_ddx_fine2Dv2_Dh
-// CHECK: %hlsl.ddx.fine = call {{.*}} <2 x half> @llvm.dx.ddx.fine.v2f16(<2 x half> %{{.*}})
+// CHECK: %hlsl.ddx.fine = call {{.*}} <2 x half> @llvm.[[TGT]].ddx.fine.v2f16(<2 x half> %{{.*}})
// CHECK: ret <2 x half> %hlsl.ddx.fine
-// CHECK-LABEL-SPIRV: <2 x half> @_Z18test_f16_ddx_fine2Dv2_Dh
-// CHECK-SPIRV: %hlsl.ddx.fine = call {{.*}} <2 x half> @llvm.spv.ddx.fine.v2f16(<2 x half> %{{.*}})
-// CHECK-SPIRV: ret <2 x half> %hlsl.ddx.fine
half2 test_f16_ddx_fine2(half2 val) {
return ddx_fine(val);
}
// CHECK-LABEL: <3 x half> @_Z18test_f16_ddx_fine3Dv3_Dh
-// CHECK: %hlsl.ddx.fine = call {{.*}} <3 x half> @llvm.dx.ddx.fine.v3f16(<3 x half> %{{.*}})
+// CHECK: %hlsl.ddx.fine = call {{.*}} <3 x half> @llvm.[[TGT]].ddx.fine.v3f16(<3 x half> %{{.*}})
// CHECK: ret <3 x half> %hlsl.ddx.fine
-// CHECK-LABEL-SPIRV: <3 x half> @_Z18test_f16_ddx_fine3Dv3_Dh
-// CHECK-SPIRV: %hlsl.ddx.fine = call {{.*}} <3 x half> @llvm.spv.ddx.fine.v3f16(<3 x half> %{{.*}})
-// CHECK-SPIRV: ret <3 x half> %hlsl.ddx.fine
half3 test_f16_ddx_fine3(half3 val) {
return ddx_fine(val);
}
// CHECK-LABEL: <4 x half> @_Z18test_f16_ddx_fine4Dv4_Dh
-// CHECK: %hlsl.ddx.fine = call {{.*}} <4 x half> @llvm.dx.ddx.fine.v4f16(<4 x half> %{{.*}})
+// CHECK: %hlsl.ddx.fine = call {{.*}} <4 x half> @llvm.[[TGT]].ddx.fine.v4f16(<4 x half> %{{.*}})
// CHECK: ret <4 x half> %hlsl.ddx.fine
-// CHECK-LABEL-SPIRV: <4 x half> @_Z18test_f16_ddx_fine4Dv4_Dh
-// CHECK-SPIRV: %hlsl.ddx.fine = call {{.*}} <4 x half> @llvm.spv.ddx.fine.v4f16(<4 x half> %{{.*}})
-// CHECK-SPIRV: ret <4 x half> %hlsl.ddx.fine
half4 test_f16_ddx_fine4(half4 val) {
return ddx_fine(val);
}
// CHECK-LABEL: float @_Z17test_f32_ddx_finef
-// CHECK: %hlsl.ddx.fine = call {{.*}} float @llvm.dx.ddx.fine.f32(float %{{.*}})
+// CHECK: %hlsl.ddx.fine = call {{.*}} float @llvm.[[TGT]].ddx.fine.f32(float %{{.*}})
// CHECK: ret float %hlsl.ddx.fine
-// CHECK-LABEL-SPIRV: float @_Z17test_f32_ddx_finef
-// CHECK-SPIRV: %hlsl.ddx.fine = call {{.*}} float @llvm.spv.ddx.fine.f32(float %{{.*}})
-// CHECK-SPIRV: ret float %hlsl.ddx.fine
float test_f32_ddx_fine(float val) {
return ddx_fine(val);
}
// CHECK-LABEL: <2 x float> @_Z18test_f32_ddx_fine2Dv2_f
-// CHECK: %hlsl.ddx.fine = call {{.*}} <2 x float> @llvm.dx.ddx.fine.v2f32(<2 x float> %{{.*}})
+// CHECK: %hlsl.ddx.fine = call {{.*}} <2 x float> @llvm.[[TGT]].ddx.fine.v2f32(<2 x float> %{{.*}})
// CHECK: ret <2 x float> %hlsl.ddx.fine
-// CHECK-LABEL-SPIRV: <2 x float> @_Z18test_f32_ddx_fine2Dv2_f
-// CHECK-SPIRV: %hlsl.ddx.fine = call {{.*}} <2 x float> @llvm.spv.ddx.fine.v2f32(<2 x float> %{{.*}})
-// CHECK-SPIRV: ret <2 x float> %hlsl.ddx.fine
float2 test_f32_ddx_fine2(float2 val) {
return ddx_fine(val);
}
// CHECK-LABEL: <3 x float> @_Z18test_f32_ddx_fine3Dv3_f
-// CHECK: %hlsl.ddx.fine = call {{.*}} <3 x float> @llvm.dx.ddx.fine.v3f32(<3 x float> %{{.*}})
+// CHECK: %hlsl.ddx.fine = call {{.*}} <3 x float> @llvm.[[TGT]].ddx.fine.v3f32(<3 x float> %{{.*}})
// CHECK: ret <3 x float> %hlsl.ddx.fine
-// CHECK-LABEL-SPIRV: <3 x float> @_Z18test_f32_ddx_fine3Dv3_f
-// CHECK-SPIRV: %hlsl.ddx.fine = call {{.*}} <3 x float> @llvm.spv.ddx.fine.v3f32(<3 x float> %{{.*}})
-// CHECK-SPIRV: ret <3 x float> %hlsl.ddx.fine
float3 test_f32_ddx_fine3(float3 val) {
return ddx_fine(val);
}
// CHECK-LABEL: <4 x float> @_Z18test_f32_ddx_fine4Dv4_f
-// CHECK: %hlsl.ddx.fine = call {{.*}} <4 x float> @llvm.dx.ddx.fine.v4f32(<4 x float> %{{.*}})
+// CHECK: %hlsl.ddx.fine = call {{.*}} <4 x float> @llvm.[[TGT]].ddx.fine.v4f32(<4 x float> %{{.*}})
// CHECK: ret <4 x float> %hlsl.ddx.fine
-// CHECK-LABEL-SPIRV: <4 x float> @_Z18test_f32_ddx_fine4Dv4_f
-// CHECK-SPIRV: %hlsl.ddx.fine = call {{.*}} <4 x float> @llvm.spv.ddx.fine.v4f32(<4 x float> %{{.*}})
-// CHECK-SPIRV: ret <4 x float> %hlsl.ddx.fine
float4 test_f32_ddx_fine4(float4 val) {
return ddx_fine(val);
}
diff --git a/clang/test/CodeGenHLSL/builtins/ddx.hlsl b/clang/test/CodeGenHLSL/builtins/ddx.hlsl
index 1a736e20c47ae..26597317f1368 100644
--- a/clang/test/CodeGenHLSL/builtins/ddx.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/ddx.hlsl
@@ -1,86 +1,62 @@
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple dxil-pc-shadermodel6.3-library %s \
// RUN: -emit-llvm -disable-llvm-passes -fnative-half-type -o - | \
-// RUN: FileCheck %s --check-prefixes=CHECK
+// RUN: FileCheck %s -DCALL=dx.ddx.coarse -DVAR=hlsl.ddx.coarse
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple spirv-pc-vulkan-pixel %s \
// RUN: -emit-llvm -disable-llvm-passes -fnative-half-type -o - | \
-// RUN: FileCheck %s --check-prefixes=CHECK-SPIRV
+// RUN: FileCheck %s -DCALL=spv.ddx -DVAR=spv.ddx
// CHECK-LABEL: define {{.*}} half @_ZN4hlsl8__detail8ddx_implIDhEET_S2_
-// CHECK: %hlsl.ddx.coarse = call {{.*}} half @llvm.dx.ddx.coarse.f16(half %{{.*}})
-// CHECK: ret half %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: half @_ZN4hlsl8__detail8ddx_implIDhEET_S2_
-// CHECK-SPIRV: %spv.ddx = call {{.*}} half @llvm.spv.ddx.f16(half %{{.*}})
-// CHECK-SPIRV: ret half %spv.ddx
+// CHECK: %[[VAR]] = call {{.*}} half @llvm.[[CALL]].f16(half %{{.*}})
+// CHECK: ret half %[[VAR]]
half test_f16_ddx(half val) {
return ddx(val);
}
// CHECK-LABEL: define {{.*}} <2 x half> @_ZN4hlsl8__detail8ddx_implIDv2_DhEET_S3_
-// CHECK: %hlsl.ddx.coarse = call {{.*}} <2 x half> @llvm.dx.ddx.coarse.v2f16(<2 x half> %{{.*}})
-// CHECK: ret <2 x half> %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: <2 x half> @_ZN4hlsl8__detail8ddx_implIDv2_DhEET_S3_
-// CHECK-SPIRV: %spv.ddx = call {{.*}} <2 x half> @llvm.spv.ddx.v2f16(<2 x half> %{{.*}})
-// CHECK-SPIRV: ret <2 x half> %spv.ddx
+// CHECK: %[[VAR]] = call {{.*}} <2 x half> @llvm.[[CALL]].v2f16(<2 x half> %{{.*}})
+// CHECK: ret <2 x half> %[[VAR]]
half2 test_f16_ddx2(half2 val) {
return ddx(val);
}
// CHECK-LABEL: define {{.*}} <3 x half> @_ZN4hlsl8__detail8ddx_implIDv3_DhEET_S3_
-// CHECK: %hlsl.ddx.coarse = call {{.*}} <3 x half> @llvm.dx.ddx.coarse.v3f16(<3 x half> %{{.*}})
-// CHECK: ret <3 x half> %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: <3 x half> @_ZN4hlsl8__detail8ddx_implIDv3_DhEET_S3_
-// CHECK-SPIRV: %spv.ddx = call {{.*}} <3 x half> @llvm.spv.ddx.v3f16(<3 x half> %{{.*}})
-// CHECK-SPIRV: ret <3 x half> %spv.ddx
+// CHECK: %[[VAR]] = call {{.*}} <3 x half> @llvm.[[CALL]].v3f16(<3 x half> %{{.*}})
+// CHECK: ret <3 x half> %[[VAR]]
half3 test_f16_ddx3(half3 val) {
return ddx(val);
}
// CHECK-LABEL: define {{.*}} <4 x half> @_ZN4hlsl8__detail8ddx_implIDv4_DhEET_S3_
-// CHECK: %hlsl.ddx.coarse = call {{.*}} <4 x half> @llvm.dx.ddx.coarse.v4f16(<4 x half> %{{.*}})
-// CHECK: ret <4 x half> %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: <4 x half> @_ZN4hlsl8__detail8ddx_implIDv4_DhEET_S3_
-// CHECK-SPIRV: %spv.ddx = call {{.*}} <4 x half> @llvm.spv.ddx.v4f16(<4 x half> %{{.*}})
-// CHECK-SPIRV: ret <4 x half> %spv.ddx
+// CHECK: %[[VAR]] = call {{.*}} <4 x half> @llvm.[[CALL]].v4f16(<4 x half> %{{.*}})
+// CHECK: ret <4 x half> %[[VAR]]
half4 test_f16_ddx4(half4 val) {
return ddx(val);
}
// CHECK-LABEL: define {{.*}} float @_ZN4hlsl8__detail8ddx_implIfEET_S2_
-// CHECK: %hlsl.ddx.coarse = call {{.*}} float @llvm.dx.ddx.coarse.f32(float %{{.*}})
-// CHECK: ret float %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: float @_ZN4hlsl8__detail8ddx_implIfEET_S2_
-// CHECK-SPIRV: %spv.ddx = call {{.*}} float @llvm.spv.ddx.f32(float %{{.*}})
-// CHECK-SPIRV: ret float %spv.ddx
+// CHECK: %[[VAR]] = call {{.*}} float @llvm.[[CALL]].f32(float %{{.*}})
+// CHECK: ret float %[[VAR]]
float test_f32_ddx(float val) {
return ddx(val);
}
// CHECK-LABEL: define {{.*}} <2 x float> @_ZN4hlsl8__detail8ddx_implIDv2_fEET_S3_
-// CHECK: %hlsl.ddx.coarse = call {{.*}} <2 x float> @llvm.dx.ddx.coarse.v2f32(<2 x float> %{{.*}})
-// CHECK: ret <2 x float> %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: <2 x float> @_ZN4hlsl8__detail8ddx_implIDv2_fEET_S3_
-// CHECK-SPIRV: %spv.ddx = call {{.*}} <2 x float> @llvm.spv.ddx.v2f32(<2 x float> %{{.*}})
-// CHECK-SPIRV: ret <2 x float> %spv.ddx
+// CHECK: %[[VAR]] = call {{.*}} <2 x float> @llvm.[[CALL]].v2f32(<2 x float> %{{.*}})
+// CHECK: ret <2 x float> %[[VAR]]
float2 test_f32_ddx2(float2 val) {
return ddx(val);
}
// CHECK-LABEL: define {{.*}} <3 x float> @_ZN4hlsl8__detail8ddx_implIDv3_fEET_S3_
-// CHECK: %hlsl.ddx.coarse = call {{.*}} <3 x float> @llvm.dx.ddx.coarse.v3f32(<3 x float> %{{.*}})
-// CHECK: ret <3 x float> %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: <3 x float> @_ZN4hlsl8__detail8ddx_implIDv3_fEET_S3_
-// CHECK-SPIRV: %spv.ddx = call {{.*}} <3 x float> @llvm.spv.ddx.v3f32(<3 x float> %{{.*}})
-// CHECK-SPIRV: ret <3 x float> %spv.ddx
+// CHECK: %[[VAR]] = call {{.*}} <3 x float> @llvm.[[CALL]].v3f32(<3 x float> %{{.*}})
+// CHECK: ret <3 x float> %[[VAR]]
float3 test_f32_ddx3(float3 val) {
return ddx(val);
}
// CHECK-LABEL: define {{.*}} <4 x float> @_ZN4hlsl8__detail8ddx_implIDv4_fEET_S3_
-// CHECK: %hlsl.ddx.coarse = call {{.*}} <4 x float> @llvm.dx.ddx.coarse.v4f32(<4 x float> %{{.*}})
-// CHECK: ret <4 x float> %hlsl.ddx.coarse
-// CHECK-LABEL-SPIRV: <4 x float> @_ZN4hlsl8__detail8ddx_implIDv4_fEET_S3_
-// CHECK-SPIRV: %spv.ddx = call {{.*}} <4 x float> @llvm.spv.ddx.v4f32(<4 x float> %{{.*}})
-// CHECK-SPIRV: ret <4 x float> %spv.ddx
+// CHECK: %[[VAR]] = call {{.*}} <4 x float> @llvm.[[CALL]].v4f32(<4 x float> %{{.*}})
+// CHECK: ret <4 x float> %[[VAR]]
float4 test_f32_ddx4(float4 val) {
return ddx(val);
}
diff --git a/clang/test/CodeGenHLSL/builtins/ddy-coarse-builtin.hlsl b/clang/test/CodeGenHLSL/builtins/ddy-coarse-builtin.hlsl
index 2967deb75031f..3ab84a1343eaf 100644
--- a/clang/test/CodeGenHLSL/builtins/ddy-coarse-builtin.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/ddy-coarse-builtin.hlsl
@@ -1,26 +1,20 @@
// RUN: %clang_cc1 -finclude-default-header ...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/176609
More information about the cfe-commits
mailing list