Skip to content

Commit cb6892b

Browse files
author
Greg Roth
committed
Always enable SPIR-V
disables the ability to disable SPIR-V. This allows intermediate opcodes to be consistent at least across the same compiler build regardless of build environment. This is a requirement for IR tests that depend on these opcodes. Given the embrace of SPIR-V and the stability the generation target has gained, there's no reason not to do this. Fixes #7169
1 parent 503ef3c commit cb6892b

26 files changed

Lines changed: 54 additions & 239 deletions

File tree

CMakeLists.txt

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -136,20 +136,10 @@ endif()
136136
# HLSL Change Ends
137137

138138
# SPIRV change starts
139-
option(ENABLE_SPIRV_CODEGEN "Enables SPIR-V code generation." OFF)
140139
option(SPIRV_BUILD_TESTS "Build targets for the SPIR-V unit tests." OFF)
141140

142-
# Enable SPIR-V CodeGen for Linux by default.
143-
if(NOT WIN32)
144-
set(ENABLE_SPIRV_CODEGEN ON)
145-
endif()
146-
147141
if (${SPIRV_BUILD_TESTS})
148142
enable_testing()
149-
set(ENABLE_SPIRV_CODEGEN ON)
150-
endif()
151-
if (${ENABLE_SPIRV_CODEGEN})
152-
add_definitions(-DENABLE_SPIRV_CODEGEN)
153143
endif()
154144
# SPIRV change ends
155145

cmake/caches/PredefinedParams.cmake

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,5 @@ set(CLANG_CL OFF CACHE BOOL "")
2727
set(CLANG_ENABLE_ARCMT OFF CACHE BOOL "")
2828
set(CLANG_ENABLE_STATIC_ANALYZER OFF CACHE BOOL "")
2929
set(HLSL_INCLUDE_TESTS ON CACHE BOOL "")
30-
set(ENABLE_SPIRV_CODEGEN ON CACHE BOOL "")
3130
set(SPIRV_BUILD_TESTS ON CACHE BOOL "")
3231
set(LLVM_ENABLE_TERMINFO OFF CACHE BOOL "")

external/CMakeLists.txt

Lines changed: 44 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -18,58 +18,55 @@ if (NOT DIRECTX_HEADER_INCLUDE_DIR)
1818
endif (NOT WIN32)
1919
endif(NOT DIRECTX_HEADER_INCLUDE_DIR)
2020

21-
# Enabling SPIR-V codegen requires SPIRV-Headers for spirv.hpp and
21+
# SPIR-V codegen requires SPIRV-Headers for spirv.hpp and
2222
# SPIRV-Tools for SPIR-V disassembling functionality.
23-
if (${ENABLE_SPIRV_CODEGEN})
24-
set(DXC_SPIRV_HEADERS_DIR "${DXC_EXTERNAL_ROOT_DIR}/SPIRV-Headers"
25-
CACHE STRING "Location of SPIRV-Headers source")
26-
set(DXC_SPIRV_TOOLS_DIR "${DXC_EXTERNAL_ROOT_DIR}/SPIRV-Tools"
27-
CACHE STRING "Location of SPIRV-Tools source")
23+
set(DXC_SPIRV_HEADERS_DIR "${DXC_EXTERNAL_ROOT_DIR}/SPIRV-Headers"
24+
CACHE STRING "Location of SPIRV-Headers source")
25+
set(DXC_SPIRV_TOOLS_DIR "${DXC_EXTERNAL_ROOT_DIR}/SPIRV-Tools"
26+
CACHE STRING "Location of SPIRV-Tools source")
2827

29-
if (NOT DEFINED SPIRV-Headers_SOURCE_DIR)
30-
if (IS_DIRECTORY ${DXC_SPIRV_HEADERS_DIR})
31-
add_subdirectory(${DXC_SPIRV_HEADERS_DIR}
32-
"${CMAKE_BINARY_DIR}/external/SPIRV-Headers"
33-
EXCLUDE_FROM_ALL)
34-
endif()
35-
endif()
36-
if (NOT DEFINED SPIRV-Headers_SOURCE_DIR)
37-
message(FATAL_ERROR "SPIRV-Headers was not found - required for SPIR-V codegen")
38-
else()
39-
set(SPIRV_HEADER_INCLUDE_DIR ${SPIRV-Headers_SOURCE_DIR}/include PARENT_SCOPE)
28+
if (NOT DEFINED SPIRV-Headers_SOURCE_DIR)
29+
if (IS_DIRECTORY ${DXC_SPIRV_HEADERS_DIR})
30+
add_subdirectory(${DXC_SPIRV_HEADERS_DIR}
31+
"${CMAKE_BINARY_DIR}/external/SPIRV-Headers"
32+
EXCLUDE_FROM_ALL)
4033
endif()
34+
endif()
35+
if (NOT DEFINED SPIRV-Headers_SOURCE_DIR)
36+
message(FATAL_ERROR "SPIRV-Headers was not found - required for SPIR-V codegen")
37+
else()
38+
set(SPIRV_HEADER_INCLUDE_DIR ${SPIRV-Headers_SOURCE_DIR}/include PARENT_SCOPE)
39+
endif()
4140

42-
if (NOT TARGET SPIRV-Tools)
43-
if (IS_DIRECTORY ${DXC_SPIRV_TOOLS_DIR})
44-
# Avoid implicit fallthrough warning from clang
45-
# This add_compile_options() will only affect the current directory and its subdirectories.
46-
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
47-
add_compile_options(-Wno-implicit-fallthrough)
48-
endif()
49-
# We only need the library from SPIRV-Tools.
50-
set(SPIRV_SKIP_EXECUTABLES ON CACHE BOOL "Skip building SPIRV-Tools executables")
51-
if (NOT HLSL_ENABLE_DEBUG_ITERATORS)
52-
set(SPIRV_TOOLS_EXTRA_DEFINITIONS /D_ITERATOR_DEBUG_LEVEL=0)
53-
endif()
54-
add_subdirectory(${DXC_SPIRV_TOOLS_DIR}
55-
"${CMAKE_BINARY_DIR}/external/SPIRV-Tools"
56-
EXCLUDE_FROM_ALL)
41+
if (NOT TARGET SPIRV-Tools)
42+
if (IS_DIRECTORY ${DXC_SPIRV_TOOLS_DIR})
43+
# Avoid implicit fallthrough warning from clang
44+
# This add_compile_options() will only affect the current directory and its subdirectories.
45+
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
46+
add_compile_options(-Wno-implicit-fallthrough)
5747
endif()
48+
# We only need the library from SPIRV-Tools.
49+
set(SPIRV_SKIP_EXECUTABLES ON CACHE BOOL "Skip building SPIRV-Tools executables")
50+
if (NOT HLSL_ENABLE_DEBUG_ITERATORS)
51+
set(SPIRV_TOOLS_EXTRA_DEFINITIONS /D_ITERATOR_DEBUG_LEVEL=0)
52+
endif()
53+
add_subdirectory(${DXC_SPIRV_TOOLS_DIR}
54+
"${CMAKE_BINARY_DIR}/external/SPIRV-Tools"
55+
EXCLUDE_FROM_ALL)
5856
endif()
59-
if (NOT TARGET SPIRV-Tools)
60-
message(FATAL_ERROR "SPIRV-Tools was not found - required for SPIR-V codegen")
61-
else()
62-
set(SPIRV_TOOLS_INCLUDE_DIR ${spirv-tools_SOURCE_DIR}/include PARENT_SCOPE)
63-
endif()
64-
65-
set(SPIRV_DEP_TARGETS
66-
SPIRV-Tools-static
67-
SPIRV-Tools-opt
68-
)
57+
endif()
58+
if (NOT TARGET SPIRV-Tools)
59+
message(FATAL_ERROR "SPIRV-Tools was not found - required for SPIR-V codegen")
60+
else()
61+
set(SPIRV_TOOLS_INCLUDE_DIR ${spirv-tools_SOURCE_DIR}/include PARENT_SCOPE)
62+
endif()
6963

70-
# Organize these targets better in Visual Studio
71-
foreach(target ${SPIRV_DEP_TARGETS})
72-
set_property(TARGET ${target} PROPERTY FOLDER "External dependencies")
73-
endforeach()
64+
set(SPIRV_DEP_TARGETS
65+
SPIRV-Tools-static
66+
SPIRV-Tools-opt
67+
)
7468

75-
endif()
69+
# Organize these targets better in Visual Studio
70+
foreach(target ${SPIRV_DEP_TARGETS})
71+
set_property(TARGET ${target} PROPERTY FOLDER "External dependencies")
72+
endforeach()

gcp-pipelines/x86_64-linux-clang.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ steps:
1616
- '-DCMAKE_CXX_COMPILER=clang++'
1717
- '-DCMAKE_C_COMPILER=clang'
1818
- '-DCMAKE_INSTALL_PREFIX=artifacts'
19-
- '-DENABLE_SPIRV_CODEGEN=ON'
2019
- '-DSPIRV_BUILD_TESTS=ON'
2120
- '-DLLVM_ENABLE_WERROR=On'
2221
- '-C'

include/dxc/HlslIntrinsicOp.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -226,21 +226,11 @@ enum class IntrinsicOp {
226226
IOP_unpack_s8s32,
227227
IOP_unpack_u8u16,
228228
IOP_unpack_u8u32,
229-
#ifdef ENABLE_SPIRV_CODEGEN
230229
IOP_VkRawBufferLoad,
231-
#endif // ENABLE_SPIRV_CODEGEN
232-
#ifdef ENABLE_SPIRV_CODEGEN
233230
IOP_VkRawBufferStore,
234-
#endif // ENABLE_SPIRV_CODEGEN
235-
#ifdef ENABLE_SPIRV_CODEGEN
236231
IOP_VkReadClock,
237-
#endif // ENABLE_SPIRV_CODEGEN
238-
#ifdef ENABLE_SPIRV_CODEGEN
239232
IOP_Vkext_execution_mode,
240-
#endif // ENABLE_SPIRV_CODEGEN
241-
#ifdef ENABLE_SPIRV_CODEGEN
242233
IOP_Vkext_execution_mode_id,
243-
#endif // ENABLE_SPIRV_CODEGEN
244234
MOP_Append,
245235
MOP_RestartStrip,
246236
MOP_CalculateLevelOfDetail,
@@ -351,9 +341,7 @@ enum class IntrinsicOp {
351341
MOP_GroupIncrementOutputCount,
352342
MOP_ThreadIncrementOutputCount,
353343
MOP_OutputComplete,
354-
#ifdef ENABLE_SPIRV_CODEGEN
355344
MOP_SubpassLoad,
356-
#endif // ENABLE_SPIRV_CODEGEN
357345
// unsigned
358346
IOP_InterlockedUMax,
359347
IOP_InterlockedUMin,

include/dxc/Support/HLSLOptions.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,11 +268,9 @@ class DxcOpts {
268268
llvm::StringRef GetPDBName() const; // Fd name
269269

270270
// SPIRV Change Starts
271-
#ifdef ENABLE_SPIRV_CODEGEN
272271
bool GenSPIRV; // OPT_spirv
273272
clang::spirv::SpirvCodeGenOptions
274273
SpirvOptions; // All SPIR-V CodeGen-related options
275-
#endif
276274
// SPIRV Change Ends
277275

278276
bool GenMetal = false; // OPT_metal

include/dxc/Support/SPIRVOptions.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
#ifndef LLVM_SPIRV_OPTIONS_H
1515
#define LLVM_SPIRV_OPTIONS_H
1616

17-
#ifdef ENABLE_SPIRV_CODEGEN
18-
1917
#include "llvm/ADT/ArrayRef.h"
2018
#include "llvm/ADT/StringRef.h"
2119
#include "llvm/Option/ArgList.h"
@@ -123,5 +121,4 @@ struct SpirvCodeGenOptions {
123121
} // namespace spirv
124122
} // namespace clang
125123

126-
#endif // ENABLE_SPIRV_CODEGEN
127124
#endif // LLVM_SPIRV_OPTIONS_H

lib/DxcSupport/HLSLOptions.cpp

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,7 @@ using namespace llvm::opt;
3131
using namespace dxc;
3232
using namespace hlsl;
3333
using namespace hlsl::options;
34-
#ifdef ENABLE_SPIRV_CODEGEN
3534
using namespace clang::spirv;
36-
#endif
3735

3836
#define PREFIX(NAME, VALUE) static const char *const NAME[] = VALUE;
3937
#include "dxc/Support/HLSLOptions.inc"
@@ -275,7 +273,6 @@ static std::pair<std::string, std::string> ParseDefine(std::string &argVal) {
275273
}
276274

277275
// SPIRV Change Starts
278-
#ifdef ENABLE_SPIRV_CODEGEN
279276
/// Checks and collects the arguments for -fvk-{b|s|t|u}-shift into *shifts.
280277
static bool handleVkShiftArgs(const InputArgList &args, OptSpecifier id,
281278
const char *name,
@@ -392,7 +389,6 @@ static const uint32_t kDefaultMaximumSourceLength = 0xFFFDu;
392389
static const uint32_t kTestingMaximumSourceLength = 13u;
393390

394391
} // namespace
395-
#endif // ENABLE_SPIRV_CODEGEN
396392
// SPIRV Change Ends
397393

398394
namespace hlsl {
@@ -1092,7 +1088,6 @@ int ReadDxcOpts(const OptTable *optionTable, unsigned flagsToInclude,
10921088
opts.GenMetal = Args.hasFlag(OPT_metal, OPT_INVALID, false);
10931089

10941090
// SPIRV Change Starts
1095-
#ifdef ENABLE_SPIRV_CODEGEN
10961091
opts.GenSPIRV = Args.hasFlag(OPT_spirv, OPT_INVALID, false);
10971092
opts.SpirvOptions.invertY =
10981093
Args.hasFlag(OPT_fvk_invert_y, OPT_INVALID, false);
@@ -1275,44 +1270,6 @@ int ReadDxcOpts(const OptTable *optionTable, unsigned flagsToInclude,
12751270
return 1;
12761271

12771272
opts.SpirvOptions.floatDenormalMode = Args.getLastArgValue(OPT_denorm);
1278-
1279-
#else
1280-
if (Args.hasFlag(OPT_spirv, OPT_INVALID, false) ||
1281-
Args.hasFlag(OPT_fvk_invert_y, OPT_INVALID, false) ||
1282-
Args.hasFlag(OPT_fvk_use_dx_position_w, OPT_INVALID, false) ||
1283-
Args.hasFlag(OPT_fvk_support_nonzero_base_instance, OPT_INVALID, false) ||
1284-
Args.hasFlag(OPT_fvk_use_gl_layout, OPT_INVALID, false) ||
1285-
Args.hasFlag(OPT_fvk_use_dx_layout, OPT_INVALID, false) ||
1286-
Args.hasFlag(OPT_fvk_use_scalar_layout, OPT_INVALID, false) ||
1287-
Args.hasFlag(OPT_fspv_use_legacy_buffer_matrix_order, OPT_INVALID,
1288-
false) ||
1289-
Args.hasFlag(OPT_fspv_flatten_resource_arrays, OPT_INVALID, false) ||
1290-
Args.hasFlag(OPT_fspv_reduce_load_size, OPT_INVALID, false) ||
1291-
Args.hasFlag(OPT_fspv_reflect, OPT_INVALID, false) ||
1292-
Args.hasFlag(OPT_fspv_fix_func_call_arguments, OPT_INVALID, false) ||
1293-
Args.hasFlag(OPT_fspv_print_all, OPT_INVALID, false) ||
1294-
Args.hasFlag(OPT_Wno_vk_ignored_features, OPT_INVALID, false) ||
1295-
Args.hasFlag(OPT_Wno_vk_emulated_features, OPT_INVALID, false) ||
1296-
Args.hasFlag(OPT_fvk_auto_shift_bindings, OPT_INVALID, false) ||
1297-
!Args.getLastArgValue(OPT_fvk_stage_io_order_EQ).empty() ||
1298-
!Args.getLastArgValue(OPT_fspv_debug_EQ).empty() ||
1299-
!Args.getLastArgValue(OPT_fspv_extension_EQ).empty() ||
1300-
!Args.getLastArgValue(OPT_fspv_target_env_EQ).empty() ||
1301-
!Args.getLastArgValue(OPT_Oconfig).empty() ||
1302-
!Args.getLastArgValue(OPT_fvk_bind_register).empty() ||
1303-
!Args.getLastArgValue(OPT_fvk_bind_globals).empty() ||
1304-
!Args.getLastArgValue(OPT_fvk_b_shift).empty() ||
1305-
!Args.getLastArgValue(OPT_fvk_t_shift).empty() ||
1306-
!Args.getLastArgValue(OPT_fvk_s_shift).empty() ||
1307-
!Args.getLastArgValue(OPT_fvk_u_shift).empty() ||
1308-
!Args.getLastArgValue(OPT_fvk_bind_resource_heap).empty() ||
1309-
!Args.getLastArgValue(OPT_fvk_bind_sampler_heap).empty() ||
1310-
!Args.getLastArgValue(OPT_fvk_bind_counter_heap).empty()) {
1311-
errors << "SPIR-V CodeGen not available. "
1312-
"Please recompile with -DENABLE_SPIRV_CODEGEN=ON.";
1313-
return 1;
1314-
}
1315-
#endif // ENABLE_SPIRV_CODEGEN
13161273
// SPIRV Change Ends
13171274

13181275
#ifndef ENABLE_METAL_CODEGEN

lib/HLSL/HLOperationLower.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6156,7 +6156,6 @@ Value *EmptyLower(CallInst *CI, IntrinsicOp IOP, DXIL::OpCode opcode,
61566156
}
61576157

61586158
// SPIRV change starts
6159-
#ifdef ENABLE_SPIRV_CODEGEN
61606159
Value *UnsupportedVulkanIntrinsic(CallInst *CI, IntrinsicOp IOP,
61616160
DXIL::OpCode opcode,
61626161
HLOperationLowerHelper &helper,
@@ -6166,7 +6165,6 @@ Value *UnsupportedVulkanIntrinsic(CallInst *CI, IntrinsicOp IOP,
61666165
dxilutil::EmitErrorOnInstruction(CI, "Unsupported Vulkan intrinsic.");
61676166
return nullptr;
61686167
}
6169-
#endif // ENABLE_SPIRV_CODEGEN
61706168
// SPIRV change ends
61716169

61726170
Value *StreamOutputLower(CallInst *CI, IntrinsicOp IOP, DXIL::OpCode opcode,
@@ -6511,7 +6509,6 @@ IntrinsicLower gLowerTable[] = {
65116509
{IntrinsicOp::IOP_unpack_s8s32, TranslateUnpack, DXIL::OpCode::Unpack4x8},
65126510
{IntrinsicOp::IOP_unpack_u8u16, TranslateUnpack, DXIL::OpCode::Unpack4x8},
65136511
{IntrinsicOp::IOP_unpack_u8u32, TranslateUnpack, DXIL::OpCode::Unpack4x8},
6514-
#ifdef ENABLE_SPIRV_CODEGEN
65156512
{IntrinsicOp::IOP_VkRawBufferLoad, UnsupportedVulkanIntrinsic,
65166513
DXIL::OpCode::NumOpCodes},
65176514
{IntrinsicOp::IOP_VkRawBufferStore, UnsupportedVulkanIntrinsic,
@@ -6522,7 +6519,6 @@ IntrinsicLower gLowerTable[] = {
65226519
DXIL::OpCode::NumOpCodes},
65236520
{IntrinsicOp::IOP_Vkext_execution_mode_id, UnsupportedVulkanIntrinsic,
65246521
DXIL::OpCode::NumOpCodes},
6525-
#endif // ENABLE_SPIRV_CODEGEN
65266522
{IntrinsicOp::MOP_Append, StreamOutputLower, DXIL::OpCode::EmitStream},
65276523
{IntrinsicOp::MOP_RestartStrip, StreamOutputLower, DXIL::OpCode::CutStream},
65286524
{IntrinsicOp::MOP_CalculateLevelOfDetail, TranslateCalculateLOD,
@@ -6751,10 +6747,8 @@ IntrinsicLower gLowerTable[] = {
67516747
DXIL::OpCode::OutputComplete},
67526748

67536749
// SPIRV change starts
6754-
#ifdef ENABLE_SPIRV_CODEGEN
67556750
{IntrinsicOp::MOP_SubpassLoad, UnsupportedVulkanIntrinsic,
67566751
DXIL::OpCode::NumOpCodes},
6757-
#endif // ENABLE_SPIRV_CODEGEN
67586752
// SPIRV change ends
67596753

67606754
// Manually added part.

tools/clang/include/clang/AST/HlslTypes.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -400,15 +400,13 @@ DeclareNodeOrRecordType(clang::ASTContext &Ctx, DXIL::NodeIOKind Type,
400400
bool HasGetMethods = false, bool IsArray = false,
401401
bool IsCompleteType = false);
402402

403-
#ifdef ENABLE_SPIRV_CODEGEN
404403
clang::CXXRecordDecl *DeclareInlineSpirvType(clang::ASTContext &context,
405404
clang::DeclContext *declContext,
406405
llvm::StringRef typeName,
407406
bool opaque);
408407
clang::CXXRecordDecl *DeclareVkIntegralConstant(
409408
clang::ASTContext &context, clang::DeclContext *declContext,
410409
llvm::StringRef typeName, clang::ClassTemplateDecl **templateDecl);
411-
#endif
412410

413411
clang::CXXRecordDecl *DeclareNodeOutputArray(clang::ASTContext &Ctx,
414412
DXIL::NodeIOKind Type,

0 commit comments

Comments
 (0)