Add support for separate ARM64 and ARM64EC testing (#4508)

If tests are built as ARM64X, the test dll contains two versions of each test - the native ARM64 code and the emulation-ready x64 code (== ARM64EC). By default, TAEF will run both versions of the tests. The tests have the same name, so if one is failing, it is not clear if it is the ARM64 or ARM64EC version.

It is preferable to run the tests for each platform separately. This PR adds @architecture parameter to the TAEF tests invocation, which enables exactly that. The hcttest.cmd script has a new argument -arm64ec for running ARM64EC-only tests, and similarly the -arm64 will run only the native ARM64 tests.

Also includes couple of fixes in hctstart.cmd.
This commit is contained in:
Helena Kotas 2022-06-13 17:28:46 -07:00 коммит произвёл GitHub
Родитель e20926ae2e
Коммит 7cdeb9557b
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 44 добавлений и 26 удалений

Просмотреть файл

@ -39,12 +39,9 @@ add_llvm_tool(opt
)
if(WIN32 AND HLSL_BUILD_DXILCONV)
set_source_files_properties(opt.cpp PROPERTIES
COMPILE_DEFINITIONS "HAS_DXILCONV")
target_link_libraries(opt DxilConvPasses
)
add_dependencies(opt DxilConvPasses)
add_compile_definitions(HAS_DXILCONV)
target_link_libraries(opt DxilConvPasses)
add_dependencies(opt DxilConvPasses)
endif(WIN32 AND HLSL_BUILD_DXILCONV)
export_executable_symbols(opt)

Просмотреть файл

@ -149,7 +149,7 @@ if "%HLSL_TAEF_MINTE%"=="" (
echo Found TAEF at %HLSL_TAEF_MINTE%
set HLSL_TAEF_DIR=%HLSL_BLD_DIR%\TAEF
echo Copying to %HLSL_TAEF_DIR% for use with AgilitySDK
mkdir "%HLSL_TAEF_DIR%\%BUILD_ARCH:Win32=x86%"" 1>nul 2>nul
mkdir "%HLSL_TAEF_DIR%\%BUILD_ARCH:Win32=x86%" 1>nul 2>nul
robocopy /NP /NJH /NJS /S "%HLSL_TAEF_MINTE%" "%HLSL_TAEF_DIR%\%BUILD_ARCH:Win32=x86%" *
set path=%path%;%HLSL_TAEF_DIR%\%BUILD_ARCH:Win32=x86%
goto:eof
@ -205,7 +205,7 @@ for /F "tokens=1,2*" %%A in ('%REG_QUERY% /v InstallationFolder') do (
)
)
if ""=="%kit_root%" (
set kit_root=%WIN10_SDK_PATH%
set "kit_root=%WIN10_SDK_PATH%"
)
if ""=="%kit_root%" (
echo Did not find a Windows 10 SDK installation.

Просмотреть файл

@ -17,7 +17,7 @@ set TEST_DXILCONV_FILTER=
set TEST_EXEC_FUTURE=0
set TEST_EXTRAS=0
set TEST_EXEC_REQUIRED=0
set TEST_CLANG_FILTER= /select: "@Priority<1"
set TEST_CLANG_FILTER=
set TEST_EXEC_FILTER=ExecutionTest::*
set LOG_FILTER=/logOutput:LowWithConsoleBuffering
set TEST_COMPAT_SUITE=0
@ -81,7 +81,7 @@ if "%1"=="-clean" (
) else if "%1"=="clang-filter" (
set TEST_ALL=0
set TEST_CLANG=1
set TEST_CLANG_FILTER= /name:%2
set TEST_CLANG_FILTER=%2
shift /1
) else if "%1"=="file-check" (
set TEST_ALL=0
@ -91,7 +91,7 @@ if "%1"=="-clean" (
) else if "%1"=="v" (
set TEST_ALL=0
set TEST_CLANG=1
set TEST_CLANG_FILTER= /name:VerifierTest::*
set TEST_CLANG_FILTER=VerifierTest::*
) else if "%1"=="cmd" (
set TEST_ALL=0
set TEST_CMD=1
@ -101,7 +101,7 @@ if "%1"=="-clean" (
) else if "%1" == "dxilconv-filter" (
set TEST_ALL=0
set TEST_DXILCONV=1
set TEST_DXILCONV_FILTER= /name:%2
set TEST_DXILCONV_FILTER=%2
shift /1
) else if "%1"=="noexec" (
set TEST_ALL=0
@ -152,6 +152,8 @@ if "%1"=="-clean" (
set BUILD_ARCH=ARM
) else if /i "%1"=="-arm64" (
set BUILD_ARCH=ARM64
) else if /i "%1"=="-arm64ec" (
set BUILD_ARCH=ARM64EC
) else if "%1"=="-adapter" (
set TEST_ADAPTER= /p:"Adapter=%~2"
shift /1
@ -188,6 +190,11 @@ shift /1
goto :collect_args
:done_args
rem Map build arch to bin directory name (for TAEF and Agility SDK)
rem Win32 to x86, ARM64EC to ARM64, no changes for other platforms
set BUILD_ARCH_DIR=%BUILD_ARCH:Win32=x86%
set BUILD_ARCH_DIR=%BUILD_ARCH_DIR:ARM64EC=ARM64%
rem By default, run all clang tests and execution tests and dxilconv tests
if "%TEST_ALL%"=="1" (
set TEST_CLANG=1
@ -278,9 +285,9 @@ if "%TEST_SPIRV%"=="1" (
)
rem End SPIRV change
echo Running HLSL tests ...
echo Running HLSL tests for %BUILD_ARCH%...
if "%BUILD_ARCH%"=="ARM64" (
if "%BUILD_ARCH_DIR%"=="ARM64" (
rem ARM64 TAEF has an issue when running ARM64X tests with /parallel flag
set PARALLEL_OPTION=
)
@ -295,7 +302,13 @@ if exist "%HCT_EXTRAS%\hcttest-before.cmd" (
if "%TEST_CLANG%"=="1" (
echo Running Clang unit tests ...
call :runte clang-hlsl-tests.dll /p:"HlslDataDir=%HLSL_SRC_DIR%\tools\clang\test\HLSL"%TEST_CLANG_FILTER%%ADDITIONAL_OPTS%
if "%TEST_CLANG_FILTER%"=="" (
set SELECT_FILTER= /select:"@Priority<1 AND @Architecture='%BUILD_ARCH%'"
) else (
set SELECT_FILTER= /select:"@Name='%TEST_CLANG_FILTER%' AND @Architecture='%BUILD_ARCH%'"
)
call :runte clang-hlsl-tests.dll /p:"HlslDataDir=%HLSL_SRC_DIR%\tools\clang\test\HLSL" !SELECT_FILTER! %ADDITIONAL_OPTS%
set RES_CLANG=!ERRORLEVEL!
)
@ -309,9 +322,10 @@ if "%TEST_EXEC%"=="1" (
call :copyagility
)
set EXEC_COMMON_ARGS= /p:"HlslDataDir=%HLSL_SRC_DIR%\tools\clang\test\HLSL" /runIgnoredTests /p:"ExperimentalShaders=*" %TEST_ADAPTER% %USE_AGILITY_SDK%
if "%TEST_EXEC%"=="1" (
echo Sniffing for D3D12 configuration ...
call :runte clang-hlsl-tests.dll /p:"HlslDataDir=%HLSL_SRC_DIR%\tools\clang\test\HLSL" /name:ExecutionTest::BasicTriangleTest /runIgnoredTests /p:"ExperimentalShaders=*" %TEST_ADAPTER% %USE_AGILITY_SDK%
call :runte clang-hlsl-tests.dll /select:"@Name='ExecutionTest::BasicTriangleTest' AND @Architecture='%BUILD_ARCH%'" %EXEC_COMMON_ARGS%
set RES_EXEC=!ERRORLEVEL!
if errorlevel 1 (
if not "%TEST_EXEC_REQUIRED%"=="1" (
@ -326,10 +340,11 @@ if "%TEST_EXEC%"=="1" (
if "%TEST_EXEC%"=="1" (
if "%TEST_EXEC_FUTURE%"=="1" (
call :runte clang-hlsl-tests.dll /p:"HlslDataDir=%HLSL_SRC_DIR%\tools\clang\test\HLSL" /select:"@Name='%TEST_EXEC_FILTER%' AND @Priority=2" /runIgnoredTests /p:"ExperimentalShaders=*" %TEST_ADAPTER% %USE_AGILITY_SDK% %ADDITIONAL_OPTS%
set SELECT_FILTER= /select:"@Name='%TEST_EXEC_FILTER%' AND @Priority=2 AND @Architecture='%BUILD_ARCH%'"
) else (
call :runte clang-hlsl-tests.dll /p:"HlslDataDir=%HLSL_SRC_DIR%\tools\clang\test\HLSL" /select:"@Name='%TEST_EXEC_FILTER%' AND @Priority<2" /runIgnoredTests /p:"ExperimentalShaders=*" %TEST_ADAPTER% %USE_AGILITY_SDK% %ADDITIONAL_OPTS%
set SELECT_FILTER= /select:"@Name='%TEST_EXEC_FILTER%' AND @Priority<2 AND @Architecture='%BUILD_ARCH%'"
)
call :runte clang-hlsl-tests.dll !SELECT_FILTER! %EXEC_COMMON_ARGS% %ADDITIONAL_OPTS%
set RES_EXEC=!ERRORLEVEL!
)
@ -342,7 +357,12 @@ if exist "%HCT_EXTRAS%\hcttest-extras.cmd" (
)
if "%TEST_DXILCONV%"=="1" (
call :runte dxilconv-tests.dll /p:"HlslDataDir=%HLSL_SRC_DIR%\projects\dxilconv\test" %TEST_DXILCONV_FILTER%
if "%TEST_DXILCONV_FILTER%"=="" (
set SELECT_FILTER= /select:"@Architecture='%BUILD_ARCH%'"
) else (
set SELECT_FILTER= /select:"@Name='%TEST_DXILCONV_FILTER%' AND @Architecture='%BUILD_ARCH%'"
)
call :runte dxilconv-tests.dll /p:"HlslDataDir=%HLSL_SRC_DIR%\projects\dxilconv\test" !SELECT_FILTER!
set RES_DXILCONV=!ERRORLEVEL!
)
@ -412,6 +432,7 @@ echo -x86 targets an x86 build (aka. Win32)
echo -x64 targets an x64 build (aka. Win64)
echo -arm targets an ARM build
echo -arm64 targets an ARM64 build
echo -arm64ec targets an ARM64EC build
echo.
echo target(s):
echo clang - run clang tests.
@ -452,7 +473,7 @@ rem %4 - third argument to te
if "%HLSL_TAEF_DIR%"=="" (
set TE=te
) else (
set TE="%HLSL_TAEF_DIR%\%BUILD_ARCH:Win32=x86%\te"
set TE="%HLSL_TAEF_DIR%\%BUILD_ARCH_DIR%\te"
)
echo %TE% /miniDumpOnCrash /unicodeOutput:false /outputFolder:%TEST_DIR% %LOG_FILTER% %PARALLEL_OPTION% %TEST_DIR%\%*
call %TE% /miniDumpOnCrash /unicodeOutput:false /outputFolder:%TEST_DIR% %LOG_FILTER% %PARALLEL_OPTION% %TEST_DIR%\%*
@ -502,16 +523,16 @@ if "%HLSL_TAEF_DIR%"=="" (
exit /b 1
)
set FULL_AGILITY_PATH=
if exist "%HLSL_AGILITYSDK_DIR%\build\native\bin\%BUILD_ARCH:Win32=x86%\D3D12Core.dll" (
set FULL_AGILITY_PATH=%HLSL_AGILITYSDK_DIR%\build\native\bin\%BUILD_ARCH:Win32=x86%
) else if exist "%HLSL_AGILITYSDK_DIR%\%BUILD_ARCH:Win32=x86%\D3D12Core.dll" (
set FULL_AGILITY_PATH=%HLSL_AGILITYSDK_DIR%\%BUILD_ARCH:Win32=x86%
if exist "%HLSL_AGILITYSDK_DIR%\build\native\bin\%BUILD_ARCH_DIR%\D3D12Core.dll" (
set FULL_AGILITY_PATH=%HLSL_AGILITYSDK_DIR%\build\native\bin\%BUILD_ARCH_DIR%
) else if exist "%HLSL_AGILITYSDK_DIR%\%BUILD_ARCH_DIR%\D3D12Core.dll" (
set FULL_AGILITY_PATH=%HLSL_AGILITYSDK_DIR%\%BUILD_ARCH_DIR%
) else if exist "%HLSL_AGILITYSDK_DIR%\D3D12Core.dll" (
set FULL_AGILITY_PATH=%HLSL_AGILITYSDK_DIR%
) else (
echo HLSL_AGILITYSDK_DIR is set, but unable to resolve path to binaries
exit /b 1
)
mkdir "%HLSL_TAEF_DIR%\%BUILD_ARCH:Win32=x86%\D3D12" 1>nul 2>nul
call %HCT_DIR%\hctcopy.cmd "%FULL_AGILITY_PATH%" "%HLSL_TAEF_DIR%\%BUILD_ARCH:Win32=x86%\D3D12" D3D12Core.dll d3d12SDKLayers.dll
mkdir "%HLSL_TAEF_DIR%\%BUILD_ARCH_DIR%\D3D12" 1>nul 2>nul
call %HCT_DIR%\hctcopy.cmd "%FULL_AGILITY_PATH%" "%HLSL_TAEF_DIR%\%BUILD_ARCH_DIR%\D3D12" D3D12Core.dll d3d12SDKLayers.dll
exit /b %ERRORLEVEL%