[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:27:58 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/2] [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 4ed8b429fa91a4ef7885563f1ffa18c2af0e8a40 Mon Sep 17 00:00:00 2001
From: Farzon Lotfi <farzon at farzon.org>
Date: Thu, 27 Aug 2026 01:27:22 -0400
Subject: [PATCH 2/2] update llc pipeline for sm 6.9
---
llvm/lib/Target/DirectX/DirectXTargetMachine.cpp | 9 ++++++---
.../CodeGen/DirectX/LongVector/asdouble-sm69.ll | 10 ----------
.../DirectX/LongVector/ddx-coarse-sm69.ll | 10 ----------
.../CodeGen/DirectX/LongVector/ddx-fine-sm69.ll | 10 ----------
.../DirectX/LongVector/ddy-coarse-sm69.ll | 10 ----------
.../CodeGen/DirectX/LongVector/ddy-fine-sm69.ll | 10 ----------
.../DirectX/LongVector/firstbitlow-sm69.ll | 10 ----------
.../DirectX/LongVector/firstbitshigh-sm69.ll | 10 ----------
.../DirectX/LongVector/firstbituhigh-sm69.ll | 10 ----------
.../test/CodeGen/DirectX/LongVector/frac-sm69.ll | 10 ----------
.../test/CodeGen/DirectX/LongVector/imad-sm69.ll | 10 ----------
.../CodeGen/DirectX/LongVector/isinf-sm69.ll | 10 ----------
.../CodeGen/DirectX/LongVector/isnan-sm69.ll | 10 ----------
.../DirectX/LongVector/legacyf16tof32-sm69.ll | 10 ----------
.../DirectX/LongVector/legacyf32tof16-sm69.ll | 10 ----------
.../LongVector/quad-read-across-diagonal-sm69.ll | 10 ----------
.../LongVector/quad-read-across-x-sm69.ll | 10 ----------
.../LongVector/quad-read-across-y-sm69.ll | 10 ----------
.../CodeGen/DirectX/LongVector/rsqrt-sm69.ll | 10 ----------
.../CodeGen/DirectX/LongVector/saturate-sm69.ll | 10 ----------
.../test/CodeGen/DirectX/LongVector/umad-sm69.ll | 10 ----------
.../DirectX/LongVector/wave-all-equal-sm69.ll | 10 ----------
.../LongVector/wave-prefix-product-sm69.ll | 10 ----------
.../DirectX/LongVector/wave-prefix-sum-sm69.ll | 10 ----------
.../LongVector/wave-prefix-uproduct-sm69.ll | 10 ----------
.../DirectX/LongVector/wave-prefix-usum-sm69.ll | 10 ----------
.../DirectX/LongVector/wave-product-sm69.ll | 10 ----------
.../DirectX/LongVector/wave-readlane-sm69.ll | 10 ----------
.../DirectX/LongVector/wave-reduce-and-sm69.ll | 10 ----------
.../DirectX/LongVector/wave-reduce-max-sm69.ll | 10 ----------
.../DirectX/LongVector/wave-reduce-min-sm69.ll | 10 ----------
.../DirectX/LongVector/wave-reduce-or-sm69.ll | 10 ----------
.../DirectX/LongVector/wave-reduce-sum-sm69.ll | 10 ----------
.../DirectX/LongVector/wave-reduce-umax-sm69.ll | 10 ----------
.../DirectX/LongVector/wave-reduce-umin-sm69.ll | 10 ----------
.../DirectX/LongVector/wave-reduce-usum-sm69.ll | 10 ----------
.../DirectX/LongVector/wave-reduce-xor-sm69.ll | 10 ----------
.../DirectX/LongVector/wave-uproduct-sm69.ll | 10 ----------
llvm/test/CodeGen/DirectX/llc-pipeline.ll | 16 +++++++++-------
39 files changed, 15 insertions(+), 380 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..489b14d8ec7f2 100644
--- a/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp
+++ b/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp
@@ -129,9 +129,12 @@ class DirectXPassConfig : public TargetPassConfig {
addPass(createDXILResourceAccessLegacyPass());
addPass(createDXILIntrinsicExpansionLegacyPass());
addPass(createDXILDataScalarizationLegacyPass());
- ScalarizerPassOptions DxilScalarOptions;
- DxilScalarOptions.ScalarizeLoadStore = true;
- addPass(createScalarizerPass(DxilScalarOptions));
+ if (getDirectXTargetMachine().getTargetTriple().getDXILVersion() <
+ VersionTuple(1, 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/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-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/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-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/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/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/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/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/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/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/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/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/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/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-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-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/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/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/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/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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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/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