This pr resolves some discrepancies in verification during `validate` in `DXILRootSignature.cpp`. Note: we don't add a backend test for version 1.0 flag values because it treats the struct as though there is no flags value. However, this will be used when we use the verifications in the frontend. - Updates `verifyDescriptorFlag` to check for valid flags based on version, as reflected [here](https://github.com/llvm/wg-hlsl/pull/297) - Add test to demonstrate updated flag verifications - Adds `verifyNumDescriptors` to the validation of `DescriptorRange`s - Add a test to demonstrate `numDescriptors` verification - Updates a number of tests that mistakenly had an invalid `numDescriptors` specified Resolves: https://github.com/llvm/llvm-project/issues/147107
21 lines
673 B
LLVM
21 lines
673 B
LLVM
; RUN: not opt -passes='print<dxil-root-signature>' %s -S -o - 2>&1 | FileCheck %s
|
|
|
|
target triple = "dxil-unknown-shadermodel6.0-compute"
|
|
|
|
; CHECK: error: Invalid value for DescriptorFlag: 22
|
|
; CHECK-NOT: Root Signature Definitions
|
|
|
|
define void @main() #0 {
|
|
entry:
|
|
ret void
|
|
}
|
|
attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
|
|
|
|
|
|
!dx.rootsignatures = !{!2} ; list of function/root signature pairs
|
|
!2 = !{ ptr @main, !3, i32 2 } ; function, root signature
|
|
!3 = !{ !5 } ; list of root signature elements
|
|
!5 = !{ !"DescriptorTable", i32 0, !6, !7 }
|
|
!6 = !{ !"SRV", i32 1, i32 1, i32 0, i32 -1, i32 22 }
|
|
!7 = !{ !"UAV", i32 5, i32 1, i32 10, i32 5, i32 2 }
|