- Set the shader flag `DisableOptimizations` based on `optnone` attribute of shader entry functions. - Add DXIL Metadata Analysis pass as pre-requisite for Shader Flags pass to obtain entry function information collected therein. - Named module metadata `dx.disable_optimizations` is intended to indicate disabling optimizations (`-O0`) via commandline flag. However, its intent is fulfilled by `optnone` attribute of shader entry functions as implemented in a recent change, and thus not needed. Delete generation of named metadata and corresponding test file `disable_opt.ll`. - Add tests to verify correctness of setting shader flag. Closes #112263
35 lines
1.4 KiB
LLVM
35 lines
1.4 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: ; D3D11_1_SB_GLOBAL_FLAG_SKIP_OPTIMIZATION
|
|
|
|
; CHECK: ; Shader Flags for Module Functions
|
|
; CHECK: ; Function main : 0x00000000
|
|
; 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" }
|