@@ -503,6 +503,33 @@ if config.enable_backtrace == "1":
503503if config .spirv :
504504 config .available_features .add ("spirv" )
505505
506+ # Check supported dxil version
507+ def get_dxil_version ():
508+ result = subprocess .run ([lit .util .which ('dxc' , llvm_tools_dir ), "--version" ], stdout = subprocess .PIPE )
509+ output = result .stdout .decode ("utf-8" )
510+ pat = re .compile (r"(dxcompiler.dll|libdxcompiler.so|libdxcompiler.dylib): (?P<dxcMajor>[0-9]+)\.(?P<dxcMinor>[0-9]+).*(; (dxil.dll|libdxil.so): (?P<dxilMajor>[0-9]+)\.(?P<dxilMinor>[0-9]+))?" )
511+ m = pat .search (output )
512+ dxcMajor = int (m .group ("dxcMajor" ))
513+ dxcMinor = int (m .group ("dxcMinor" ))
514+
515+ if None == m .group ("dxilMajor" ):
516+ return dxcMajor , dxcMinor
517+ dxilMajor = int (m .group ("dxilMajor" ))
518+ dxilMinor = int (m .group ("dxilMinor" ))
519+ if dxcMajor < dxilMajor :
520+ return dxcMajor , dxcMinor
521+ if dxcMajor > dxilMajor :
522+ return dxilMajor , dxilMinor
523+ if dxcMinor < dxilMinor :
524+ return dxcMajor , dxcMinor
525+ return dxilMajor , dxilMinor
526+
527+ dxilMajor , dxilMinor = get_dxil_version ()
528+ if dxilMajor == 1 :
529+ for i in range (0 , dxilMinor + 1 ):
530+ config .available_features .add (f"dxil-1-{ i } " )
531+
532+
506533# Check if we should run long running tests.
507534if lit_config .params .get ("run_long_tests" , None ) == "true" :
508535 config .available_features .add ("long_tests" )
0 commit comments