Deric C. acdba28e14
[DirectX] Set whole-module flags prior to evaluating per-function flags (#139967)
Fixes #139024 and #139954

- Refactor DXILShaderFlags to compute the flags that apply to a whole
module before computing flags that apply individually to each function
- Make DXILResourceMap const, since it is not modified in
DXILShaderFlags
- Per-function shader flag analysis now initially starts with the set of
flags that apply to the whole module instead of starting from no flags.
This change fixes the above linked issues
- Fix shader flag tests affected by the above change
2025-05-15 13:43:29 -07:00

35 lines
1.3 KiB
LLVM

; RUN: opt -S --passes="print-dx-shader-flags" 2>&1 %s | FileCheck %s
; CHECK: ; Combined Shader Flags for Module
; CHECK-NEXT: ; Shader Flags Value: 0x00000001
; CHECK: ; Note: extra DXIL module flags:
; CHECK-NEXT: ; Disable shader optimizations
; CHECK: ; Shader Flags for Module Functions
; CHECK: ; Function main : 0x00000001
; The test source in this file generated from the following command:
; clang -cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -emit-llvm -O0 -o - <<EOF
; [numthreads(1,1,1)]
; [shader("compute")]
; void main() {}
; EOF
target triple = "dxilv1.0-pc-shadermodel6.0-compute"
; Function Attrs: convergent noinline norecurse optnone
define void @main() #0 {
entry:
ret void
}
; Function Attrs: alwaysinline convergent mustprogress norecurse nounwind
define noundef i32 @_Z3foov() #1 {
entry:
ret i32 0
}
attributes #0 = { convergent noinline norecurse optnone "approx-func-fp-math"="true" "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
attributes #1 = { alwaysinline convergent mustprogress norecurse nounwind "approx-func-fp-math"="true" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" }