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 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
