
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
20 lines
657 B
LLVM
20 lines
657 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 that 10 = DataVolatile | Datastatic is invalid due to mutually exclusive
|
|
|
|
; CHECK: error: Invalid value for RootDescriptorFlag: 10
|
|
; 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 = !{ !"RootCBV", i32 0, i32 1, i32 2, i32 10 }
|