https://github.com/joaosaffran updated https://github.com/llvm/llvm-project/pull/179600
>From 120e4db1dd9903e9191e1134d893144eab41f8e8 Mon Sep 17 00:00:00 2001 From: Joao Saffran <[email protected]> Date: Tue, 3 Feb 2026 19:03:50 -0800 Subject: [PATCH 1/2] add SROA, remove optnone and add test --- .../intermediate-stores-removed-when-O0.hlsl | 16 ++++++++++++++++ llvm/lib/Target/DirectX/DirectXTargetMachine.cpp | 4 +++- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 clang/test/CodeGenHLSL/intermediate-stores-removed-when-O0.hlsl diff --git a/clang/test/CodeGenHLSL/intermediate-stores-removed-when-O0.hlsl b/clang/test/CodeGenHLSL/intermediate-stores-removed-when-O0.hlsl new file mode 100644 index 0000000000000..79cfa31228f75 --- /dev/null +++ b/clang/test/CodeGenHLSL/intermediate-stores-removed-when-O0.hlsl @@ -0,0 +1,16 @@ +// RUN: not %clang_cc1 -triple dxilv1.7-unknown-shadermodel6.7-compute -O0 -S -hlsl-entry main -finclude-default-header -o - -x hlsl %s 2>&1 + + +// Issue caused by issue https://github.com/llvm/llvm-project/issues/168604 +// CHECK: error: Unsupported intrinsic llvm.experimental.noalias.scope.decl for DXIL lowering + +// CHECK-NOT: Load of {{.*}} is not a global resource handle + +RWBuffer<int> In : register(u0); +RWBuffer<int> Out : register(u1); + +[numthreads(1,1,1)] +void main(uint GI : SV_GroupIndex) { + Out[GI] = In[GI]; +} + diff --git a/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp b/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp index c0a92f92e1fba..67a28ada3c736 100644 --- a/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp +++ b/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp @@ -70,6 +70,7 @@ LLVMInitializeDirectXTarget() { initializeDXContainerGlobalsPass(*PR); initializeGlobalDCELegacyPassPass(*PR); initializeDXILOpLoweringLegacyPass(*PR); + initializeSROALegacyPassPass(*PR); initializeDXILResourceAccessLegacyPass(*PR); initializeDXILResourceImplicitBindingLegacyPass(*PR); initializeDXILTranslateMetadataLegacyPass(*PR); @@ -121,6 +122,7 @@ class DirectXPassConfig : public TargetPassConfig { DxilScalarOptions.ScalarizeLoadStore = true; addPass(createScalarizerPass(DxilScalarOptions)); addPass(createDXILFlattenArraysLegacyPass()); + addPass(createSROAPass()); addPass(createDXILForwardHandleAccessesLegacyPass()); addPass(createDeadStoreEliminationPass()); addPass(createDXILLegalizeLegacyPass()); @@ -147,7 +149,7 @@ DirectXTargetMachine::DirectXTargetMachine(const Target &T, const Triple &TT, DirectXTargetMachine::~DirectXTargetMachine() {} -void DirectXTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) { +void DirectXTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB){ #define GET_PASS_REGISTRY "DirectXPassRegistry.def" #include "llvm/Passes/TargetPassRegistry.inc" } >From a2196c2fe0048d5827de0652e558ace479fc3022 Mon Sep 17 00:00:00 2001 From: Joao Saffran <[email protected]> Date: Thu, 5 Feb 2026 10:45:38 -0800 Subject: [PATCH 2/2] fix llc-pipeline.ll test --- llvm/test/CodeGen/DirectX/llc-pipeline.ll | 1 + 1 file changed, 1 insertion(+) diff --git a/llvm/test/CodeGen/DirectX/llc-pipeline.ll b/llvm/test/CodeGen/DirectX/llc-pipeline.ll index 0af783a778812..a4a3f8f56b530 100644 --- a/llvm/test/CodeGen/DirectX/llc-pipeline.ll +++ b/llvm/test/CodeGen/DirectX/llc-pipeline.ll @@ -28,6 +28,7 @@ ; CHECK-NEXT: DXIL Array Flattener ; CHECK-NEXT: FunctionPass Manager ; CHECK-NEXT: Dominator Tree Construction +; CHECK-NEXT: SROA ; CHECK-NEXT: DXIL Forward Handle Accesses ; CHECK-NEXT: Dominator Tree Construction ; CHECK-NEXT: Basic Alias Analysis (stateless AA impl) _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
