Skip to content

Commit 7cdeb95

Browse files
authored
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.
1 parent e20926a commit 7cdeb95

3 files changed

Lines changed: 44 additions & 26 deletions

File tree

tools/opt/CMakeLists.txt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,9 @@ add_llvm_tool(opt
3939
)
4040

4141
if(WIN32 AND HLSL_BUILD_DXILCONV)
42-
set_source_files_properties(opt.cpp PROPERTIES
43-
COMPILE_DEFINITIONS "HAS_DXILCONV")
44-
45-
target_link_libraries(opt DxilConvPasses
46-
)
47-
add_dependencies(opt DxilConvPasses)
42+
add_compile_definitions(HAS_DXILCONV)
43+
target_link_libraries(opt DxilConvPasses)
44+
add_dependencies(opt DxilConvPasses)
4845
endif(WIN32 AND HLSL_BUILD_DXILCONV)
4946

5047
export_executable_symbols(opt)

utils/hct/hctstart.cmd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ if "%HLSL_TAEF_MINTE%"=="" (
149149
echo Found TAEF at %HLSL_TAEF_MINTE%
150150
set HLSL_TAEF_DIR=%HLSL_BLD_DIR%\TAEF
151151
echo Copying to %HLSL_TAEF_DIR% for use with AgilitySDK
152-
mkdir "%HLSL_TAEF_DIR%\%BUILD_ARCH:Win32=x86%"" 1>nul 2>nul
152+
mkdir "%HLSL_TAEF_DIR%\%BUILD_ARCH:Win32=x86%" 1>nul 2>nul
153153
robocopy /NP /NJH /NJS /S "%HLSL_TAEF_MINTE%" "%HLSL_TAEF_DIR%\%BUILD_ARCH:Win32=x86%" *
154154
set path=%path%;%HLSL_TAEF_DIR%\%BUILD_ARCH:Win32=x86%
155155
goto:eof
@@ -205,7 +205,7 @@ for /F "tokens=1,2*" %%A in ('%REG_QUERY% /v InstallationFolder') do (
205205
)
206206
)
207207
if ""=="%kit_root%" (
208-
set kit_root=%WIN10_SDK_PATH%
208+
set "kit_root=%WIN10_SDK_PATH%"
209209
)
210210
if ""=="%kit_root%" (
211211
echo Did not find a Windows 10 SDK installation.

utils/hct/hcttest.cmd

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ set TEST_DXILCONV_FILTER=
1717
set TEST_EXEC_FUTURE=0
1818
set TEST_EXTRAS=0
1919
set TEST_EXEC_REQUIRED=0
20-
set TEST_CLANG_FILTER= /select: "@Priority<1"
20+
set TEST_CLANG_FILTER=
2121
set TEST_EXEC_FILTER=ExecutionTest::*
2222
set LOG_FILTER=/logOutput:LowWithConsoleBuffering
2323
set TEST_COMPAT_SUITE=0
@@ -81,7 +81,7 @@ if "%1"=="-clean" (
8181
) else if "%1"=="clang-filter" (
8282
set TEST_ALL=0
8383
set TEST_CLANG=1
84-
set TEST_CLANG_FILTER= /name:%2
84+
set TEST_CLANG_FILTER=%2
8585
shift /1
8686
) else if "%1"=="file-check" (
8787
set TEST_ALL=0
@@ -91,7 +91,7 @@ if "%1"=="-clean" (
9191
) else if "%1"=="v" (
9292
set TEST_ALL=0
9393
set TEST_CLANG=1
94-
set TEST_CLANG_FILTER= /name:VerifierTest::*
94+
set TEST_CLANG_FILTER=VerifierTest::*
9595
) else if "%1"=="cmd" (
9696
set TEST_ALL=0
9797
set TEST_CMD=1
@@ -101,7 +101,7 @@ if "%1"=="-clean" (
101101
) else if "%1" == "dxilconv-filter" (
102102
set TEST_ALL=0
103103
set TEST_DXILCONV=1
104-
set TEST_DXILCONV_FILTER= /name:%2
104+
set TEST_DXILCONV_FILTER=%2
105105
shift /1
106106
) else if "%1"=="noexec" (
107107
set TEST_ALL=0
@@ -152,6 +152,8 @@ if "%1"=="-clean" (
152152
set BUILD_ARCH=ARM
153153
) else if /i "%1"=="-arm64" (
154154
set BUILD_ARCH=ARM64
155+
) else if /i "%1"=="-arm64ec" (
156+
set BUILD_ARCH=ARM64EC
155157
) else if "%1"=="-adapter" (
156158
set TEST_ADAPTER= /p:"Adapter=%~2"
157159
shift /1
@@ -188,6 +190,11 @@ shift /1
188190
goto :collect_args
189191
:done_args
190192

193+
rem Map build arch to bin directory name (for TAEF and Agility SDK)
194+
rem Win32 to x86, ARM64EC to ARM64, no changes for other platforms
195+
set BUILD_ARCH_DIR=%BUILD_ARCH:Win32=x86%
196+
set BUILD_ARCH_DIR=%BUILD_ARCH_DIR:ARM64EC=ARM64%
197+
191198
rem By default, run all clang tests and execution tests and dxilconv tests
192199
if "%TEST_ALL%"=="1" (
193200
set TEST_CLANG=1
@@ -278,9 +285,9 @@ if "%TEST_SPIRV%"=="1" (
278285
)
279286
rem End SPIRV change
280287

281-
echo Running HLSL tests ...
288+
echo Running HLSL tests for %BUILD_ARCH%...
282289

283-
if "%BUILD_ARCH%"=="ARM64" (
290+
if "%BUILD_ARCH_DIR%"=="ARM64" (
284291
rem ARM64 TAEF has an issue when running ARM64X tests with /parallel flag
285292
set PARALLEL_OPTION=
286293
)
@@ -295,7 +302,13 @@ if exist "%HCT_EXTRAS%\hcttest-before.cmd" (
295302

296303
if "%TEST_CLANG%"=="1" (
297304
echo Running Clang unit tests ...
298-
call :runte clang-hlsl-tests.dll /p:"HlslDataDir=%HLSL_SRC_DIR%\tools\clang\test\HLSL"%TEST_CLANG_FILTER%%ADDITIONAL_OPTS%
305+
if "%TEST_CLANG_FILTER%"=="" (
306+
set SELECT_FILTER= /select:"@Priority<1 AND @Architecture='%BUILD_ARCH%'"
307+
) else (
308+
set SELECT_FILTER= /select:"@Name='%TEST_CLANG_FILTER%' AND @Architecture='%BUILD_ARCH%'"
309+
)
310+
311+
call :runte clang-hlsl-tests.dll /p:"HlslDataDir=%HLSL_SRC_DIR%\tools\clang\test\HLSL" !SELECT_FILTER! %ADDITIONAL_OPTS%
299312
set RES_CLANG=!ERRORLEVEL!
300313
)
301314

@@ -309,9 +322,10 @@ if "%TEST_EXEC%"=="1" (
309322
call :copyagility
310323
)
311324

325+
set EXEC_COMMON_ARGS= /p:"HlslDataDir=%HLSL_SRC_DIR%\tools\clang\test\HLSL" /runIgnoredTests /p:"ExperimentalShaders=*" %TEST_ADAPTER% %USE_AGILITY_SDK%
312326
if "%TEST_EXEC%"=="1" (
313327
echo Sniffing for D3D12 configuration ...
314-
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%
328+
call :runte clang-hlsl-tests.dll /select:"@Name='ExecutionTest::BasicTriangleTest' AND @Architecture='%BUILD_ARCH%'" %EXEC_COMMON_ARGS%
315329
set RES_EXEC=!ERRORLEVEL!
316330
if errorlevel 1 (
317331
if not "%TEST_EXEC_REQUIRED%"=="1" (
@@ -326,10 +340,11 @@ if "%TEST_EXEC%"=="1" (
326340

327341
if "%TEST_EXEC%"=="1" (
328342
if "%TEST_EXEC_FUTURE%"=="1" (
329-
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%
343+
set SELECT_FILTER= /select:"@Name='%TEST_EXEC_FILTER%' AND @Priority=2 AND @Architecture='%BUILD_ARCH%'"
330344
) else (
331-
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%
345+
set SELECT_FILTER= /select:"@Name='%TEST_EXEC_FILTER%' AND @Priority<2 AND @Architecture='%BUILD_ARCH%'"
332346
)
347+
call :runte clang-hlsl-tests.dll !SELECT_FILTER! %EXEC_COMMON_ARGS% %ADDITIONAL_OPTS%
333348
set RES_EXEC=!ERRORLEVEL!
334349
)
335350

@@ -342,7 +357,12 @@ if exist "%HCT_EXTRAS%\hcttest-extras.cmd" (
342357
)
343358

344359
if "%TEST_DXILCONV%"=="1" (
345-
call :runte dxilconv-tests.dll /p:"HlslDataDir=%HLSL_SRC_DIR%\projects\dxilconv\test" %TEST_DXILCONV_FILTER%
360+
if "%TEST_DXILCONV_FILTER%"=="" (
361+
set SELECT_FILTER= /select:"@Architecture='%BUILD_ARCH%'"
362+
) else (
363+
set SELECT_FILTER= /select:"@Name='%TEST_DXILCONV_FILTER%' AND @Architecture='%BUILD_ARCH%'"
364+
)
365+
call :runte dxilconv-tests.dll /p:"HlslDataDir=%HLSL_SRC_DIR%\projects\dxilconv\test" !SELECT_FILTER!
346366
set RES_DXILCONV=!ERRORLEVEL!
347367
)
348368

@@ -412,6 +432,7 @@ echo -x86 targets an x86 build (aka. Win32)
412432
echo -x64 targets an x64 build (aka. Win64)
413433
echo -arm targets an ARM build
414434
echo -arm64 targets an ARM64 build
435+
echo -arm64ec targets an ARM64EC build
415436
echo.
416437
echo target(s):
417438
echo clang - run clang tests.
@@ -452,7 +473,7 @@ rem %4 - third argument to te
452473
if "%HLSL_TAEF_DIR%"=="" (
453474
set TE=te
454475
) else (
455-
set TE="%HLSL_TAEF_DIR%\%BUILD_ARCH:Win32=x86%\te"
476+
set TE="%HLSL_TAEF_DIR%\%BUILD_ARCH_DIR%\te"
456477
)
457478
echo %TE% /miniDumpOnCrash /unicodeOutput:false /outputFolder:%TEST_DIR% %LOG_FILTER% %PARALLEL_OPTION% %TEST_DIR%\%*
458479
call %TE% /miniDumpOnCrash /unicodeOutput:false /outputFolder:%TEST_DIR% %LOG_FILTER% %PARALLEL_OPTION% %TEST_DIR%\%*
@@ -502,16 +523,16 @@ if "%HLSL_TAEF_DIR%"=="" (
502523
exit /b 1
503524
)
504525
set FULL_AGILITY_PATH=
505-
if exist "%HLSL_AGILITYSDK_DIR%\build\native\bin\%BUILD_ARCH:Win32=x86%\D3D12Core.dll" (
506-
set FULL_AGILITY_PATH=%HLSL_AGILITYSDK_DIR%\build\native\bin\%BUILD_ARCH:Win32=x86%
507-
) else if exist "%HLSL_AGILITYSDK_DIR%\%BUILD_ARCH:Win32=x86%\D3D12Core.dll" (
508-
set FULL_AGILITY_PATH=%HLSL_AGILITYSDK_DIR%\%BUILD_ARCH:Win32=x86%
526+
if exist "%HLSL_AGILITYSDK_DIR%\build\native\bin\%BUILD_ARCH_DIR%\D3D12Core.dll" (
527+
set FULL_AGILITY_PATH=%HLSL_AGILITYSDK_DIR%\build\native\bin\%BUILD_ARCH_DIR%
528+
) else if exist "%HLSL_AGILITYSDK_DIR%\%BUILD_ARCH_DIR%\D3D12Core.dll" (
529+
set FULL_AGILITY_PATH=%HLSL_AGILITYSDK_DIR%\%BUILD_ARCH_DIR%
509530
) else if exist "%HLSL_AGILITYSDK_DIR%\D3D12Core.dll" (
510531
set FULL_AGILITY_PATH=%HLSL_AGILITYSDK_DIR%
511532
) else (
512533
echo HLSL_AGILITYSDK_DIR is set, but unable to resolve path to binaries
513534
exit /b 1
514535
)
515-
mkdir "%HLSL_TAEF_DIR%\%BUILD_ARCH:Win32=x86%\D3D12" 1>nul 2>nul
516-
call %HCT_DIR%\hctcopy.cmd "%FULL_AGILITY_PATH%" "%HLSL_TAEF_DIR%\%BUILD_ARCH:Win32=x86%\D3D12" D3D12Core.dll d3d12SDKLayers.dll
536+
mkdir "%HLSL_TAEF_DIR%\%BUILD_ARCH_DIR%\D3D12" 1>nul 2>nul
537+
call %HCT_DIR%\hctcopy.cmd "%FULL_AGILITY_PATH%" "%HLSL_TAEF_DIR%\%BUILD_ARCH_DIR%\D3D12" D3D12Core.dll d3d12SDKLayers.dll
517538
exit /b %ERRORLEVEL%

0 commit comments

Comments
 (0)