[llvm] [DirectX][Scalarizer] Make sure TargetTransformInfoWrapperPass is setup (PR #216893)

Farzon Lotfi via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 26 22:54:48 PDT 2026


https://github.com/farzonl updated https://github.com/llvm/llvm-project/pull/216893

>From 40de5d31d2949eacf457c328ef1d4d120b0d3432 Mon Sep 17 00:00:00 2001
From: Farzon Lotfi <farzonlotfi at microsoft.com>
Date: Mon, 17 Aug 2026 20:37:37 -0400
Subject: [PATCH 1/4] [DirectX][Scalarizer] Make sure
 TargetTransformInfoWrapperPass is setup

fixes #216888

In the process of testing the scalarization of HLSL long vectors
I discoved that some intrinsics were crashing when used with llc
but not when used with opt -scalarizer. This change makes sure that
we have setup TargetTransformInfoWrapperPass so that we can call
the DirectX versions of `isTargetIntrinsicWithScalarOpAtArg` and
`isTargetIntrinsicWithOverloadTypeAtArg`.
---
 llvm/lib/Target/DirectX/DirectXTargetMachine.cpp       |  2 ++
 llvm/lib/Transforms/Scalar/Scalarizer.cpp              |  1 +
 llvm/test/CodeGen/DirectX/LongVector/asdouble-sm69.ll  | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/asdouble.ll       |  9 +++++++++
 .../test/CodeGen/DirectX/LongVector/ddx-coarse-sm69.ll | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/ddx-coarse.ll     |  9 +++++++++
 llvm/test/CodeGen/DirectX/LongVector/ddx-fine-sm69.ll  | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/ddx-fine.ll       |  9 +++++++++
 .../test/CodeGen/DirectX/LongVector/ddy-coarse-sm69.ll | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/ddy-coarse.ll     |  9 +++++++++
 llvm/test/CodeGen/DirectX/LongVector/ddy-fine-sm69.ll  | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/ddy-fine.ll       |  9 +++++++++
 .../CodeGen/DirectX/LongVector/firstbitlow-sm69.ll     | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/firstbitlow.ll    |  9 +++++++++
 .../CodeGen/DirectX/LongVector/firstbitshigh-sm69.ll   | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/firstbitshigh.ll  |  9 +++++++++
 .../CodeGen/DirectX/LongVector/firstbituhigh-sm69.ll   | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/firstbituhigh.ll  |  9 +++++++++
 llvm/test/CodeGen/DirectX/LongVector/frac-sm69.ll      | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/frac.ll           |  9 +++++++++
 llvm/test/CodeGen/DirectX/LongVector/imad-sm69.ll      | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/imad.ll           |  9 +++++++++
 llvm/test/CodeGen/DirectX/LongVector/isinf-sm69.ll     | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/isinf.ll          |  9 +++++++++
 llvm/test/CodeGen/DirectX/LongVector/isnan-sm69.ll     | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/isnan.ll          |  9 +++++++++
 .../CodeGen/DirectX/LongVector/legacyf16tof32-sm69.ll  | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32.ll |  9 +++++++++
 .../CodeGen/DirectX/LongVector/legacyf32tof16-sm69.ll  | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16.ll |  9 +++++++++
 .../LongVector/quad-read-across-diagonal-sm69.ll       | 10 ++++++++++
 .../DirectX/LongVector/quad-read-across-diagonal.ll    |  9 +++++++++
 .../DirectX/LongVector/quad-read-across-x-sm69.ll      | 10 ++++++++++
 .../CodeGen/DirectX/LongVector/quad-read-across-x.ll   |  9 +++++++++
 .../DirectX/LongVector/quad-read-across-y-sm69.ll      | 10 ++++++++++
 .../CodeGen/DirectX/LongVector/quad-read-across-y.ll   |  9 +++++++++
 llvm/test/CodeGen/DirectX/LongVector/rsqrt-sm69.ll     | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/rsqrt.ll          |  9 +++++++++
 llvm/test/CodeGen/DirectX/LongVector/saturate-sm69.ll  | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/saturate.ll       |  9 +++++++++
 llvm/test/CodeGen/DirectX/LongVector/umad-sm69.ll      | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/umad.ll           |  9 +++++++++
 .../CodeGen/DirectX/LongVector/wave-all-equal-sm69.ll  | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/wave-all-equal.ll |  9 +++++++++
 .../DirectX/LongVector/wave-prefix-product-sm69.ll     | 10 ++++++++++
 .../CodeGen/DirectX/LongVector/wave-prefix-product.ll  |  9 +++++++++
 .../CodeGen/DirectX/LongVector/wave-prefix-sum-sm69.ll | 10 ++++++++++
 .../test/CodeGen/DirectX/LongVector/wave-prefix-sum.ll |  9 +++++++++
 .../DirectX/LongVector/wave-prefix-uproduct-sm69.ll    | 10 ++++++++++
 .../CodeGen/DirectX/LongVector/wave-prefix-uproduct.ll |  9 +++++++++
 .../DirectX/LongVector/wave-prefix-usum-sm69.ll        | 10 ++++++++++
 .../CodeGen/DirectX/LongVector/wave-prefix-usum.ll     |  9 +++++++++
 .../CodeGen/DirectX/LongVector/wave-product-sm69.ll    | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/wave-product.ll   |  9 +++++++++
 .../CodeGen/DirectX/LongVector/wave-readlane-sm69.ll   | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/wave-readlane.ll  |  9 +++++++++
 .../CodeGen/DirectX/LongVector/wave-reduce-and-sm69.ll | 10 ++++++++++
 .../test/CodeGen/DirectX/LongVector/wave-reduce-and.ll |  9 +++++++++
 .../CodeGen/DirectX/LongVector/wave-reduce-max-sm69.ll | 10 ++++++++++
 .../test/CodeGen/DirectX/LongVector/wave-reduce-max.ll |  9 +++++++++
 .../CodeGen/DirectX/LongVector/wave-reduce-min-sm69.ll | 10 ++++++++++
 .../test/CodeGen/DirectX/LongVector/wave-reduce-min.ll |  9 +++++++++
 .../CodeGen/DirectX/LongVector/wave-reduce-or-sm69.ll  | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or.ll |  9 +++++++++
 .../CodeGen/DirectX/LongVector/wave-reduce-sum-sm69.ll | 10 ++++++++++
 .../test/CodeGen/DirectX/LongVector/wave-reduce-sum.ll |  9 +++++++++
 .../DirectX/LongVector/wave-reduce-umax-sm69.ll        | 10 ++++++++++
 .../CodeGen/DirectX/LongVector/wave-reduce-umax.ll     |  9 +++++++++
 .../DirectX/LongVector/wave-reduce-umin-sm69.ll        | 10 ++++++++++
 .../CodeGen/DirectX/LongVector/wave-reduce-umin.ll     |  9 +++++++++
 .../DirectX/LongVector/wave-reduce-usum-sm69.ll        | 10 ++++++++++
 .../CodeGen/DirectX/LongVector/wave-reduce-usum.ll     |  9 +++++++++
 .../CodeGen/DirectX/LongVector/wave-reduce-xor-sm69.ll | 10 ++++++++++
 .../test/CodeGen/DirectX/LongVector/wave-reduce-xor.ll |  9 +++++++++
 .../CodeGen/DirectX/LongVector/wave-uproduct-sm69.ll   | 10 ++++++++++
 llvm/test/CodeGen/DirectX/LongVector/wave-uproduct.ll  |  9 +++++++++
 llvm/test/CodeGen/DirectX/llc-pipeline.ll              |  2 +-
 77 files changed, 707 insertions(+), 1 deletion(-)
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/asdouble-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/asdouble.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/ddx-coarse-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/ddx-coarse.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/ddx-fine-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/ddx-fine.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/ddy-coarse-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/ddy-coarse.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/ddy-fine-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/ddy-fine.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/firstbitlow-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/firstbitlow.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/firstbitshigh-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/firstbitshigh.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/firstbituhigh-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/firstbituhigh.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/frac-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/frac.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/imad-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/imad.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/isinf-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/isinf.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/isnan-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/isnan.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/rsqrt-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/rsqrt.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/saturate-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/saturate.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/umad-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/umad.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-all-equal-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-all-equal.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-product-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-product.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-readlane-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-readlane.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-uproduct-sm69.ll
 create mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-uproduct.ll

diff --git a/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp b/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp
index 1240e7cda597e..13d6b4f2ae81a 100644
--- a/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp
+++ b/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp
@@ -34,6 +34,7 @@
 #include "DirectXSubtarget.h"
 #include "DirectXTargetTransformInfo.h"
 #include "TargetInfo/DirectXTargetInfo.h"
+#include "llvm/Analysis/TargetTransformInfo.h"
 #include "llvm/CodeGen/MachineModuleInfo.h"
 #include "llvm/CodeGen/Passes.h"
 #include "llvm/CodeGen/TargetPassConfig.h"
@@ -170,6 +171,7 @@ bool DirectXTargetMachine::addPassesToEmitFile(
     CodeGenFileType FileType, bool DisableVerify,
     MachineModuleInfoWrapperPass *MMIWP) {
   TargetPassConfig *PassConfig = createPassConfig(PM);
+  PM.add(createTargetTransformInfoWrapperPass(getTargetIRAnalysis()));
   PassConfig->addCodeGenPrepare();
 
   switch (FileType) {
diff --git a/llvm/lib/Transforms/Scalar/Scalarizer.cpp b/llvm/lib/Transforms/Scalar/Scalarizer.cpp
index 006f4c13d045e..280a36ca02897 100644
--- a/llvm/lib/Transforms/Scalar/Scalarizer.cpp
+++ b/llvm/lib/Transforms/Scalar/Scalarizer.cpp
@@ -364,6 +364,7 @@ char ScalarizerLegacyPass::ID = 0;
 INITIALIZE_PASS_BEGIN(ScalarizerLegacyPass, "scalarizer",
                       "Scalarize vector operations", false, false)
 INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
+INITIALIZE_PASS_DEPENDENCY(TargetTransformInfoWrapperPass)
 INITIALIZE_PASS_END(ScalarizerLegacyPass, "scalarizer",
                     "Scalarize vector operations", false, false)
 
diff --git a/llvm/test/CodeGen/DirectX/LongVector/asdouble-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/asdouble-sm69.ll
new file mode 100644
index 0000000000000..7d31c31a87a6e
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/asdouble-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x double> @test_asdouble(
+; CHECK: call <17 x double> @llvm.dx.asdouble.v17i32
+define <17 x double> @test_asdouble(<17 x i32> %a, <17 x i32> %b) {
+  %result = call <17 x double> @llvm.dx.asdouble.v17i32(<17 x i32> %a, <17 x i32> %b)
+  ret <17 x double> %result
+}
+declare <17 x double> @llvm.dx.asdouble.v17i32(<17 x i32>, <17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/asdouble.ll b/llvm/test/CodeGen/DirectX/LongVector/asdouble.ll
new file mode 100644
index 0000000000000..84c20636975b1
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/asdouble.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x double> @test_asdouble(
+; CHECK-COUNT-17: call double @dx.op.makeDouble.f64(i32 101, i32 {{.*}}, i32 {{.*}})
+define <17 x double> @test_asdouble(<17 x i32> %a, <17 x i32> %b) {
+  %result = call <17 x double> @llvm.dx.asdouble.v17i32(<17 x i32> %a, <17 x i32> %b)
+  ret <17 x double> %result
+}
+declare <17 x double> @llvm.dx.asdouble.v17i32(<17 x i32>, <17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse-sm69.ll
new file mode 100644
index 0000000000000..20419156a6634
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x float> @test_ddx_coarse(
+; CHECK: call <17 x float> @llvm.dx.ddx.coarse.v17f32
+define <17 x float> @test_ddx_coarse(<17 x float> %a) {
+  %result = call <17 x float> @llvm.dx.ddx.coarse.v17f32(<17 x float> %a)
+  ret <17 x float> %result
+}
+declare <17 x float> @llvm.dx.ddx.coarse.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse.ll b/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse.ll
new file mode 100644
index 0000000000000..0c8aa488a85db
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x float> @test_ddx_coarse(
+; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 83, float {{.*}})
+define <17 x float> @test_ddx_coarse(<17 x float> %a) {
+  %result = call <17 x float> @llvm.dx.ddx.coarse.v17f32(<17 x float> %a)
+  ret <17 x float> %result
+}
+declare <17 x float> @llvm.dx.ddx.coarse.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddx-fine-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/ddx-fine-sm69.ll
new file mode 100644
index 0000000000000..c9444084ba33b
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/ddx-fine-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x float> @test_ddx_fine(
+; CHECK: call <17 x float> @llvm.dx.ddx.fine.v17f32
+define <17 x float> @test_ddx_fine(<17 x float> %a) {
+  %result = call <17 x float> @llvm.dx.ddx.fine.v17f32(<17 x float> %a)
+  ret <17 x float> %result
+}
+declare <17 x float> @llvm.dx.ddx.fine.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddx-fine.ll b/llvm/test/CodeGen/DirectX/LongVector/ddx-fine.ll
new file mode 100644
index 0000000000000..55aa92d918e40
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/ddx-fine.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x float> @test_ddx_fine(
+; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 85, float {{.*}})
+define <17 x float> @test_ddx_fine(<17 x float> %a) {
+  %result = call <17 x float> @llvm.dx.ddx.fine.v17f32(<17 x float> %a)
+  ret <17 x float> %result
+}
+declare <17 x float> @llvm.dx.ddx.fine.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse-sm69.ll
new file mode 100644
index 0000000000000..d092521ad008b
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x float> @test_ddy_coarse(
+; CHECK: call <17 x float> @llvm.dx.ddy.coarse.v17f32
+define <17 x float> @test_ddy_coarse(<17 x float> %a) {
+  %result = call <17 x float> @llvm.dx.ddy.coarse.v17f32(<17 x float> %a)
+  ret <17 x float> %result
+}
+declare <17 x float> @llvm.dx.ddy.coarse.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse.ll b/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse.ll
new file mode 100644
index 0000000000000..45ca4c052740b
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x float> @test_ddy_coarse(
+; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 84, float {{.*}})
+define <17 x float> @test_ddy_coarse(<17 x float> %a) {
+  %result = call <17 x float> @llvm.dx.ddy.coarse.v17f32(<17 x float> %a)
+  ret <17 x float> %result
+}
+declare <17 x float> @llvm.dx.ddy.coarse.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddy-fine-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/ddy-fine-sm69.ll
new file mode 100644
index 0000000000000..4bba04ccc3b9d
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/ddy-fine-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x float> @test_ddy_fine(
+; CHECK: call <17 x float> @llvm.dx.ddy.fine.v17f32
+define <17 x float> @test_ddy_fine(<17 x float> %a) {
+  %result = call <17 x float> @llvm.dx.ddy.fine.v17f32(<17 x float> %a)
+  ret <17 x float> %result
+}
+declare <17 x float> @llvm.dx.ddy.fine.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddy-fine.ll b/llvm/test/CodeGen/DirectX/LongVector/ddy-fine.ll
new file mode 100644
index 0000000000000..8baf8297cbb86
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/ddy-fine.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x float> @test_ddy_fine(
+; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 86, float {{.*}})
+define <17 x float> @test_ddy_fine(<17 x float> %a) {
+  %result = call <17 x float> @llvm.dx.ddy.fine.v17f32(<17 x float> %a)
+  ret <17 x float> %result
+}
+declare <17 x float> @llvm.dx.ddy.fine.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/firstbitlow-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/firstbitlow-sm69.ll
new file mode 100644
index 0000000000000..0fef613afb9ac
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/firstbitlow-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_firstbitlow(
+; CHECK: call <17 x i32> @llvm.dx.firstbitlow.v17i32
+define <17 x i32> @test_firstbitlow(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.firstbitlow.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.firstbitlow.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/firstbitlow.ll b/llvm/test/CodeGen/DirectX/LongVector/firstbitlow.ll
new file mode 100644
index 0000000000000..e4cce428612e0
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/firstbitlow.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_firstbitlow(
+; CHECK-COUNT-17: call i32 @dx.op.unaryBits.i32(i32 32, i32 {{.*}})
+define <17 x i32> @test_firstbitlow(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.firstbitlow.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.firstbitlow.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh-sm69.ll
new file mode 100644
index 0000000000000..61a6a4ff308d3
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_firstbitshigh(
+; CHECK: call <17 x i32> @llvm.dx.firstbitshigh.v17i32
+define <17 x i32> @test_firstbitshigh(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.firstbitshigh.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.firstbitshigh.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh.ll b/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh.ll
new file mode 100644
index 0000000000000..24ed1f172f3d5
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_firstbitshigh(
+; CHECK-COUNT-17: call i32 @dx.op.unaryBits.i32(i32 34, i32 {{.*}})
+define <17 x i32> @test_firstbitshigh(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.firstbitshigh.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.firstbitshigh.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh-sm69.ll
new file mode 100644
index 0000000000000..2dbad82686316
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_firstbituhigh(
+; CHECK: call <17 x i32> @llvm.dx.firstbituhigh.v17i32
+define <17 x i32> @test_firstbituhigh(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.firstbituhigh.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.firstbituhigh.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh.ll b/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh.ll
new file mode 100644
index 0000000000000..75b177d49b2a1
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_firstbituhigh(
+; CHECK-COUNT-17: call i32 @dx.op.unaryBits.i32(i32 33, i32 {{.*}})
+define <17 x i32> @test_firstbituhigh(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.firstbituhigh.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.firstbituhigh.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/frac-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/frac-sm69.ll
new file mode 100644
index 0000000000000..b8857c0db1e67
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/frac-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x float> @test_frac(
+; CHECK: call <17 x float> @llvm.dx.frac.v17f32
+define <17 x float> @test_frac(<17 x float> %a) {
+  %result = call <17 x float> @llvm.dx.frac.v17f32(<17 x float> %a)
+  ret <17 x float> %result
+}
+declare <17 x float> @llvm.dx.frac.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/frac.ll b/llvm/test/CodeGen/DirectX/LongVector/frac.ll
new file mode 100644
index 0000000000000..241303c8049fd
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/frac.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x float> @test_frac(
+; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 22, float {{.*}})
+define <17 x float> @test_frac(<17 x float> %a) {
+  %result = call <17 x float> @llvm.dx.frac.v17f32(<17 x float> %a)
+  ret <17 x float> %result
+}
+declare <17 x float> @llvm.dx.frac.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/imad-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/imad-sm69.ll
new file mode 100644
index 0000000000000..267dd33adc6b0
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/imad-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_imad(
+; CHECK: call <17 x i32> @llvm.dx.imad.v17i32
+define <17 x i32> @test_imad(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c) {
+  %result = call <17 x i32> @llvm.dx.imad.v17i32(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.imad.v17i32(<17 x i32>, <17 x i32>, <17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/imad.ll b/llvm/test/CodeGen/DirectX/LongVector/imad.ll
new file mode 100644
index 0000000000000..0613133320f15
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/imad.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_imad(
+; CHECK-COUNT-17: call i32 @dx.op.tertiary.i32(i32 48, i32 {{.*}}, i32 {{.*}}, i32 {{.*}})
+define <17 x i32> @test_imad(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c) {
+  %result = call <17 x i32> @llvm.dx.imad.v17i32(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.imad.v17i32(<17 x i32>, <17 x i32>, <17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/isinf-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/isinf-sm69.ll
new file mode 100644
index 0000000000000..593dae2066da2
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/isinf-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i1> @test_isinf(
+; CHECK: call <17 x i1> @llvm.dx.isinf.v17f32
+define <17 x i1> @test_isinf(<17 x float> %a) {
+  %result = call <17 x i1> @llvm.dx.isinf.v17f32(<17 x float> %a)
+  ret <17 x i1> %result
+}
+declare <17 x i1> @llvm.dx.isinf.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/isinf.ll b/llvm/test/CodeGen/DirectX/LongVector/isinf.ll
new file mode 100644
index 0000000000000..c12b2774e5f54
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/isinf.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i1> @test_isinf(
+; CHECK-COUNT-17: call i1 @dx.op.isSpecialFloat.f32(i32 9, float {{.*}})
+define <17 x i1> @test_isinf(<17 x float> %a) {
+  %result = call <17 x i1> @llvm.dx.isinf.v17f32(<17 x float> %a)
+  ret <17 x i1> %result
+}
+declare <17 x i1> @llvm.dx.isinf.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/isnan-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/isnan-sm69.ll
new file mode 100644
index 0000000000000..003819d323d90
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/isnan-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i1> @test_isnan(
+; CHECK: call <17 x i1> @llvm.dx.isnan.v17f32
+define <17 x i1> @test_isnan(<17 x float> %a) {
+  %result = call <17 x i1> @llvm.dx.isnan.v17f32(<17 x float> %a)
+  ret <17 x i1> %result
+}
+declare <17 x i1> @llvm.dx.isnan.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/isnan.ll b/llvm/test/CodeGen/DirectX/LongVector/isnan.ll
new file mode 100644
index 0000000000000..91af7f2ac3dac
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/isnan.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i1> @test_isnan(
+; CHECK-COUNT-17: call i1 @dx.op.isSpecialFloat.f32(i32 8, float {{.*}})
+define <17 x i1> @test_isnan(<17 x float> %a) {
+  %result = call <17 x i1> @llvm.dx.isnan.v17f32(<17 x float> %a)
+  ret <17 x i1> %result
+}
+declare <17 x i1> @llvm.dx.isnan.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32-sm69.ll
new file mode 100644
index 0000000000000..d256f642e8d0c
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x float> @test_legacyf16tof32(
+; CHECK: call <17 x float> @llvm.dx.legacyf16tof32.v17i32
+define <17 x float> @test_legacyf16tof32(<17 x i32> %a) {
+  %result = call <17 x float> @llvm.dx.legacyf16tof32.v17i32(<17 x i32> %a)
+  ret <17 x float> %result
+}
+declare <17 x float> @llvm.dx.legacyf16tof32.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32.ll b/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32.ll
new file mode 100644
index 0000000000000..1360002cdb3e6
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x float> @test_legacyf16tof32(
+; CHECK-COUNT-17: call float @dx.op.legacyF16ToF32(i32 131, i32 {{.*}})
+define <17 x float> @test_legacyf16tof32(<17 x i32> %a) {
+  %result = call <17 x float> @llvm.dx.legacyf16tof32.v17i32(<17 x i32> %a)
+  ret <17 x float> %result
+}
+declare <17 x float> @llvm.dx.legacyf16tof32.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16-sm69.ll
new file mode 100644
index 0000000000000..8dc5c3586ffc5
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_legacyf32tof16(
+; CHECK: call <17 x i32> @llvm.dx.legacyf32tof16.v17f32
+define <17 x i32> @test_legacyf32tof16(<17 x float> %a) {
+  %result = call <17 x i32> @llvm.dx.legacyf32tof16.v17f32(<17 x float> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.legacyf32tof16.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16.ll b/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16.ll
new file mode 100644
index 0000000000000..d049f573a7893
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_legacyf32tof16(
+; CHECK-COUNT-17: call i32 @dx.op.legacyF32ToF16(i32 130, float {{.*}})
+define <17 x i32> @test_legacyf32tof16(<17 x float> %a) {
+  %result = call <17 x i32> @llvm.dx.legacyf32tof16.v17f32(<17 x float> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.legacyf32tof16.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal-sm69.ll
new file mode 100644
index 0000000000000..6e4a0de3e2eaf
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_quad_read_across_diagonal(
+; CHECK: call <17 x i32> @llvm.dx.quad.read.across.diagonal.v17i32
+define <17 x i32> @test_quad_read_across_diagonal(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.quad.read.across.diagonal.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.quad.read.across.diagonal.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal.ll b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal.ll
new file mode 100644
index 0000000000000..720f72653a31c
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_quad_read_across_diagonal(
+; CHECK-COUNT-17: call i32 @dx.op.quadOp.i32(i32 123, i32 {{.*}}, i8 2)
+define <17 x i32> @test_quad_read_across_diagonal(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.quad.read.across.diagonal.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.quad.read.across.diagonal.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x-sm69.ll
new file mode 100644
index 0000000000000..745c704e03091
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_quad_read_across_x(
+; CHECK: call <17 x i32> @llvm.dx.quad.read.across.x.v17i32
+define <17 x i32> @test_quad_read_across_x(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.quad.read.across.x.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.quad.read.across.x.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x.ll b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x.ll
new file mode 100644
index 0000000000000..58e88e1e04e13
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_quad_read_across_x(
+; CHECK-COUNT-17: call i32 @dx.op.quadOp.i32(i32 123, i32 {{.*}}, i8 0)
+define <17 x i32> @test_quad_read_across_x(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.quad.read.across.x.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.quad.read.across.x.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y-sm69.ll
new file mode 100644
index 0000000000000..30b10f2790a7b
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_quad_read_across_y(
+; CHECK: call <17 x i32> @llvm.dx.quad.read.across.y.v17i32
+define <17 x i32> @test_quad_read_across_y(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.quad.read.across.y.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.quad.read.across.y.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y.ll b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y.ll
new file mode 100644
index 0000000000000..cd1cecc97dc04
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_quad_read_across_y(
+; CHECK-COUNT-17: call i32 @dx.op.quadOp.i32(i32 123, i32 {{.*}}, i8 1)
+define <17 x i32> @test_quad_read_across_y(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.quad.read.across.y.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.quad.read.across.y.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/rsqrt-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/rsqrt-sm69.ll
new file mode 100644
index 0000000000000..93ad697108bbd
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/rsqrt-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x float> @test_rsqrt(
+; CHECK: call <17 x float> @llvm.dx.rsqrt.v17f32
+define <17 x float> @test_rsqrt(<17 x float> %a) {
+  %result = call <17 x float> @llvm.dx.rsqrt.v17f32(<17 x float> %a)
+  ret <17 x float> %result
+}
+declare <17 x float> @llvm.dx.rsqrt.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/rsqrt.ll b/llvm/test/CodeGen/DirectX/LongVector/rsqrt.ll
new file mode 100644
index 0000000000000..84c0fca0fa49d
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/rsqrt.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x float> @test_rsqrt(
+; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 25, float {{.*}})
+define <17 x float> @test_rsqrt(<17 x float> %a) {
+  %result = call <17 x float> @llvm.dx.rsqrt.v17f32(<17 x float> %a)
+  ret <17 x float> %result
+}
+declare <17 x float> @llvm.dx.rsqrt.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/saturate-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/saturate-sm69.ll
new file mode 100644
index 0000000000000..b25a928922e02
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/saturate-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x float> @test_saturate(
+; CHECK: call <17 x float> @llvm.dx.saturate.v17f32
+define <17 x float> @test_saturate(<17 x float> %a) {
+  %result = call <17 x float> @llvm.dx.saturate.v17f32(<17 x float> %a)
+  ret <17 x float> %result
+}
+declare <17 x float> @llvm.dx.saturate.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/saturate.ll b/llvm/test/CodeGen/DirectX/LongVector/saturate.ll
new file mode 100644
index 0000000000000..a29c7a98973ec
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/saturate.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x float> @test_saturate(
+; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 7, float {{.*}})
+define <17 x float> @test_saturate(<17 x float> %a) {
+  %result = call <17 x float> @llvm.dx.saturate.v17f32(<17 x float> %a)
+  ret <17 x float> %result
+}
+declare <17 x float> @llvm.dx.saturate.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/umad-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/umad-sm69.ll
new file mode 100644
index 0000000000000..9365678da72e4
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/umad-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_umad(
+; CHECK: call <17 x i32> @llvm.dx.umad.v17i32
+define <17 x i32> @test_umad(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c) {
+  %result = call <17 x i32> @llvm.dx.umad.v17i32(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.umad.v17i32(<17 x i32>, <17 x i32>, <17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/umad.ll b/llvm/test/CodeGen/DirectX/LongVector/umad.ll
new file mode 100644
index 0000000000000..5d7c2c083c1af
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/umad.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_umad(
+; CHECK-COUNT-17: call i32 @dx.op.tertiary.i32(i32 49, i32 {{.*}}, i32 {{.*}}, i32 {{.*}})
+define <17 x i32> @test_umad(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c) {
+  %result = call <17 x i32> @llvm.dx.umad.v17i32(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.umad.v17i32(<17 x i32>, <17 x i32>, <17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal-sm69.ll
new file mode 100644
index 0000000000000..4776d2ca1dcba
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i1> @test_wave_all_equal(
+; CHECK: call <17 x i1> @llvm.dx.wave.all.equal.v17i32
+define <17 x i1> @test_wave_all_equal(<17 x i32> %a) {
+  %result = call <17 x i1> @llvm.dx.wave.all.equal.v17i32(<17 x i32> %a)
+  ret <17 x i1> %result
+}
+declare <17 x i1> @llvm.dx.wave.all.equal.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal.ll
new file mode 100644
index 0000000000000..190af3b9f41ef
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i1> @test_wave_all_equal(
+; CHECK-COUNT-17: call i1 @dx.op.waveActiveAllEqual.i32(i32 115, i32 {{.*}})
+define <17 x i1> @test_wave_all_equal(<17 x i32> %a) {
+  %result = call <17 x i1> @llvm.dx.wave.all.equal.v17i32(<17 x i32> %a)
+  ret <17 x i1> %result
+}
+declare <17 x i1> @llvm.dx.wave.all.equal.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product-sm69.ll
new file mode 100644
index 0000000000000..0572ba688aeb3
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_prefix_product(
+; CHECK: call <17 x i32> @llvm.dx.wave.prefix.product.v17i32
+define <17 x i32> @test_wave_prefix_product(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.prefix.product.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.prefix.product.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product.ll
new file mode 100644
index 0000000000000..2735c49faa1b6
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_prefix_product(
+; CHECK-COUNT-17: call i32 @dx.op.wavePrefixOp.i32(i32 121, i32 {{.*}}, i8 1, i8 0)
+define <17 x i32> @test_wave_prefix_product(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.prefix.product.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.prefix.product.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum-sm69.ll
new file mode 100644
index 0000000000000..9ffe003206d3f
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_prefix_sum(
+; CHECK: call <17 x i32> @llvm.dx.wave.prefix.sum.v17i32
+define <17 x i32> @test_wave_prefix_sum(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.prefix.sum.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.prefix.sum.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum.ll
new file mode 100644
index 0000000000000..9efbab9cd0aa9
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_prefix_sum(
+; CHECK-COUNT-17: call i32 @dx.op.wavePrefixOp.i32(i32 121, i32 {{.*}}, i8 0, i8 0)
+define <17 x i32> @test_wave_prefix_sum(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.prefix.sum.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.prefix.sum.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct-sm69.ll
new file mode 100644
index 0000000000000..7f3b35a206c33
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_prefix_uproduct(
+; CHECK: call <17 x i32> @llvm.dx.wave.prefix.uproduct.v17i32
+define <17 x i32> @test_wave_prefix_uproduct(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.prefix.uproduct.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.prefix.uproduct.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct.ll
new file mode 100644
index 0000000000000..0a87fb21e439e
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_prefix_uproduct(
+; CHECK-COUNT-17: call i32 @dx.op.wavePrefixOp.i32(i32 121, i32 {{.*}}, i8 1, i8 1)
+define <17 x i32> @test_wave_prefix_uproduct(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.prefix.uproduct.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.prefix.uproduct.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum-sm69.ll
new file mode 100644
index 0000000000000..530d3de545415
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_prefix_usum(
+; CHECK: call <17 x i32> @llvm.dx.wave.prefix.usum.v17i32
+define <17 x i32> @test_wave_prefix_usum(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.prefix.usum.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.prefix.usum.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum.ll
new file mode 100644
index 0000000000000..16765a9816060
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_prefix_usum(
+; CHECK-COUNT-17: call i32 @dx.op.wavePrefixOp.i32(i32 121, i32 {{.*}}, i8 0, i8 1)
+define <17 x i32> @test_wave_prefix_usum(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.prefix.usum.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.prefix.usum.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-product-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-product-sm69.ll
new file mode 100644
index 0000000000000..f6a700c869638
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-product-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_product(
+; CHECK: call <17 x i32> @llvm.dx.wave.product.v17i32
+define <17 x i32> @test_wave_product(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.product.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.product.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-product.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-product.ll
new file mode 100644
index 0000000000000..467d27a53d6cb
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-product.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_product(
+; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 1, i8 0)
+define <17 x i32> @test_wave_product(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.product.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.product.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-readlane-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-readlane-sm69.ll
new file mode 100644
index 0000000000000..263cd7b6902f1
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-readlane-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_readlane(
+; CHECK: call <17 x i32> @llvm.dx.wave.readlane.v17i32
+define <17 x i32> @test_wave_readlane(<17 x i32> %a, i32 %lane) {
+  %result = call <17 x i32> @llvm.dx.wave.readlane.v17i32(<17 x i32> %a, i32 %lane)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.readlane.v17i32(<17 x i32>, i32)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-readlane.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-readlane.ll
new file mode 100644
index 0000000000000..8d3b1b3733bd8
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-readlane.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_readlane(
+; CHECK-COUNT-17: call i32 @dx.op.waveReadLaneAt.i32(i32 117, i32 {{.*}}, i32 {{.*}})
+define <17 x i32> @test_wave_readlane(<17 x i32> %a, i32 %lane) {
+  %result = call <17 x i32> @llvm.dx.wave.readlane.v17i32(<17 x i32> %a, i32 %lane)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.readlane.v17i32(<17 x i32>, i32)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and-sm69.ll
new file mode 100644
index 0000000000000..ee73be4c7128c
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_and(
+; CHECK: call <17 x i32> @llvm.dx.wave.reduce.and.v17i32
+define <17 x i32> @test_wave_reduce_and(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.and.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.and.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and.ll
new file mode 100644
index 0000000000000..3592876cd7173
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_and(
+; CHECK-COUNT-17: call i32 @dx.op.waveActiveBit.i32(i32 120, i32 {{.*}}, i8 0)
+define <17 x i32> @test_wave_reduce_and(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.and.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.and.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max-sm69.ll
new file mode 100644
index 0000000000000..8b8e26d640627
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_max(
+; CHECK: call <17 x i32> @llvm.dx.wave.reduce.max.v17i32
+define <17 x i32> @test_wave_reduce_max(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.max.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.max.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max.ll
new file mode 100644
index 0000000000000..f55d88223bcfc
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_max(
+; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 3, i8 0)
+define <17 x i32> @test_wave_reduce_max(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.max.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.max.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min-sm69.ll
new file mode 100644
index 0000000000000..020ed45f8502c
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_min(
+; CHECK: call <17 x i32> @llvm.dx.wave.reduce.min.v17i32
+define <17 x i32> @test_wave_reduce_min(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.min.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.min.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min.ll
new file mode 100644
index 0000000000000..ed2e22b58ea72
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_min(
+; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 2, i8 0)
+define <17 x i32> @test_wave_reduce_min(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.min.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.min.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or-sm69.ll
new file mode 100644
index 0000000000000..ba4383a2d6b94
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_or(
+; CHECK: call <17 x i32> @llvm.dx.wave.reduce.or.v17i32
+define <17 x i32> @test_wave_reduce_or(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.or.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.or.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or.ll
new file mode 100644
index 0000000000000..8b1cbf3c901f1
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_or(
+; CHECK-COUNT-17: call i32 @dx.op.waveActiveBit.i32(i32 120, i32 {{.*}}, i8 1)
+define <17 x i32> @test_wave_reduce_or(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.or.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.or.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum-sm69.ll
new file mode 100644
index 0000000000000..eb9df3e21e716
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_sum(
+; CHECK: call <17 x i32> @llvm.dx.wave.reduce.sum.v17i32
+define <17 x i32> @test_wave_reduce_sum(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.sum.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.sum.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum.ll
new file mode 100644
index 0000000000000..ccc485d6ef42a
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_sum(
+; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 0, i8 0)
+define <17 x i32> @test_wave_reduce_sum(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.sum.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.sum.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax-sm69.ll
new file mode 100644
index 0000000000000..298a7c9b66ca3
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_umax(
+; CHECK: call <17 x i32> @llvm.dx.wave.reduce.umax.v17i32
+define <17 x i32> @test_wave_reduce_umax(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.umax.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.umax.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax.ll
new file mode 100644
index 0000000000000..8db154ab122d4
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_umax(
+; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 3, i8 1)
+define <17 x i32> @test_wave_reduce_umax(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.umax.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.umax.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin-sm69.ll
new file mode 100644
index 0000000000000..e9f16b04748fc
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_umin(
+; CHECK: call <17 x i32> @llvm.dx.wave.reduce.umin.v17i32
+define <17 x i32> @test_wave_reduce_umin(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.umin.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.umin.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin.ll
new file mode 100644
index 0000000000000..6058e4272e837
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_umin(
+; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 2, i8 1)
+define <17 x i32> @test_wave_reduce_umin(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.umin.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.umin.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum-sm69.ll
new file mode 100644
index 0000000000000..fb4d0a27c148b
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_usum(
+; CHECK: call <17 x i32> @llvm.dx.wave.reduce.usum.v17i32
+define <17 x i32> @test_wave_reduce_usum(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.usum.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.usum.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum.ll
new file mode 100644
index 0000000000000..055ebed525dbd
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_usum(
+; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 0, i8 1)
+define <17 x i32> @test_wave_reduce_usum(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.usum.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.usum.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor-sm69.ll
new file mode 100644
index 0000000000000..f18af7c350b7a
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_xor(
+; CHECK: call <17 x i32> @llvm.dx.wave.reduce.xor.v17i32
+define <17 x i32> @test_wave_reduce_xor(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.xor.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.xor.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor.ll
new file mode 100644
index 0000000000000..22a8fe33578fd
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_reduce_xor(
+; CHECK-COUNT-17: call i32 @dx.op.waveActiveBit.i32(i32 120, i32 {{.*}}, i8 2)
+define <17 x i32> @test_wave_reduce_xor(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.reduce.xor.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.reduce.xor.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct-sm69.ll
new file mode 100644
index 0000000000000..8a8be70aca57e
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct-sm69.ll
@@ -0,0 +1,10 @@
+; XFAIL: *
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_uproduct(
+; CHECK: call <17 x i32> @llvm.dx.wave.uproduct.v17i32
+define <17 x i32> @test_wave_uproduct(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.uproduct.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.uproduct.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct.ll
new file mode 100644
index 0000000000000..1eb36a0cd2392
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct.ll
@@ -0,0 +1,9 @@
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+
+; CHECK-LABEL: define <17 x i32> @test_wave_uproduct(
+; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 1, i8 1)
+define <17 x i32> @test_wave_uproduct(<17 x i32> %a) {
+  %result = call <17 x i32> @llvm.dx.wave.uproduct.v17i32(<17 x i32> %a)
+  ret <17 x i32> %result
+}
+declare <17 x i32> @llvm.dx.wave.uproduct.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/llc-pipeline.ll b/llvm/test/CodeGen/DirectX/llc-pipeline.ll
index f575a9fbc81a2..02a583d823cb6 100644
--- a/llvm/test/CodeGen/DirectX/llc-pipeline.ll
+++ b/llvm/test/CodeGen/DirectX/llc-pipeline.ll
@@ -8,8 +8,8 @@
 ; CHECK-LABEL: Pass Arguments:
 ; CHECK-NEXT: Target Library Information
 ; CHECK-NEXT: Runtime Library Function Analysis
-; CHECK-NEXT: DXIL Resource Type Analysis
 ; CHECK-NEXT: Target Transform Information
+; CHECK-NEXT: DXIL Resource Type Analysis
 ; CHECK-O1-NEXT: Assumption Cache Tracker
 ; CHECK-OBJ-NEXT: Machine Module Information
 ; CHECK-OBJ-NEXT: Machine Branch Probability Analysis

>From 07f2e209eeea38334dafc96454839448d6ab8e8c Mon Sep 17 00:00:00 2001
From: Farzon Lotfi <farzonlotfi at microsoft.com>
Date: Tue, 25 Aug 2026 10:27:48 -0400
Subject: [PATCH 2/4] disable scalarizer for sm6.9. This lets us merge the
 tests.

---
 llvm/lib/Target/DirectX/DirectXTargetMachine.cpp       | 10 +++++++---
 llvm/test/CodeGen/DirectX/LongVector/asdouble-sm69.ll  | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/asdouble.ll       |  3 +++
 .../test/CodeGen/DirectX/LongVector/ddx-coarse-sm69.ll | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/ddx-coarse.ll     |  3 +++
 llvm/test/CodeGen/DirectX/LongVector/ddx-fine-sm69.ll  | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/ddx-fine.ll       |  3 +++
 .../test/CodeGen/DirectX/LongVector/ddy-coarse-sm69.ll | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/ddy-coarse.ll     |  3 +++
 llvm/test/CodeGen/DirectX/LongVector/ddy-fine-sm69.ll  | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/ddy-fine.ll       |  3 +++
 .../CodeGen/DirectX/LongVector/firstbitlow-sm69.ll     | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/firstbitlow.ll    |  3 +++
 .../CodeGen/DirectX/LongVector/firstbitshigh-sm69.ll   | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/firstbitshigh.ll  |  3 +++
 .../CodeGen/DirectX/LongVector/firstbituhigh-sm69.ll   | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/firstbituhigh.ll  |  3 +++
 llvm/test/CodeGen/DirectX/LongVector/frac-sm69.ll      | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/frac.ll           |  3 +++
 llvm/test/CodeGen/DirectX/LongVector/imad-sm69.ll      | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/imad.ll           |  3 +++
 llvm/test/CodeGen/DirectX/LongVector/isinf-sm69.ll     | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/isinf.ll          |  3 +++
 llvm/test/CodeGen/DirectX/LongVector/isnan-sm69.ll     | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/isnan.ll          |  3 +++
 .../CodeGen/DirectX/LongVector/legacyf16tof32-sm69.ll  | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32.ll |  3 +++
 .../CodeGen/DirectX/LongVector/legacyf32tof16-sm69.ll  | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16.ll |  3 +++
 .../LongVector/quad-read-across-diagonal-sm69.ll       | 10 ----------
 .../DirectX/LongVector/quad-read-across-diagonal.ll    |  3 +++
 .../DirectX/LongVector/quad-read-across-x-sm69.ll      | 10 ----------
 .../CodeGen/DirectX/LongVector/quad-read-across-x.ll   |  3 +++
 .../DirectX/LongVector/quad-read-across-y-sm69.ll      | 10 ----------
 .../CodeGen/DirectX/LongVector/quad-read-across-y.ll   |  3 +++
 llvm/test/CodeGen/DirectX/LongVector/rsqrt-sm69.ll     | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/rsqrt.ll          |  3 +++
 llvm/test/CodeGen/DirectX/LongVector/saturate-sm69.ll  | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/saturate.ll       |  3 +++
 llvm/test/CodeGen/DirectX/LongVector/umad-sm69.ll      | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/umad.ll           |  3 +++
 .../CodeGen/DirectX/LongVector/wave-all-equal-sm69.ll  | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/wave-all-equal.ll |  3 +++
 .../DirectX/LongVector/wave-prefix-product-sm69.ll     | 10 ----------
 .../CodeGen/DirectX/LongVector/wave-prefix-product.ll  |  3 +++
 .../CodeGen/DirectX/LongVector/wave-prefix-sum-sm69.ll | 10 ----------
 .../test/CodeGen/DirectX/LongVector/wave-prefix-sum.ll |  3 +++
 .../DirectX/LongVector/wave-prefix-uproduct-sm69.ll    | 10 ----------
 .../CodeGen/DirectX/LongVector/wave-prefix-uproduct.ll |  3 +++
 .../DirectX/LongVector/wave-prefix-usum-sm69.ll        | 10 ----------
 .../CodeGen/DirectX/LongVector/wave-prefix-usum.ll     |  3 +++
 .../CodeGen/DirectX/LongVector/wave-product-sm69.ll    | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/wave-product.ll   |  3 +++
 .../CodeGen/DirectX/LongVector/wave-readlane-sm69.ll   | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/wave-readlane.ll  |  3 +++
 .../CodeGen/DirectX/LongVector/wave-reduce-and-sm69.ll | 10 ----------
 .../test/CodeGen/DirectX/LongVector/wave-reduce-and.ll |  3 +++
 .../CodeGen/DirectX/LongVector/wave-reduce-max-sm69.ll | 10 ----------
 .../test/CodeGen/DirectX/LongVector/wave-reduce-max.ll |  3 +++
 .../CodeGen/DirectX/LongVector/wave-reduce-min-sm69.ll | 10 ----------
 .../test/CodeGen/DirectX/LongVector/wave-reduce-min.ll |  3 +++
 .../CodeGen/DirectX/LongVector/wave-reduce-or-sm69.ll  | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or.ll |  3 +++
 .../CodeGen/DirectX/LongVector/wave-reduce-sum-sm69.ll | 10 ----------
 .../test/CodeGen/DirectX/LongVector/wave-reduce-sum.ll |  3 +++
 .../DirectX/LongVector/wave-reduce-umax-sm69.ll        | 10 ----------
 .../CodeGen/DirectX/LongVector/wave-reduce-umax.ll     |  3 +++
 .../DirectX/LongVector/wave-reduce-umin-sm69.ll        | 10 ----------
 .../CodeGen/DirectX/LongVector/wave-reduce-umin.ll     |  3 +++
 .../DirectX/LongVector/wave-reduce-usum-sm69.ll        | 10 ----------
 .../CodeGen/DirectX/LongVector/wave-reduce-usum.ll     |  3 +++
 .../CodeGen/DirectX/LongVector/wave-reduce-xor-sm69.ll | 10 ----------
 .../test/CodeGen/DirectX/LongVector/wave-reduce-xor.ll |  3 +++
 .../CodeGen/DirectX/LongVector/wave-uproduct-sm69.ll   | 10 ----------
 llvm/test/CodeGen/DirectX/LongVector/wave-uproduct.ll  |  3 +++
 75 files changed, 118 insertions(+), 373 deletions(-)
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/asdouble-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/ddx-coarse-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/ddx-fine-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/ddy-coarse-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/ddy-fine-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/firstbitlow-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/firstbitshigh-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/firstbituhigh-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/frac-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/imad-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/isinf-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/isnan-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/rsqrt-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/saturate-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/umad-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-all-equal-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-product-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-readlane-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor-sm69.ll
 delete mode 100644 llvm/test/CodeGen/DirectX/LongVector/wave-uproduct-sm69.ll

diff --git a/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp b/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp
index 13d6b4f2ae81a..bca6316dfe4a0 100644
--- a/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp
+++ b/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp
@@ -48,6 +48,7 @@
 #include "llvm/Support/CodeGen.h"
 #include "llvm/Support/Compiler.h"
 #include "llvm/Support/ErrorHandling.h"
+#include "llvm/Support/VersionTuple.h"
 #include "llvm/Target/TargetLoweringObjectFile.h"
 #include "llvm/Transforms/IPO/GlobalDCE.h"
 #include "llvm/Transforms/Scalar.h"
@@ -129,9 +130,12 @@ class DirectXPassConfig : public TargetPassConfig {
     addPass(createDXILResourceAccessLegacyPass());
     addPass(createDXILIntrinsicExpansionLegacyPass());
     addPass(createDXILDataScalarizationLegacyPass());
-    ScalarizerPassOptions DxilScalarOptions;
-    DxilScalarOptions.ScalarizeLoadStore = true;
-    addPass(createScalarizerPass(DxilScalarOptions));
+    if (getDirectXTargetMachine().getTargetTriple().getOSVersion() <
+        VersionTuple(6, 9)) {
+      ScalarizerPassOptions DxilScalarOptions;
+      DxilScalarOptions.ScalarizeLoadStore = true;
+      addPass(createScalarizerPass(DxilScalarOptions));
+    }
     addPass(createDXILFlattenArraysLegacyPass());
     addPass(createDXILForwardHandleAccessesLegacyPass());
     if (OptLevel != CodeGenOptLevel::None) {
diff --git a/llvm/test/CodeGen/DirectX/LongVector/asdouble-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/asdouble-sm69.ll
deleted file mode 100644
index 7d31c31a87a6e..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/asdouble-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x double> @test_asdouble(
-; CHECK: call <17 x double> @llvm.dx.asdouble.v17i32
-define <17 x double> @test_asdouble(<17 x i32> %a, <17 x i32> %b) {
-  %result = call <17 x double> @llvm.dx.asdouble.v17i32(<17 x i32> %a, <17 x i32> %b)
-  ret <17 x double> %result
-}
-declare <17 x double> @llvm.dx.asdouble.v17i32(<17 x i32>, <17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/asdouble.ll b/llvm/test/CodeGen/DirectX/LongVector/asdouble.ll
index 84c20636975b1..322de26403ceb 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/asdouble.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/asdouble.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x double> @test_asdouble(
 ; CHECK-COUNT-17: call double @dx.op.makeDouble.f64(i32 101, i32 {{.*}}, i32 {{.*}})
+; SM69-CHECK-LABEL: define <17 x double> @test_asdouble(
+; SM69-CHECK: call <17 x double> @llvm.dx.asdouble.v17i32
 define <17 x double> @test_asdouble(<17 x i32> %a, <17 x i32> %b) {
   %result = call <17 x double> @llvm.dx.asdouble.v17i32(<17 x i32> %a, <17 x i32> %b)
   ret <17 x double> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse-sm69.ll
deleted file mode 100644
index 20419156a6634..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x float> @test_ddx_coarse(
-; CHECK: call <17 x float> @llvm.dx.ddx.coarse.v17f32
-define <17 x float> @test_ddx_coarse(<17 x float> %a) {
-  %result = call <17 x float> @llvm.dx.ddx.coarse.v17f32(<17 x float> %a)
-  ret <17 x float> %result
-}
-declare <17 x float> @llvm.dx.ddx.coarse.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse.ll b/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse.ll
index 0c8aa488a85db..2f9263d78d258 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x float> @test_ddx_coarse(
 ; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 83, float {{.*}})
+; SM69-CHECK-LABEL: define <17 x float> @test_ddx_coarse(
+; SM69-CHECK: call <17 x float> @llvm.dx.ddx.coarse.v17f32
 define <17 x float> @test_ddx_coarse(<17 x float> %a) {
   %result = call <17 x float> @llvm.dx.ddx.coarse.v17f32(<17 x float> %a)
   ret <17 x float> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddx-fine-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/ddx-fine-sm69.ll
deleted file mode 100644
index c9444084ba33b..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/ddx-fine-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x float> @test_ddx_fine(
-; CHECK: call <17 x float> @llvm.dx.ddx.fine.v17f32
-define <17 x float> @test_ddx_fine(<17 x float> %a) {
-  %result = call <17 x float> @llvm.dx.ddx.fine.v17f32(<17 x float> %a)
-  ret <17 x float> %result
-}
-declare <17 x float> @llvm.dx.ddx.fine.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddx-fine.ll b/llvm/test/CodeGen/DirectX/LongVector/ddx-fine.ll
index 55aa92d918e40..a3ab45ecb794b 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/ddx-fine.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/ddx-fine.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x float> @test_ddx_fine(
 ; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 85, float {{.*}})
+; SM69-CHECK-LABEL: define <17 x float> @test_ddx_fine(
+; SM69-CHECK: call <17 x float> @llvm.dx.ddx.fine.v17f32
 define <17 x float> @test_ddx_fine(<17 x float> %a) {
   %result = call <17 x float> @llvm.dx.ddx.fine.v17f32(<17 x float> %a)
   ret <17 x float> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse-sm69.ll
deleted file mode 100644
index d092521ad008b..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x float> @test_ddy_coarse(
-; CHECK: call <17 x float> @llvm.dx.ddy.coarse.v17f32
-define <17 x float> @test_ddy_coarse(<17 x float> %a) {
-  %result = call <17 x float> @llvm.dx.ddy.coarse.v17f32(<17 x float> %a)
-  ret <17 x float> %result
-}
-declare <17 x float> @llvm.dx.ddy.coarse.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse.ll b/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse.ll
index 45ca4c052740b..b370f1e9f26b1 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x float> @test_ddy_coarse(
 ; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 84, float {{.*}})
+; SM69-CHECK-LABEL: define <17 x float> @test_ddy_coarse(
+; SM69-CHECK: call <17 x float> @llvm.dx.ddy.coarse.v17f32
 define <17 x float> @test_ddy_coarse(<17 x float> %a) {
   %result = call <17 x float> @llvm.dx.ddy.coarse.v17f32(<17 x float> %a)
   ret <17 x float> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddy-fine-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/ddy-fine-sm69.ll
deleted file mode 100644
index 4bba04ccc3b9d..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/ddy-fine-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x float> @test_ddy_fine(
-; CHECK: call <17 x float> @llvm.dx.ddy.fine.v17f32
-define <17 x float> @test_ddy_fine(<17 x float> %a) {
-  %result = call <17 x float> @llvm.dx.ddy.fine.v17f32(<17 x float> %a)
-  ret <17 x float> %result
-}
-declare <17 x float> @llvm.dx.ddy.fine.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddy-fine.ll b/llvm/test/CodeGen/DirectX/LongVector/ddy-fine.ll
index 8baf8297cbb86..2d0d392130fe6 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/ddy-fine.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/ddy-fine.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x float> @test_ddy_fine(
 ; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 86, float {{.*}})
+; SM69-CHECK-LABEL: define <17 x float> @test_ddy_fine(
+; SM69-CHECK: call <17 x float> @llvm.dx.ddy.fine.v17f32
 define <17 x float> @test_ddy_fine(<17 x float> %a) {
   %result = call <17 x float> @llvm.dx.ddy.fine.v17f32(<17 x float> %a)
   ret <17 x float> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/firstbitlow-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/firstbitlow-sm69.ll
deleted file mode 100644
index 0fef613afb9ac..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/firstbitlow-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_firstbitlow(
-; CHECK: call <17 x i32> @llvm.dx.firstbitlow.v17i32
-define <17 x i32> @test_firstbitlow(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.firstbitlow.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.firstbitlow.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/firstbitlow.ll b/llvm/test/CodeGen/DirectX/LongVector/firstbitlow.ll
index e4cce428612e0..f83f2889ffccf 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/firstbitlow.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/firstbitlow.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_firstbitlow(
 ; CHECK-COUNT-17: call i32 @dx.op.unaryBits.i32(i32 32, i32 {{.*}})
+; SM69-CHECK-LABEL: define <17 x i32> @test_firstbitlow(
+; SM69-CHECK: call <17 x i32> @llvm.dx.firstbitlow.v17i32
 define <17 x i32> @test_firstbitlow(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.firstbitlow.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh-sm69.ll
deleted file mode 100644
index 61a6a4ff308d3..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_firstbitshigh(
-; CHECK: call <17 x i32> @llvm.dx.firstbitshigh.v17i32
-define <17 x i32> @test_firstbitshigh(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.firstbitshigh.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.firstbitshigh.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh.ll b/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh.ll
index 24ed1f172f3d5..728df8d8378dd 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_firstbitshigh(
 ; CHECK-COUNT-17: call i32 @dx.op.unaryBits.i32(i32 34, i32 {{.*}})
+; SM69-CHECK-LABEL: define <17 x i32> @test_firstbitshigh(
+; SM69-CHECK: call <17 x i32> @llvm.dx.firstbitshigh.v17i32
 define <17 x i32> @test_firstbitshigh(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.firstbitshigh.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh-sm69.ll
deleted file mode 100644
index 2dbad82686316..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_firstbituhigh(
-; CHECK: call <17 x i32> @llvm.dx.firstbituhigh.v17i32
-define <17 x i32> @test_firstbituhigh(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.firstbituhigh.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.firstbituhigh.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh.ll b/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh.ll
index 75b177d49b2a1..1b282ebf3d145 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_firstbituhigh(
 ; CHECK-COUNT-17: call i32 @dx.op.unaryBits.i32(i32 33, i32 {{.*}})
+; SM69-CHECK-LABEL: define <17 x i32> @test_firstbituhigh(
+; SM69-CHECK: call <17 x i32> @llvm.dx.firstbituhigh.v17i32
 define <17 x i32> @test_firstbituhigh(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.firstbituhigh.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/frac-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/frac-sm69.ll
deleted file mode 100644
index b8857c0db1e67..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/frac-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x float> @test_frac(
-; CHECK: call <17 x float> @llvm.dx.frac.v17f32
-define <17 x float> @test_frac(<17 x float> %a) {
-  %result = call <17 x float> @llvm.dx.frac.v17f32(<17 x float> %a)
-  ret <17 x float> %result
-}
-declare <17 x float> @llvm.dx.frac.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/frac.ll b/llvm/test/CodeGen/DirectX/LongVector/frac.ll
index 241303c8049fd..b6a09d1fbcbd2 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/frac.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/frac.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x float> @test_frac(
 ; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 22, float {{.*}})
+; SM69-CHECK-LABEL: define <17 x float> @test_frac(
+; SM69-CHECK: call <17 x float> @llvm.dx.frac.v17f32
 define <17 x float> @test_frac(<17 x float> %a) {
   %result = call <17 x float> @llvm.dx.frac.v17f32(<17 x float> %a)
   ret <17 x float> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/imad-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/imad-sm69.ll
deleted file mode 100644
index 267dd33adc6b0..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/imad-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_imad(
-; CHECK: call <17 x i32> @llvm.dx.imad.v17i32
-define <17 x i32> @test_imad(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c) {
-  %result = call <17 x i32> @llvm.dx.imad.v17i32(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.imad.v17i32(<17 x i32>, <17 x i32>, <17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/imad.ll b/llvm/test/CodeGen/DirectX/LongVector/imad.ll
index 0613133320f15..36c0d4a129802 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/imad.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/imad.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_imad(
 ; CHECK-COUNT-17: call i32 @dx.op.tertiary.i32(i32 48, i32 {{.*}}, i32 {{.*}}, i32 {{.*}})
+; SM69-CHECK-LABEL: define <17 x i32> @test_imad(
+; SM69-CHECK: call <17 x i32> @llvm.dx.imad.v17i32
 define <17 x i32> @test_imad(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c) {
   %result = call <17 x i32> @llvm.dx.imad.v17i32(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/isinf-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/isinf-sm69.ll
deleted file mode 100644
index 593dae2066da2..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/isinf-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i1> @test_isinf(
-; CHECK: call <17 x i1> @llvm.dx.isinf.v17f32
-define <17 x i1> @test_isinf(<17 x float> %a) {
-  %result = call <17 x i1> @llvm.dx.isinf.v17f32(<17 x float> %a)
-  ret <17 x i1> %result
-}
-declare <17 x i1> @llvm.dx.isinf.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/isinf.ll b/llvm/test/CodeGen/DirectX/LongVector/isinf.ll
index c12b2774e5f54..361de0247baf7 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/isinf.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/isinf.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i1> @test_isinf(
 ; CHECK-COUNT-17: call i1 @dx.op.isSpecialFloat.f32(i32 9, float {{.*}})
+; SM69-CHECK-LABEL: define <17 x i1> @test_isinf(
+; SM69-CHECK: call <17 x i1> @llvm.dx.isinf.v17f32
 define <17 x i1> @test_isinf(<17 x float> %a) {
   %result = call <17 x i1> @llvm.dx.isinf.v17f32(<17 x float> %a)
   ret <17 x i1> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/isnan-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/isnan-sm69.ll
deleted file mode 100644
index 003819d323d90..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/isnan-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i1> @test_isnan(
-; CHECK: call <17 x i1> @llvm.dx.isnan.v17f32
-define <17 x i1> @test_isnan(<17 x float> %a) {
-  %result = call <17 x i1> @llvm.dx.isnan.v17f32(<17 x float> %a)
-  ret <17 x i1> %result
-}
-declare <17 x i1> @llvm.dx.isnan.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/isnan.ll b/llvm/test/CodeGen/DirectX/LongVector/isnan.ll
index 91af7f2ac3dac..4d4f98204ab93 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/isnan.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/isnan.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i1> @test_isnan(
 ; CHECK-COUNT-17: call i1 @dx.op.isSpecialFloat.f32(i32 8, float {{.*}})
+; SM69-CHECK-LABEL: define <17 x i1> @test_isnan(
+; SM69-CHECK: call <17 x i1> @llvm.dx.isnan.v17f32
 define <17 x i1> @test_isnan(<17 x float> %a) {
   %result = call <17 x i1> @llvm.dx.isnan.v17f32(<17 x float> %a)
   ret <17 x i1> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32-sm69.ll
deleted file mode 100644
index d256f642e8d0c..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x float> @test_legacyf16tof32(
-; CHECK: call <17 x float> @llvm.dx.legacyf16tof32.v17i32
-define <17 x float> @test_legacyf16tof32(<17 x i32> %a) {
-  %result = call <17 x float> @llvm.dx.legacyf16tof32.v17i32(<17 x i32> %a)
-  ret <17 x float> %result
-}
-declare <17 x float> @llvm.dx.legacyf16tof32.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32.ll b/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32.ll
index 1360002cdb3e6..c911e3adaf480 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x float> @test_legacyf16tof32(
 ; CHECK-COUNT-17: call float @dx.op.legacyF16ToF32(i32 131, i32 {{.*}})
+; SM69-CHECK-LABEL: define <17 x float> @test_legacyf16tof32(
+; SM69-CHECK: call <17 x float> @llvm.dx.legacyf16tof32.v17i32
 define <17 x float> @test_legacyf16tof32(<17 x i32> %a) {
   %result = call <17 x float> @llvm.dx.legacyf16tof32.v17i32(<17 x i32> %a)
   ret <17 x float> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16-sm69.ll
deleted file mode 100644
index 8dc5c3586ffc5..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_legacyf32tof16(
-; CHECK: call <17 x i32> @llvm.dx.legacyf32tof16.v17f32
-define <17 x i32> @test_legacyf32tof16(<17 x float> %a) {
-  %result = call <17 x i32> @llvm.dx.legacyf32tof16.v17f32(<17 x float> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.legacyf32tof16.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16.ll b/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16.ll
index d049f573a7893..679387b8ad49c 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_legacyf32tof16(
 ; CHECK-COUNT-17: call i32 @dx.op.legacyF32ToF16(i32 130, float {{.*}})
+; SM69-CHECK-LABEL: define <17 x i32> @test_legacyf32tof16(
+; SM69-CHECK: call <17 x i32> @llvm.dx.legacyf32tof16.v17f32
 define <17 x i32> @test_legacyf32tof16(<17 x float> %a) {
   %result = call <17 x i32> @llvm.dx.legacyf32tof16.v17f32(<17 x float> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal-sm69.ll
deleted file mode 100644
index 6e4a0de3e2eaf..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_quad_read_across_diagonal(
-; CHECK: call <17 x i32> @llvm.dx.quad.read.across.diagonal.v17i32
-define <17 x i32> @test_quad_read_across_diagonal(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.quad.read.across.diagonal.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.quad.read.across.diagonal.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal.ll b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal.ll
index 720f72653a31c..a03c5554314a9 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_quad_read_across_diagonal(
 ; CHECK-COUNT-17: call i32 @dx.op.quadOp.i32(i32 123, i32 {{.*}}, i8 2)
+; SM69-CHECK-LABEL: define <17 x i32> @test_quad_read_across_diagonal(
+; SM69-CHECK: call <17 x i32> @llvm.dx.quad.read.across.diagonal.v17i32
 define <17 x i32> @test_quad_read_across_diagonal(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.quad.read.across.diagonal.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x-sm69.ll
deleted file mode 100644
index 745c704e03091..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_quad_read_across_x(
-; CHECK: call <17 x i32> @llvm.dx.quad.read.across.x.v17i32
-define <17 x i32> @test_quad_read_across_x(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.quad.read.across.x.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.quad.read.across.x.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x.ll b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x.ll
index 58e88e1e04e13..4305f89a15f20 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_quad_read_across_x(
 ; CHECK-COUNT-17: call i32 @dx.op.quadOp.i32(i32 123, i32 {{.*}}, i8 0)
+; SM69-CHECK-LABEL: define <17 x i32> @test_quad_read_across_x(
+; SM69-CHECK: call <17 x i32> @llvm.dx.quad.read.across.x.v17i32
 define <17 x i32> @test_quad_read_across_x(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.quad.read.across.x.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y-sm69.ll
deleted file mode 100644
index 30b10f2790a7b..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_quad_read_across_y(
-; CHECK: call <17 x i32> @llvm.dx.quad.read.across.y.v17i32
-define <17 x i32> @test_quad_read_across_y(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.quad.read.across.y.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.quad.read.across.y.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y.ll b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y.ll
index cd1cecc97dc04..74f2bab01f01f 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_quad_read_across_y(
 ; CHECK-COUNT-17: call i32 @dx.op.quadOp.i32(i32 123, i32 {{.*}}, i8 1)
+; SM69-CHECK-LABEL: define <17 x i32> @test_quad_read_across_y(
+; SM69-CHECK: call <17 x i32> @llvm.dx.quad.read.across.y.v17i32
 define <17 x i32> @test_quad_read_across_y(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.quad.read.across.y.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/rsqrt-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/rsqrt-sm69.ll
deleted file mode 100644
index 93ad697108bbd..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/rsqrt-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x float> @test_rsqrt(
-; CHECK: call <17 x float> @llvm.dx.rsqrt.v17f32
-define <17 x float> @test_rsqrt(<17 x float> %a) {
-  %result = call <17 x float> @llvm.dx.rsqrt.v17f32(<17 x float> %a)
-  ret <17 x float> %result
-}
-declare <17 x float> @llvm.dx.rsqrt.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/rsqrt.ll b/llvm/test/CodeGen/DirectX/LongVector/rsqrt.ll
index 84c0fca0fa49d..3bb4bca82ff78 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/rsqrt.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/rsqrt.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x float> @test_rsqrt(
 ; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 25, float {{.*}})
+; SM69-CHECK-LABEL: define <17 x float> @test_rsqrt(
+; SM69-CHECK: call <17 x float> @llvm.dx.rsqrt.v17f32
 define <17 x float> @test_rsqrt(<17 x float> %a) {
   %result = call <17 x float> @llvm.dx.rsqrt.v17f32(<17 x float> %a)
   ret <17 x float> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/saturate-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/saturate-sm69.ll
deleted file mode 100644
index b25a928922e02..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/saturate-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x float> @test_saturate(
-; CHECK: call <17 x float> @llvm.dx.saturate.v17f32
-define <17 x float> @test_saturate(<17 x float> %a) {
-  %result = call <17 x float> @llvm.dx.saturate.v17f32(<17 x float> %a)
-  ret <17 x float> %result
-}
-declare <17 x float> @llvm.dx.saturate.v17f32(<17 x float>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/saturate.ll b/llvm/test/CodeGen/DirectX/LongVector/saturate.ll
index a29c7a98973ec..17b987d69b635 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/saturate.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/saturate.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x float> @test_saturate(
 ; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 7, float {{.*}})
+; SM69-CHECK-LABEL: define <17 x float> @test_saturate(
+; SM69-CHECK: call <17 x float> @llvm.dx.saturate.v17f32
 define <17 x float> @test_saturate(<17 x float> %a) {
   %result = call <17 x float> @llvm.dx.saturate.v17f32(<17 x float> %a)
   ret <17 x float> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/umad-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/umad-sm69.ll
deleted file mode 100644
index 9365678da72e4..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/umad-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_umad(
-; CHECK: call <17 x i32> @llvm.dx.umad.v17i32
-define <17 x i32> @test_umad(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c) {
-  %result = call <17 x i32> @llvm.dx.umad.v17i32(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.umad.v17i32(<17 x i32>, <17 x i32>, <17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/umad.ll b/llvm/test/CodeGen/DirectX/LongVector/umad.ll
index 5d7c2c083c1af..6ffe4ab78544c 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/umad.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/umad.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_umad(
 ; CHECK-COUNT-17: call i32 @dx.op.tertiary.i32(i32 49, i32 {{.*}}, i32 {{.*}}, i32 {{.*}})
+; SM69-CHECK-LABEL: define <17 x i32> @test_umad(
+; SM69-CHECK: call <17 x i32> @llvm.dx.umad.v17i32
 define <17 x i32> @test_umad(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c) {
   %result = call <17 x i32> @llvm.dx.umad.v17i32(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal-sm69.ll
deleted file mode 100644
index 4776d2ca1dcba..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i1> @test_wave_all_equal(
-; CHECK: call <17 x i1> @llvm.dx.wave.all.equal.v17i32
-define <17 x i1> @test_wave_all_equal(<17 x i32> %a) {
-  %result = call <17 x i1> @llvm.dx.wave.all.equal.v17i32(<17 x i32> %a)
-  ret <17 x i1> %result
-}
-declare <17 x i1> @llvm.dx.wave.all.equal.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal.ll
index 190af3b9f41ef..f387779ac216b 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i1> @test_wave_all_equal(
 ; CHECK-COUNT-17: call i1 @dx.op.waveActiveAllEqual.i32(i32 115, i32 {{.*}})
+; SM69-CHECK-LABEL: define <17 x i1> @test_wave_all_equal(
+; SM69-CHECK: call <17 x i1> @llvm.dx.wave.all.equal.v17i32
 define <17 x i1> @test_wave_all_equal(<17 x i32> %a) {
   %result = call <17 x i1> @llvm.dx.wave.all.equal.v17i32(<17 x i32> %a)
   ret <17 x i1> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product-sm69.ll
deleted file mode 100644
index 0572ba688aeb3..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_wave_prefix_product(
-; CHECK: call <17 x i32> @llvm.dx.wave.prefix.product.v17i32
-define <17 x i32> @test_wave_prefix_product(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.wave.prefix.product.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.wave.prefix.product.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product.ll
index 2735c49faa1b6..b1542d10c30a9 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_prefix_product(
 ; CHECK-COUNT-17: call i32 @dx.op.wavePrefixOp.i32(i32 121, i32 {{.*}}, i8 1, i8 0)
+; SM69-CHECK-LABEL: define <17 x i32> @test_wave_prefix_product(
+; SM69-CHECK: call <17 x i32> @llvm.dx.wave.prefix.product.v17i32
 define <17 x i32> @test_wave_prefix_product(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.prefix.product.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum-sm69.ll
deleted file mode 100644
index 9ffe003206d3f..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_wave_prefix_sum(
-; CHECK: call <17 x i32> @llvm.dx.wave.prefix.sum.v17i32
-define <17 x i32> @test_wave_prefix_sum(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.wave.prefix.sum.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.wave.prefix.sum.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum.ll
index 9efbab9cd0aa9..f3ead0c27a828 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_prefix_sum(
 ; CHECK-COUNT-17: call i32 @dx.op.wavePrefixOp.i32(i32 121, i32 {{.*}}, i8 0, i8 0)
+; SM69-CHECK-LABEL: define <17 x i32> @test_wave_prefix_sum(
+; SM69-CHECK: call <17 x i32> @llvm.dx.wave.prefix.sum.v17i32
 define <17 x i32> @test_wave_prefix_sum(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.prefix.sum.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct-sm69.ll
deleted file mode 100644
index 7f3b35a206c33..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_wave_prefix_uproduct(
-; CHECK: call <17 x i32> @llvm.dx.wave.prefix.uproduct.v17i32
-define <17 x i32> @test_wave_prefix_uproduct(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.wave.prefix.uproduct.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.wave.prefix.uproduct.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct.ll
index 0a87fb21e439e..0bc1f575d37ef 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_prefix_uproduct(
 ; CHECK-COUNT-17: call i32 @dx.op.wavePrefixOp.i32(i32 121, i32 {{.*}}, i8 1, i8 1)
+; SM69-CHECK-LABEL: define <17 x i32> @test_wave_prefix_uproduct(
+; SM69-CHECK: call <17 x i32> @llvm.dx.wave.prefix.uproduct.v17i32
 define <17 x i32> @test_wave_prefix_uproduct(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.prefix.uproduct.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum-sm69.ll
deleted file mode 100644
index 530d3de545415..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_wave_prefix_usum(
-; CHECK: call <17 x i32> @llvm.dx.wave.prefix.usum.v17i32
-define <17 x i32> @test_wave_prefix_usum(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.wave.prefix.usum.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.wave.prefix.usum.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum.ll
index 16765a9816060..76c2334718c82 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_prefix_usum(
 ; CHECK-COUNT-17: call i32 @dx.op.wavePrefixOp.i32(i32 121, i32 {{.*}}, i8 0, i8 1)
+; SM69-CHECK-LABEL: define <17 x i32> @test_wave_prefix_usum(
+; SM69-CHECK: call <17 x i32> @llvm.dx.wave.prefix.usum.v17i32
 define <17 x i32> @test_wave_prefix_usum(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.prefix.usum.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-product-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-product-sm69.ll
deleted file mode 100644
index f6a700c869638..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-product-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_wave_product(
-; CHECK: call <17 x i32> @llvm.dx.wave.product.v17i32
-define <17 x i32> @test_wave_product(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.wave.product.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.wave.product.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-product.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-product.ll
index 467d27a53d6cb..496defeb99612 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-product.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-product.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_product(
 ; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 1, i8 0)
+; SM69-CHECK-LABEL: define <17 x i32> @test_wave_product(
+; SM69-CHECK: call <17 x i32> @llvm.dx.wave.product.v17i32
 define <17 x i32> @test_wave_product(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.product.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-readlane-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-readlane-sm69.ll
deleted file mode 100644
index 263cd7b6902f1..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-readlane-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_wave_readlane(
-; CHECK: call <17 x i32> @llvm.dx.wave.readlane.v17i32
-define <17 x i32> @test_wave_readlane(<17 x i32> %a, i32 %lane) {
-  %result = call <17 x i32> @llvm.dx.wave.readlane.v17i32(<17 x i32> %a, i32 %lane)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.wave.readlane.v17i32(<17 x i32>, i32)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-readlane.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-readlane.ll
index 8d3b1b3733bd8..2155baf49cb5b 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-readlane.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-readlane.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_readlane(
 ; CHECK-COUNT-17: call i32 @dx.op.waveReadLaneAt.i32(i32 117, i32 {{.*}}, i32 {{.*}})
+; SM69-CHECK-LABEL: define <17 x i32> @test_wave_readlane(
+; SM69-CHECK: call <17 x i32> @llvm.dx.wave.readlane.v17i32
 define <17 x i32> @test_wave_readlane(<17 x i32> %a, i32 %lane) {
   %result = call <17 x i32> @llvm.dx.wave.readlane.v17i32(<17 x i32> %a, i32 %lane)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and-sm69.ll
deleted file mode 100644
index ee73be4c7128c..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_wave_reduce_and(
-; CHECK: call <17 x i32> @llvm.dx.wave.reduce.and.v17i32
-define <17 x i32> @test_wave_reduce_and(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.wave.reduce.and.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.wave.reduce.and.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and.ll
index 3592876cd7173..5cb77ee8a2252 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_and(
 ; CHECK-COUNT-17: call i32 @dx.op.waveActiveBit.i32(i32 120, i32 {{.*}}, i8 0)
+; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_and(
+; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.and.v17i32
 define <17 x i32> @test_wave_reduce_and(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.and.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max-sm69.ll
deleted file mode 100644
index 8b8e26d640627..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_wave_reduce_max(
-; CHECK: call <17 x i32> @llvm.dx.wave.reduce.max.v17i32
-define <17 x i32> @test_wave_reduce_max(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.wave.reduce.max.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.wave.reduce.max.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max.ll
index f55d88223bcfc..086384d93429b 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_max(
 ; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 3, i8 0)
+; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_max(
+; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.max.v17i32
 define <17 x i32> @test_wave_reduce_max(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.max.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min-sm69.ll
deleted file mode 100644
index 020ed45f8502c..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_wave_reduce_min(
-; CHECK: call <17 x i32> @llvm.dx.wave.reduce.min.v17i32
-define <17 x i32> @test_wave_reduce_min(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.wave.reduce.min.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.wave.reduce.min.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min.ll
index ed2e22b58ea72..08d5cb54120c1 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_min(
 ; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 2, i8 0)
+; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_min(
+; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.min.v17i32
 define <17 x i32> @test_wave_reduce_min(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.min.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or-sm69.ll
deleted file mode 100644
index ba4383a2d6b94..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_wave_reduce_or(
-; CHECK: call <17 x i32> @llvm.dx.wave.reduce.or.v17i32
-define <17 x i32> @test_wave_reduce_or(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.wave.reduce.or.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.wave.reduce.or.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or.ll
index 8b1cbf3c901f1..93fa95edf02d1 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_or(
 ; CHECK-COUNT-17: call i32 @dx.op.waveActiveBit.i32(i32 120, i32 {{.*}}, i8 1)
+; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_or(
+; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.or.v17i32
 define <17 x i32> @test_wave_reduce_or(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.or.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum-sm69.ll
deleted file mode 100644
index eb9df3e21e716..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_wave_reduce_sum(
-; CHECK: call <17 x i32> @llvm.dx.wave.reduce.sum.v17i32
-define <17 x i32> @test_wave_reduce_sum(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.wave.reduce.sum.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.wave.reduce.sum.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum.ll
index ccc485d6ef42a..71c77e8e6beef 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_sum(
 ; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 0, i8 0)
+; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_sum(
+; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.sum.v17i32
 define <17 x i32> @test_wave_reduce_sum(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.sum.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax-sm69.ll
deleted file mode 100644
index 298a7c9b66ca3..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_wave_reduce_umax(
-; CHECK: call <17 x i32> @llvm.dx.wave.reduce.umax.v17i32
-define <17 x i32> @test_wave_reduce_umax(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.wave.reduce.umax.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.wave.reduce.umax.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax.ll
index 8db154ab122d4..b1616a847afe3 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_umax(
 ; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 3, i8 1)
+; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_umax(
+; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.umax.v17i32
 define <17 x i32> @test_wave_reduce_umax(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.umax.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin-sm69.ll
deleted file mode 100644
index e9f16b04748fc..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_wave_reduce_umin(
-; CHECK: call <17 x i32> @llvm.dx.wave.reduce.umin.v17i32
-define <17 x i32> @test_wave_reduce_umin(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.wave.reduce.umin.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.wave.reduce.umin.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin.ll
index 6058e4272e837..9edb3b2cbbb47 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_umin(
 ; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 2, i8 1)
+; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_umin(
+; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.umin.v17i32
 define <17 x i32> @test_wave_reduce_umin(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.umin.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum-sm69.ll
deleted file mode 100644
index fb4d0a27c148b..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_wave_reduce_usum(
-; CHECK: call <17 x i32> @llvm.dx.wave.reduce.usum.v17i32
-define <17 x i32> @test_wave_reduce_usum(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.wave.reduce.usum.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.wave.reduce.usum.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum.ll
index 055ebed525dbd..b537c68cee3a0 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_usum(
 ; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 0, i8 1)
+; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_usum(
+; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.usum.v17i32
 define <17 x i32> @test_wave_reduce_usum(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.usum.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor-sm69.ll
deleted file mode 100644
index f18af7c350b7a..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_wave_reduce_xor(
-; CHECK: call <17 x i32> @llvm.dx.wave.reduce.xor.v17i32
-define <17 x i32> @test_wave_reduce_xor(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.wave.reduce.xor.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.wave.reduce.xor.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor.ll
index 22a8fe33578fd..3ea6714fec9c3 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_xor(
 ; CHECK-COUNT-17: call i32 @dx.op.waveActiveBit.i32(i32 120, i32 {{.*}}, i8 2)
+; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_xor(
+; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.xor.v17i32
 define <17 x i32> @test_wave_reduce_xor(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.xor.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct-sm69.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct-sm69.ll
deleted file mode 100644
index 8a8be70aca57e..0000000000000
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct-sm69.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; XFAIL: *
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s
-
-; CHECK-LABEL: define <17 x i32> @test_wave_uproduct(
-; CHECK: call <17 x i32> @llvm.dx.wave.uproduct.v17i32
-define <17 x i32> @test_wave_uproduct(<17 x i32> %a) {
-  %result = call <17 x i32> @llvm.dx.wave.uproduct.v17i32(<17 x i32> %a)
-  ret <17 x i32> %result
-}
-declare <17 x i32> @llvm.dx.wave.uproduct.v17i32(<17 x i32>)
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct.ll
index 1eb36a0cd2392..ce9f2828cef90 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct.ll
@@ -1,7 +1,10 @@
 ; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_uproduct(
 ; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 1, i8 1)
+; SM69-CHECK-LABEL: define <17 x i32> @test_wave_uproduct(
+; SM69-CHECK: call <17 x i32> @llvm.dx.wave.uproduct.v17i32
 define <17 x i32> @test_wave_uproduct(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.uproduct.v17i32(<17 x i32> %a)
   ret <17 x i32> %result

>From a681b28383daccc0388a35648d8d6bc5dbf910f7 Mon Sep 17 00:00:00 2001
From: Farzon Lotfi <farzonlotfi at microsoft.com>
Date: Tue, 25 Aug 2026 10:40:26 -0400
Subject: [PATCH 3/4] update the tests to be the scalar\vector naming
 convention mentioned in PR

---
 llvm/test/CodeGen/DirectX/LongVector/asdouble.ll         | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/ddx-coarse.ll       | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/ddx-fine.ll         | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/ddy-coarse.ll       | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/ddy-fine.ll         | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/firstbitlow.ll      | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/firstbitshigh.ll    | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/firstbituhigh.ll    | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/frac.ll             | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/imad.ll             | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/isinf.ll            | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/isnan.ll            | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32.ll   | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16.ll   | 9 ++++-----
 .../DirectX/LongVector/quad-read-across-diagonal.ll      | 9 ++++-----
 .../CodeGen/DirectX/LongVector/quad-read-across-x.ll     | 9 ++++-----
 .../CodeGen/DirectX/LongVector/quad-read-across-y.ll     | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/rsqrt.ll            | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/saturate.ll         | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/umad.ll             | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/wave-all-equal.ll   | 9 ++++-----
 .../CodeGen/DirectX/LongVector/wave-prefix-product.ll    | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum.ll  | 9 ++++-----
 .../CodeGen/DirectX/LongVector/wave-prefix-uproduct.ll   | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum.ll | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/wave-product.ll     | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/wave-readlane.ll    | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and.ll  | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max.ll  | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min.ll  | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or.ll   | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum.ll  | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax.ll | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin.ll | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum.ll | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor.ll  | 9 ++++-----
 llvm/test/CodeGen/DirectX/LongVector/wave-uproduct.ll    | 9 ++++-----
 37 files changed, 148 insertions(+), 185 deletions(-)

diff --git a/llvm/test/CodeGen/DirectX/LongVector/asdouble.ll b/llvm/test/CodeGen/DirectX/LongVector/asdouble.ll
index 322de26403ceb..492d0797bd104 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/asdouble.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/asdouble.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x double> @test_asdouble(
-; CHECK-COUNT-17: call double @dx.op.makeDouble.f64(i32 101, i32 {{.*}}, i32 {{.*}})
-; SM69-CHECK-LABEL: define <17 x double> @test_asdouble(
-; SM69-CHECK: call <17 x double> @llvm.dx.asdouble.v17i32
+; CHECK-SCALAR-COUNT-17: call double @dx.op.makeDouble.f64(i32 101, i32 {{.*}}, i32 {{.*}})
+; CHECK-VECTOR: call <17 x double> @llvm.dx.asdouble.v17i32
 define <17 x double> @test_asdouble(<17 x i32> %a, <17 x i32> %b) {
   %result = call <17 x double> @llvm.dx.asdouble.v17i32(<17 x i32> %a, <17 x i32> %b)
   ret <17 x double> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse.ll b/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse.ll
index 2f9263d78d258..b7f9964a66631 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/ddx-coarse.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x float> @test_ddx_coarse(
-; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 83, float {{.*}})
-; SM69-CHECK-LABEL: define <17 x float> @test_ddx_coarse(
-; SM69-CHECK: call <17 x float> @llvm.dx.ddx.coarse.v17f32
+; CHECK-SCALAR-COUNT-17: call float @dx.op.unary.f32(i32 83, float {{.*}})
+; CHECK-VECTOR: call <17 x float> @llvm.dx.ddx.coarse.v17f32
 define <17 x float> @test_ddx_coarse(<17 x float> %a) {
   %result = call <17 x float> @llvm.dx.ddx.coarse.v17f32(<17 x float> %a)
   ret <17 x float> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddx-fine.ll b/llvm/test/CodeGen/DirectX/LongVector/ddx-fine.ll
index a3ab45ecb794b..b914b0004b7ae 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/ddx-fine.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/ddx-fine.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x float> @test_ddx_fine(
-; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 85, float {{.*}})
-; SM69-CHECK-LABEL: define <17 x float> @test_ddx_fine(
-; SM69-CHECK: call <17 x float> @llvm.dx.ddx.fine.v17f32
+; CHECK-SCALAR-COUNT-17: call float @dx.op.unary.f32(i32 85, float {{.*}})
+; CHECK-VECTOR: call <17 x float> @llvm.dx.ddx.fine.v17f32
 define <17 x float> @test_ddx_fine(<17 x float> %a) {
   %result = call <17 x float> @llvm.dx.ddx.fine.v17f32(<17 x float> %a)
   ret <17 x float> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse.ll b/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse.ll
index b370f1e9f26b1..6496332db3168 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/ddy-coarse.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x float> @test_ddy_coarse(
-; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 84, float {{.*}})
-; SM69-CHECK-LABEL: define <17 x float> @test_ddy_coarse(
-; SM69-CHECK: call <17 x float> @llvm.dx.ddy.coarse.v17f32
+; CHECK-SCALAR-COUNT-17: call float @dx.op.unary.f32(i32 84, float {{.*}})
+; CHECK-VECTOR: call <17 x float> @llvm.dx.ddy.coarse.v17f32
 define <17 x float> @test_ddy_coarse(<17 x float> %a) {
   %result = call <17 x float> @llvm.dx.ddy.coarse.v17f32(<17 x float> %a)
   ret <17 x float> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/ddy-fine.ll b/llvm/test/CodeGen/DirectX/LongVector/ddy-fine.ll
index 2d0d392130fe6..daeb1e670ba27 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/ddy-fine.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/ddy-fine.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x float> @test_ddy_fine(
-; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 86, float {{.*}})
-; SM69-CHECK-LABEL: define <17 x float> @test_ddy_fine(
-; SM69-CHECK: call <17 x float> @llvm.dx.ddy.fine.v17f32
+; CHECK-SCALAR-COUNT-17: call float @dx.op.unary.f32(i32 86, float {{.*}})
+; CHECK-VECTOR: call <17 x float> @llvm.dx.ddy.fine.v17f32
 define <17 x float> @test_ddy_fine(<17 x float> %a) {
   %result = call <17 x float> @llvm.dx.ddy.fine.v17f32(<17 x float> %a)
   ret <17 x float> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/firstbitlow.ll b/llvm/test/CodeGen/DirectX/LongVector/firstbitlow.ll
index f83f2889ffccf..7bb2c5bf53fa3 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/firstbitlow.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/firstbitlow.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_firstbitlow(
-; CHECK-COUNT-17: call i32 @dx.op.unaryBits.i32(i32 32, i32 {{.*}})
-; SM69-CHECK-LABEL: define <17 x i32> @test_firstbitlow(
-; SM69-CHECK: call <17 x i32> @llvm.dx.firstbitlow.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.unaryBits.i32(i32 32, i32 {{.*}})
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.firstbitlow.v17i32
 define <17 x i32> @test_firstbitlow(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.firstbitlow.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh.ll b/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh.ll
index 728df8d8378dd..22874468bac4e 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/firstbitshigh.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_firstbitshigh(
-; CHECK-COUNT-17: call i32 @dx.op.unaryBits.i32(i32 34, i32 {{.*}})
-; SM69-CHECK-LABEL: define <17 x i32> @test_firstbitshigh(
-; SM69-CHECK: call <17 x i32> @llvm.dx.firstbitshigh.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.unaryBits.i32(i32 34, i32 {{.*}})
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.firstbitshigh.v17i32
 define <17 x i32> @test_firstbitshigh(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.firstbitshigh.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh.ll b/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh.ll
index 1b282ebf3d145..c99d5d068b27e 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/firstbituhigh.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_firstbituhigh(
-; CHECK-COUNT-17: call i32 @dx.op.unaryBits.i32(i32 33, i32 {{.*}})
-; SM69-CHECK-LABEL: define <17 x i32> @test_firstbituhigh(
-; SM69-CHECK: call <17 x i32> @llvm.dx.firstbituhigh.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.unaryBits.i32(i32 33, i32 {{.*}})
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.firstbituhigh.v17i32
 define <17 x i32> @test_firstbituhigh(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.firstbituhigh.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/frac.ll b/llvm/test/CodeGen/DirectX/LongVector/frac.ll
index b6a09d1fbcbd2..50c23a38192b2 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/frac.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/frac.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x float> @test_frac(
-; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 22, float {{.*}})
-; SM69-CHECK-LABEL: define <17 x float> @test_frac(
-; SM69-CHECK: call <17 x float> @llvm.dx.frac.v17f32
+; CHECK-SCALAR-COUNT-17: call float @dx.op.unary.f32(i32 22, float {{.*}})
+; CHECK-VECTOR: call <17 x float> @llvm.dx.frac.v17f32
 define <17 x float> @test_frac(<17 x float> %a) {
   %result = call <17 x float> @llvm.dx.frac.v17f32(<17 x float> %a)
   ret <17 x float> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/imad.ll b/llvm/test/CodeGen/DirectX/LongVector/imad.ll
index 36c0d4a129802..c81dd3db7b661 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/imad.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/imad.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_imad(
-; CHECK-COUNT-17: call i32 @dx.op.tertiary.i32(i32 48, i32 {{.*}}, i32 {{.*}}, i32 {{.*}})
-; SM69-CHECK-LABEL: define <17 x i32> @test_imad(
-; SM69-CHECK: call <17 x i32> @llvm.dx.imad.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.tertiary.i32(i32 48, i32 {{.*}}, i32 {{.*}}, i32 {{.*}})
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.imad.v17i32
 define <17 x i32> @test_imad(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c) {
   %result = call <17 x i32> @llvm.dx.imad.v17i32(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/isinf.ll b/llvm/test/CodeGen/DirectX/LongVector/isinf.ll
index 361de0247baf7..8ba9d47366b27 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/isinf.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/isinf.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i1> @test_isinf(
-; CHECK-COUNT-17: call i1 @dx.op.isSpecialFloat.f32(i32 9, float {{.*}})
-; SM69-CHECK-LABEL: define <17 x i1> @test_isinf(
-; SM69-CHECK: call <17 x i1> @llvm.dx.isinf.v17f32
+; CHECK-SCALAR-COUNT-17: call i1 @dx.op.isSpecialFloat.f32(i32 9, float {{.*}})
+; CHECK-VECTOR: call <17 x i1> @llvm.dx.isinf.v17f32
 define <17 x i1> @test_isinf(<17 x float> %a) {
   %result = call <17 x i1> @llvm.dx.isinf.v17f32(<17 x float> %a)
   ret <17 x i1> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/isnan.ll b/llvm/test/CodeGen/DirectX/LongVector/isnan.ll
index 4d4f98204ab93..2aee925578567 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/isnan.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/isnan.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i1> @test_isnan(
-; CHECK-COUNT-17: call i1 @dx.op.isSpecialFloat.f32(i32 8, float {{.*}})
-; SM69-CHECK-LABEL: define <17 x i1> @test_isnan(
-; SM69-CHECK: call <17 x i1> @llvm.dx.isnan.v17f32
+; CHECK-SCALAR-COUNT-17: call i1 @dx.op.isSpecialFloat.f32(i32 8, float {{.*}})
+; CHECK-VECTOR: call <17 x i1> @llvm.dx.isnan.v17f32
 define <17 x i1> @test_isnan(<17 x float> %a) {
   %result = call <17 x i1> @llvm.dx.isnan.v17f32(<17 x float> %a)
   ret <17 x i1> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32.ll b/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32.ll
index c911e3adaf480..ca2c3a001d059 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/legacyf16tof32.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x float> @test_legacyf16tof32(
-; CHECK-COUNT-17: call float @dx.op.legacyF16ToF32(i32 131, i32 {{.*}})
-; SM69-CHECK-LABEL: define <17 x float> @test_legacyf16tof32(
-; SM69-CHECK: call <17 x float> @llvm.dx.legacyf16tof32.v17i32
+; CHECK-SCALAR-COUNT-17: call float @dx.op.legacyF16ToF32(i32 131, i32 {{.*}})
+; CHECK-VECTOR: call <17 x float> @llvm.dx.legacyf16tof32.v17i32
 define <17 x float> @test_legacyf16tof32(<17 x i32> %a) {
   %result = call <17 x float> @llvm.dx.legacyf16tof32.v17i32(<17 x i32> %a)
   ret <17 x float> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16.ll b/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16.ll
index 679387b8ad49c..3ac6d7b346edd 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/legacyf32tof16.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_legacyf32tof16(
-; CHECK-COUNT-17: call i32 @dx.op.legacyF32ToF16(i32 130, float {{.*}})
-; SM69-CHECK-LABEL: define <17 x i32> @test_legacyf32tof16(
-; SM69-CHECK: call <17 x i32> @llvm.dx.legacyf32tof16.v17f32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.legacyF32ToF16(i32 130, float {{.*}})
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.legacyf32tof16.v17f32
 define <17 x i32> @test_legacyf32tof16(<17 x float> %a) {
   %result = call <17 x i32> @llvm.dx.legacyf32tof16.v17f32(<17 x float> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal.ll b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal.ll
index a03c5554314a9..d5f0c8b3b89b3 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-diagonal.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_quad_read_across_diagonal(
-; CHECK-COUNT-17: call i32 @dx.op.quadOp.i32(i32 123, i32 {{.*}}, i8 2)
-; SM69-CHECK-LABEL: define <17 x i32> @test_quad_read_across_diagonal(
-; SM69-CHECK: call <17 x i32> @llvm.dx.quad.read.across.diagonal.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.quadOp.i32(i32 123, i32 {{.*}}, i8 2)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.quad.read.across.diagonal.v17i32
 define <17 x i32> @test_quad_read_across_diagonal(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.quad.read.across.diagonal.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x.ll b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x.ll
index 4305f89a15f20..c198e3afc9d63 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-x.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_quad_read_across_x(
-; CHECK-COUNT-17: call i32 @dx.op.quadOp.i32(i32 123, i32 {{.*}}, i8 0)
-; SM69-CHECK-LABEL: define <17 x i32> @test_quad_read_across_x(
-; SM69-CHECK: call <17 x i32> @llvm.dx.quad.read.across.x.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.quadOp.i32(i32 123, i32 {{.*}}, i8 0)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.quad.read.across.x.v17i32
 define <17 x i32> @test_quad_read_across_x(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.quad.read.across.x.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y.ll b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y.ll
index 74f2bab01f01f..f4885005f5d6c 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/quad-read-across-y.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_quad_read_across_y(
-; CHECK-COUNT-17: call i32 @dx.op.quadOp.i32(i32 123, i32 {{.*}}, i8 1)
-; SM69-CHECK-LABEL: define <17 x i32> @test_quad_read_across_y(
-; SM69-CHECK: call <17 x i32> @llvm.dx.quad.read.across.y.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.quadOp.i32(i32 123, i32 {{.*}}, i8 1)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.quad.read.across.y.v17i32
 define <17 x i32> @test_quad_read_across_y(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.quad.read.across.y.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/rsqrt.ll b/llvm/test/CodeGen/DirectX/LongVector/rsqrt.ll
index 3bb4bca82ff78..b78aefa9c690e 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/rsqrt.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/rsqrt.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x float> @test_rsqrt(
-; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 25, float {{.*}})
-; SM69-CHECK-LABEL: define <17 x float> @test_rsqrt(
-; SM69-CHECK: call <17 x float> @llvm.dx.rsqrt.v17f32
+; CHECK-SCALAR-COUNT-17: call float @dx.op.unary.f32(i32 25, float {{.*}})
+; CHECK-VECTOR: call <17 x float> @llvm.dx.rsqrt.v17f32
 define <17 x float> @test_rsqrt(<17 x float> %a) {
   %result = call <17 x float> @llvm.dx.rsqrt.v17f32(<17 x float> %a)
   ret <17 x float> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/saturate.ll b/llvm/test/CodeGen/DirectX/LongVector/saturate.ll
index 17b987d69b635..a2db511479511 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/saturate.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/saturate.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x float> @test_saturate(
-; CHECK-COUNT-17: call float @dx.op.unary.f32(i32 7, float {{.*}})
-; SM69-CHECK-LABEL: define <17 x float> @test_saturate(
-; SM69-CHECK: call <17 x float> @llvm.dx.saturate.v17f32
+; CHECK-SCALAR-COUNT-17: call float @dx.op.unary.f32(i32 7, float {{.*}})
+; CHECK-VECTOR: call <17 x float> @llvm.dx.saturate.v17f32
 define <17 x float> @test_saturate(<17 x float> %a) {
   %result = call <17 x float> @llvm.dx.saturate.v17f32(<17 x float> %a)
   ret <17 x float> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/umad.ll b/llvm/test/CodeGen/DirectX/LongVector/umad.ll
index 6ffe4ab78544c..fcca2b48b8504 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/umad.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/umad.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_umad(
-; CHECK-COUNT-17: call i32 @dx.op.tertiary.i32(i32 49, i32 {{.*}}, i32 {{.*}}, i32 {{.*}})
-; SM69-CHECK-LABEL: define <17 x i32> @test_umad(
-; SM69-CHECK: call <17 x i32> @llvm.dx.umad.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.tertiary.i32(i32 49, i32 {{.*}}, i32 {{.*}}, i32 {{.*}})
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.umad.v17i32
 define <17 x i32> @test_umad(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c) {
   %result = call <17 x i32> @llvm.dx.umad.v17i32(<17 x i32> %a, <17 x i32> %b, <17 x i32> %c)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal.ll
index f387779ac216b..7f4a35179031b 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-all-equal.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i1> @test_wave_all_equal(
-; CHECK-COUNT-17: call i1 @dx.op.waveActiveAllEqual.i32(i32 115, i32 {{.*}})
-; SM69-CHECK-LABEL: define <17 x i1> @test_wave_all_equal(
-; SM69-CHECK: call <17 x i1> @llvm.dx.wave.all.equal.v17i32
+; CHECK-SCALAR-COUNT-17: call i1 @dx.op.waveActiveAllEqual.i32(i32 115, i32 {{.*}})
+; CHECK-VECTOR: call <17 x i1> @llvm.dx.wave.all.equal.v17i32
 define <17 x i1> @test_wave_all_equal(<17 x i32> %a) {
   %result = call <17 x i1> @llvm.dx.wave.all.equal.v17i32(<17 x i32> %a)
   ret <17 x i1> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product.ll
index b1542d10c30a9..5dc62ab5a7046 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-product.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_prefix_product(
-; CHECK-COUNT-17: call i32 @dx.op.wavePrefixOp.i32(i32 121, i32 {{.*}}, i8 1, i8 0)
-; SM69-CHECK-LABEL: define <17 x i32> @test_wave_prefix_product(
-; SM69-CHECK: call <17 x i32> @llvm.dx.wave.prefix.product.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.wavePrefixOp.i32(i32 121, i32 {{.*}}, i8 1, i8 0)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.wave.prefix.product.v17i32
 define <17 x i32> @test_wave_prefix_product(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.prefix.product.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum.ll
index f3ead0c27a828..4ed4d5e4c81d8 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-sum.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_prefix_sum(
-; CHECK-COUNT-17: call i32 @dx.op.wavePrefixOp.i32(i32 121, i32 {{.*}}, i8 0, i8 0)
-; SM69-CHECK-LABEL: define <17 x i32> @test_wave_prefix_sum(
-; SM69-CHECK: call <17 x i32> @llvm.dx.wave.prefix.sum.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.wavePrefixOp.i32(i32 121, i32 {{.*}}, i8 0, i8 0)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.wave.prefix.sum.v17i32
 define <17 x i32> @test_wave_prefix_sum(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.prefix.sum.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct.ll
index 0bc1f575d37ef..93fe585a7a32c 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-uproduct.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_prefix_uproduct(
-; CHECK-COUNT-17: call i32 @dx.op.wavePrefixOp.i32(i32 121, i32 {{.*}}, i8 1, i8 1)
-; SM69-CHECK-LABEL: define <17 x i32> @test_wave_prefix_uproduct(
-; SM69-CHECK: call <17 x i32> @llvm.dx.wave.prefix.uproduct.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.wavePrefixOp.i32(i32 121, i32 {{.*}}, i8 1, i8 1)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.wave.prefix.uproduct.v17i32
 define <17 x i32> @test_wave_prefix_uproduct(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.prefix.uproduct.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum.ll
index 76c2334718c82..e534c60c891be 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-prefix-usum.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_prefix_usum(
-; CHECK-COUNT-17: call i32 @dx.op.wavePrefixOp.i32(i32 121, i32 {{.*}}, i8 0, i8 1)
-; SM69-CHECK-LABEL: define <17 x i32> @test_wave_prefix_usum(
-; SM69-CHECK: call <17 x i32> @llvm.dx.wave.prefix.usum.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.wavePrefixOp.i32(i32 121, i32 {{.*}}, i8 0, i8 1)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.wave.prefix.usum.v17i32
 define <17 x i32> @test_wave_prefix_usum(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.prefix.usum.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-product.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-product.ll
index 496defeb99612..0726d01be7ce6 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-product.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-product.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_product(
-; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 1, i8 0)
-; SM69-CHECK-LABEL: define <17 x i32> @test_wave_product(
-; SM69-CHECK: call <17 x i32> @llvm.dx.wave.product.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 1, i8 0)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.wave.product.v17i32
 define <17 x i32> @test_wave_product(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.product.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-readlane.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-readlane.ll
index 2155baf49cb5b..a07cfc8ff424c 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-readlane.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-readlane.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_readlane(
-; CHECK-COUNT-17: call i32 @dx.op.waveReadLaneAt.i32(i32 117, i32 {{.*}}, i32 {{.*}})
-; SM69-CHECK-LABEL: define <17 x i32> @test_wave_readlane(
-; SM69-CHECK: call <17 x i32> @llvm.dx.wave.readlane.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.waveReadLaneAt.i32(i32 117, i32 {{.*}}, i32 {{.*}})
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.wave.readlane.v17i32
 define <17 x i32> @test_wave_readlane(<17 x i32> %a, i32 %lane) {
   %result = call <17 x i32> @llvm.dx.wave.readlane.v17i32(<17 x i32> %a, i32 %lane)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and.ll
index 5cb77ee8a2252..6dbad359d4736 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-and.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_and(
-; CHECK-COUNT-17: call i32 @dx.op.waveActiveBit.i32(i32 120, i32 {{.*}}, i8 0)
-; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_and(
-; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.and.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.waveActiveBit.i32(i32 120, i32 {{.*}}, i8 0)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.wave.reduce.and.v17i32
 define <17 x i32> @test_wave_reduce_and(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.and.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max.ll
index 086384d93429b..ef9adc1544a11 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-max.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_max(
-; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 3, i8 0)
-; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_max(
-; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.max.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 3, i8 0)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.wave.reduce.max.v17i32
 define <17 x i32> @test_wave_reduce_max(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.max.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min.ll
index 08d5cb54120c1..cff85cf1bfe5d 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-min.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_min(
-; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 2, i8 0)
-; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_min(
-; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.min.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 2, i8 0)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.wave.reduce.min.v17i32
 define <17 x i32> @test_wave_reduce_min(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.min.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or.ll
index 93fa95edf02d1..fbc0e1e3cf8a4 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-or.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_or(
-; CHECK-COUNT-17: call i32 @dx.op.waveActiveBit.i32(i32 120, i32 {{.*}}, i8 1)
-; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_or(
-; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.or.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.waveActiveBit.i32(i32 120, i32 {{.*}}, i8 1)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.wave.reduce.or.v17i32
 define <17 x i32> @test_wave_reduce_or(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.or.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum.ll
index 71c77e8e6beef..d6c1180df6215 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-sum.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_sum(
-; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 0, i8 0)
-; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_sum(
-; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.sum.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 0, i8 0)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.wave.reduce.sum.v17i32
 define <17 x i32> @test_wave_reduce_sum(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.sum.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax.ll
index b1616a847afe3..e13ec896cc4df 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umax.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_umax(
-; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 3, i8 1)
-; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_umax(
-; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.umax.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 3, i8 1)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.wave.reduce.umax.v17i32
 define <17 x i32> @test_wave_reduce_umax(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.umax.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin.ll
index 9edb3b2cbbb47..fb011d2c9c639 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-umin.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_umin(
-; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 2, i8 1)
-; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_umin(
-; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.umin.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 2, i8 1)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.wave.reduce.umin.v17i32
 define <17 x i32> @test_wave_reduce_umin(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.umin.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum.ll
index b537c68cee3a0..426bf4b237855 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-usum.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_usum(
-; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 0, i8 1)
-; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_usum(
-; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.usum.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 0, i8 1)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.wave.reduce.usum.v17i32
 define <17 x i32> @test_wave_reduce_usum(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.usum.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor.ll
index 3ea6714fec9c3..43c9ea2e40100 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-reduce-xor.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_reduce_xor(
-; CHECK-COUNT-17: call i32 @dx.op.waveActiveBit.i32(i32 120, i32 {{.*}}, i8 2)
-; SM69-CHECK-LABEL: define <17 x i32> @test_wave_reduce_xor(
-; SM69-CHECK: call <17 x i32> @llvm.dx.wave.reduce.xor.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.waveActiveBit.i32(i32 120, i32 {{.*}}, i8 2)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.wave.reduce.xor.v17i32
 define <17 x i32> @test_wave_reduce_xor(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.reduce.xor.v17i32(<17 x i32> %a)
   ret <17 x i32> %result
diff --git a/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct.ll b/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct.ll
index ce9f2828cef90..04ccf570a6710 100644
--- a/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct.ll
+++ b/llvm/test/CodeGen/DirectX/LongVector/wave-uproduct.ll
@@ -1,10 +1,9 @@
-; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s
-; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefix=SM69-CHECK
+; RUN: llc -mtriple=dxil-pc-shadermodel6.8-library -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR
+; RUN: llc -mtriple=dxil-pc-shadermodel6.9-library -stop-before=dxil-op-lower -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR
 
 ; CHECK-LABEL: define <17 x i32> @test_wave_uproduct(
-; CHECK-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 1, i8 1)
-; SM69-CHECK-LABEL: define <17 x i32> @test_wave_uproduct(
-; SM69-CHECK: call <17 x i32> @llvm.dx.wave.uproduct.v17i32
+; CHECK-SCALAR-COUNT-17: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 {{.*}}, i8 1, i8 1)
+; CHECK-VECTOR: call <17 x i32> @llvm.dx.wave.uproduct.v17i32
 define <17 x i32> @test_wave_uproduct(<17 x i32> %a) {
   %result = call <17 x i32> @llvm.dx.wave.uproduct.v17i32(<17 x i32> %a)
   ret <17 x i32> %result

>From ab141754fd8537aff99aab123aac30a59c3f75a9 Mon Sep 17 00:00:00 2001
From: Farzon Lotfi <farzon at farzon.org>
Date: Thu, 27 Aug 2026 01:51:31 -0400
Subject: [PATCH 4/4] update llc-pipeline.ll

---
 llvm/test/CodeGen/DirectX/llc-pipeline.ll | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/llvm/test/CodeGen/DirectX/llc-pipeline.ll b/llvm/test/CodeGen/DirectX/llc-pipeline.ll
index 02a583d823cb6..673df8187cf23 100644
--- a/llvm/test/CodeGen/DirectX/llc-pipeline.ll
+++ b/llvm/test/CodeGen/DirectX/llc-pipeline.ll
@@ -1,7 +1,8 @@
-; RUN: llc -filetype=asm -mtriple=dxil-pc-shadermodel6.3-library -O0 -debug-pass=Structure < %s -o /dev/null 2>&1 | grep -v "Verify generated machine code" | FileCheck %s --check-prefixes=CHECK,CHECK-ASM
-; RUN: llc -filetype=asm -mtriple=dxil-pc-shadermodel6.3-library -O1 -debug-pass=Structure < %s -o /dev/null 2>&1 | grep -v "Verify generated machine code" | FileCheck %s --check-prefixes=CHECK,CHECK-O1,CHECK-ASM
-; RUN: llc -filetype=obj -mtriple=dxil-pc-shadermodel6.3-library -O0 -debug-pass=Structure < %s -o /dev/null 2>&1 | grep -v "Verify generated machine code" | FileCheck %s --check-prefixes=CHECK,CHECK-OBJ
-; RUN: llc -filetype=obj -mtriple=dxil-pc-shadermodel6.3-library -O1 -debug-pass=Structure < %s -o /dev/null 2>&1 | grep -v "Verify generated machine code" | FileCheck %s --check-prefixes=CHECK,CHECK-O1,CHECK-OBJ
+; RUN: llc -filetype=asm -mtriple=dxil-pc-shadermodel6.3-library -O0 -debug-pass=Structure < %s -o /dev/null 2>&1 | grep -v "Verify generated machine code" | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR,CHECK-ASM
+; RUN: llc -filetype=asm -mtriple=dxil-pc-shadermodel6.3-library -O1 -debug-pass=Structure < %s -o /dev/null 2>&1 | grep -v "Verify generated machine code" | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR,CHECK-O1,CHECK-ASM
+; RUN: llc -filetype=asm -mtriple=dxil-pc-shadermodel6.9-library -O0 -debug-pass=Structure < %s -o /dev/null 2>&1 | grep -v "Verify generated machine code" | FileCheck %s --check-prefixes=CHECK,CHECK-VECTOR,CHECK-ASM
+; RUN: llc -filetype=obj -mtriple=dxil-pc-shadermodel6.3-library -O0 -debug-pass=Structure < %s -o /dev/null 2>&1 | grep -v "Verify generated machine code" | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR,CHECK-OBJ
+; RUN: llc -filetype=obj -mtriple=dxil-pc-shadermodel6.3-library -O1 -debug-pass=Structure < %s -o /dev/null 2>&1 | grep -v "Verify generated machine code" | FileCheck %s --check-prefixes=CHECK,CHECK-SCALAR,CHECK-O1,CHECK-OBJ
 
 ; REQUIRES: asserts
 
@@ -27,9 +28,10 @@
 ; CHECK-NEXT:     DXIL Resource Access
 ; CHECK-NEXT:   DXIL Intrinsic Expansion
 ; CHECK-NEXT:   DXIL Data Scalarization
-; CHECK-NEXT:   FunctionPass Manager
-; CHECK-NEXT:     Dominator Tree Construction
-; CHECK-NEXT:     Scalarize vector operations
+; CHECK-SCALAR-NEXT: FunctionPass Manager
+; CHECK-SCALAR-NEXT:   Dominator Tree Construction
+; CHECK-SCALAR-NEXT:   Scalarize vector operations
+; CHECK-VECTOR-NOT:  Scalarize vector operations
 ; CHECK-NEXT:   DXIL Array Flattener
 ; CHECK-NEXT:   FunctionPass Manager
 ; CHECK-NEXT:     Dominator Tree Construction



More information about the llvm-commits mailing list