https://github.com/pow2clk updated 
https://github.com/llvm/llvm-project/pull/176609

>From fc6a1cfd5b4d52c3870c8590c04642bd47a70280 Mon Sep 17 00:00:00 2001
From: Gregory Roth <[email protected]>
Date: Sat, 17 Jan 2026 14:23:05 -0800
Subject: [PATCH] [HLSL] Correct SPIRV CHECKs in derivative tests

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.
---
 .../builtins/ddx-coarse-builtin.hlsl          | 14 ++---
 .../test/CodeGenHLSL/builtins/ddx-coarse.hlsl | 44 ++++----------
 .../builtins/ddx-fine-builtin.hlsl            | 14 ++---
 clang/test/CodeGenHLSL/builtins/ddx-fine.hlsl | 44 ++++----------
 clang/test/CodeGenHLSL/builtins/ddx.hlsl      | 60 ++++++-------------
 .../builtins/ddy-coarse-builtin.hlsl          | 14 ++---
 .../test/CodeGenHLSL/builtins/ddy-coarse.hlsl | 44 ++++----------
 .../builtins/ddy-fine-builtin.hlsl            | 14 ++---
 clang/test/CodeGenHLSL/builtins/ddy-fine.hlsl | 44 ++++----------
 clang/test/CodeGenHLSL/builtins/ddy.hlsl      | 60 ++++++-------------
 10 files changed, 92 insertions(+), 260 deletions(-)

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  -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_ddy_coarseDh
-// CHECK: %hlsl.ddy.coarse = call {{.*}} half @llvm.dx.ddy.coarse.f16(half 
%{{.*}})
+// CHECK: %hlsl.ddy.coarse = call {{.*}} half 
@llvm.[[TGT]].ddy.coarse.f16(half %{{.*}})
 // CHECK: ret half %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: half @_Z19test_f16_ddy_coarseDh
-// CHECK-SPIRV: %hlsl.ddy.coarse = call {{.*}} half 
@llvm.spv.ddy.coarse.f16(half %{{.*}})
-// CHECK-SPIRV: ret half %hlsl.ddy.coarse
 half test_f16_ddy_coarse(half val) {
     return __builtin_hlsl_elementwise_ddy_coarse(val);
 }
 
 // CHECK-LABEL: float @_Z19test_f32_ddy_coarsef
-// CHECK: %hlsl.ddy.coarse = call {{.*}} float @llvm.dx.ddy.coarse.f32(float 
%{{.*}})
+// CHECK: %hlsl.ddy.coarse = call {{.*}} float 
@llvm.[[TGT]].ddy.coarse.f32(float %{{.*}})
 // CHECK: ret float %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: float @_Z19test_f32_ddy_coarsef
-// CHECK-SPIRV: %hlsl.ddy.coarse = call {{.*}} float 
@llvm.spv.ddy.coarse.f32(float %{{.*}})
-// CHECK-SPIRV: ret float %hlsl.ddy.coarse
 float test_f32_ddy_coarse(float val) {
     return __builtin_hlsl_elementwise_ddy_coarse(val);
 }
diff --git a/clang/test/CodeGenHLSL/builtins/ddy-coarse.hlsl 
b/clang/test/CodeGenHLSL/builtins/ddy-coarse.hlsl
index faa972a1be326..7a0cafa20079a 100644
--- a/clang/test/CodeGenHLSL/builtins/ddy-coarse.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/ddy-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_ddy_coarseDh
-// CHECK: %hlsl.ddy.coarse = call {{.*}} half @llvm.dx.ddy.coarse.f16(half 
%{{.*}})
+// CHECK: %hlsl.ddy.coarse = call {{.*}} half 
@llvm.[[TGT]].ddy.coarse.f16(half %{{.*}})
 // CHECK: ret half %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: half @_Z19test_f16_ddy_coarseDh
-// CHECK-SPIRV: %hlsl.ddy.coarse = call {{.*}} half 
@llvm.spv.ddy.coarse.f16(half %{{.*}})
-// CHECK-SPIRV: ret half %hlsl.ddy.coarse
 half test_f16_ddy_coarse(half val) {
     return ddy_coarse(val);
 }
 
 // CHECK-LABEL: <2 x half> @_Z20test_f16_ddy_coarse2Dv2_Dh
-// CHECK: %hlsl.ddy.coarse = call {{.*}} <2 x half> 
@llvm.dx.ddy.coarse.v2f16(<2 x half> %{{.*}})
+// CHECK: %hlsl.ddy.coarse = call {{.*}} <2 x half> 
@llvm.[[TGT]].ddy.coarse.v2f16(<2 x half> %{{.*}})
 // CHECK: ret <2 x half> %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: <2 x half> @_Z20test_f16_ddy_coarse2Dv2_Dh
-// CHECK-SPIRV: %hlsl.ddy.coarse = call {{.*}} <2 x half> 
@llvm.spv.ddy.coarse.v2f16(<2 x half> %{{.*}})
-// CHECK-SPIRV: ret <2 x half> %hlsl.ddy.coarse
 half2 test_f16_ddy_coarse2(half2 val) {
     return ddy_coarse(val);
 }
 
 // CHECK-LABEL: <3 x half> @_Z20test_f16_ddy_coarse3Dv3_Dh
-// CHECK: %hlsl.ddy.coarse = call {{.*}} <3 x half> 
@llvm.dx.ddy.coarse.v3f16(<3 x half> %{{.*}})
+// CHECK: %hlsl.ddy.coarse = call {{.*}} <3 x half> 
@llvm.[[TGT]].ddy.coarse.v3f16(<3 x half> %{{.*}})
 // CHECK: ret <3 x half> %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: <3 x half> @_Z20test_f16_ddy_coarse3Dv3_Dh
-// CHECK-SPIRV: %hlsl.ddy.coarse = call {{.*}} <3 x half> 
@llvm.spv.ddy.coarse.v3f16(<3 x half> %{{.*}})
-// CHECK-SPIRV: ret <3 x half> %hlsl.ddy.coarse
 half3 test_f16_ddy_coarse3(half3 val) {
     return ddy_coarse(val);
 }
 
 // CHECK-LABEL: <4 x half> @_Z20test_f16_ddy_coarse4Dv4_Dh
-// CHECK: %hlsl.ddy.coarse = call {{.*}} <4 x half> 
@llvm.dx.ddy.coarse.v4f16(<4 x half> %{{.*}})
+// CHECK: %hlsl.ddy.coarse = call {{.*}} <4 x half> 
@llvm.[[TGT]].ddy.coarse.v4f16(<4 x half> %{{.*}})
 // CHECK: ret <4 x half> %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: <4 x half> @_Z20test_f16_ddy_coarse4Dv4_Dh
-// CHECK-SPIRV: %hlsl.ddy.coarse = call {{.*}} <4 x half> 
@llvm.spv.ddy.coarse.v4f16(<4 x half> %{{.*}})
-// CHECK-SPIRV: ret <4 x half> %hlsl.ddy.coarse
 half4 test_f16_ddy_coarse4(half4 val) {
     return ddy_coarse(val);
 }
 
 // CHECK-LABEL: float @_Z19test_f32_ddy_coarsef
-// CHECK: %hlsl.ddy.coarse = call {{.*}} float @llvm.dx.ddy.coarse.f32(float 
%{{.*}})
+// CHECK: %hlsl.ddy.coarse = call {{.*}} float 
@llvm.[[TGT]].ddy.coarse.f32(float %{{.*}})
 // CHECK: ret float %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: float @_Z19test_f32_ddy_coarsef
-// CHECK-SPIRV: %hlsl.ddy.coarse = call {{.*}} float 
@llvm.spv.ddy.coarse.f32(float %{{.*}})
-// CHECK-SPIRV: ret float %hlsl.ddy.coarse
 float test_f32_ddy_coarse(float val) {
     return ddy_coarse(val);
 }
 
 // CHECK-LABEL: <2 x float> @_Z20test_f32_ddy_coarse2Dv2_f
-// CHECK: %hlsl.ddy.coarse = call {{.*}} <2 x float> 
@llvm.dx.ddy.coarse.v2f32(<2 x float> %{{.*}})
+// CHECK: %hlsl.ddy.coarse = call {{.*}} <2 x float> 
@llvm.[[TGT]].ddy.coarse.v2f32(<2 x float> %{{.*}})
 // CHECK: ret <2 x float> %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: <2 x float> @_Z20test_f32_ddy_coarse2Dv2_f
-// CHECK-SPIRV: %hlsl.ddy.coarse = call {{.*}} <2 x float> 
@llvm.spv.ddy.coarse.v2f32(<2 x float> %{{.*}})
-// CHECK-SPIRV: ret <2 x float> %hlsl.ddy.coarse
 float2 test_f32_ddy_coarse2(float2 val) {
     return ddy_coarse(val);
 }
 
 // CHECK-LABEL: <3 x float> @_Z20test_f32_ddy_coarse3Dv3_f
-// CHECK: %hlsl.ddy.coarse = call {{.*}} <3 x float> 
@llvm.dx.ddy.coarse.v3f32(<3 x float> %{{.*}})
+// CHECK: %hlsl.ddy.coarse = call {{.*}} <3 x float> 
@llvm.[[TGT]].ddy.coarse.v3f32(<3 x float> %{{.*}})
 // CHECK: ret <3 x float> %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: <3 x float> @_Z20test_f32_ddy_coarse3Dv3_f
-// CHECK-SPIRV: %hlsl.ddy.coarse = call {{.*}} <3 x float> 
@llvm.spv.ddy.coarse.v3f32(<3 x float> %{{.*}})
-// CHECK-SPIRV: ret <3 x float> %hlsl.ddy.coarse
 float3 test_f32_ddy_coarse3(float3 val) {
     return ddy_coarse(val);
 }
 
 // CHECK-LABEL: <4 x float> @_Z20test_f32_ddy_coarse4Dv4_f
-// CHECK: %hlsl.ddy.coarse = call {{.*}} <4 x float> 
@llvm.dx.ddy.coarse.v4f32(<4 x float> %{{.*}})
+// CHECK: %hlsl.ddy.coarse = call {{.*}} <4 x float> 
@llvm.[[TGT]].ddy.coarse.v4f32(<4 x float> %{{.*}})
 // CHECK: ret <4 x float> %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: <4 x float> @_Z20test_f32_ddy_coarse4Dv4_f
-// CHECK-SPIRV: %hlsl.ddy.coarse = call {{.*}} <4 x float> 
@llvm.spv.ddy.coarse.v4f32(<4 x float> %{{.*}})
-// CHECK-SPIRV: ret <4 x float> %hlsl.ddy.coarse
 float4 test_f32_ddy_coarse4(float4 val) {
     return ddy_coarse(val);
 }
diff --git a/clang/test/CodeGenHLSL/builtins/ddy-fine-builtin.hlsl 
b/clang/test/CodeGenHLSL/builtins/ddy-fine-builtin.hlsl
index 00630721ceb66..6629c9e462f12 100644
--- a/clang/test/CodeGenHLSL/builtins/ddy-fine-builtin.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/ddy-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_ddy_fineDh
-// CHECK: %hlsl.ddy.fine = call {{.*}} half @llvm.dx.ddy.fine.f16(half %{{.*}})
+// CHECK: %hlsl.ddy.fine = call {{.*}} half @llvm.[[TGT]].ddy.fine.f16(half 
%{{.*}})
 // CHECK: ret half %hlsl.ddy.fine
-// CHECK-LABEL-SPIRV: half @_Z17test_f16_ddy_fineDh
-// CHECK-SPIRV: %hlsl.ddy.fine = call {{.*}} half @llvm.spv.ddy.fine.f16(half 
%{{.*}})
-// CHECK-SPIRV: ret half %hlsl.ddy.fine
 half test_f16_ddy_fine(half val) {
     return __builtin_hlsl_elementwise_ddy_fine(val);
 }
 
 // CHECK-LABEL: float @_Z17test_f32_ddy_finef
-// CHECK: %hlsl.ddy.fine = call {{.*}} float @llvm.dx.ddy.fine.f32(float 
%{{.*}})
+// CHECK: %hlsl.ddy.fine = call {{.*}} float @llvm.[[TGT]].ddy.fine.f32(float 
%{{.*}})
 // CHECK: ret float %hlsl.ddy.fine
-// CHECK-LABEL-SPIRV: float @_Z17test_f32_ddy_finef
-// CHECK-SPIRV: %hlsl.ddy.fine = call {{.*}} float 
@llvm.spv.ddy.fine.f32(float %{{.*}})
-// CHECK-SPIRV: ret float %hlsl.ddy.fine
 float test_f32_ddy_fine(float val) {
     return __builtin_hlsl_elementwise_ddy_fine(val);
 }
diff --git a/clang/test/CodeGenHLSL/builtins/ddy-fine.hlsl 
b/clang/test/CodeGenHLSL/builtins/ddy-fine.hlsl
index 7e32ee29e767d..c20a29866f972 100644
--- a/clang/test/CodeGenHLSL/builtins/ddy-fine.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/ddy-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_ddy_fineDh
-// CHECK: %hlsl.ddy.fine = call {{.*}} half @llvm.dx.ddy.fine.f16(half %{{.*}})
+// CHECK: %hlsl.ddy.fine = call {{.*}} half @llvm.[[TGT]].ddy.fine.f16(half 
%{{.*}})
 // CHECK: ret half %hlsl.ddy.fine
-// CHECK-LABEL-SPIRV: half @_Z17test_f16_ddy_fineDh
-// CHECK-SPIRV: %hlsl.ddy.fine = call {{.*}} half @llvm.spv.ddy.fine.f16(half 
%{{.*}})
-// CHECK-SPIRV: ret half %hlsl.ddy.fine
 half test_f16_ddy_fine(half val) {
     return ddy_fine(val);
 }
 
 // CHECK-LABEL: <2 x half> @_Z18test_f16_ddy_fine2Dv2_Dh
-// CHECK: %hlsl.ddy.fine = call {{.*}} <2 x half> @llvm.dx.ddy.fine.v2f16(<2 x 
half> %{{.*}})
+// CHECK: %hlsl.ddy.fine = call {{.*}} <2 x half> 
@llvm.[[TGT]].ddy.fine.v2f16(<2 x half> %{{.*}})
 // CHECK: ret <2 x half> %hlsl.ddy.fine
-// CHECK-LABEL-SPIRV: <2 x half> @_Z18test_f16_ddy_fine2Dv2_Dh
-// CHECK-SPIRV: %hlsl.ddy.fine = call {{.*}} <2 x half> 
@llvm.spv.ddy.fine.v2f16(<2 x half> %{{.*}})
-// CHECK-SPIRV: ret <2 x half> %hlsl.ddy.fine
 half2 test_f16_ddy_fine2(half2 val) {
     return ddy_fine(val);
 }
 
 // CHECK-LABEL: <3 x half> @_Z18test_f16_ddy_fine3Dv3_Dh
-// CHECK: %hlsl.ddy.fine = call {{.*}} <3 x half> @llvm.dx.ddy.fine.v3f16(<3 x 
half> %{{.*}})
+// CHECK: %hlsl.ddy.fine = call {{.*}} <3 x half> 
@llvm.[[TGT]].ddy.fine.v3f16(<3 x half> %{{.*}})
 // CHECK: ret <3 x half> %hlsl.ddy.fine
-// CHECK-LABEL-SPIRV: <3 x half> @_Z18test_f16_ddy_fine3Dv3_Dh
-// CHECK-SPIRV: %hlsl.ddy.fine = call {{.*}} <3 x half> 
@llvm.spv.ddy.fine.v3f16(<3 x half> %{{.*}})
-// CHECK-SPIRV: ret <3 x half> %hlsl.ddy.fine
 half3 test_f16_ddy_fine3(half3 val) {
     return ddy_fine(val);
 }
 
 // CHECK-LABEL: <4 x half> @_Z18test_f16_ddy_fine4Dv4_Dh
-// CHECK: %hlsl.ddy.fine = call {{.*}} <4 x half> @llvm.dx.ddy.fine.v4f16(<4 x 
half> %{{.*}})
+// CHECK: %hlsl.ddy.fine = call {{.*}} <4 x half> 
@llvm.[[TGT]].ddy.fine.v4f16(<4 x half> %{{.*}})
 // CHECK: ret <4 x half> %hlsl.ddy.fine
-// CHECK-LABEL-SPIRV: <4 x half> @_Z18test_f16_ddy_fine4Dv4_Dh
-// CHECK-SPIRV: %hlsl.ddy.fine = call {{.*}} <4 x half> 
@llvm.spv.ddy.fine.v4f16(<4 x half> %{{.*}})
-// CHECK-SPIRV: ret <4 x half> %hlsl.ddy.fine
 half4 test_f16_ddy_fine4(half4 val) {
     return ddy_fine(val);
 }
 
 // CHECK-LABEL: float @_Z17test_f32_ddy_finef
-// CHECK: %hlsl.ddy.fine = call {{.*}} float @llvm.dx.ddy.fine.f32(float 
%{{.*}})
+// CHECK: %hlsl.ddy.fine = call {{.*}} float @llvm.[[TGT]].ddy.fine.f32(float 
%{{.*}})
 // CHECK: ret float %hlsl.ddy.fine
-// CHECK-LABEL-SPIRV: float @_Z17test_f32_ddy_finef
-// CHECK-SPIRV: %hlsl.ddy.fine = call {{.*}} float 
@llvm.spv.ddy.fine.f32(float %{{.*}})
-// CHECK-SPIRV: ret float %hlsl.ddy.fine
 float test_f32_ddy_fine(float val) {
     return ddy_fine(val);
 }
 
 // CHECK-LABEL: <2 x float> @_Z18test_f32_ddy_fine2Dv2_f
-// CHECK: %hlsl.ddy.fine = call {{.*}} <2 x float> @llvm.dx.ddy.fine.v2f32(<2 
x float> %{{.*}})
+// CHECK: %hlsl.ddy.fine = call {{.*}} <2 x float> 
@llvm.[[TGT]].ddy.fine.v2f32(<2 x float> %{{.*}})
 // CHECK: ret <2 x float> %hlsl.ddy.fine
-// CHECK-LABEL-SPIRV: <2 x float> @_Z18test_f32_ddy_fine2Dv2_f
-// CHECK-SPIRV: %hlsl.ddy.fine = call {{.*}} <2 x float> 
@llvm.spv.ddy.fine.v2f32(<2 x float> %{{.*}})
-// CHECK-SPIRV: ret <2 x float> %hlsl.ddy.fine
 float2 test_f32_ddy_fine2(float2 val) {
     return ddy_fine(val);
 }
 
 // CHECK-LABEL: <3 x float> @_Z18test_f32_ddy_fine3Dv3_f
-// CHECK: %hlsl.ddy.fine = call {{.*}} <3 x float> @llvm.dx.ddy.fine.v3f32(<3 
x float> %{{.*}})
+// CHECK: %hlsl.ddy.fine = call {{.*}} <3 x float> 
@llvm.[[TGT]].ddy.fine.v3f32(<3 x float> %{{.*}})
 // CHECK: ret <3 x float> %hlsl.ddy.fine
-// CHECK-LABEL-SPIRV: <3 x float> @_Z18test_f32_ddy_fine3Dv3_f
-// CHECK-SPIRV: %hlsl.ddy.fine = call {{.*}} <3 x float> 
@llvm.spv.ddy.fine.v3f32(<3 x float> %{{.*}})
-// CHECK-SPIRV: ret <3 x float> %hlsl.ddy.fine
 float3 test_f32_ddy_fine3(float3 val) {
     return ddy_fine(val);
 }
 
 // CHECK-LABEL: <4 x float> @_Z18test_f32_ddy_fine4Dv4_f
-// CHECK: %hlsl.ddy.fine = call {{.*}} <4 x float> @llvm.dx.ddy.fine.v4f32(<4 
x float> %{{.*}})
+// CHECK: %hlsl.ddy.fine = call {{.*}} <4 x float> 
@llvm.[[TGT]].ddy.fine.v4f32(<4 x float> %{{.*}})
 // CHECK: ret <4 x float> %hlsl.ddy.fine
-// CHECK-LABEL-SPIRV: <4 x float> @_Z18test_f32_ddy_fine4Dv4_f
-// CHECK-SPIRV: %hlsl.ddy.fine = call {{.*}} <4 x float> 
@llvm.spv.ddy.fine.v4f32(<4 x float> %{{.*}})
-// CHECK-SPIRV: ret <4 x float> %hlsl.ddy.fine
 float4 test_f32_ddy_fine4(float4 val) {
     return ddy_fine(val);
 }
diff --git a/clang/test/CodeGenHLSL/builtins/ddy.hlsl 
b/clang/test/CodeGenHLSL/builtins/ddy.hlsl
index 635838327dc1f..f07e086c4d655 100644
--- a/clang/test/CodeGenHLSL/builtins/ddy.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/ddy.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.ddy.coarse -DVAR=hlsl.ddy.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.ddy -DVAR=spv.ddy
 
 // CHECK-LABEL: define {{.*}} half @_ZN4hlsl8__detail8ddy_implIDhEET_S2_
-// CHECK: %hlsl.ddy.coarse = call {{.*}} half @llvm.dx.ddy.coarse.f16(half 
%{{.*}})
-// CHECK: ret half %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: half @_ZN4hlsl8__detail8ddy_implIDhEET_S2_
-// CHECK-SPIRV: %spv.ddy = call {{.*}} half @llvm.spv.ddy.f16(half %{{.*}})
-// CHECK-SPIRV: ret half %spv.ddy
+// CHECK: %[[VAR]] = call {{.*}} half @llvm.[[CALL]].f16(half %{{.*}})
+// CHECK: ret half %[[VAR]]
 half test_f16_ddy(half val) {
     return ddy(val);
 }
 
 // CHECK-LABEL: define {{.*}} <2 x half> 
@_ZN4hlsl8__detail8ddy_implIDv2_DhEET_S3_
-// CHECK: %hlsl.ddy.coarse = call {{.*}} <2 x half> 
@llvm.dx.ddy.coarse.v2f16(<2 x half> %{{.*}})
-// CHECK: ret <2 x half> %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: <2 x half> @_ZN4hlsl8__detail8ddy_implIDv2_DhEET_S3_
-// CHECK-SPIRV: %spv.ddy = call {{.*}} <2 x half> @llvm.spv.ddy.v2f16(<2 x 
half> %{{.*}})
-// CHECK-SPIRV: ret <2 x half> %spv.ddy
+// CHECK: %[[VAR]] = call {{.*}} <2 x half> @llvm.[[CALL]].v2f16(<2 x half> 
%{{.*}})
+// CHECK: ret <2 x half> %[[VAR]]
 half2 test_f16_ddy2(half2 val) {
     return ddy(val);
 }
 
 // CHECK-LABEL: define {{.*}} <3 x half> 
@_ZN4hlsl8__detail8ddy_implIDv3_DhEET_S3_
-// CHECK: %hlsl.ddy.coarse = call {{.*}} <3 x half> 
@llvm.dx.ddy.coarse.v3f16(<3 x half> %{{.*}})
-// CHECK: ret <3 x half> %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: <3 x half> @_ZN4hlsl8__detail8ddy_implIDv3_DhEET_S3_
-// CHECK-SPIRV: %spv.ddy = call {{.*}} <3 x half> @llvm.spv.ddy.v3f16(<3 x 
half> %{{.*}})
-// CHECK-SPIRV: ret <3 x half> %spv.ddy
+// CHECK: %[[VAR]] = call {{.*}} <3 x half> @llvm.[[CALL]].v3f16(<3 x half> 
%{{.*}})
+// CHECK: ret <3 x half> %[[VAR]]
 half3 test_f16_ddy3(half3 val) {
     return ddy(val);
 }
 
 // CHECK-LABEL: define {{.*}} <4 x half> 
@_ZN4hlsl8__detail8ddy_implIDv4_DhEET_S3_
-// CHECK: %hlsl.ddy.coarse = call {{.*}} <4 x half> 
@llvm.dx.ddy.coarse.v4f16(<4 x half> %{{.*}})
-// CHECK: ret <4 x half> %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: <4 x half> @_ZN4hlsl8__detail8ddy_implIDv4_DhEET_S3_
-// CHECK-SPIRV: %spv.ddy = call {{.*}} <4 x half> @llvm.spv.ddy.v4f16(<4 x 
half> %{{.*}})
-// CHECK-SPIRV: ret <4 x half> %spv.ddy
+// CHECK: %[[VAR]] = call {{.*}} <4 x half> @llvm.[[CALL]].v4f16(<4 x half> 
%{{.*}})
+// CHECK: ret <4 x half> %[[VAR]]
 half4 test_f16_ddy4(half4 val) {
     return ddy(val);
 }
 
 // CHECK-LABEL: define {{.*}} float @_ZN4hlsl8__detail8ddy_implIfEET_S2_
-// CHECK: %hlsl.ddy.coarse = call {{.*}} float @llvm.dx.ddy.coarse.f32(float 
%{{.*}})
-// CHECK: ret float %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: float @_ZN4hlsl8__detail8ddy_implIfEET_S2_
-// CHECK-SPIRV: %spv.ddy = call {{.*}} float @llvm.spv.ddy.f32(float %{{.*}})
-// CHECK-SPIRV: ret float %spv.ddy
+// CHECK: %[[VAR]] = call {{.*}} float @llvm.[[CALL]].f32(float %{{.*}})
+// CHECK: ret float %[[VAR]]
 float test_f32_ddy(float val) {
     return ddy(val);
 }
 
 // CHECK-LABEL: define {{.*}} <2 x float> 
@_ZN4hlsl8__detail8ddy_implIDv2_fEET_S3_
-// CHECK: %hlsl.ddy.coarse = call {{.*}} <2 x float> 
@llvm.dx.ddy.coarse.v2f32(<2 x float> %{{.*}})
-// CHECK: ret <2 x float> %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: <2 x float> @_ZN4hlsl8__detail8ddy_implIDv2_fEET_S3_
-// CHECK-SPIRV: %spv.ddy = call {{.*}} <2 x float> @llvm.spv.ddy.v2f32(<2 x 
float> %{{.*}})
-// CHECK-SPIRV: ret <2 x float> %spv.ddy
+// CHECK: %[[VAR]] = call {{.*}} <2 x float> @llvm.[[CALL]].v2f32(<2 x float> 
%{{.*}})
+// CHECK: ret <2 x float> %[[VAR]]
 float2 test_f32_ddy2(float2 val) {
     return ddy(val);
 }
 
 // CHECK-LABEL: define {{.*}} <3 x float> 
@_ZN4hlsl8__detail8ddy_implIDv3_fEET_S3_
-// CHECK: %hlsl.ddy.coarse = call {{.*}} <3 x float> 
@llvm.dx.ddy.coarse.v3f32(<3 x float> %{{.*}})
-// CHECK: ret <3 x float> %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: <3 x float> @_ZN4hlsl8__detail8ddy_implIDv3_fEET_S3_
-// CHECK-SPIRV: %spv.ddy = call {{.*}} <3 x float> @llvm.spv.ddy.v3f32(<3 x 
float> %{{.*}})
-// CHECK-SPIRV: ret <3 x float> %spv.ddy
+// CHECK: %[[VAR]] = call {{.*}} <3 x float> @llvm.[[CALL]].v3f32(<3 x float> 
%{{.*}})
+// CHECK: ret <3 x float> %[[VAR]]
 float3 test_f32_ddy3(float3 val) {
     return ddy(val);
 }
 
 // CHECK-LABEL: define {{.*}} <4 x float> 
@_ZN4hlsl8__detail8ddy_implIDv4_fEET_S3_
-// CHECK: %hlsl.ddy.coarse = call {{.*}} <4 x float> 
@llvm.dx.ddy.coarse.v4f32(<4 x float> %{{.*}})
-// CHECK: ret <4 x float> %hlsl.ddy.coarse
-// CHECK-LABEL-SPIRV: <4 x float> @_ZN4hlsl8__detail8ddy_implIDv4_fEET_S3_
-// CHECK-SPIRV: %spv.ddy = call {{.*}} <4 x float> @llvm.spv.ddy.v4f32(<4 x 
float> %{{.*}})
-// CHECK-SPIRV: ret <4 x float> %spv.ddy
+// CHECK: %[[VAR]] = call {{.*}} <4 x float> @llvm.[[CALL]].v4f32(<4 x float> 
%{{.*}})
+// CHECK: ret <4 x float> %[[VAR]]
 float4 test_f32_ddy4(float4 val) {
     return ddy(val);
 }

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to