llvm-project/llvm/test/CodeGen/DirectX/strip-rootsignatures.ll
Finn Plummer a8ef75e758
[DirectX] Strip dx.rootsignatures metadata during dxil-prepare (#145746)
The `dx.rootsignatures` metadata is not recognized in DXIL, so failure
to remove this will cause validation errors.

This metadata is parsed (within `RootSignatureAnalysisWrapper`) into its
binary format. As such, once it has been used to construct the binary
form, it can be safely discarded without loss of information.

This pr ensures that the dxil prepare pass will depend and preserve on
the root signature analysis so that it runs before the metadata is
removed.

- Update `DXILPrepare.cpp` to preserve and depend on
`RootSignatureAnalysisWrapper`
- Update test to demonstrate order is correct
- Provide test-case to demonstrate the metadata is removed

Resolves https://github.com/llvm/llvm-project/issues/145437.

----------

Co-authored-by: Justin Bogner <mail@justinbogner.com>
2025-06-25 14:06:46 -07:00

19 lines
515 B
LLVM

; RUN: opt -S -dxil-prepare < %s | FileCheck %s
; Ensures that dxil-prepare will remove the dx.rootsignatures metadata
target triple = "dxil-unknown-shadermodel6.0-compute"
define void @main() {
entry:
ret void
}
; CHECK-NOT: !dx.rootsignatures
; CHECK-NOT: {{^!}}
!dx.rootsignatures = !{!2} ; list of function/root signature pairs
!2 = !{ ptr @main, !3, i32 2 } ; function, root signature
!3 = !{ !4 } ; list of root signature elements
!4 = !{ !"RootFlags", i32 1 } ; 1 = allow_input_assembler_input_layout