[llvm] 7ca0ce5 - [DirectX] Preserve all shader-stage bits during DXIL op lowering (#225874)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 25 12:49:36 PDT 2026
Author: Finn Plummer
Date: 2026-09-25T19:49:29Z
New Revision: 7ca0ce59bb82557a3052666562cc8f0d6d03ec41
URL: https://github.com/llvm/llvm-project/commit/7ca0ce59bb82557a3052666562cc8f0d6d03ec41
DIFF: https://github.com/llvm/llvm-project/commit/7ca0ce59bb82557a3052666562cc8f0d6d03ec41.diff
LOG: [DirectX] Preserve all shader-stage bits during DXIL op lowering (#225874)
The vertex-stage bit is above bit 15 and was lost when the mask was
narrowed to uint16_t. This would cause an incorrect lowering error:
https://godbolt.org/z/rEMj8ssK9.
Corrected by keeping it as a 32 bit value.
Assisted by: ChatGPT 6 Astra
Added:
Modified:
llvm/lib/Target/DirectX/DXILOpBuilder.cpp
llvm/test/CodeGen/DirectX/LoadInput.ll
llvm/test/CodeGen/DirectX/StoreOutput.ll
Removed:
################################################################################
diff --git a/llvm/lib/Target/DirectX/DXILOpBuilder.cpp b/llvm/lib/Target/DirectX/DXILOpBuilder.cpp
index 997b0cef3fdf5..9bb2521d7a9fd 100644
--- a/llvm/lib/Target/DirectX/DXILOpBuilder.cpp
+++ b/llvm/lib/Target/DirectX/DXILOpBuilder.cpp
@@ -568,7 +568,7 @@ Expected<CallInst *> DXILOpBuilder::tryCreateOp(dxil::OpCode OpCode,
return makeOpError(OpCode, Twine("No valid stage for DXIL version ") +
DXILVersion.getAsString());
- uint16_t ValidShaderKindMask = Prop->Stages[*StIndexOrErr].ValidStages;
+ uint32_t ValidShaderKindMask = Prop->Stages[*StIndexOrErr].ValidStages;
// Ensure valid shader stage properties are specified
if (ValidShaderKindMask == ShaderKind::removed)
diff --git a/llvm/test/CodeGen/DirectX/LoadInput.ll b/llvm/test/CodeGen/DirectX/LoadInput.ll
index 7eaed85b2df2c..bd52c20aeb818 100644
--- a/llvm/test/CodeGen/DirectX/LoadInput.ll
+++ b/llvm/test/CodeGen/DirectX/LoadInput.ll
@@ -1,4 +1,5 @@
; RUN: opt -S -dxil-intrinsic-expansion -dxil-op-lower %s | FileCheck %s
+; RUN: opt -S -mtriple=dxil-pc-shadermodel6.0-vertex -dxil-intrinsic-expansion -dxil-op-lower %s | FileCheck %s
target triple = "dxil-pc-shadermodel6.0-pixel"
diff --git a/llvm/test/CodeGen/DirectX/StoreOutput.ll b/llvm/test/CodeGen/DirectX/StoreOutput.ll
index e67c972941ba4..ac34339a6264d 100644
--- a/llvm/test/CodeGen/DirectX/StoreOutput.ll
+++ b/llvm/test/CodeGen/DirectX/StoreOutput.ll
@@ -1,4 +1,5 @@
; RUN: opt -S -dxil-intrinsic-expansion -dxil-op-lower %s | FileCheck %s
+; RUN: opt -S -mtriple=dxil-pc-shadermodel6.0-vertex -dxil-intrinsic-expansion -dxil-op-lower %s | FileCheck %s
target triple = "dxil-pc-shadermodel6.0-pixel"
More information about the llvm-commits
mailing list