Bladeren bron

[lit] Make lit the only test runner (#5402)

Remove disable-lit and enable-lit from hctbuild/hcttest.

This is to allow write lit FileCheck shell test.
Xiang Li 2 jaren geleden
bovenliggende
commit
92ee02e9bd
7 gewijzigde bestanden met toevoegingen van 7 en 737 verwijderingen
  1. 2 0
      CMakeLists.txt
  2. 2 2
      appveyor.yml
  3. 3 3
      azure-pipelines.yml
  4. 0 10
      cmake/caches/PredefinedParams.cmake
  5. 0 12
      utils/hct/hctbuild.cmd
  6. 0 9
      utils/hct/hcttest.cmd
  7. 0 701
      utils/hct/hcttestcmds.cmd

+ 2 - 0
CMakeLists.txt

@@ -391,6 +391,8 @@ option(LLVM_BUILD_TESTS
   "Build LLVM unit tests. If OFF, just generate build targets." OFF)
 option(LLVM_INCLUDE_TESTS "Generate build targets for the LLVM unit tests." ON)
 
+option(HLSL_INCLUDE_TESTS  "Generate build targets for the HLSL unit tests." ON)
+
 option (LLVM_BUILD_DOCS "Build the llvm documentation." OFF)
 option (LLVM_INCLUDE_DOCS "Generate build targets for llvm documentation." ON)
 option (LLVM_ENABLE_DOXYGEN "Use doxygen to generate llvm API documentation." OFF)

+ 2 - 2
appveyor.yml

@@ -38,14 +38,14 @@ before_build:
 - cmd: call utils\hct\hctstart %HLSL_SRC_DIR% %HLSL_BLD_DIR%
 
 build_script:
-- cmd: call utils\hct\hctbuild -%PLATFORM% -%CONFIGURATION% -show-cmake-log -spirvtest -enable-lit
+- cmd: call utils\hct\hctbuild -%PLATFORM% -%CONFIGURATION% -show-cmake-log -spirvtest
 - sh: mkdir build && cd build
 - sh: cmake .. -GNinja -C ../cmake/caches/PredefinedParams.cmake -DSPIRV_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DLLVM_ENABLE_WERROR=On
 - sh: ninja
 
 test_script:
 - ps:  utils\appveyor\appveyor_test.ps1
-- cmd: call utils\hct\hcttest -rel clang -enable-lit
+- cmd: call utils\hct\hcttest -rel clang
 - sh: ./bin/dxc --help
 - sh: ./bin/dxc -T ps_6_0 ../tools/clang/test/CodeGenSPIRV/passthru-ps.hlsl2spv
 - sh: ./bin/dxc -T ps_6_0 -Fo passthru-ps.dxil ../tools/clang/test/CodeGenSPIRV/passthru-ps.hlsl2spv

+ 3 - 3
azure-pipelines.yml

@@ -28,15 +28,15 @@ stages:
       submodules: true
     - script: |
         call utils\hct\hctstart.cmd %HLSL_SRC_DIR% %HLSL_BLD_DIR%
-        call utils\hct\hctbuild.cmd -$(platform) -$(configuration) -show-cmake-log -spirvtest -enable-lit
+        call utils\hct\hctbuild.cmd -$(platform) -$(configuration) -show-cmake-log -spirvtest
       displayName: 'Building'
     - script: |
         call utils\hct\hctstart.cmd %HLSL_SRC_DIR% %HLSL_BLD_DIR%
-        call utils\hct\hcttest.cmd -$(configuration) noexec -enable-lit
+        call utils\hct\hcttest.cmd -$(configuration) noexec
       displayName: 'DXIL Tests'
     - script: |
         call utils\hct\hctstart.cmd %HLSL_SRC_DIR% %HLSL_BLD_DIR%
-        call utils\hct\hcttest.cmd -$(configuration) spirv_only -enable-lit
+        call utils\hct\hcttest.cmd -$(configuration) spirv_only
       displayName: 'SPIRV Tests'
 
   - job: Nix

+ 0 - 10
cmake/caches/PredefinedParams.cmake

@@ -12,16 +12,6 @@ if (DXC_COVERAGE)
   set(LLVM_CODE_COVERAGE_TEST_TARGETS "check-all" CACHE STRING "")
 endif()
 
-# TODO: remove this option after switch to support lit only.
-if (DXC_DISABLE_LIT)
-  set(LLVM_TEST_VALUE OFF)
-else()
-  set(LLVM_TEST_VALUE ON)
-endif()
-
-set(LLVM_INCLUDE_TESTS ${LLVM_TEST_VALUE} CACHE BOOL "")
-set(CLANG_INCLUDE_TESTS ${LLVM_TEST_VALUE} CACHE BOOL "")
-
 set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "")
 set(LLVM_APPEND_VC_REV ON CACHE BOOL "")
 set(LLVM_DEFAULT_TARGET_TRIPLE "dxil-ms-dx" CACHE STRING "")

+ 0 - 12
utils/hct/hctbuild.cmd

@@ -42,7 +42,6 @@ set SPV_TEST=OFF
 set DXILCONV=ON
 set DXC_CMAKE_SYSTEM_VERSION=
 set SHOW_CMAKE_LOG=0
-set ENABLE_LIT=ON
 set WINSDK_MIN_VERSION=10.0.17763.0
 set INSTALL_DIR=
 set DEFAULT_EXEC_ADAPTER=-DTAEF_EXEC_ADAPTER=
@@ -189,16 +188,6 @@ if "%1"=="-dxc-cmake-system-version" (
 if "%1"=="-show-cmake-log" (
   set SHOW_CMAKE_LOG=1
   shift /1 & goto :parse_args
-)  
-if "%1"=="-disable-lit" (
-  echo Disable LIT testing
-  set ENABLE_LIT=OFF
-  shift /1 & goto :parse_args
-)
-if "%1"=="-enable-lit" (
-  echo Enable LIT testing
-  set ENABLE_LIT=ON
-  shift /1 & goto :parse_args
 )
 if "%1"=="-lit-xml-output-path" (
   set "CMAKE_OPTS=%CMAKE_OPTS% -DLLVM_LIT_ARGS=--xunit-xml-output=%~2"
@@ -325,7 +314,6 @@ set CMAKE_OPTS=%CMAKE_OPTS% -DENABLE_SPIRV_CODEGEN:BOOL=%SPIRV%
 set CMAKE_OPTS=%CMAKE_OPTS% -DSPIRV_BUILD_TESTS:BOOL=%SPV_TEST%
 set CMAKE_OPTS=%CMAKE_OPTS% -DCLANG_ENABLE_ARCMT:BOOL=OFF
 set CMAKE_OPTS=%CMAKE_OPTS% -DCLANG_ENABLE_STATIC_ANALYZER:BOOL=OFF
-set CMAKE_OPTS=%CMAKE_OPTS% -DCLANG_INCLUDE_TESTS:BOOL=%ENABLE_LIT% -DLLVM_INCLUDE_TESTS:BOOL=%ENABLE_LIT%
 set CMAKE_OPTS=%CMAKE_OPTS% -DHLSL_INCLUDE_TESTS:BOOL=ON
 set CMAKE_OPTS=%CMAKE_OPTS% -DLLVM_TARGETS_TO_BUILD:STRING=None
 set CMAKE_OPTS=%CMAKE_OPTS% -DLLVM_INCLUDE_DOCS:BOOL=OFF -DLLVM_INCLUDE_EXAMPLES:BOOL=OFF

+ 0 - 9
utils/hct/hcttest.cmd

@@ -161,10 +161,6 @@ if "%1"=="-clean" (
   set TEST_EXTRAS=1
 ) else if "%1"=="-ninja" (
   set GENERATOR_NINJA=1
-) else if "%1"=="-disable-lit" (
-  set TEST_USE_LIT=0
-) else if "%1"=="-enable-lit" (
-  set TEST_USE_LIT=1
 ) else if "%1"=="-rel" (
   set BUILD_CONFIG=Release
 ) else if /i "%1"=="-Release" (
@@ -417,11 +413,6 @@ if "%TEST_CLANG%"=="1" (
   set RES_CLANG=!ERRORLEVEL!
 )
 
-if "%TEST_CMD%"=="1" (
-  copy /y %HLSL_SRC_DIR%\utils\hct\cmdtestfiles\smoke.hlsl %TEST_DIR%\smoke.hlsl
-  call %HLSL_SRC_DIR%\utils\hct\hcttestcmds.cmd %TEST_DIR% %HLSL_SRC_DIR%\tools\clang\test\HLSL
-  set RES_CMD=!ERRORLEVEL!
-)
 
 if "%TEST_EXEC%"=="1" (
   call :copyagility

+ 0 - 701
utils/hct/hcttestcmds.cmd

@@ -1,701 +0,0 @@
-@echo off
-
-if "%1"=="" (
-  echo First argument to hcttestcmds should be directory with command-line tools.
-  exit /b 1
-)
-
-echo Testing command line programs at %1 ...
-
-setlocal enableextensions enabledelayedexpansion
-
-set script_dir=%~dp0
-set testfiles=%script_dir%..\..\tools\clang\test\DXC
-set Failed=0
-set FailingCmdWritten=0
-set OutputLog=%1\testcmd.log
-set LogOutput=1
-
-if "%HLSL_TESTCMD_CLEANUP_ON_FAILURE%" == "" set HLSL_TESTCMD_CLEANUP_ON_FAILURE=1
-
-pushd %1
-
-set testname=Basic Rewriter Smoke Test
-call :run dxr.exe -remove-unused-globals "%testfiles%\Inputs\smoke.hlsl" -Emain
-call :check_file log find-not g_unused
-if %Failed% neq 0 goto :failed
-
-
-echo Smoke test for dxc command line program ...
-
-set testname=Basic DXC Smoke Test
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /Fc smoke.hlsl.h
-call :check_file smoke.hlsl.h find "define void @main()" del
-if %Failed% neq 0 goto :failed
-
-set testname=Test extra DXC outputs together
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /DDX12 /Dcheck_warning /Fh smoke.hlsl.h /Vn g_myvar /Fc smoke.ll /Fo smoke.cso /Fre smoke.reflection /Frs smoke.rootsig /Fe smoke.err
-call :check_file smoke.hlsl.h find g_myvar find "0x44, 0x58" find "define void @main()" del
-call :check_file smoke.ll find "define void @main()" del
-call :check_file smoke.cso del
-call :check_file smoke.reflection del
-call :check_file smoke.rootsig del
-call :check_file smoke.err find "warning: expression result unused" del
-if %Failed% neq 0 goto :failed
-
-set testname=Test importing resource binding table
-call :run dxc.exe /T ps_6_0 "%testfiles%\binding_table.hlsl" -import-binding-table "%testfiles%\binding_table.txt"
-if %Failed% neq 0 goto :failed
-
-set testname=/Fd implies /Qstrip_debug
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /Zi /Fd smoke.hlsl.d /Fo smoke.hlsl.Fd.dxo
-call :check_file smoke.hlsl.d del
-call :check_file smoke.hlsl.Fd.dxo
-if %Failed% neq 0 goto :failed
-call :run dxc.exe -dumpbin smoke.hlsl.Fd.dxo
-rem Should have debug name, and debug info should be stripped from module
-call :check_file log find "shader debug name: smoke.hlsl.d" find-not "DICompileUnit"
-if %Failed% neq 0 goto :failed
-
-set testname=/Fd plus /Zs
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /Zs /Fd smoke.hlsl.pdb /Fo smoke.hlsl.Fd.dxo
-call :check_file smoke.hlsl.pdb del
-call :check_file smoke.hlsl.Fd.dxo
-if %Failed% neq 0 goto :failed
-
-rem del .pdb file if exists
-del %CD%\*.pdb 1>nul 2>nul
-
-set testname=/Fd implies /Qstrip_debug ; path with \ produces auto hash-named .pdb file
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /Zi /Fd .\ /Fo smoke.hlsl.strip
-rem .pdb file should be produced
-call :check_file *.PDB del
-if %Failed% neq 0 goto :failed
-call :run dxc.exe -dumpbin smoke.hlsl.strip
-rem auto debug name is hex digest + .pdb
-call :check_file log find-opt -r "shader debug name: [0-9a-f]*.pdb" find-not "DICompileUnit" del
-if %Failed% neq 0 goto :failed
-
-rem del .pdb file if exists
-del %CD%\*.pdb 1>nul 2>nul
-
-set testname=Embed debug info
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /Zi /Qembed_debug /Fo smoke.hlsl.embedpdb
-call :check_file smoke.hlsl.embedpdb
-if %Failed% neq 0 goto :failed
-rem .pdb file should NOT be produced
-call :check_file_not *.pdb del
-call :run dxc.exe -dumpbin smoke.hlsl.embedpdb
-rem should have auto debug name, which is hex digest + .pdb
-call :check_file log find-opt -r "shader debug name: [0-9a-f]*.pdb" find "DICompileUnit" del
-call :check_file smoke.hlsl.embedpdb del
-if %Failed% neq 0 goto :failed
-
-set testname=Auto-embed debug info when no debug output, and expect warning signifying that this is the case.
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /Zi /Fo smoke.hlsl.embedpdb /Fe smoke.err.embedpdb
-call :check_file smoke.hlsl.embedpdb
-rem Search for warning:
-call :check_file smoke.err.embedpdb find "warning: no output provided for debug - embedding PDB in shader container.  Use -Qembed_debug to silence this warning." del
-rem .pdb file should NOT be produced
-call :check_file_not *.pdb del
-if %Failed% neq 0 goto :failed
-call :run dxc.exe -dumpbin smoke.hlsl.embedpdb
-rem should have auto debug name, which is hex digest + .pdb
-call :check_file log find-opt -r "shader debug name: [0-9a-f]*.pdb" find "DICompileUnit"
-call :check_file smoke.hlsl.embedpdb del
-if %Failed% neq 0 goto :failed
-
-set testname=/Zi with /Qstrip_debug and no output should not embed
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /Zi /Qstrip_debug /Fo smoke.hlsl.strip
-call :check_file smoke.hlsl.strip
-if %Failed% neq 0 goto :failed
-call :run dxc.exe -dumpbin smoke.hlsl.strip
-call :check_file log find-opt -r "shader debug name: [0-9a-f]*.pdb" find-not "DICompileUnit"
-call :check_file smoke.hlsl.strip del
-if %Failed% neq 0 goto :failed
-
-set testname=/Qstrip_reflect strips reflection
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" -D DX12 /Qstrip_reflect /Fo smoke.hlsl.strip
-call :check_file smoke.hlsl.strip
-if %Failed% neq 0 goto :failed
-call :run dxc.exe -dumpbin smoke.hlsl.strip
-call :check_file log find-not "i32 6, !\"g\""
-call :check_file smoke.hlsl.strip del
-if %Failed% neq 0 goto :failed
-
-set testname=Dump dependency files
-call :run dxc.exe /T ps_6_0 -I"%testfiles%\Inputs" "%testfiles%\dump_dependency.hlsl" /M
-call :check_file log find dump_dependency.hlsl find dependency0.h find dependency1.h find dependency2.h find dependency3.h find dependency4.h find dependency5.h del
-call :run dxc.exe /T ps_6_0 -I"%testfiles%\Inputs" "%testfiles%\dump_dependency.hlsl" /MFdeps
-call :check_file deps find dump_dependency.hlsl find dependency0.h find dependency1.h find dependency2.h find dependency3.h find dependency4.h find dependency5.h del
-call :run dxc.exe /T ps_6_0 -I"%testfiles%\Inputs" "%testfiles%\dump_dependency.hlsl" /MD
-call :check_file "%testfiles%\dump_dependency.d" find dump_dependency.hlsl find dependency0.h find dependency1.h find dependency2.h find dependency3.h find dependency4.h find dependency5.h del
-if %Failed% neq 0 goto :failed
-
-set testname=ast-dump
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /ast-dump
-call :check_file log find TranslationUnitDecl
-if %Failed% neq 0 goto :failed
-
-set testname=time-report
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" -ftime-report
-call :check_file log find "Pass execution timing report"
-if %Failed% neq 0 goto :failed
-
-set testname=time-report
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" -ftime-trace
-call :check_file log find "traceEvents"
-if %Failed% neq 0 goto :failed
-
-set testname=Check Warning
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /Dcheck_warning
-call :check_file log find warning:
-if %Failed% neq 0 goto :failed
-
-set testname=/no-warnings
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /Dcheck_warning /no-warnings
-call :check_file log find-not warning:
-if %Failed% neq 0 goto :failed
-
-set testname=Preprocess
-call :run dxc.exe "%testfiles%\Inputs\smoke.hlsl" /P preprocessed.hlsl
-call :check_file preprocessed.hlsl find "float4 main"
-if %Failed% neq 0 goto :failed
-
-set testname=-force_rootsig_ver
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" -force_rootsig_ver rootsig_1_0
-if %Failed% neq 0 goto :failed
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" -force_rootsig_ver rootsig_1_1
-if %Failed% neq 0 goto :failed
-call :run-fail dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" -force_rootsig_ver rootsig_2_0
-if %Failed% neq 0 goto :failed
-
-set testname=Root Signature target
-echo #define main "CBV(b0)"> test-global-rs.hlsl
-call :run dxc -T rootsig_1_1 test-global-rs.hlsl -rootsig-define main -Fo test-global-rs.cso
-call :check_file test-global-rs.cso del
-if %Failed% neq 0 goto :failed
-
-set testname=Local Root Signature target
-echo #define main "CBV(b0), RootFlags(LOCAL_ROOT_SIGNATURE)"> test-local-rs.hlsl
-call :run dxc -T rootsig_1_1 test-local-rs.hlsl -rootsig-define main -Fo test-local-rs.cso
-call :check_file test-local-rs.cso del
-if %Failed% neq 0 goto :failed
-
-set testname=HLSL Version
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /HV 2016
-call :run-fail dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /HV 2015
-if %Failed% neq 0 goto :failed
-
-set testname=Embed Debug, Recompile
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /Zi /Qembed_debug /Fo smoke.cso 1> nul
-call :check_file smoke.cso
-if %Failed% neq 0 goto :failed
-call :run dxc.exe -dumpbin smoke.cso
-call :check_file log find "DICompileUnit"
-call :check_file smoke.cso del
-if %Failed% neq 0 goto :failed
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /Zi /Qembed_debug /Fo smoke.cso /Cc /Ni /No /Lx
-call :check_file smoke.cso
-if %Failed% neq 0 goto :failed
-call :run dxc.exe -dumpbin smoke.cso
-call :check_file log find "DICompileUnit"
-if %Failed% neq 0 goto :failed
-call :run dxc.exe smoke.cso /recompile
-if %Failed% neq 0 goto :failed
-call :run dxc.exe smoke.cso /recompile /T ps_6_0 /E main
-if %Failed% neq 0 goto :failed
-
-set testname=Strip Debug, Recompile PDB
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /Zi /Fd smoke.pdb 1> nul
-call :check_file smoke.pdb
-if %Failed% neq 0 goto :failed
-call :run dxc.exe -dumpbin smoke.pdb
-call :check_file log find "DICompileUnit"
-if %Failed% neq 0 goto :failed
-call :run dxc.exe smoke.pdb /recompile > smoke.pdb.ll
-if %Failed% neq 0 goto :failed
-call :run dxc.exe smoke.pdb /recompile /T ps_6_0 /E main
-if %Failed% neq 0 goto :failed
-call :check_file smoke.pdb del
-
-rem Note: this smoke.cso is used for a lot of other tests, and they rely on options set here
-set testname=Command-line Defines, Recompile
-call :run dxc.exe "%testfiles%\Inputs\smoke.hlsl" /D "semantic = SV_Position" /T vs_6_0 /Zi /Qembed_debug /DDX12 /Fo smoke.cso
-call :check_file smoke.cso
-if %Failed% neq 0 goto :failed
-call :run dxc.exe smoke.cso /recompile
-if %Failed% neq 0 goto :failed
-
-set testname=Strip Debug from compiled object
-call :run dxc.exe smoke.cso /dumpbin /Qstrip_debug /Fo nodebug.cso
-call :check_file nodebug.cso
-if %Failed% neq 0 goto :failed
-set testname=Strip Root Signature from compiled object
-call :run dxc.exe smoke.cso /dumpbin /Qstrip_rootsignature /Fo norootsignature.cso
-call :check_file norootsignature.cso
-if %Failed% neq 0 goto :failed
-set testname=Extract rootsignature from compiled object
-call :run dxc.exe smoke.cso /dumpbin /extractrootsignature /Fo rootsig.cso
-call :check_file rootsig.cso
-if %Failed% neq 0 goto :failed
-call :check_file smoke.cso del
-set testname=Add rootsignature to compiled object
-call :run dxc.exe norootsignature.cso /dumpbin /setrootsignature rootsig.cso /Fo smoke.cso
-call :check_file rootsig.cso del
-rem These are still needed later:
-call :check_file smoke.cso
-call :check_file norootsignature.cso
-if %Failed% neq 0 goto :failed
-rem Check that it added by extracting
-call :run dxc.exe smoke.cso /dumpbin /extractrootsignature /Fo rootsig.cso
-rem Need these later:
-call :check_file smoke.cso
-call :check_file rootsig.cso
-if %Failed% neq 0 goto :failed
-
-set testname=Compile NonUniform.hlsl, extract and strip root signature
-call :run dxc.exe "%testfiles%\NonUniform.hlsl" /T ps_6_0 /DDX12 /Fo NonUniform.cso
-call :check_file NonUniform.cso
-if %Failed% neq 0 goto :failed
-call :run dxc.exe NonUniform.cso /dumpbin /Qstrip_rootsignature /Fo NonUniformNoRootSig.cso
-call :check_file NonUniformNoRootSig.cso
-if %Failed% neq 0 goto :failed
-call :run dxc.exe NonUniform.cso /dumpbin /extractrootsignature /Fo NonUniformRootSig.cso
-call :check_file NonUniformRootSig.cso
-if %Failed% neq 0 goto :failed
-
-set testname=Verify root signature for smoke.cso
-call :run dxc.exe smoke.cso /dumpbin /verifyrootsignature rootsig.cso
-if %Failed% neq 0 goto :failed
-call :run dxc.exe norootsignature.cso /dumpbin /verifyrootsignature rootsig.cso
-if %Failed% neq 0 goto :failed
-
-set testname=Verify root signature for NonUniform.cso
-call :run dxc.exe NonUniform.cso /dumpbin /verifyrootsignature NonUniformRootSig.cso
-if %Failed% neq 0 goto :failed
-call :run dxc.exe NonUniformNoRootSig.cso /dumpbin /verifyrootsignature NonUniformRootSig.cso
-if %Failed% neq 0 goto :failed
-
-set testname=Verify mismatched root signatures fail verification
-call :run-fail dxc.exe NonUniformNoRootSig.cso /dumpbin /verifyrootsignature rootsig.cso
-if %Failed% neq 0 goto :failed
-call :run-fail dxc.exe norootsignature.cso /dumpbin /verifyrootsignature NonUniformRootSig.cso
-if %Failed% neq 0 goto :failed
-
-set testname=Set root signature when already has one should succeed
-call :run dxc.exe smoke.cso /dumpbin /setrootsignature rootsig.cso /Fo smoke.rsadded.cso
-call :check_file smoke.rsadded.cso del
-if %Failed% neq 0 goto :failed
-
-set testname=Set mismatched root signature when already has one should fail
-call :run-fail dxc.exe smoke.cso /dumpbin /setrootsignature NonUniformRootSig.cso /Fo smoke.rsadded.cso
-call :check_file_not smoke.rsadded.cso del
-if %Failed% neq 0 goto :failed
-
-set testname=Compile TextVS.hlsl
-call :run dxc.exe "%testfiles%\TextVS.hlsl" -I"%testfiles%\Inputs" /Tvs_6_0 /Zi /Qembed_debug /Fo TextVS.cso
-call :check_file TextVS.cso
-if %Failed% neq 0 goto :failed
-call :run dxc.exe smoke.cso /dumpbin /verifyrootsignature TextVS.cso
-call :check_file TextVS.cso del
-if %Failed% neq 0 goto :failed
-
-set testname=Set private data
-echo private data > private.txt
-call :check_file private.txt
-call :run dxc.exe smoke.cso /dumpbin /setprivate private.txt /Fo private.cso
-call :check_file private.cso
-if %Failed% neq 0 goto :failed
-call :run dxc.exe private.cso /dumpbin /setprivate private.txt /Fo private.cso
-call :check_file private.cso
-if %Failed% neq 0 goto :failed
-call :run dxc.exe private.cso /dumpbin /Qstrip_priv /Fo noprivate.cso
-call :check_file noprivate.cso
-if %Failed% neq 0 goto :failed
-call :run dxc.exe private.cso /dumpbin /getprivate private1.txt
-call :check_file private1.txt find "private data" del
-if %Failed% neq 0 goto :failed
-set testname=Appending and removing private data blob roundtrip
-call :run FC smoke.cso noprivate.cso
-call :check_file noprivate.cso del
-if %Failed% neq 0 goto :failed
-set testname=Strip multiple, verify stripping
-call :run dxc.exe private.cso /dumpbin /Qstrip_priv /Qstrip_debug /Qstrip_rootsignature /Fo noprivdebugroot.cso
-call :check_file noprivdebugroot.cso
-if %Failed% neq 0 goto :failed
-call :run-fail dxc.exe noprivdebugroot.cso /dumpbin /getprivate private1.txt
-call :check_file_not private1.txt del
-if %Failed% neq 0 goto :failed
-call :run-fail dxc.exe noprivdebugroot.cso /dumpbin /extractrootsignature rootsig1.cso
-call :check_file_not rootsig1.cso del
-if %Failed% neq 0 goto :failed
-call :run dxc.exe noprivdebugroot.cso /dumpbin
-call :check_file_not log find-not "DICompileUnit"
-if %Failed% neq 0 goto :failed
-rem Cleanup
-call :check_file private.cso del
-call :check_file noprivdebugroot.cso del
-if %Failed% neq 0 goto :failed
-
-set testname=dxc.exe shader model upgrade
-call :run dxc.exe -dumpbin smoke.cso -Fc smoke.ll
-rem smoke.ll is used later to assemble, so don't delete it.
-call :check_file smoke.ll find "DICompileUnit"
-if %Failed% neq 0 goto :failed
-
-set testname=dxc.exe shader model version promtion warning
-rem shader model version promotion warning prints to stderr, so not captured in /Fe
-dxc.exe "%testfiles%\Inputs\smoke.hlsl" /Emain /Tps_5_0 2>smoke.err
-call :check_file smoke.err find "warning: Promoting older shader model profile to 6.0 version."
-if %Failed% neq 0 goto :failed
-dxc.exe "%testfiles%\Inputs\smoke.hlsl" /Emain /Tps_5_1 2>smoke.err
-call :check_file smoke.err find "warning: Promoting older shader model profile to 6.0 version."
-if %Failed% neq 0 goto :failed
-
-set testname=dxa command line program
-call :run dxa.exe smoke.cso -listfiles
-if %Failed% neq 0 goto :failed
-call :check_file log find "smoke.hlsl"
-if %Failed% neq 0 goto :failed
-
-set testname=dxa -listparts
-call :run dxa.exe smoke.cso -listparts
-if %Failed% neq 0 goto :failed
-rem Check for expected parts for this container
-call :check_file log find DXIL find ILDB find RTS0 find PSV0 find STAT find ILDN find HASH find ISG1 find OSG1
-if %Failed% neq 0 goto :failed
-
-set testname=dxa extract debug module
-call :run dxa.exe smoke.cso -extractpart dbgmodule -o smoke.cso.dbgmodule
-call :check_file smoke.cso.dbgmodule
-if %Failed% neq 0 goto :failed
-call :run dxa.exe smoke.cso.dbgmodule -listfiles
-call :check_file log find "smoke.hlsl"
-if %Failed% neq 0 goto :failed
-
-set testname=dxa extract all files from debug module
-call :run dxa.exe smoke.cso.dbgmodule -extractfile *
-call :check_file log find "float4 main()"
-if %Failed% neq 0 goto :failed
-
-set testname=dxa extract DXIL module and build container from that
-call :run dxa.exe smoke.cso -extractpart module -o smoke.cso.plain.bc
-call :check_file smoke.cso.plain.bc
-if %Failed% neq 0 goto :failed
-call :run dxa.exe smoke.cso.plain.bc -o smoke.rebuilt-container.cso
-call :check_file smoke.rebuilt-container.cso del
-call :check_file smoke.cso.plain.bc del
-if %Failed% neq 0 goto :failed
-
-set testname=dxa assemble container from smoke.ll
-call :run dxa.exe smoke.ll -o smoke.rebuilt-container2.cso
-call :check_file smoke.rebuilt-container2.cso del
-if %Failed% neq 0 goto :failed
-
-set testname=dxa dump reflection
-call :run dxa.exe -dumpreflection smoke.cso
-if %Failed% neq 0 goto :failed
-rem Check for expected parts for this container
-call :check_file log find "D3D12_SHADER_INPUT_BIND_DESC: Name: $Globals"
-if %Failed% neq 0 goto :failed
-
-set testname=Smoke test for dxopt command line
-call :run-nolog dxc /Odump /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" > passes.txt
-call :check_file passes.txt find emit
-if %Failed% neq 0 goto :failed
-echo -print-module >> passes.txt
-call :run dxc /T ps_6_0 "%testfiles%\Inputs\smoke.hlsl" /fcgl -Fc smoke.hl.ll
-call :check_file smoke.hl.ll
-if %Failed% neq 0 goto :failed
-call :run-nolog dxopt -pf passes.txt -o=smoke.opt.bc smoke.hl.ll > smoke.opt.prn.txt
-call :check_file smoke.opt.bc del
-call :check_file smoke.opt.prn.txt find MODULE-PRINT del
-if %Failed% neq 0 goto :failed
-
-set testname=Smoke test for dxc_batch command line
-call :run dxc_batch.exe -lib-link -multi-thread "%testfiles%\Inputs\batch_cmds2.txt"
-if %Failed% neq 0 goto :failed
-call :run dxc_batch.exe -lib-link -multi-thread "%testfiles%\Inputs\batch_cmds.txt"
-if %Failed% neq 0 goto :failed
-call :run dxc_batch.exe -multi-thread "%testfiles%\Inputs\batch_cmds.txt"
-if %Failed% neq 0 goto :failed
-
-set testname=Smoke test for dxl command line
-call :run dxc.exe -T lib_6_x "%testfiles%\lib_entry4.hlsl" -Fo lib_entry4.dxbc
-call :check_file lib_entry4.dxbc
-if %Failed% neq 0 goto :failed
-call :run dxc.exe -T lib_6_x "%testfiles%\Inputs\lib_res_match.hlsl" -Fo lib_res_match.dxbc
-call :check_file lib_res_match.dxbc
-if %Failed% neq 0 goto :failed
-call :run dxl.exe -T ps_6_0 lib_res_match.dxbc;lib_entry4.dxbc -Fo res_match_entry.dxbc
-call :check_file lib_entry4.dxbc del
-call :check_file lib_res_match.dxbc del
-call :check_file res_match_entry.dxbc del
-if %Failed% neq 0 goto :failed
-
-set testname=Test for denorm options
-call :run dxc.exe "%testfiles%\Inputs\smoke.hlsl" /Tps_6_2 /denorm preserve
-if %Failed% neq 0 goto :failed
-call :run dxc.exe "%testfiles%\Inputs\smoke.hlsl" /Tps_6_2 /denorm ftz
-if %Failed% neq 0 goto :failed
-call :run-fail dxc.exe "%testfiles%\Inputs\smoke.hlsl" /Tps_6_2 /denorm abc
-if %Failed% neq 0 goto :failed
-call :run-fail dxc.exe "%testfiles%\Inputs\smoke.hlsl" /Tps_6_1 /denorm any
-if %Failed% neq 0 goto :failed
-
-set testname=Test /enable-16bit-types
-call :run dxc.exe "%testfiles%\Inputs\smoke.hlsl" /Tps_6_2 /enable-16bit-types
-if %Failed% neq 0 goto :failed
-call :run-fail dxc.exe "%testfiles%\Inputs\smoke.hlsl" /Tps_6_1 /enable-16bit-types
-if %Failed% neq 0 goto :failed
-call :run-fail dxc.exe "%testfiles%\Inputs\smoke.hlsl" /Tps_6_2 /enable-16bit-types /HV 2017
-if %Failed% neq 0 goto :failed
-
-set testname=Test file with relative path and include
-mkdir subfolder 2>nul
-mkdir inc       2>nul
-copy "%testfiles%\include-main.hlsl" subfolder >nul
-call :check_file subfolder\include-main.hlsl
-copy "%testfiles%\Inputs\inc\include-declarations.h" inc  >nul
-call :check_file inc\include-declarations.h
-call :run dxc.exe -Tps_6_0 -I inc subfolder\include-main.hlsl
-if %Failed% neq 0 goto :failed
-call :run dxc.exe -P include-main.hlsl.pp -I inc subfolder\include-main.hlsl
-if %Failed% neq 0 goto :failed
-
-set testname=Test display include process with /Vi
-call :run dxc.exe -Tps_6_0 -Vi -I inc subfolder\include-main.hlsl
-if %Failed% neq 0 goto :failed
-call :check_file log find "; Opening file ["
-call :check_file log find "inc\include-declarations.h], stack top [0]"
-if %Failed% neq 0 goto :failed
-
-set testname=Test Version macro
-for %%v in (2016 2017 2018 2021) do (
-  call :run dxc.exe -HV %%v -P %%v.hlsl.pp %testfiles%\VersionMacro.hlsl
-  if %Failed% neq 0 goto :failed
-  call :check_file %%v.hlsl.pp find %%v del
-  if %Failed% neq 0 goto :failed
-)
-
-set testname=Test v202x macro
-call :run dxc.exe -HV 202x -P v202x.hlsl.pp %testfiles%\VersionMacro.hlsl
-if %Failed% neq 0 goto :failed
-call :check_file v202x.hlsl.pp find 2029 del
-if %Failed% neq 0 goto :failed
-
-set testname=Test shader profile macro
-for %%p in (vs ps gs hs ds cs lib) do (
-  for %%v in (5 6) do (
-    if "%%p" == "lib" ( if %%v leq 2 goto :next )
-    if "%%p" == "ms" ( if %%v leq 4 goto :next )
-    if "%%p" == "as" ( if %%v leq 4 goto :next )
-    call :run dxc.exe -T %%p_6_%%v -P %%p_%%v.hlsl.pp %testfiles%\PipelineStage.hlsl
-    if %Failed% neq 0 goto :failed
-    call :check_file %%p_%%v.hlsl.pp find "%%p 6 %%v" del
-    if %Failed% neq 0 goto :failed
-
-    :next
-    rem Skip to the next iteration
-  )
-)
-
-set testname=Byte Order Markers
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\bom-main-ascii.hlsl"
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\bom-main-utf8.hlsl"
-call :run dxc.exe /T ps_6_0 "%testfiles%\Inputs\bom-main-utf16le.hlsl"
-if %Failed% neq 0 goto :failed
-
-set testname=DXC Diagnostic Verifier
-call :run dxc.exe /T lib_6_3 "%testfiles%\diagnostic-verifier.hlsl" -verify
-call :run-fail dxc.exe /T lib_6_3 -DEXTRA_ERROR "%testfiles%\diagnostic-verifier.hlsl" -verify
-if %Failed% neq 0 goto :failed
-
-rem SPIR-V Change Starts
-echo Smoke test for SPIR-V CodeGen ...
-set spirv_smoke_success=0
-dxc.exe "%testfiles%\Inputs\smoke.hlsl" /T ps_6_0 -spirv 1>%CD%\smoke.spirv.log 2>&1
-if %errorlevel% equ 0 set spirv_smoke_success=1
-findstr /c:"SPIR-V CodeGen not available" %CD%\smoke.spirv.log >nul
-if %errorlevel% equ 0 set spirv_smoke_success=1
-if %spirv_smoke_success% neq 1 (
-  echo dxc failed SPIR-V smoke test
-  if %HLSL_TESTCMD_CLEANUP_ON_FAILURE% equ 1 (
-    call :cleanup 2>nul
-  )
-  exit /b 1
-)
-rem SPIR-V Change Ends
-
-call :cleanup
-exit /b 0
-
-:cleanup
-for %%f in (%cleanup_files%) do (
-  del %%f 1>nul 2>nul
-)
-popd
-endlocal & set Failed=%Failed%
-exit /b 0
-
-rem ============================================
-rem Check that output does not exist
-:check_file_not
-set check_file_pattern=%CD%\%1
-shift /1
-if exist %check_file_pattern% (
-  call :set_failed
-  echo Found unexpected file %check_file_pattern%
-  if "%1"=="del" (
-    del %check_file_pattern% 1>nul
-  )
-  exit /b 1
-)
-exit /b 0
-
-rem ============================================
-rem Check that file exists and find text
-:check_file
-rem echo check_file %*
-if "%1"=="log" (
-  set check_file_pattern=%OutputLog%
-) else (
-  set check_file_pattern=%CD%\%1
-  if not exist !check_file_pattern! (
-    set check_file_pattern=%1
-  )
-)
-if not exist %check_file_pattern% (
-  if !Failed! equ 0 (
-    call :set_failed
-    echo Failed to find output file %check_file_pattern%
-  )
-  exit /b 1
-)
-shift /1
-
-:check_file_loop
-if "%1"=="" (
-  set cleanup_files=!cleanup_files! !check_file_pattern!
-  exit /b !Failed!
-) else if "%1"=="del" (
-  if !Failed! equ 0 (
-    del %check_file_pattern% 1>nul
-  )
-  exit /b !Failed!
-) else (
-  set mode=find
-  set find_not=0
-  if "%1"=="find-not" (
-    set find_not=1
-  ) else if "%1"=="find-opt" (
-    set mode=find-opt
-    shift /1
-  ) else if "%1"=="find-not-opt" (
-    set mode=find-opt
-    set find_not=1
-    shift /1
-  ) else if "%1"=="findstr" (
-    set mode=findstr
-  ) else if "%1"=="findstr-not" (
-    set mode=findstr
-    set find_not=1
-  ) else if not "%1"=="find" (
-    echo Error: unrecognized check_file command: %1
-    call :set_failed
-    exit /b 1
-  )
-
-  if "!mode!"=="find" (
-    set findcmd=findstr /C:%2 %check_file_pattern%
-  ) else if "!mode!"=="find-opt" (
-    set findcmd=findstr %2 /C:%3 %check_file_pattern%
-  ) else if "!mode!"=="findstr" (
-    set findcmd=findstr %* %check_file_pattern%
-  )
-
-  !findcmd! 1>nul
-  if !find_not! equ 0 (
-    if !errorlevel! neq 0 (
-      call :set_failed
-      echo Failed: !findcmd!
-    )
-  ) else (
-    if !errorlevel! equ 0 (
-      call :set_failed
-      echo Found: !findcmd!
-    )
-  )
-
-  if "!mode!"=="findstr" (
-    rem findstr must be last, since it uses all the rest of the args
-    exit /b !Failed!
-  )
-  shift /1
-)
-shift /1
-goto :check_file_loop
-
-rem ============================================
-rem Run, log, and set Failed flag if failing
-:run
-rem echo run %*
-set testcmd=%*
-set FailingCmdWritten=0
-del %OutputLog% 1>nul 2>nul
-if %LogOutput% neq 0 (
-  %testcmd% 1>%OutputLog% 2>&1
-) else (
-  %testcmd%
-)
-if %errorlevel% neq 0 (
-  echo Command Returned: %errorlevel%
-  echo See %OutputLog%
-  call :set_failed %errorlevel%
-  exit /b %errorlevel%
-)
-exit /b 0
-
-rem ============================================
-rem Run but without redirecting to log
-:run-nolog
-set LogOutput=0
-call :run %*
-set LogOutput=1
-exit /b %errorlevel%
-
-rem ============================================
-rem Run, log, and expect failing result, otherwise set Failed
-:run-fail
-set testcmd=%*
-%testcmd% 1>testcmd.log 2>&1
-if %errorlevel% equ 0 (
-  call :set_failed
-  exit /b 1
-)
-exit /b 0
-
-rem ============================================
-rem Set Failed and write testname/testcmd once.
-:set_failed
-if %FailingCmdWritten% neq 1 (
-  if "%1"=="" (
-    set Failed=1
-  ) else (
-    set Failed=%1
-  )
-  echo Test Failed: %testname%
-  echo %testcmd%
-  set FailingCmdWritten=1
-)
-exit /b 0
-
-rem ============================================
-rem Cleanup and return failure
-:failed
-if %HLSL_TESTCMD_CLEANUP_ON_FAILURE% neq 0 (
-  call :cleanup 2>nul
-)
-if %Failed% equ 0 set Failed=1
-exit /b %Failed%