
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
49 lines
1.9 KiB
LLVM
49 lines
1.9 KiB
LLVM
; RUN: opt %s -dxil-embed -dxil-globals -S -o - | FileCheck %s
|
|
; RUN: llc %s --filetype=obj -o - | obj2yaml | FileCheck %s --check-prefix=DXC
|
|
|
|
target triple = "dxil-unknown-shadermodel6.0-compute"
|
|
|
|
; CHECK: @dx.rts0 = private constant [92 x i8] c"{{.*}}", section "RTS0", align 4
|
|
|
|
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 4 }
|
|
!7 = !{ !"UAV", i32 5, i32 1, i32 10, i32 5, i32 2 }
|
|
|
|
; DXC: - Name: RTS0
|
|
; DXC-NEXT: Size: 92
|
|
; DXC-NEXT: RootSignature:
|
|
; DXC-NEXT: Version: 2
|
|
; DXC-NEXT: NumRootParameters: 1
|
|
; DXC-NEXT: RootParametersOffset: 24
|
|
; DXC-NEXT: NumStaticSamplers: 0
|
|
; DXC-NEXT: StaticSamplersOffset: 0
|
|
; DXC-NEXT: Parameters:
|
|
; DXC-NEXT: - ParameterType: 0
|
|
; DXC-NEXT: ShaderVisibility: 0
|
|
; DXC-NEXT: Table:
|
|
; DXC-NEXT: NumRanges: 2
|
|
; DXC-NEXT: RangesOffset: 44
|
|
; DXC-NEXT: Ranges:
|
|
; DXC-NEXT: - RangeType: 0
|
|
; DXC-NEXT: NumDescriptors: 1
|
|
; DXC-NEXT: BaseShaderRegister: 1
|
|
; DXC-NEXT: RegisterSpace: 0
|
|
; DXC-NEXT: OffsetInDescriptorsFromTableStart: 4294967295
|
|
; DXC-NEXT: DATA_STATIC_WHILE_SET_AT_EXECUTE: true
|
|
; DXC-NEXT: - RangeType: 1
|
|
; DXC-NEXT: NumDescriptors: 5
|
|
; DXC-NEXT: BaseShaderRegister: 1
|
|
; DXC-NEXT: RegisterSpace: 10
|
|
; DXC-NEXT: OffsetInDescriptorsFromTableStart: 5
|
|
; DXC-NEXT: DATA_VOLATILE: true
|